Estrutura de Dados com Algoritmos e C
|
|
- Amanda Castel-Branco Salazar
- 8 Há anos
- Visualizações:
Transcrição
1 Estrutura de Dados com Algoritmos e C
2 )WGVIZIVYQPMZVSRƒS YQEXEVIJEJ GMPRYRGEJSM8SQEXIQTS I\MKITIWUYMWEIHIHMGE ƒs SQSEWIHMXSVEWRƒSHIWINEQQEMW TYFPMGEVIWXIX XYPSREHEQEMWREXYVEPUYIXIRXEVGSQIVGMEPM^EPS REJSVQEHIEVUYMZSWIQIPLERXIEYQIFSSO1EWIWXEEXMZMHEHI XEQF QXSQEXIQTSII\MKIHIHMGE ƒs 4IRWERHSEWWMQVIWSPZMPMFIVEVIWXIPMZVSTEVEGSRWYPXET FPMGE WIZSG EGLEUYIIWXIPMZVSXIENYHSYIUYMWIVGSPEFSVEVGSQMKS TEWWIRYQEPSX VMGEIHITSWMXISZEPSVUYIEGLEVUYIHIZI 8IVQMRSYHITEKEVEGSRXEHIPY^XIPIJSRISY KYEIWSFVSY XVSGSZSG TSHIHITSWMXEVREQMRLEGSRXE)YEGVIHMXSUYIR W HSMWTSHIQSWWEMVKERLERHSZSG TSVUYIXIZIEGIWWSEYQ FSQQEXIVMEPUYIXIENYHSYIIYGSQSMRGIRXMZSEGSRXMRYEV IWGVIZIRHSPMZVSW EWSHIGIVXSXEPZI^SWTV \MQSWPMZVSWRIQ WINEQTYFPMGEHSWTSVYQEIHMXSVEIIWXINEQPMFIVEHSWHMVIXEQIRXI TEVEWYEGSRWYPXE 5YEPUYIVZEPSVHITSWMXEHSWIV HMVIGMSREHSTEVEEGSRXETSYTER E HSQIYPLSTEVEUYERHSIPIIWXMZIVREQEMSVMHEHIXIVVIGYVWSW TEVEGSQI EVYQRIK GMSTV TVMSRERGMEVWIYWIWXYHSWIXG (EHSWTEVEHIT WMXS 1EVGSW%YVIPMS4GLIO0EYVIERS &ERGS EM\E)GSR QMGE*IHIVEP %K RGME 3TIVE ƒs SRXE YVMXMFEHIQEV SHI
3 Estrutura de Dados com Algoritmos e C Marcos Laureano
4 Copyright 2008 por Brasport Livros e Multimídia Ltda. Todos os direitos reservados. Nenhuma parte deste livro poderá ser reproduzida, sob qualquer meio, especialmente em fotocópia (xerox), sem a permissão, por escrito, da Editora. Editor: Sergio Martins de Oliveira Diretora Editorial: Rosa Maria Oliveira de Queiroz Assistente de Produção: Marina dos Anjos Martins de Oliveira Revisão de Texto: Maria Helena A. M. Oliveira Editoração Eletrônica: Abreu s System LTDA. Capa: Use Design Técnica e muita atenção foram empregadas na produção deste livro. Porém, erros de digitação e/ou impressão podem ocorrer. Qualquer dúvida, inclusive de conceito, solicitamos enviar mensagem para brasport@brasport.com.br, para que nossa equipe, juntamente com o autor, possa esclarecer. A Brasport e o(s) autor(es) não assumem qualquer responsabilidade por eventuais danos ou perdas a pessoas ou bens, originados do uso deste livro. Dados Internacionais de Catalogação na Publicação (CIP) (Câmara Brasileira do Livro, SP, Brasil) BRASPORT Livros e Multimídia Ltda. Rua Pardal Mallet, 23 Tijuca Rio de Janeiro-RJ Tels. Fax: (21) / / / s: brasport@brasport.com.br vendas@brasport.com.br editorial@brasport.com.br site: Filial Av. Paulista, 807 conj São Paulo-SP Tel. Fax (11): ilialsp@brasport.com.br
5 Aos meus genitores Luiz Otávio (in memoriam) e Natália.
6
7 Agradecimentos Agradeço à Brasport por mais esta oportunidade de publicar um livro sobre um tema em que vários autores já trabalharam (é claro que este livro tem um diferencial em relação aos demais). Aos meus colegas professores e alunos que ajudaram a evolução deste material nos últimos anos. E para uma linda flor, que, além de alegrar os meus dias, corrigiu os assassinatos à língua portuguesa.
8
9 Sobre o autor Marcos Laureano é tecnólogo em Processamento de Dados pela ESEEI, Pós-graduado em Administração pela FAE Business School e Mestre em Informática Aplicada pela Pontifícia Universidade Católica do Paraná. Doutorando em Informática Aplicada pela Pontifícia Universidade Católica do Paraná. Trabalha com programação em C no ambiente Unix (AIX/HP-UX) desde 1997 e Linux desde 2000, sendo especialista em segurança de sistemas operacionais. É professor de graduação e pós-graduação, tendo lecionado em várias instituições nos últimos anos. É autor de vários guias de utilização/configuração de aplicativos para os ambientes Unix e Linux. Possui artigos e livros publicados sobre programação, sistemas operacionais e segurança de sistemas. Dentre eles, Programando em C para Linux, Unix e Windows, também publicado pela Brasport. Atualmente leciona disciplinas relacionadas à segurança, programação, redes de computadores e sistemas operacionais em cursos de graduação e pós-graduação do Centro Universitário Franciscano (UNIFAE) e atua como consultor na área de projetos de desenvolvimento e segurança de sistemas. O autor pode ser contactado pelo marcos@laureano.eti.br ou através de sua página onde está disponível vasto material sobre programação, segurança de sistemas e sistemas operacionais.
10
11 Sobre o Livro O crescimento dos cursos tecnológicos específicos e com curta duração (2 a 3 anos) gerou uma demanda de livros que tratam diretamente o assunto de maneira clara e eficiente. Este livro é indicado aos cursos tecnológicos, para estudantes e profissionais que precisem dominar os conceitos e os algoritmos de forma rápida e precisa. O material foi preparado com a experiência do autor em lecionar a disciplina, somada à sua experiência profissional. Outros professores e coordenadores de cursos foram consultados; com isto, este material tem os assuntos pertinentes à área e pode ser adotado tranqüilamente em cursos de 40 ou 80 horas de Estrutura de Dados ou Programação de Computadores. Os algoritmos podem ser aplicados e convertidos para qualquer linguagem de programação, e os programas em C são simples e objetivos, facilitando o entendimento dos estudantes e profissionais que não dominam totalmente esta linguagem.
12
13 Sumário 1. Estrutura de Dados Dados Homogêneos Vetor Matriz Ponteiros Dados Heterogêneos Exercícios Uso de Memória Alocação de memória Estática x Dinâmica Alocação dinâmica de memória Funções para alocação de memória Função malloc Função calloc Função realloc Função free Utilizando as funções para alocação de memória Alocação de memória e estruturas em C Ponteiros para ponteiros mistério ou não Mais alocação de vetores e matrizes como ponteiros Controle de agenda com ponteiros de estruturas e vetores Pilha Representação das Operações com Pseudo-código Pilhas em C Exercícios...47
14 XIV Estrutura de Dados com Algoritmos e C 4. Fila Representação de Filas com Pseudo-códigos Filas em C Exercícios Recursividade Função para cálculo de Fatorial Número triangular Números de Fibonacci Algoritmo de Euclides Torres de Hanoi Curiosidades com Recursividade Cuidados com Recursividade Vantagens Exercícios Lista Vetores ou alocação dinâmica? Listas em C Exercícios Pesquisa Pesquisa Seqüencial Pesquisa Binária Exercícios Ordenação BubbleSort Ordenação por Seleção Ordenação por Inserção QuickSort MergeSort Exercícios Árvores Binárias Analogia entre árvores Árvore binária Relações...127
15 Sumário XV Árvore Binária Completa Árvores de Busca Binária Operações em Árvores Binárias Inserção Pesquisa Exclusão Maior elemento Menor elemento Percorrendo uma árvore Representações de árvores em C Implementação em C Exercício Referências Bibliográficas Índice Remissivo
16
17 Lista de Programas 1.1: Declaração de vetor em C : Exemplo de uso de vetores : Exemplo de uso de matrizes : Exemplo de uso de matrizes com várias dimensões : Exemplo de uso de ponteiros : Ponteiros como referência em funções : Aritmética com ponteiros : Vetor como ponteiro : Exemplo de estrutura : Exemplo de uso de estruturas com vetores : Declaração de vetor como ponteiro : Declaração de matriz como ponteiro : Exemplo de uso do malloc e realloc : Exemplo de uso do calloc : Exemplo de uso de estruturas com ponteiros : Ponteiro para ponteiro : Exemplo de uso de alocação de matrizes : Exemplo de uso de alocação de matrizes dentro de funções...32
18 XVIII Estrutura de Dados com Algoritmos e C 2.9: Exemplo completo de uso de vetor (ponteiros) de estruturas : Exemplo de manipulação de pilha : Exemplo de manipulação de pilha com estrutura : Exemplo de manipulação de fila em C : Reajuste da fila : Declaração de estrutura circular : Manipulação de fila circular em C : Fatorial (versão iterativa) : Fatorial (versão recursiva) : Descobrindo o número triangular (iterativo) : Descobrindo o número triangular (recursivo) : Cálculo do n-ésimo termo de Fibonacci (versão iterativa) : Cálculo do n-ésimo termo de Fibonacci (versão recursiva) : Cálculo do MDC iterativo : Cálculo do MDC recursivo : Cálculo do MDC recursivo : Torre de Hanoi recursivo : Natori - Imprimindo as fases da lua : Dhyanh - Saitou, aku, soku e zan : Exemplo de manipulação de lista simples em C : Exemplo de manipulação de lista encadeada em C : Funções para manipulação de listas : Função para pesquisa seqüencial : Função para pesquisa binária : Função BubbleSort : Função BubbleSort melhorado : Função Select...106
19 Lista de Programas XIX 8.4: Função Insert : Ordenação QuickSort : Ordenação MergeSort : Ordenação MergeSort : Representação com vetor de filhos : Representação dinâmica : Representação dinâmica de uma árvore binária : Implementação das operações...139
20 Lista de Tabelas 2.1: Operações com ponteiros : Operações com ponteiros de ponteiros : Cálculo de fatorial de : Entradas e freqüências para cálculo de comparações médias : BubbleSort - primeira varredura : BubbleSort - segunda varredura : Seleção - o que ocorre em cada passo : Inserção - o que ocorre em cada passo : Comparações para busca de um elemento...130
21 Lista de Algoritmos 1.1: Cálculo da posição de índices de um vetor na memória : Cálculo da posição de índices de uma matriz na memória : Verificação se a pilha está vazia (função EMPTY(S)) : Colocar um item na pilha (função PUSH(S,x)) : Retirada de um item da pilha (função POP(S)) : Pega o item do topo da pilha mas não desempilha (função STACKPOP(S)) : Tamanho da pilha (função SIZE(S)) : Inclusão de dados na fila (ENQUEUE(Q,x)) : Retirada de dados na fila (DEQUEUE(Q)) : Verificação se a fila está vazia (função EMPTY(Q)) : Tamanho da fila (função SIZE(Q)) : Próximo elemento da fila (função FRONT(Q)) : Algoritmo de Euclides : Passar n peças de uma torre (A) para outra (C) : Inserção numa lista duplamente encadeada : Remoção numa lista duplamente encadeada : Pesquisa seqüencial : Pesquisa seqüencial com ajuste de freqüência...97
22 XXII Estrutura de Dados com Algoritmos e C 7.3: Pesquisa binária : Ordenação Bubble : Ordenação por Seleção : Ordenação por Inserção : QuickSort : Particiona - Divisão do vetor : MergeSort : Intercala : MergeSort : Inserir elemento na árvore - iterativo : Inserir elemento na árvore - recursivo : Pesquisar elemento na árvore - iterativo : Pesquisar elemento na árvore - recursivo : Exclusão na árvore : Sucessor : Maior elemento da árvore : Menor elemento da árvore : Operação Percorre - Pré-ordem : Operação Percorre - Pós-ordem : Operação Percorre - Em-ordem...137
23 Lista de Figuras 1.1: Exemplo de Vetor : Representação de um vetor na memória : Matriz 2x2 - Cálculo de posição na memória : Cálculo de posição na memória : Exemplo de Matriz : Uma matriz de duas dimensões vista como dois vetores : Chamada de função com ponteiros : Vetor como Ponteiro em C : Registro de funcionário : Matriz como vetor de ponteiros : Exemplo de ponteiro na memória : Exemplo de ponteiro para ponteiro na memória : Exemplo de Pilha : Operações em uma pilha : Operações numa fila : Operações numa fila circular : Números triangulares : Descobrindo o quinto elemento triangular : Descobrindo o quinto elemento triangular de forma recursiva...65
24 XXIV Estrutura de Dados com Algoritmos e C 5.4: O que ocorre a cada chamada : Torre de Hanoi : Movimentos conforme algoritmo : Exemplo de lista simplesmente encadeada : Exemplo de lista duplamente encadeada : Inclusão de novo elemento : Exclusão de elemento : Problemática do crescimento do vetor : Crescimento de uma lista sem utilizar vetor : Processo de pesquisa seqüencial : Busca binária : Exemplo de Ordenação por Seleção com números inteiros : Exemplo de Ordenação por Inserção com números inteiros : Seqüência de ordenação por inserção : Algoritmo da ordenação por inserção : Ordenação QuickSort : Ordenação MergeSort : Ordenação MergeSort : Analogia entre árvores : Representação de uma árvore : Árvore Binária completa de nível : Árvore de busca binária - duas organizações diferentes : Exclusão de folha : Exclusão de um nó com um filho : Exclusão de um nó com dois filhos : Representação com vetores : Representação dinâmica...139
25 1. Estrutura de Dados Não existe vitória sem sacrifício! Filme Transformers Um computador é uma máquina que manipula informações. O estudo da ciência da computação inclui o exame da organização, manipulação e utilização destas informações num computador. Conseqüentemente, é muito importante entender os conceitos de organização e manipulação de informações. A automatização de tarefas é um aspecto marcante da sociedade moderna, e na ciência da computação houve um processo de desenvolvimento simultâneo e interativo de máquinas (hardware) e dos elementos que gerenciam a execução automática (software) de uma tarefa. Nesta grande evolução do mundo computacional, um fator de relevante importância é a forma de armazenar as informações, já que, informática é a ciência da informação. Então de nada adiantaria o grande desenvolvimento do hardware e do software se a forma de armazenamento e tratamento da informação não acompanhasse esse desenvolvimento. Por isso a importância das estruturas de dados, que nada mais são do que formas otimizadas de armazenamento e tratamento das informações eletronicamente. As estruturas de dados, na maioria dos casos, baseiam-se nos tipos de armazenamento vistos dia a dia, ou seja, nada mais são do que a transformação de uma forma de armazenamento já conhecida e utilizada no mundo real adaptada para o mundo computacional. Por isso, cada tipo de estrutura de dados possui vantagens e desvantagens e cada uma delas tem sua área de atuação (massa de dados) otimizada.
26 Estrutura de Dados com Algoritmos e C Os dados manipulados por um algoritmo podem possuir natureza distinta, isto é, podem ser números, letras, frases etc. Dependendo da natureza de um dado, algumas operações podem ou não fazer sentido quando aplicadas a eles. Por exemplo, não faz sentido falar em somar duas letras - algumas linguagens de programação permitem que ocorra a soma dos valores ASCII correspondentes de cada letra. Para poder distinguir dados de naturezas distintas e saber quais operações podem ser realizadas com eles, os algoritmos lidam com o conceito de tipo de dados. O tipo de um dado deine o conjunto de valores que uma variável pode assumir, bem como o conjunto de todas as operações que podem atuar sobre qualquer valor daquela variável. Por exemplo, uma variável do tipo inteiro pode assumir o conjunto de todos os números e de todas as operações que podem ser aplicadas a estes números. Os tipos de dados manipulados por um algoritmo podem ser classiicados em dois grupos: atômicos e complexos ou compostos. Os tipos atômicos são aqueles cujos elementos do conjunto de valores são indivisíveis, por exemplo: o tipo inteiro, real, caractere e lógico. Por outro lado, os tipos complexos são aqueles cujos elementos do conjunto de valores podem ser decompostos em partes mais simples. Se um tipo de dado pode ser decomposto, então o tipo de dado é dito estruturado, e a organização de cada componente e as relações entre eles constituem a disciplina de Estrutura de Dados. 1.1 Dados Homogêneos Uma estrutura de dados, que utiliza somente um tipo de dado, em sua deinição é conhecida como dados homogêneos. Variáveis compostas homogêneas correspondem a posições de memória, identiicadas por um mesmo nome, individualizado por índices e cujo conteúdo é composto do mesmo tipo. Sendo os vetores (também conhecidos como estruturas de dados unidimensionais) e as matrizes (estruturas de dados bidimensionais) os representantes dos dados homogêneos Vetor O vetor é uma estrutura de dados linear que necessita de somente um índice para que seus elementos sejam endereçados. É utilizado para armazenar uma lista de valores do mesmo tipo, ou seja, o tipo vetor permite armazenar mais de um valor em uma mesma variável. Um dado vetor é deinido como tendo um
27 Estrutura de Dados número ixo de células idênticas (seu conteúdo é dividido em posições). Cada célula armazena um e somente um dos valores de dados do vetor. Cada uma das células de um vetor possui seu próprio endereço, ou índice, através do qual pode ser referenciada. Nessa estrutura todos os elementos são do mesmo tipo, e cada um pode receber um valor diferente [, 1, 4]. Algumas características do tipo vetor([10]): Alocação estática (deve-se conhecer as dimensões da estrutura no momento da declaração) Estrutura homogênea Alocação seqüencial (bytes contíguos) Inserção/Exclusão Realocação dos elementos Posição de memória não liberada Figura 1.1: Exemplo de Vetor A partir do endereço do primeiro elemento é possível determinar a localização dos demais elementos do vetor. Isso é possível porque os elementos do vetor estão dispostos na memória um ao lado do outro e cada elemento tem o seu tamanho ixo (algoritmo 1.1 [10]). A partir do algoritmo 1.1 é possível deduzir a fórmula genérica para cálculo de posição na memória de um elemento qualquer. Sendo n o elemento, a fórmula se dá por Pos n = endereço Inicial + ( (n - 1) * tamanho do tipo do elemento).
28 4 Estrutura de Dados com Algoritmos e C Algoritmo 1.1: Cálculo da posição de índices de um vetor na memória A igura 1.1 mostra um vetor de notas de alunos, a referência NOTA[4] indica o valor 4.6 que se encontra na coluna indicada pelo índice 4. A deinição de um vetor em C se dá pela sintaxe: tipo_do_dado nome_do_vetor[ tamanho_do_vetor ] O programa 1.1 contém um exemplo de declaração de um vetor na linguagem C. A igura 1. apresenta a representação deste vetor na memória do computador (lembrando que um vetor é guardado na memória de forma seqüencial). 1 int i[]; i[0]=1; i[1]=; i[]=4; Programa 1.1: Declaração de vetor em C 6 char c[4]; c[0]= a ; c[1]= b ; c[]= c ; c[]= d ; Figura 1.2: Representação de um vetor na memória
29 Estrutura de Dados /* programa_vetor_01.c */ #include <stdio.h> Programa 1.2: Exemplo de uso de vetores #deine TAMANHO 10 int main (void) int iindice; int ivalora; int isoma; int avetor [TAMANHO]; loat fmedia; for (iindice = 0; iindice < TAMANHO; iindice++) printf("entre com o valor %d:", iindice + 1); scanf("%d", &ivalora); avetor[iindice] = ivalora; isoma = 0; for (iindice=0; iindice < TAMANHO; iindice++) isoma += avetor[iindice]; fmedia = (loat) isoma/tamanho; printf ("Media : %f\n", fmedia); return 0; Lembrete: Caso seja colocada num programa a instrução a[2]++ está sendo dito que a posição do vetor a será incrementada Matriz Uma matriz é um arranjo bidimensional ou multidimensional de alocação estática e seqüencial. A matriz é uma estrutura de dados que necessita de um índice para referenciar a linha e outro para referenciar a coluna para que seus elementos sejam endereçados. Da mesma forma que um vetor, uma matriz é deinida com um tamanho ixo, todos os elementos são do mesmo tipo, cada célula contém somente um valor e os tamanhos dos valores são os mesmos (em C, um char ocupa 1 byte e um int 4 bytes) [, 1, 4].
30 6 Estrutura de Dados com Algoritmos e C Os elementos ocupam posições contíguas na memória. A alocação dos elementos da matriz na memória pode ser feita colocando os elementos linha-porlinha ou coluna-por-coluna. Para uma matriz de 2x2 (igura 1.) o algoritmo para calcular as posições da memória é listado em 1. [10]. Figura 1.3: Matriz x - Cálculo de posição na memória No algoritmo 1., sendo C a quantidade de colunas por linhas, i o número da linha e j a posição do elemento dentro linha, é possível deinir a fórmula genérica para acesso na memória, onde Pos ij = endereço inicial + ((i-1) * C * tamanho do tipo do elemento) + ((j-1) * tamanho do tipo do elemento). A igura 1.4 demonstra a aplicação da fórmula. A matriz LETRAS (igura 1.) é composta de 18 elementos ( linhas e 6 colunas), a referência a MATRIZ[3][3] (onde o primeiro indica a linha e o segundo indica a coluna) retorna o elemento N ; no caso de MATRIZ[2][5] (segunda linha e terceira coluna) irá retornar o elemento E. Como é uma matriz de strings (linguagem C), a chamada a MATRIZ[3] irá reproduzir o valor DONALD. Algoritmo 1.2: Cálculo da posição de índices de uma matriz na memória
31 Estrutura de Dados Figura 1.4: Cálculo de posição na memória Uma matriz consiste de dois ou mais vetores deinidos por um conjunto de elementos. Cada dimensão de uma matriz é um vetor (igura 1.6). O primeiro conjunto (dimensão) é considerado o primeiro vetor, o segundo conjunto o segundo vetor e assim sucessivamente [4]. A deinição de uma matriz em C se dá pela sintaxe: tipo_do_dado nome_da_matriz[ quantidade_linhas ] [ quantidade_colunas ] O programa 1. apresenta um exemplo de declaração e utilização de matrizes bidimensionais na linguagem C. Figura 1.5: Exemplo de Matriz
32 8 Estrutura de Dados com Algoritmos e C Figura 1.6: Uma matriz de duas dimensões vista como dois vetores A linguagem C permite ainda trabalhar com matrizes de várias dimensões (matrizes n-dimensionais), embora o seu uso ique mais restrito em aplicações cientíicas face à sua pouca praticidade de uso. A deinição de uma matriz de várias dimensões em C se dá pela sintaxe: tipo_do_dado nome_da_matriz[tamanho_dimensão_1] [tamanho_ dimensão_2] [tamanho_dimensão_3]... [tamanho_dimensão_n]
33 Estrutura de Dados Programa 1.3: Exemplo de uso de matrizes /* programa_matriz_01.c */ #include <stdio.h> 4 #deine DIMENSAO int main (void) int ilinha, icoluna; int ideterminante; int ivalora; int amatriz [DIMENSAO][DIMENSAO /* Uma regra que se pode sempre levar em consideração: para cada dimensão de uma matriz, sempre haverá um laço (normalmente um for). Se houver duas dimensões, então haverá dois laços. */ for (ilinha=0; ilinha < DIMENSAO; ilinha++) for (icoluna=0; icoluna < DIMENSAO; icoluna++) printf ("Entre item %d %d:", ilinha + 1, icoluna + 1); scanf ("%d", &ivalora); matriz [ilinha][icoluna] = ivalora; ideterminante = amatriz[0][0] * amatriz [1][1] - amatriz[0][1] * amatriz [1][0]; printf ("Determinante : %d\n", ideterminante); return 0; O programa 1.4 é um exemplo de deinição e utilização de matrizes multidimensionais na linguagem C.
34 10 Estrutura de Dados com Algoritmos e C Programa 1.4: Exemplo de uso de matrizes com várias dimensões /* programa_matriz_02.c */ 4 #include <stdio.h> #deine DIM_1 #deine DIM_ #deine DIM_ #deine DIM_4 4 int main (void) int i,j,k,l; int amatriz [DIM_1][DIM_][DIM_][DIM_4]; 14 /* Código para zerar uma matriz de quatro dimensões */ for (i=0; i < DIM_1; i++) 1 4 for (j=0; j < DIM_; j++) for (k=0; k < DIM_; k++) for (l=0; l < DIM_4; l++) amatriz [i][j][k][l] = i+j+k+l; 4 44 /* Uma regra que se pode sempre levar em consideração: para cada dimensão de uma matriz, sempre haverá um laço (normalmente um for). Se houver quatro dimensoes então haverá quatro laços */ For (i=0; i < DIM_1; i++) for (j=0; j < DIM_; j++) for (k=0; k < DIM_; k++) for (l=0; l < DIM_4; l++) printf("\nvalor para matriz em [%d] [%d] [%d] [%d] = %d", i,j,k,l, amatriz[i][j][k][l]); return 0;
35 Estrutura de Dados Ponteiros A linguagem C implementa o conceito de ponteiro. O ponteiro é um tipo de dado como int, char ou loat. A diferença do ponteiro em relação aos outros tipos de dados é que uma variável que seja ponteiro guardará um endereço de memória [, ]. Por meio deste endereço pode-se acessar a informação, dizendo que a variável ponteiro aponta para uma posição de memória. O maior problema em relação ao ponteiro é entender quando se está trabalhando com o seu valor, ou seja, o endereço, e quando se está trabalhando com a informação apontada por ele. Operador & e * O primeiro operador de ponteiro é &. Ele é um operador unário que devolve o endereço na memória de seu operando. Por exemplo: m = &count; põe o endereço na memória da variável count em m. Esse endereço é a posição interna da variável na memória do computador e não tem nenhuma relação com o valor de count. O operador & tem como signiicado o endereço de. O segundo operador é *, que é o complemento de &. O * é um operador unário que devolve o valor da variável localizada no endereço que o segue. Por exemplo, se m contém o endereço da variável count: q = *m; coloca o valor de count em q. O operador * tem como signiicado no endereço de. Lembrete: Cuide-se para não confundir o operador de ponteiros (*) como multiplicação na utilização de ponteiros e vice-versa. A declaração de uma variável ponteiro é dada pela colocação de um asterisco (*) na frente de uma variável de qualquer tipo. Na linguagem C, é possível deinir ponteiros para os tipos básicos ou estruturas. A deinição de um ponteiro não reserva espaço de memória para o seu valor e sim para o seu conteúdo. Antes de utilizar um ponteiro, o mesmo deve ser inicializado, ou seja, deve ser colocado um endereço de memória válido para ser acessado posteriormente. Um ponteiro pode ser utilizado de duas maneiras distintas. Uma maneira é trabalhar com o endereço armazenado no ponteiro e outro modo é trabalhar com a área de memória apontada pelo ponteiro. Quando se quiser trabalhar com o endereço armazenado no ponteiro, utiliza-se o seu nome sem o asterisco na frente. Sendo assim qualquer operação realizada será feita no endereço do ponteiro. Como, na maioria dos casos, se deseja trabalhar com a memória apontada pelo ponteiro, alterando ou acessando este valor, deve-se colocar um asterisco
36 1 Estrutura de Dados com Algoritmos e C antes do nome do ponteiro. Sendo assim, qualquer operação realizada será feita no endereço de memória apontado pelo ponteiro. O programa 1. demostra a utilização de ponteiros para acesso à memória. 1 /* programa_matriz_02.c */ #include <stdio.h> Programa 1.5: Exemplo de uso de ponteiros 6 int main (void) int *pivalor; /* ponteiro para inteiro */ int ivariavel = 11 pivalor = &ivariavel; /* pegando o endereço de memória da variável */ printf ("Endereco: %d\n", pivalor); printf ("Valor : %d\n", *pivalor); *pivalor = ; printf ("Valor alterado: %d\n", ivariavel); printf ("Endereco : %d\n", pivalor); return 0; Passando variáveis para funções por referência O ponteiro é utilizado para passar variáveis por referência, ou seja, variáveis que podem ter seu conteúdo alterado por funções e mantêm este valor após o término da função. Na declaração de uma função, deve-se utilizar o asterisco antes do nome do parâmetro, indicando que está sendo mudado o valor naquele endereço passado como parâmetro. No programa 1.6 é visto um exemplo de uma variável sendo alterada por uma função (igura 1.).
37 Estrutura de Dados 1 Figura 1.7: Chamada de função com ponteiros Programa 1.6: Ponteiros como referência em funções /* programa_ponteiro_02.c */ #include <stdio.h> 4 void soma (int, int, int *); int main (void) int ivalora; int ivalorb; int iresultado; printf ("Entre com os valores:"); 14 scanf ("%d %d", &ivalora, &ivalorb); 1 4 printf("endereco de iresultado = %d\n", &iresultado); soma (ivalora, ivalorb, &iresultado);/* está sendo passado o endereço de memória da variável, qualquer alteração estará sendo realizada na memória */ printf ("Soma : %d\n", iresultado); return 0; 4 void soma (int pivalora, int pivalorb, int * piresultado) printf("endereco de piresultado = %d\n", piresultado); /* o valor está sendo colocado diretamente na memória */ *piresultado = pivalora + pivalorb; return;
38 14 Estrutura de Dados com Algoritmos e C Aritmética com ponteiros Com uma variável do tipo ponteiro, é possível realizar operações de soma e subtração. Será somada ou diminuída no ponteiro a quantidade de endereços de memória relativos ao tipo do ponteiro. Por exemplo, um ponteiro para int ocupa 4 bytes, uma operação de soma neste ponteiro irá acrescentar 4 posições (unidades) na memória. O programa 1. é visto como os endereços de memória são manipulados através de aritmética de ponteiros, e a diferença entre o tipo char - que ocupa 1 byte de memória - e o tipo int - que ocupa 4 bytes. /* programa_ponteiro_03.c */ #include <stdio.h> Programa 1.7: Aritmética com ponteiros 10 int main (void) int *pivalor; int ivalor; char *pcvalor; char cvalor; pivalor = &ivalor; pcvalor = &cvalor; 1 printf ("Endereco de pivalor = %d\n", pivalor); printf ("Endereco de pcvalor = %d\n", pcvalor); pivalor++; /* somando uma unidade (4 bytes) na memória */ pcvalor++; /* somando uma unidade (1 byte) na memória */ 0 printf ("Endereco de pivalor = %d\n", pivalor); printf ("Endereco de pcvalor = %d\n", pcvalor); return 0; Vetores e matrizes como ponteiros em C Vetores nada mais são do que ponteiros com alocação estática de memória, logo, todo vetor na linguagem C é um ponteiro, tal que o acesso aos índices do vetor podem ser realizados através de aritmética de ponteiros. Observe a igura 1.8:
UNIVERSIDADE FEDERAL DO RIO GRANDE DO SUL INSTITUTO DE INFORMÁTICA INFORMÁTICA APLICADA
Responda 1) Quem desenvolveu a linguagem C? Quando? 2) Existe alguma norma sobre a sintaxe da linguagem C? 3) Quais são os tipos básicos de dados disponíveis na linguagem C? 4) Quais são as principais
Leia maisProf. Yandre Maldonado - 1 PONTEIROS. Prof. Yandre Maldonado e Gomes da Costa
Prof. Yandre Maldonado - 1 PONTEIROS Prof. Yandre Maldonado e Gomes da Costa PONTEIROS Prof. Yandre Maldonado - 2 Ponteiro é uma variável que possui o endereço de outra variável; É um poderoso recurso
Leia maisLP II Estrutura de Dados. Introdução e Linguagem C. Prof. José Honorato F. Nunes honorato.nunes@ifbaiano.bonfim.edu.br
LP II Estrutura de Dados Introdução e Linguagem C Prof. José Honorato F. Nunes honorato.nunes@ifbaiano.bonfim.edu.br Resumo da aula Considerações Gerais Introdução a Linguagem C Variáveis e C Tipos de
Leia maisCapítulo 2: Introdução à Linguagem C
Capítulo 2: Introdução à Linguagem C INF1005 Programação 1 Pontifícia Universidade Católica Departamento de Informática Programa Programa é um algoritmo escrito em uma linguagem de programação. No nosso
Leia maisIntrodução a Programação. Ponteiros e Strings, Alocação Dinâmica
Introdução a Programação Ponteiros e Strings, Alocação Dinâmica Tópicos da Aula Hoje aprenderemos a relação entre ponteiros e strings Ponteiros para strings X Vetores de Caracteres Vetores de ponteiros
Leia maisOrientação a Objetos
1. Domínio e Aplicação Orientação a Objetos Um domínio é composto pelas entidades, informações e processos relacionados a um determinado contexto. Uma aplicação pode ser desenvolvida para automatizar ou
Leia mais2ª Lista de Exercícios
Universidade Federal de Minas Gerais Departamento de Ciência da Computação Algoritmos e Estruturas de Dados II (Turmas M, N, W, F) 1º Semestre de 2012 Profs. Camilo Oliveira, Gisele Pappa, Ítalo Cunha,
Leia maisAlocação dinâmica de memória
Alocação dinâmica de memória Jander Moreira 1 Primeiras palavras Na solução de problemas por meio algoritmos ou programas, é comum surgir a necessidade de manter todo o conjunto de dados a ser processado
Leia maisINF 1005 Programação I
INF 1005 Programação I Aula 03 Introdução a Linguagem C Edirlei Soares de Lima Estrutura de um Programa C Inclusão de bibliotecas auxiliares: #include Definição de constantes:
Leia maisINF 1005 Programação I
INF 1005 Programação I Aula 12 Cadeia de Caracteres (Strings) Edirlei Soares de Lima Caracteres Até o momento nós somente utilizamos variáveis que armazenam números (int, float ou
Leia maisPROGRAMAÇÃO ESTRUTURADA. CC 2º Período
PROGRAMAÇÃO ESTRUTURADA CC 2º Período PROGRAMAÇÃO ESTRUTURADA Aula 06: Ponteiros Declarando e utilizando ponteiros Ponteiros e vetores Inicializando ponteiros Ponteiros para Ponteiros Cuidados a serem
Leia maisEstrutura de Dados. Introdução a Ponteiros. Prof. Gerson Borges Estrutura de Dados I 1
Estrutura de Dados Introdução a Ponteiros Prof. Gerson Borges Estrutura de Dados I 1 Sumário è Explicação da importância do planejamento de ensino; è Métodos e técnicas que iremos trabalhar durante o semestre;
Leia maisFACULDADE CAMPO LIMPO PAULISTA MESTRADO EM CIÊNCIA DA COMPUTAÇÃO. Projeto e Análise de Algoritmos II Lista de Exercícios 2
FACULDADE CAMPO LIMPO PAULISTA MESTRADO EM CIÊNCIA DA COMPUTAÇÃO Projeto e Análise de Algoritmos II Lista de Exercícios 2 Prof. Osvaldo. 1. Desenvolva algoritmos para as operações abaixo e calcule a complexidade
Leia maisÁrvores Binárias de Busca
Árvores Binárias de Busca Uma Árvore Binária de Busca T (ABB) ou Árvore Binária de Pesquisa é tal que ou T = 0 e a árvore é dita vazia ou seu nó contém uma chave e: 1. Todas as chaves da sub-árvore esquerda
Leia maisTrabalho 3: Agenda de Tarefas
INF 1620 Estruturas de Dados Semestre 08.2 Trabalho 3: Agenda de Tarefas O objetivo deste trabalho é a implementação de um conjunto de funções para a manipulação de uma agenda de tarefas diárias, de forma
Leia maisProgramação de Computadores I. Ponteiros
Ponteiros Prof. Edwar Saliba Júnior Outubro de 2012 Unidade 13 Ponteiros 1 Identificadores e Endereços Na linguagem C, uma declaração de variável faz associação entre um identificador e endereços de memória;
Leia maisIntrodução à Programação
Introdução à Programação Introdução a Linguagem C Construções Básicas Programa em C #include int main ( ) { Palavras Reservadas } float celsius ; float farenheit ; celsius = 30; farenheit = 9.0/5
Leia maisVetores. Vetores. Figura 1 Exemplo de vetor com 10 elementos
Vetores Nos capítulos anteriores estudamos as opções disponíveis na linguagem C para representar: Números inteiros em diversos intervalos. Números fracionários com várias alternativas de precisão e magnitude.
Leia maisEstrutura da linguagem de programação C Prof. Tiago Eugenio de Melo tiago@comunidadesol.org
Estrutura da linguagem de programação C Prof. Tiago Eugenio de Melo tiago@comunidadesol.org Breve Histórico A linguagem de programação C foi criada na década de 70, por Dennis Ritchie, que a implementou,
Leia maisESTRUTURAS DE DADOS I. Notas de Aula. Prof. Dr. Gilberto Nakamiti
ESTRUTURAS DE DADOS I Notas de Aula 1 SUMÁRIO 1. INTRODUÇÃO... 2 1.1 Array (vetores)... 2 2. BUSCA DE ELEMENTOS... 3 2.1 Busca Seqüencial... 3 2.2 Busca Binária... 3 2.3 Busca Indexada... 3 2.4 Busca Hash...
Leia mais2. OPERADORES... 6 3. ALGORITMOS, FLUXOGRAMAS E PROGRAMAS... 8 4. FUNÇÕES... 10
1. TIPOS DE DADOS... 3 1.1 DEFINIÇÃO DE DADOS... 3 1.2 - DEFINIÇÃO DE VARIÁVEIS... 3 1.3 - VARIÁVEIS EM C... 3 1.3.1. NOME DAS VARIÁVEIS... 3 1.3.2 - TIPOS BÁSICOS... 3 1.3.3 DECLARAÇÃO DE VARIÁVEIS...
Leia maisEstruturas de Dados. Prof. Gustavo Willam Pereira Créditos: Profa. Juliana Pinheiro Campos
Estruturas de Dados Prof. Gustavo Willam Pereira Créditos: Profa. Juliana Pinheiro Campos Árvores Conceitos Árvores binárias Árvores binárias de pesquisa Árvores binárias balanceadas Árvores ESTRUTURAS
Leia maisProgramas operam sobre dados. Dados são relacionados e possuem estrutura. Como representar e manipular dados em um computador
Programas operam sobre dados Dados são relacionados e possuem estrutura Como representar e manipular dados em um computador Para representar um baralho precisamos: Representar cartas: naipe e valor struct
Leia maisAula 3 Alocação Dinâmica
Aula 3 Alocação Dinâmica Universidade Federal de Santa Maria Colégio Agrícola de Frederico Westphalen Curso Superior de Tecnologia em Sistemas de Internet Prof. Bruno B. Boniati www.cafw.ufsm.br/~bruno
Leia maisAlgoritmos de Busca em Tabelas
Dentre os vários algoritmos fundamentais, os algoritmos de busca em tabelas estão entre os mais usados. Considere por exemplo um sistema de banco de dados. As operações de busca e recuperação dos dados
Leia maisDadas a base e a altura de um triangulo, determinar sua área.
Disciplina Lógica de Programação Visual Ana Rita Dutra dos Santos Especialista em Novas Tecnologias aplicadas a Educação Mestranda em Informática aplicada a Educação ana.santos@qi.edu.br Conceitos Preliminares
Leia maisBUSCA EM LISTAS LISTAS SEQÜENCIAIS, LISTAS SIMPLESMENTE E DUPLAMENTE ENCADEADAS E LISTAS CIRCULARES
BUSCA EM LISTAS LISTAS SEQÜENCIAIS, LISTAS SIMPLESMENTE E DUPLAMENTE ENCADEADAS E LISTAS CIRCULARES ALGORITMOS DE BUSCA EM LISTAS COM ALOCAÇÃO SEQÜENCIAL Busca em Listas Lineares A operação de busca é
Leia maisEAD Árvore árvore binária
EAD Árvore árvore binária - Uma árvore binária é um conjunto finito de elementos (nodos) que pode ser vazio ou particionado em três subconjuntos: - raiz da árvore (elemento inicial, que é único); - subárvore
Leia maisPROGRAMAÇÃO II 4. ÁRVORE
4. ÁRVORE PROGRAMAÇÃO II Prof. Jean Eduardo Glazar Uma árvore impõe uma estrutura hierárquica em uma coleção de itens. Um exemplo familiar é a árvore genealógica. Árvores despontam de forma natural em
Leia maisBusca. Pesquisa sequencial
Busca Banco de dados existem para que, de tempos em tempos, um usuário possa localizar o dado de um registro, simplesmente digitando sua chave. Uma tabela ou um arquivo é um grupo de elementos, cada um
Leia maisAlgoritmos e Programação Estruturada
Algoritmos e Programação Estruturada Virgínia M. Cardoso Linguagem C Criada por Dennis M. Ritchie e Ken Thompson no Laboratório Bell em 1972. A Linguagem C foi baseada na Linguagem B criada por Thompson.
Leia maisCAPÍTULO 3 - TIPOS DE DADOS E IDENTIFICADORES
CAPÍTULO 3 - TIPOS DE DADOS E IDENTIFICADORES 3.1 - IDENTIFICADORES Os objetos que usamos no nosso algoritmo são uma representação simbólica de um valor de dado. Assim, quando executamos a seguinte instrução:
Leia maisCurso de C para Engenharias
Aula 4 Cristiano Dalbem Dennis Balreira Gabriel Moreira Miller Biazus Raphael Lupchinski Universidade Federal do Rio Grande do Sul Instituto de Informática Grupo PET Computação Sintaxe Funções Exemplos
Leia maisOperaçõe õ s c om o Strings Intr oduç ão a o Ponte iros o e Funçõe õ s
Universidade de São Paulo São Carlos Instituto de Ciências Matemáticas e de Computação Operações com Strings Introdução a Ponteiros e Funções Profa Rosana Braga 1 Strings Strings são seqüências de caracteres
Leia maisIntrodução a POO. Introdução a Linguagem C++ e POO
Introdução a POO Marcio Santi Linguagem C++ Introdução a Linguagem C++ e POO Programação Orientada a Objetos (POO) e C++ Recursos C++ não relacionados às classes Incompatibilidades entre C e C++ Classes
Leia maisINF 1007 Programação II
INF 1007 Programação II Aula 14 Árvores Binárias Edirlei Soares de Lima Árvores Uma estrutura de dados do tipo árvore permite que dados sejam organizados de maneira hierárquica.
Leia mais20 Caracteres - Tipo char
0 Caracteres - Tipo char Ronaldo F. Hashimoto e Carlos H. Morimoto Até agora vimos como o computador pode ser utilizado para processar informação que pode ser quantificada de forma numérica. No entanto,
Leia maisDAS5102 Fundamentos da Estrutura da Informação
Pilhas A estrutura de dados Pilha emula a forma de organização de objetos intuitiva que é utilizada diariamente nos mais diversos contextos da vida humana. Containeres são empilhados e desempilhados diariamente
Leia mais- UNIVERSIDADE DO VALE DO RIO DOS SINOS CIÊNCIAS EXATAS E TECNOLÓGICAS Curso: Informática / Ciência da Computação
Programação 1I Prof. Osório Árvores Binárias Pag.: 1 - UNIVERSIDADE DO VALE DO RIO DOS SINOS CIÊNCIAS EXATAS E TECNOLÓGICAS Curso: Informática / Ciência da Computação Programação II Disciplina: Linguagem
Leia maisÁrvores Binárias - continuação
Tópicos Avançados em Estrutura de Dados 6º Período Ciência da Computação Uma Aplicação de Árvores Binárias Árvores Binárias - continuação As árvore binárias são estruturas importantes toda vez que uma
Leia maisINF 1620 P1-10/04/02 Questão 1 Nome:
INF 1620 P1-10/04/02 Questão 1 Considere uma disciplina que adota o seguinte critério de aprovação: os alunos fazem duas provas (P1 e P2) iniciais; se a média nessas duas provas for maior ou igual a 5.0,
Leia mais17 - Funções e Procedimentos em C Programação Modular
17 - Funções e Procedimentos em C Programação Modular Unesp Campus de Guaratinguetá Curso de Programação Computadores Prof. Aníbal Tavares Profa. Cassilda Ribeiro Ministrado por: Prof. André Amarante 17
Leia maisINF1007: Programação 2 10 Árvores Binárias. (c) Dept. Informática - PUC-Rio 1
INF1007: Programação 2 10 Árvores Binárias (c) Dept. Informática - PUC-Rio 1 Tópicos Principais Introdução Árvores binárias Representação em C Ordens de percurso em árvores binárias Altura de uma árvore
Leia maisEstrutura de Dados Básica
Estrutura de Dados Básica Professor: Osvaldo Kotaro Takai. Aula 4: Tipos de Dados O objetivo desta aula é apresentar os tipos de dados manipulados pela linguagem C, tais como vetores e matrizes, bem como
Leia maisMétodos Computacionais. Árvores
Métodos Computacionais Árvores Árvores Vetores e Listas são ótimos para representar estrutura de dados lineares, mas não para modelar dados hierárquicos Exemplos de dados hierárquicos: sistema de arquivos
Leia maisA lógica de programação ajuda a facilitar o desenvolvimento dos futuros programas que você desenvolverá.
INTRODUÇÃO A lógica de programação é extremamente necessária para as pessoas que queiram trabalhar na área de programação, seja em qualquer linguagem de programação, como por exemplo: Pascal, Visual Basic,
Leia mais5 - Vetores e Matrizes Linguagem C CAPÍTULO 5 VETORES E MATRIZES
CAPÍTULO 5 5 VETORES E MATRIZES 5.1 Vetores Um vetor armazena uma determinada quantidade de dados de mesmo tipo. Vamos supor o problema de encontrar a média de idade de 4 pessoas. O programa poderia ser:
Leia maisLinguagem C: Árvores Binarias
Instituto de C Linguagem C: Árvores Binarias Luis Martí Instituto de Computação Universidade Federal Fluminense lmarti@ic.uff.br - http://lmarti.com Tópicos Principais Introdução Árvores binárias Implementação
Leia maisINF1007 - PROGRAMAÇÃO II LISTA DE EXERCÍCIOS 15
INF1007 - PROGRAMAÇÃO II LISTA DE EXERCÍCIOS 15 1. Um número racional é expresso por dois inteiros: um numerador e um denominador (este último diferente de zero!). Implemente um TAD para representar números
Leia maisÁrvores Binárias de Busca
Árvores Binárias de Busca Definição Uma Árvore Binária de Busca possui as mesmas propriedades de uma AB, acrescida da seguinte propriedade: Para todo nó da árvore, se seu valor é X, então: Os nós pertencentes
Leia maisSistemas Operacionais
Sistemas Operacionais Gerência de Arquivos Edson Moreno edson.moreno@pucrs.br http://www.inf.pucrs.br/~emoreno Sumário Conceituação de arquivos Implementação do sistemas de arquivo Introdução Sistema de
Leia maisFUNDAÇÃO EDUCACIONAL DE ITUIUTABA
FUNDAÇÃO EDUCACIONAL DE ITUIUTABA ASSOCIADA À UNIVERSIDADE DO ESTADO DE MINAS GERAIS CURSO DE SISTEMA DE INFORMAÇÃO PILHA E FILA Prof. Walteno Martins Parreira Júnior www.waltenomartins.com.br waltenomartins@yahoo.com
Leia maisEstruturas de Dados Pilhas, Filas e Deques
Estruturas de Dados Pilhas, Filas e Deques Prof. Eduardo Alchieri Estruturas de Dados Pilhas Pilhas Lista LIFO (Last In, First Out) Os elementos são colocados na estrutura (pilha) e retirados em ordem
Leia maisCurso de Programação Computadores
3 O Primeiro Programa em C Unesp Campus de Guaratinguetá Curso de Programação Computadores Prof. Aníbal Tavares Profa. Cassilda Ribeiro 3 O Primeiro Programa em C 3.1 - Introdução Depois dos conceitos
Leia maisAlgoritmos e Programação (Prática) Profa. Andreza Leite andreza.leite@univasf.edu.br
(Prática) Profa. Andreza Leite andreza.leite@univasf.edu.br Introdução O computador como ferramenta indispensável: Faz parte das nossas vidas; Por si só não faz nada de útil; Grande capacidade de resolução
Leia maisIntrodução. Manipulação de arquivos em C. Estrutura de Dados II Prof Jairo Francisco de Souza
Introdução Manipulação de arquivos em C Estrutura de Dados II Prof Jairo Francisco de Souza Manipulação de Arquivo em C Existem dois tipos possíveis de acesso a arquivos na linguagem C : sequencial (lendo
Leia maisMC-102 Aula 17 Strings e Matrizes
MC-102 Aula 17 Strings e Matrizes Instituto de Computação Unicamp 5 de Maio de 2015 Roteiro 1 Strings Strings: Exemplos 2 Matrizes Exemplos com Matrizes 3 Exercícios (Instituto de Computação Unicamp) MC-102
Leia maisAULA 2: INTRODUÇÃO A LINGUAGEM DE C. Curso: Ciência da Computação Profª.: Luciana Balieiro Cosme
AULA 2: INTRODUÇÃO A LINGUAGEM DE C Curso: Ciência da Computação Profª.: Luciana Balieiro Cosme Agenda Introdução a linguagem C Compiladores Variáveis IDEs Exemplos Exercícios Introdução A Linguagem C
Leia maisAlgoritmos e Estruturas de Dados: Árvore Binária
Algoritmos e Estruturas de Dados: Árvore Binária Exemplo de árvore binária e são os filhos de Altura desta árvore é 4 é a raiz da sub-árvore esquerda de Rômulo Silva de Oliveira Departamento de Automação
Leia maisPROGRAMAÇÃO ESTRUTURADA. CC 2º Período
PROGRAMAÇÃO ESTRUTURADA CC 2º Período PROGRAMAÇÃO ESTRUTURADA Aula 07: Funções O comando return Protótipo de funções O tipo void Arquivos-cabeçalho Escopo de variáveis Passagem de parâmetros por valor
Leia maisAula 4 Pseudocódigo Tipos de Dados, Expressões e Variáveis
1. TIPOS DE DADOS Todo o trabalho realizado por um computador é baseado na manipulação das informações contidas em sua memória. Estas informações podem ser classificadas em dois tipos: As instruções, que
Leia maisAlgoritmos de pesquisa. Tabelas de dispersão/hash
Algoritmos de pesquisa Tabelas de dispersão/hash Introdução Motivação: Considerar o problema de pesquisar um determinado valor num vetor (array). Se o vetor não está ordenado, a pesquisa requer O(n) de
Leia mais5 Apresentando a linguagem C
5 Apresentando a linguagem C O criador da linguagem de programação C foi Dennis Ritchie que, na década de 70, programou-a por meio de um computador DEC PDP-11 rodando sistema operacional Unix. Entretanto,
Leia maisTabela de Símbolos. Análise Semântica A Tabela de Símbolos. Principais Operações. Estrutura da Tabela de Símbolos. Declarações 11/6/2008
Tabela de Símbolos Análise Semântica A Tabela de Símbolos Fabiano Baldo Após a árvore de derivação, a tabela de símbolos é o principal atributo herdado em um compilador. É possível, mas não necessário,
Leia maisLinguagem e Técnicas de Programação I Operadores, expressões e funções. Prof. MSc. Hugo Souza Material desenvolvido por: Profa.
Linguagem e Técnicas de Programação I Operadores, expressões e funções Prof. MSc. Hugo Souza Material desenvolvido por: Profa. Ameliara Freire Operadores básicos Toda linguagem de programação, existem
Leia maisESTRUTURA DE DADOS PILHA
ESTRUTURA DE DADOS PILHA CONCEITO DE PILHAS - Pilhas são listas lineares onde a inserção de um novo item ou a remoção de um item já existente se dá em uma única extremidade, no topo. Pilha vazia Insere(A)
Leia maisEstruturas II UFOP 1/1
BCC 201 - Introdução à Programação I Estruturas II Guillermo Cámara-Chávez UFOP 1/1 Conceito de struct I Vetores e matrizes Estruturas de dados homegêneas Armazenam vários valores, mas todos de um mesmo
Leia maisExercício 1. Tabela 1: Cadastro de usuários, senhas e privilégios (exemplo). Login Senha Privilégio Armamento
1/5 Exercício 1 Um sistema de segurança militar, usado num submarino nuclear, controla o acesso de usuários a três subsistemas (armamento, navegação e comunicações) através da digitação do login do usuário
Leia maisSistemas Operacionais e Introdução à Programação. Programação com linguagem C
Sistemas Operacionais e Introdução à Programação Programação com linguagem C 1 Variáveis na linguagem C: tipo char O tipo char representa um caractere ASCII (ocupa só 1 byte) int main(int argc, char **
Leia maisEdwar Saliba Júnior. Dicas, Comandos e Exemplos Comparativos entre Linguagem Algorítmica e Linguagem C
Edwar Saliba Júnior Dicas, Comandos e Exemplos Comparativos entre Linguagem Algorítmica e Linguagem C Belo Horizonte 2010 Sumário 1 Nota:... 2 2 Comandos e Palavras Reservadas:... 3 3 Dicas... 4 3.1 Strings
Leia maisResumo da Matéria de Linguagem de Programação. Linguagem C
Resumo da Matéria de Linguagem de Programação Linguagem C Vitor H. Migoto de Gouvêa 2011 Sumário Como instalar um programa para executar o C...3 Sintaxe inicial da Linguagem de Programação C...4 Variáveis
Leia maisÍndice. Capítulo 2 Estrutura de Dados sequencial com armazenamento sequencial
Índice i Índice Capítulo 2 Estrutura de Dados sequencial com armazenamento sequencial 1. A Estrutura Abstrata de Dados Lista... 1 1.1. Definição... 1 1.2. Implementação de Listas utilizando armazenamento
Leia maisPersistência de Dados
Persistência de s Universidade do Estado de Santa Catarina - Udesc Centro de Ciências Tecnológicas - CCT Departamento de Ciência da Computação Tecnologia de Sistemas de Informação Estrutura de s II - DAD
Leia maisAlgoritmos e Programação _ Departamento de Informática
16 ARQUIVOS Um arquivo corresponde a um conjunto de informações (exemplo: uma estrutura de dados-registro), que pode ser armazenado em um dispositivo de memória permanente, exemplo disco rígido. As operações
Leia maisIntrodução à Linguagem
Introdução à Linguagem Curso de Nivelamento do PPGMNE Janeiro / 2011 Juliano J. Scremin jjscremin@jjscremin.t5.com.br Um pouco de história Um pouco de história: Nascimento do Python Um pouco de história:
Leia maisLinguagem C. Programação Estruturada. Fundamentos da Linguagem. Prof. Luis Nícolas de Amorim Trigo nicolas.trigo@ifsertao-pe.edu.
Programação Estruturada Linguagem C Fundamentos da Linguagem Prof. Luis Nícolas de Amorim Trigo nicolas.trigo@ifsertao-pe.edu.br Sumário Estrutura Básica Bibliotecas Básicas Tipos de Dados Básicos Variáveis/Declaração
Leia maisstruct LISTA item quant
UNIVERSIDADE SÃO JUDAS TADEU ESTRUTURA DE DADOS - PROF. H. Senger IMPLEMENTAÇÃO DE LISTAS COM VETORES A implementação de listas utilizando vetores é simples. Existe apenas uma pequena questão, com relação
Leia maissystem("pause"); //Envia comando para o sistema operacional solicitando parada de execução do programa } //limitador do corpo do programa
Atividade Prática no Ambiente Dev C++ Para as nossas atividades práticas vamos utilizar o ambiente de desenvolvimento da Linguagem C, Dev C++, ele é bastante fácil de utilizar e com muitos recursos. Segue
Leia maisCurso: Ciência da Computação Disciplina: Construção de Compiladores Período: 2010-1 Prof. Dr. Raimundo Moura
UFPI CCN DIE Curso: Ciência da Computação Disciplina: Construção de Compiladores Período: 2010-1 Prof. Dr. Raimundo Moura O projeto Desenvolver um compilador de um subconjunto básico da linguagem PORTUGOL.
Leia maisNeste artigo estudaremos os conceitos relacionados às matrizes unidimensionais (vetores) e multidimensionais.
Linguagem C Matrizes Objetivos Neste artigo estudaremos os conceitos relacionados às matrizes unidimensionais (vetores) e multidimensionais. Definição de Matrizes em Linguagem C As matrizes em geral são
Leia maisIFTO LÓGICA DE PROGRAMAÇÃO AULA 05
IFTO LÓGICA DE PROGRAMAÇÃO AULA 05 Prof. Manoel Campos da Silva Filho Tecnólogo em Processamento de Dados / Unitins Mestre em Engenharia Elétrica / UnB http://lab.ifto.edu.br/~mcampos http://manoelcampos.com
Leia maisA memória é um recurso fundamental e de extrema importância para a operação de qualquer Sistema Computacional; A memória trata-se de uma grande
A memória é um recurso fundamental e de extrema importância para a operação de qualquer Sistema Computacional; A memória trata-se de uma grande região de armazenamento formada por bytes ou palavras, cada
Leia maisControle do Arquivo Técnico
Controle do Arquivo Técnico Os documentos existentes de forma física (papel) no escritório devem ser guardados em pastas (normalmente pastas suspensas) localizadas no Arquivo Técnico. Este Arquivo pode
Leia maisAlgoritmos e Estrutura de Dados. Introdução a Linguagem Python (Parte I) Prof. Tiago A. E. Ferreira
Algoritmos e Estrutura de Dados Aula 1 Introdução a Linguagem Python (Parte I) Prof. Tiago A. E. Ferreira Linguagem a ser Utilizada? Nossa disciplina é de Algoritmos e Estrutura de Dados, e não de linguagem
Leia maisLição 1 - Criação de campos calculados em consultas
1 de 5 21-08-2011 22:15 Lição 1 - Criação de campos calculados em consultas Adição de Colunas com Valores Calculados: Vamos, inicialmente, relembrar, rapidamente alguns conceitos básicos sobre Consultas
Leia mais1 Resumo: Strings e vetores de caracteres. Departamento de Ciência da Computação IME/USP
Departamento de Ciência da Computação MAC2166 Introdução a Computação IME/USP Strings e vetores de caracteres 1 Resumo: O uso de strings facilita a manipulação de palavras e textos. Strings são basicamente
Leia maisEstrutura de Dados Básica
Estrutura de Dados Básica Professor: Osvaldo Kotaro Takai. Aula 7: Recursividade O objetivo desta aula é apresentar o conceito de recursão para solução de problemas. A recursão é uma técnica de programação
Leia maisComponentes da linguagem C++
Componentes da linguagem C++ C++ é uma linguagem de programação orientada a objetos (OO) que oferece suporte às características OO, além de permitir você realizar outras tarefas, similarmente a outras
Leia maisDesenvolvendo Websites com PHP
Desenvolvendo Websites com PHP Aprenda a criar Websites dinâmicos e interativos com PHP e bancos de dados Juliano Niederauer 19 Capítulo 1 O que é o PHP? O PHP é uma das linguagens mais utilizadas na Web.
Leia maisAlgoritmos e Estrutura de Dados II
Universidade Federal do Vale do São Francisco Algoritmos e Estrutura de Dados II Professor: Marcelo Santos Linder E-mail: marcelo.linder@univasf.edu.br Ementa Árvores B, grafos e tabelas de hash: alocação
Leia maisINF 1007 Programação II
INF 1007 Programação II Aula 06 Tipos Estruturados Edirlei Soares de Lima Dados Compostos Até agora somente utilizamos tipos de dados simples: char, int, float, double. Muitas vezes
Leia maisPrimeiro Curso de Programação em C 3 a Edição
Edson Luiz França Senne Primeiro Curso de Programação em C 3 a Edição Visual Books Sumário Prefácio da Terceira Edição 9 Prefácio da Primeira Edição 11 Aula 1 13 Regras de sintaxe de uma linguagem de programação...
Leia maisPROGRAMAÇÃO II 3. PILHA DINÂMICA
3. PILHA DINÂMICA PROGRAMAÇÃO II Prof. Jean Eduardo Glazar Uma pilha é um tipo especial de Pilha na quais todas as inserções e remoções são feitas na primeira posição, que é chamada de topo. Outro nome
Leia maisIntrodução a Java. Hélder Nunes
Introdução a Java Hélder Nunes 2 Exercício de Fixação Os 4 elementos básicos da OO são os objetos, as classes, os atributos e os métodos. A orientação a objetos consiste em considerar os sistemas computacionais
Leia maisALGORITMOS E ESTRUTURAS DE DADOS CES-11 CES-11 CES-11
ALGORITMOS E ESTRUTURAS DE DADOS Prof. Paulo André Castro pauloac@ita.br Sala 110 Prédio da Computação www.comp.ita.br/~pauloac IECE - ITA Uma árvore binária é: uma árvore vazia; ou uma árvore onde qualquer
Leia maisINF 1007 Programação II
INF 1007 Programação II Aula 05 Cadeias de Caracteres Edirlei Soares de Lima Caracteres Caracteres são representados através de códigos numéricos. Tabela de códigos: Define correspondência
Leia mais