Por que alunos de engenharia são obrigados a fazer AEDS2? Algoritmos e Estruturas de Dados II

Tamanho: px
Começar a partir da página:

Download "Por que alunos de engenharia são obrigados a fazer AEDS2? Algoritmos e Estruturas de Dados II"

Transcrição

1 Por que alunos de engenharia são obrigados a fazer AEDS2? Algoritmos e Estruturas de Gisele L. Pappa, Clodoveu Davis e Raquel (glpappa@dcc.ufmg.br) Por que alunos de computação são obrigados a fazer AEDS2? AEDS2: e a diversão começa! Como criar seu próprio Facebook? Como representar seu perfil, ou seja, como armazenar as Informações pessoais? Como armazenar sua lista de amigos? Como armazenar 1 bilhão de usuários? Como buscar um novo amigo? Como sugerir novos amigos? Como ordenar suas fotos em ordem cronológica? 1

2 Ementa Tipos Abstratos de Dados (TADs) Análise de Algoritmos O(n), O(n log n), )(n!), Estruturas de dados listas, filas, pilhas e árvores Métodos de ordenação quick, heap, merge, select, etc Métodos de pesquisa Parte 2 Prova 2 06/10 TP2 hash, árvores binárias, árvores digitais Parte 1 Prova 1 13/09 TP1 Parte 3 Prova 3 17/11 TP3 Por que esse auditório vai começar assim. E terminar assim???? Avaliação 3 provas (total 60 pontos) 3 trabalhos práticos power (total 35 pontos) Implementação Documentação Teste 1 trabalho prático menos power (3 pontos) Exercícios (total 2 pontos) Moddle Todas informações relacionadas ao curso, incluindo notas de aulas, estarão disponíveis no Moodle Sistema de submissão de trabalhos práticos Prático Detalhes Linguagem: C Software Recomendado: CodeBlocks Instruções de instalação no Learnloop Sistema operacional recomendado: Linux Alta carga extra classe 2

3 Tópicos Programação em C recomendações e boas práticas Clodoveu Davis Gisele L. Pappa Indentação Comentários Modularização Compilação e Debug Entrada e saída Vetores e Passagem de parâmetros Structs Boas Práticas Com um pequeno esforço extra, programas escritos em C podem se tornar mais legíveis e mais facilmente debugáveis No caso de disciplinas de programação, isso ainda ajuda no entendimento das idéias e na correção de trabalhos Indentação É usual empregar TABS para indicar blocos de programação Em geral, 1 tab equivale a 8 espaços, MAS NÃO USAR ESPAÇOS para alinhar Há vários estilos Quando o bloco é longo, é usual colocar um pequeno comentário após o fechamento indicando o que está sendo fechado Indentação K&R: Kernighan & Ritchie Indentação 1TBS: One True Brace Style 3

4 Indentação Comentários Allman Importantes para compreensão do código Mais importantes em código mais complexo Úteis para explicar o conteúdo de variáveis, mas não substituem um bom critério de atribuição de nomes Não exagerar! Comentários No início de cada módulo de código (arquivos.c,.h) Uma linha em cada função, explicando o que ela faz Não é necessário explicar COMO ela faz, o código deve ser claro o bastante para permitir esse entendimento em uma função razoavelmente pequena Se necessário, considerar a quebra em outras funções Comentário na linha da declaração, se necessário, para esclarecer o significado/o uso de uma variável Comentário na linha do fecha-chave, para ajudar a entender blocos e loops Comentários No início de um bloco/arquivo fonte Em função (simples) Comentários Comentários Em funções (arquivo.h) 4

5 Comentários Comentários Em variáveis Em structs No fim de um bloco de programa No código Modularização Modularização Planejar a quebra de um programa em módulos Um módulo não significa necessariamente um arquivo fonte; muitas vezes, é um par de arquivos.c /.h Existe sempre um arquivo fonte para o programa principal (main), e outros para funções adicionais ou componentes Montar módulos especificamente para tipos abstratos de dados [aula: TAD] Procurar dar independência aos módulos, para que possam eventualmente ser reaproveitados Modularização Modularização 5

6 Modularização Modularização transformação em biblioteca timer.lib Copiar timer.h para o diretório includes do compilador Atenção: incluir timer.h e timer.c no projeto Copiar timer.lib para o diretório lib do compilador Constantes e #define Não usar números mágicos no código Algumas constantes usadas no programa podem ter que ser modificadas, e é mais fácil fazer isso em um lugar só Sempre que for tornar o código mais legível, usar #define para dar um nome à constante Em geral, nomes de constantes são em maiúsculas #define PI #define MAX_VETOR 1000 Nomes de variáveis Algumas variáveis merecem nomes significativos: MAX_VETOR, numclientes, listaalunos Variáveis auxiliares em geral recebem nomes curtos: i, j, aux, x Cuidado para não fazer confusão Não abusar: i, ii, iii, aux1, aux2, aux3 Variáveis inteiras: i, j, k Variáveis reais: x, y, z : s1, s2 Booleanas: nome do teste (existe, valido, ocorre) Nomes de variáveis Estilos variados: Só minúsculas (i, num, conta) Só maiúsculas (constantes: PI, E, MAX) CamelCase (nummat, anguloentrada) Indicação do tipo no início do nome (inum, ivalor, fraio, faltura, dvolume) Há quem prefira inserir comentários e usar nomes de variáveis em inglês, por ficar mais próximo da linguagem de programação Organização e limpeza Procurar dar um aspecto organizado ao código, ajuda na compreensão Entender o código fonte como um instrumento de comunicação Comentar excessivamente código mal escrito não ajuda Dar nomes adequados a variáveis ajuda bastante 6

7 Parênteses e espaçamento Usar espaços antes de parênteses, depois de vírgulas, ao redor de operadores binários if (x == 10) y = 5; for (i = 0; i < 10; i++) x += a; a = f(b); Cuidado com notações compactas demais, e com comandos embutidos em outros if (x++ == b) y = 5; Correção e robustez Testes: prever todo tipo de problema e variações na entrada de dados Limites de vetores Valores inteiros e de ponto flutuante Contadores e incremento Testes de fim de arquivo Teste de disponibilidade de memória para alocação Compilação LER as mensagens de erro e ENTENDER a origem do problema Warnings: indicam problemas potenciais, devem ser resolvidos Muitas vezes a mensagem de erro não reflete o que está ocorrendo Observar a linha em que o erro foi indicado, a linha anterior, o bloco de código em que ocorreu, e o corpo da função em que ocorreu Debugger Ajuda a acompanhar os valores das variáveis ao longo da execução Observar o valor de variáveis (watches) Posicionar pontos de interrupção (breakpoints) Executar passo a passo Vide Documentação do CodeBlocks I/O em C Formalmente, rotinas de entrada e saída não fazem parte da linguagem, e sim de bibliotecas que acompanham os compiladores Felizmente, são padronizadas Exige-se a linha #include <stdio.h> para usá-las ENTRADA E SAÍDA 7

8 I/O em C printf(string [, valor, valor, ]); O string contém uma máscara (template) com lacunas reservadas para os valores que serão impressos Pode não existir lacuna printf( O valor de x eh %d, x); printf( Area: %f\n, PI*d*d/4); printf( Nome: %s, nomealuno); printf Especificadores de formato %c (char) %s (string) %d (int) %ld (long int) %f (float) %lf (double) %e (float notação científica) %g (e ou f, ou seja, notação científica se necessário) printf Especificação completa Caracteres de escape Acrescentados à máscara para provocar reposicionamento do cursor \n: nova linha \t: tabulação \r: backspace \\: caractere da barra invertida Entrada Entrada Com máscara: scanf(string, *var [, *var, ]); Mesmos especificadores de formato do printf A função precisa receber o endereço da variável à qual o valor digitado será atribuído scanf( %d, &num) scanf( %c%d, &letra, &num); scanf( %c, &ch); scanf( %s, s); // string scanf( %13c, s); //le 13 caracteres scanf( %c, &ch); //pula brancos 8

9 Entrada Observe que scanfinterrompe a leitura de um string quando encontra um branco, se usado com %s Uso de %[]: %[aeiou]: apenas as vogais são permitidas %[^aeiou]: as vogais não são permitidas %[^\n]: interrompe quando recebe um [enter] %60[^\n]: admite até 60 caracteres, e para quando encontra um enter Entrada Linhas inteiras: gets(string) Lê uma linha inteira, excluindo \n, e coloca \0 no final Com limite de tamanho: fgets(string, tammax, stdin) Entrada Caracteres individuais: getchar() O caractere digitado é o valor de retorno da função I/O para arquivos A entrada do teclado e saída para o monitor são realizadas internamente considerando três dispositivos virtuais: stdin, stdout e stderr Como são dispositivos padrão, referências a stdin e stdout eles são omitidas dos comandos I/O para arquivos é muito semelhante à operação com stdin e stdout, mas um handle ao arquivo tem que ser fornecido I/O para arquivos O handle é obtido no momento da abertura do arquivo FILE *infile; // variável handle FILE *outfile; //abre o arquivo para leitura (r) ou gravacao (w) infile = fopen( arquivo.txt, r ); outfile = fopen( saida.txt, w ); fscanf(infile, %d, &num); fprintf(outfile, O valor lido eh %8.2d\n, num); fclose(infile); fclose(outfile); I/O para arquivos fopen: modos de abertura 9

10 I/O para arquivos Se o handle retornar nulo do comando fopen, então ocorreu erro (arquivo não encontrado, arquivo travado contra gravação, permissão negada pelo sistema operacional, etc.) Testar: if ((infile = fopen( arquivo.txt, r )) == NULL) printf( Nao consegui abrir.\n ); exit(1); I/O para arquivos gets() fgets(arq, tammax, string); getchar() fgetc(arq); putc(ch) fputc(arq, ch) printf fprintf(arq, string, valor) scanf fscanf(arq, string, endereço) feof(arq) Retorna booleano indicando se o fim do arquivo foi atingido Neste caso, o fgetc retorna a constante EOF, definida em stdio como 0xFFFF Exemplo I/O para arquivos Exercício (POSCOMP 2009) #include<stdio.h> #include<string.h> int main (void) O que será impresso quando o programa for executado? char texto[]= "foi muito facil"; int i; for (i = 0; i < strlen(texto); i++) if (texto[i] == ' ') break; i++; for ( ; i < strlen(texto); i++) printf("%c", texto[i]); return 0; I/O para arquivos Exemplo (variação) VETORES E STRINGS 10

11 Alocação estática de memória Ao se declarar uma variável qualquer, o compilador deixa reservado um espaço suficiente na memória para armazená-la int a; // 2 bytes long b; // 4 bytes float x; // 4 bytes double y; // 8 bytes char c; // 1 byte Alocação estática de memória Ao fazer a alocação estática, apenas o espaço necessário na memória é reservado O conteúdo de cada posição não é alterado, e portanto uma variável apenas declarada pode conter qualquer coisa Inicializar as variáveis, atribuindo valores, antes do uso Inclusive vetores, matrizes e strings Vetores Quando se declara um vetor, o valor entre chaves indica quantas vezes o espaço de memória necessário para o tipo básico será alocado int v[100]; // 100 * sizeof(int) = 200 bytes long vl[200]; // 200 * sizeof(long) = 800 bytes double z[1000]; // 1000 * sizeof(double) = 8000 bytes Vetores A referência a uma posição de um vetor indica o cálculo de uma posição de memória a partir do início do vetor float x[1000]; // x[20] está na posição x + 20*sizeof(float) Na verdade, o símbolo x é um apontador para o início da região de memória reservada para o vetor Vetores C NÃO AVISA NEM PRODUZ ERRO QUANDO O LIMITE DE UM VETOR OU MATRIZ FOR EXCEDIDO y = x[2000]; // não dá erro, mas vai acessar // uma parte inesperada da memória Erro mais comum (runtime): segmentation fault É responsabilidade do programador verificar os limites, e garantir que não sejam excedidos Matrizes = Vetores de mais de uma dimensão Na verdade, a alocação na memória é linear Muda apenas o cálculo da posição de memória do elemento referenciado int M[5][5]; M[0][0] = 15; M[2][3] = 2; // posicao: M + (2*5 + 3)*sizeof(int) 11

12 Um string é um vetor do tipo char Para manipulação do string, atribuindo e recuperando valores, e realizando operações sobre ele, é importante entender essa característica Quando o conteúdo de um string não ocupa todo o espaço disponível, usa-se um caractere \0 (ou NULL, código ASCII 0) como delimitador constantes aparecem no código entre aspas printf( %s, Bom dia! ); O delimitador \0 está incluído: Não é possível fazer atribuições diretas para strings Usar a função strcpy ou a função strncpy Na inicialização, pode-se usar o mesmo recurso disponível para vetores char nome[] = A, n, a, \0 ; Ou char nome[] = Ana ; Como o nome do string representa o endereço onde começa o string, é possível manipulá-lo diretamente Cuidado! Exemplo char nome[] = Alexandre ; printf( %s\n, nome + 3); // imprime xandre Funções strlen(st): retorna o comprimento do string (com exceção do \0) strcat(st1, st2): concatena o s2 no s1 (s1 tem que ter espaço) strcmp(s1, s2): retorna <0 se s1 é menor que s2, ==0 se s1 é igual a s2, e >0 se s1 é maior que s2 (ordem alfabética) A comparação entre strings também tem que ser feita caractere a caractere, portanto não se pode usar s1==s2; isso só compara os endereços 12

13 strncat, strncmp, strncpy: idem aos anteriores, mas especifica o número de caracteres que serão considerados strtok: extrai tokens, substrings delimitados Exemplo long int num; char linha[256]; while (!feof(infile)) fgets(linha, 256, infile); p1 = strtok(linha, " \n"); //delim: branco ou fim de linha while ((p1!= NULL) && (!feof(infile))) num++; fprintf(outfile, "%s\n", p1); p1 = strtok(null, " \n"); printf("o arquivo de entrada tinha %ld palavras.\n", num); fclose(infile); Vetores de strings podem ser criados Exemplo char DiaSemana[7][14] = Domingo, Segunda, Terça, Quarta, Quinta, Sexta, Sabado ; printf( %s\n, DiaSemana[3]); Alocação Estática x Dinâmica Linguagens de programação como Pascal, C e C++ permitem dois tipos de alocação de memória: Estática e Dinâmica Na alocação estática, o espaço de memória para as variáveis é reservado no início da execução, não podendo ser alterado depois int a; int b[20]; Na alocação dinâmica, o espaço de memória para as variáveis pode ser alocado dinamicamente durante a execução do programa E Java? Em java não existe manipulação explícita de apontadores. Todo objeto é criado dinamicamente (new) e as variáveis apontam para os objetos Variáveis dos tipos básicos são alocadas estaticamente (não é necesário o new) A desalocação de memória é feita automaticamente (garbage collection) Alocação Dinâmica A memória alocada dinamicamente é acessada através de Apontadores (pointers) que na verdade são variáveis que armazenam o endereço de uma área de memória A memória alocada dinamicamente faz parte de uma área de memória chamada heap Basicamente, o programa aloca e desaloca porções de memória do heap durante a execução 13

14 Alocação Dinâmica Apontadores Notação em C 0x016 a 0x020 b Memória Estática 10 0x234 a é um int b é um apontador para um int 10 Heap 0x214 0x218 0x222 0x226 0x230 0x234 0x238 0x242 0x246 definição de p como um apontador para uma variável do tipo T T *p; Alocação de memória para uma variável apontada por p p = (T*) malloc(sizeof(t)); Desalocação de memória free(p); Conteudo da variável apontada por P *p; Valor nulo para um apontador null; Endereço de uma variável a (endereço do primeiro byte) &a; Endereço da Variável Endereço do primeiro byte. Exemplo int i; char c; int v[5]; struct int x,y; p; printf("%d\n", &i); printf("%d\n", &c); printf("%d\n", &v); printf("%d\n", &p); Endereços Impressos: P 8 bytes P 8 bytes Alocação Dinâmica int *a, b; b = 10; a = (int *) malloc(sizeof(int)); *a = 20; a = &b; *a = 30; // qual o valor de b? Memória Estática Heap Alocação Dinâmica Erros Comuns int *a, b; b = 10; a = (int *) malloc(sizeof(int)); *a = 20; a = &b; *a = 30; // qual o valor de b? Memória Estática b a X Memória não foi desalocada. O espaço continua ocupado 20 Heap Esquecer de alocar memória e tentar acessar o conteúdo da variável Copiar o valor do apontador ao invés do valor da variável apontada Esquecer de desalocar memória Ela é desalocada ao fim do programa ou procedimento função onde a variável está declarada, mas pode ser um problema em loops Tentar acessar o conteúdo da variável depois Algoritmos e Estrutura Dados de II desalocá-la 14

15 Alocação Dinâmica de Vetores Normalmente, a alocação dinâmica é utilizada para criar vetores em tempo de execução Exemplo: int *p; p = (int *)malloc(10*sizeof(int)); Aloca um vetor de inteiros com x posições. A manipulação pode ser feita normalmente: p[i] = O apontador pguarda o endereço (aponta) da primeira posição do vetor. Vetores e Apontadores Na verdade, em C todo vetor (mesmo alocados de forma estática) pode ser visto como um apontador. Pode se trabalhar usando ambas notações: *p é equivalente a p[0] p é equivalente a &p[0] *(p + i) é equivalente a p[i] considerando v um vetor alocado estaticamente, e p dinamicamente, pode-se fazer p = v, mas não v = p (v é, de certa forma, um ponteiro constante ) p Alocação Dinâmica de Matrizes Declaração de Matriz Dinâmica: int** result_matrix; int** read_matrix(int size_x, int size_y) int** matrix; int i; matrix = calloc(size_x, 1+sizeof(int*)); // alloc one extra ptr for(i = 0;i<size_x;i++) matrix[i] = calloc(size_y, sizeof(int)); matrix[size_x] = NULL; // set the extra ptr to NULL for(int i = 0;i<size_x;i++) for(int j = 0;j<size_y;j++) matrix[i][j] = i*10+j; return matrix; void free_matrix(int **matrix, int rows) int i; for(i=0; i<rows; i++) free(matrix[i]); free(matrix); Matrizes Realloc void *realloc(void *ptr, size_t size) int main() char buf[80], *message; puts("enter a line of text."); gets(buf); /* Allocate the initial block and copy the string to it. */ message = realloc(null, strlen(buf)+1); strcpy(message, buf); puts(message); puts("enter another line of text."); gets(buf); // Increase the allocation, and concatenate the string to it. message = realloc(message,(strlen(message) + strlen(buf)+1)); strcat(message, buf); puts(message); return 0; Exercício: O que vai ser impresso? double a; double *p, *q; ? a = 3.14; printf("%f\n", a); p = &a; *p = 2.718; printf("%f\n", a); a = 5; printf("%f\n", *p); p = NULL; p = (double *)malloc(sizeof(double)); *p = 20; q = p; printf("%f\n", *p); printf("%f\n", a); free(p); printf("%f\n", *q); int a, b, i, v[10]; int *p; b = 10; p = &b; a = *p + 100; printf("%d\n", a); a = *&b; printf("%d\n", a); for(i=0; i<10; i++) v[i] = i; p = v; for(i=0; i<5; i++) *(p+i) = 10*i; p = p + 5; *p = -5; for(i=0; i<10; i++) printf( %d,v[i]);

16 Apontadores para Tipos Estruturados Apontadores podem ser utilizados com tipos estruturados. Isso é muito comum na criação de estruturas encadeadas (listas, filas, etc) typedef struct int idade; double salario; TRegistro; TRegistro *a; a = (TRegistro *) malloc(sizeof(tregistro); a->idade = 30; // equivalente: (*a).idade a->salario = 80; Passagem de Parâmetros Em pascal e C++, parâmetros para função podem ser passados por valor ou por referência Por valor:o parâmetro formal (recebido no procedimento) é uma cópia do parâmetro real (passado na chamada) Por referência: o parâmetro formal (recebido no procedimento) é uma referência para o parâmetro real (passado na chamada) As modificações efetuadas acontecem no parâmetro real Em C só existe passagem por valor, logo deve-se implementar a passagem por referência utilizando-se apontadores Passagem de Parâmetros (C) void SomaUm(int x, int *y) x = x + 1; *y = (*y) + 1; printf("funcao SomaUm: %d %d\n", x, *y); 1 1 int main() int a=0, b=0; SomaUm(a, &b); printf("programa principal: %d %d\n", a, b); 0 1 Passagem de Parâmetros E para alocar memória dentro de um procedimento? Em pascal, basta passar a variável (apontador) como referência. Em C também, mas como não há passagem por referência as coisas são um pouco mais complicadas void aloca(int *x, int n) x=(int *)malloc(n*sizeof(int)); x[0] = 20; int main() Error! Access Violation! int *a; aloca(a, 10); a[1] = 40; void aloca(int **x, int n) *x=(int *)malloc(n*sizeof(int)); *x[0] = 20; int main() OK int *a; aloca(&a, 10); a[1] = 40; Exercícios 1. Faça um programa que leia um valor n,crie dinamicamente um vetor de n elementos e passe esse vetor para uma função que vai ler os elementos desse vetor. 2. Declare um TipoRegistro, com campos a inteiro e b que é um apontador para char. No seu programa crie dinamicamente uma váriavel do TipoRegistro e atribua os valores 10 e x aos seus campos. Respostas (1) void LeVetor(int *a, int n) int i; for(i=0; i<n; i++) scanf("%d",&a[i]); int main(int argc, char *argv[]) int *v, n, i; scanf("%d",&n); v = (int *) malloc(n*sizeof(int)); LeVetor(v,n); for(i=0; i<n; i++) printf("%d\n",v[i]); Apesar do conteúdo ser modificado Não é necessário passar por referência pois todo vetor já é um apontador 16

17 typedef struct int a; char *b; TRegistro; Respostas (2) int main(int argc, char *argv[]) TRegistro *reg; reg = (TRegistro *) malloc(sizeof(tregistro)); reg->a = 10; reg->b = (char *) malloc(sizeof(char)); *(reg->b) = 'x'; printf("%d %c",reg->a, *(reg->b)); É necessário alocar espaço para o registro e para o campo b. *(reg->b) representa o conteúdo da variável apontada por reg->b Passagem de parâmetros para o programa Chamada: C:\> prog.exe arg1 arg2 arg3 Declaração completa da função main int main(int argc, char *argv[]) argc: número de parâmetros passados na linha de comando argv: um vetor de argc strings argv[0]: nome do programa argv[1]: primeiro parâmetro argv[argc 1]: último parâmetro argv[argc] é sempre NULL Referências Mizrahi, V. V. Treinamento em Linguagem C. Pearson, Kernighan B.W., Ritchie, D.M. C A linguagem de programação (padrão ANSI). Campus, Vide Moodle para links (inclusive cursos online), exemplos e exercícios 17

Alocação Dinâmica de Memória

Alocação Dinâmica de Memória Alocação Dinâmica de Memória Luiz Chaimowicz, Raquel O. Prates, Pedro O.S. Vaz de Melo Algoritmos e Estruturas de Dados II DCC UFMG Alocação Estática x Dinâmica C: dois tipos de alocação de memória: Estática

Leia mais

BCC202 - Estrutura de Dados I

BCC202 - Estrutura de Dados I BCC202 - Estrutura de Dados I Aula 02: Alocação Dinâmica de Memória Reinaldo Fortes Universidade Federal de Ouro Preto, UFOP Departamento de Ciência da Computação, DECOM Website: www.decom.ufop.br/reifortes

Leia mais

Sumário. Introdução à Ciência da Computação. Ponteiros em C. Introdução. Definição. Por quê ponteiros são importantes?

Sumário. Introdução à Ciência da Computação. Ponteiros em C. Introdução. Definição. Por quê ponteiros são importantes? Introdução à Ciência da Computação Ponteiros em C Prof. Ricardo J. G. B. Campello Sumário Introdução Definição de Ponteiros Declaração de Ponteiros em C Manipulação de Ponteiros em C Operações Ponteiros

Leia mais

Estruturas da linguagem C. 1. Identificadores, tipos primitivos, variáveis e constantes, operadores e expressões.

Estruturas da linguagem C. 1. Identificadores, tipos primitivos, variáveis e constantes, operadores e expressões. 1 Estruturas da linguagem C 1. Identificadores, tipos primitivos, variáveis e constantes, operadores e expressões. Identificadores Os identificadores seguem a duas regras: 1. Devem ser começados por letras

Leia mais

Linguagem C: Introdução

Linguagem C: Introdução Linguagem C: Introdução Linguagem C É uma Linguagem de programação genérica que é utilizada para a criação de programas diversos como: Processadores de texto Planilhas eletrônicas Sistemas operacionais

Leia mais

Introdução a Programação de Jogos

Introdução a Programação de Jogos Introdução a Programação de Jogos Aula 03 Introdução a Linguagem C Edirlei Soares de Lima Estrutura de um Programa C Inclusão de bibliotecas auxiliares: #include Definição

Leia mais

Exercícios. Alocação Dinâmica. Alocação dinâmica de memória. Alocação de memória. Alocação da Memória Principal. Alocação da Memória Principal

Exercícios. Alocação Dinâmica. Alocação dinâmica de memória. Alocação de memória. Alocação da Memória Principal. Alocação da Memória Principal Exercícios 1) Crie uma função que recebe os coeficientes de uma função do 2o. grau e retorna as raízes sem usar vetor. 2) Faça um programa que acha o maior e o menor inteiro dentro de um vetor de 10 inteiros,

Leia mais

Módulo 5 Vetores e Alocação Dinâmica

Módulo 5 Vetores e Alocação Dinâmica Estruturas de Dados Módulo 5 Vetores e Alocação Dinâmica 1/9/2005 (c) Dept. Informática - PUC-Rio 1 Referências Waldemar Celes, Renato Cerqueira, José Lucas Rangel, Introdução a Estruturas de Dados, Editora

Leia mais

1 Exercícios com ponteiros

1 Exercícios com ponteiros Computação para Informática Funções e Ponteiros1 EXERCÍCIOS COM PONTEIROS Computação para Informática - Prof. Adriano Joaquim de Oliveira Cruz Aula Prática - Funções e ponteiros O objetivo desta aula prática

Leia mais

Alocação Dinâmica em C

Alocação Dinâmica em C Universidade de São Paulo São Carlos Instituto de Ciências Matemáticas e de Computação Alocação Dinâmica em C Profa Rosana Braga Adaptado de material preparado pela profa Silvana Maria Affonso de Lara

Leia mais

INF 1007 Programação II

INF 1007 Programação II INF 1007 Programação II Aula 04 Alocação Dinâmica Edirlei Soares de Lima Vetores - Declaração e Inicialização Declaração de um vetor: int meu_vetor[10]; Reserva um espaço de memória

Leia mais

INF1007: Programação 2. 2 Alocação Dinâmica. 17/02/2014 (c) Dept. Informática - PUC-Rio 1

INF1007: Programação 2. 2 Alocação Dinâmica. 17/02/2014 (c) Dept. Informática - PUC-Rio 1 INF1007: Programação 2 2 Alocação Dinâmica 17/02/2014 (c) Dept. Informática - PUC-Rio 1 Tópicos Alocação dinâmica Vetores locais e funções 17/02/2014 (c) Dept. Informática - PUC-Rio 2 Alocação Dinâmica

Leia mais

O que é um apontador em C (type pointer in C)?

O que é um apontador em C (type pointer in C)? O que é um apontador em C (type pointer in C)? Um apontador é uma variável que contém um endereço de outra variável. int x = 10;//variável inteira iniciada com o valor 10 int *px = &x;//variável apontadora

Leia mais

Linguagem C Princípios Básicos (parte 1)

Linguagem C Princípios Básicos (parte 1) Linguagem C Princípios Básicos (parte 1) Objetivos O principal objetivo deste artigo é explicar alguns conceitos fundamentais de programação em C. No final será implementado um programa envolvendo todos

Leia mais

Estruturas de Dados Aula 2: Estruturas Estáticas 02/03/2011

Estruturas de Dados Aula 2: Estruturas Estáticas 02/03/2011 Estruturas de Dados Aula 2: Estruturas Estáticas 02/03/2011 Tipos Básicos Quantos valores distintos podemos representar com o tipo char? Operadores de Incremento e Decremento ++ e -- Incrementa ou decrementa

Leia mais

Estruturas de Dados Aulas 3 e 4: Uso da. 14/03/2011 e 16/03/2011

Estruturas de Dados Aulas 3 e 4: Uso da. 14/03/2011 e 16/03/2011 Estruturas de Dados Aulas 3 e 4: Uso da memória e Vetores 14/03/2011 e 16/03/2011 Uso da memória Existem 3 maneiras de reservar o espaço da memória: Variáveis globais (estáticas) Espaço existe enquanto

Leia mais

Universidade Federal de Uberlândia Faculdade de Computação. Linguagem C: ponteiros e alocação dinâmica

Universidade Federal de Uberlândia Faculdade de Computação. Linguagem C: ponteiros e alocação dinâmica Universidade Federal de Uberlândia Faculdade de Computação Linguagem C: ponteiros e alocação dinâmica Prof. Renato Pimentel 1 Ponteiros 2 Prof. Renato Pimentel 1 Ponteiros: introdução Toda a informação

Leia mais

Métodos Computacionais

Métodos Computacionais Métodos Computacionais Objetivos da Disciplina e Introdução a Linguagem C Construções Básicas Objetivos da Disciplina Objetivo Geral Discutir técnicas de programação e estruturação de dados para o desenvolvimento

Leia mais

Programação: Vetores

Programação: Vetores Programação de Computadores I Aula 09 Programação: Vetores José Romildo Malaquias Departamento de Computação Universidade Federal de Ouro Preto 2011-1 1/62 Motivação Problema Faça um programa que leia

Leia mais

Tipos Abstratos de Dados. Estrutura de Dados

Tipos Abstratos de Dados. Estrutura de Dados Tipos Abstratos de Dados Tipo Abstrato de Dados ou TAD Idéia principal: desvincular o tipo de dado (valores e operações) de sua implementação: O que o tipo faz e não como ele faz! Vantagens da desvinculação:

Leia mais

ALGORITMOS E ESTRUTURAS DE DADOS CES-11

ALGORITMOS E ESTRUTURAS DE DADOS CES-11 ALGORITMOS E ESTRUTURAS DE DADOS CES-11 Prof. Paulo André Castro pauloac@ita.br Sala 110 Prédio da Computação www.comp.ita.br/~pauloac IECE - ITA Revisão CES-11 Tipos escalares primitivos Tipos constituídos

Leia mais

Introdução à Computação

Introdução à Computação Introdução à Computação Linguagem C Professor: André de Carvalho Aula de hoje Introdução Tipos compostos Tipo enumeração Conclusão Tipos compostos A Linguagem C permite criar tipos de dados definíveis

Leia mais

Hello World. Linguagem C. Tipos de Dados. Palavras Reservadas. Operadores Aritméticos. Pré e pós incremento e pré e pós decremento

Hello World. Linguagem C. Tipos de Dados. Palavras Reservadas. Operadores Aritméticos. Pré e pós incremento e pré e pós decremento Hello World Linguagem C printf("hello world!\n"); main é a função principal, a execução do programa começa por ela printf é uma função usada para enviar dados para o vídeo Palavras Reservadas auto double

Leia mais

A Linguagem C. A forma de um programa em C

A Linguagem C. A forma de um programa em C A Linguagem C Criada em 1972 por D. M. Ritchie e K. Thompson. Tornou-se uma das mais importantes e populares, principalmente pela portabilidade e flexibilidade. Foi projetada para o desenvolvimento de

Leia mais

Alocação de Memória. Lucas Ferrari de Oliveira Professor Adjunto Universidade Federal do Paraná (UFPR)

Alocação de Memória. Lucas Ferrari de Oliveira Professor Adjunto Universidade Federal do Paraná (UFPR) Alocação de Memória Linguagem de Programação Estruturada 1 Alocação dinâmica e ponteiros Lucas Ferrari de Oliveira Professor Adjunto Universidade Federal do Paraná (UFPR) Sumario Introdução Alocação Estática

Leia mais

Linguagem C Ficheiros Compilação Separada

Linguagem C Ficheiros Compilação Separada Linguagem C Ficheiros Compilação Separada typedef definição de tipos Apontadores para estruturas Ficheiros na bibiloteca standard do C Compilação Separada Definição de novos tipos em C É possível definir

Leia mais

Ambiente de desenvolvimento

Ambiente de desenvolvimento Linguagem C Ambiente de desenvolvimento Um programa em C passa por seis fases até a execução: 1) Edição 2) Pré-processamento 3) Compilação 4) Linking 5) Carregamento 6) Execução Etapa 1: Criação do programa

Leia mais

PROGRAMAÇÃO I E N T R A DA E S A Í DA D E DA D O S

PROGRAMAÇÃO I E N T R A DA E S A Í DA D E DA D O S PROGRAMAÇÃO I VA R I Á V E I S, C O N S TA N T E S, O P E R A D O R E S E N T R A DA E S A Í DA D E DA D O S Variáveis 2 Variáveis são locais onde são armazenados os valores na memória. Toda variável é

Leia mais

CAP. IX - MANIPULAÇÃO DE ARQUIVOS Generalidades sobre Arquivos. 9.2 Abertura e Fechamento de Arquivos. Operações com arquivos:

CAP. IX - MANIPULAÇÃO DE ARQUIVOS Generalidades sobre Arquivos. 9.2 Abertura e Fechamento de Arquivos. Operações com arquivos: CAP. IX - MANIPULAÇÃO DE ARQUIVOS 9.1 Generalidades sobre arquivos 9.2 Abertura e fechamento de arquivos 9.3 Arquivos textos e arquivos binários 9.4 Leitura e escrita em arquivos binários 9.5 Procura direta

Leia mais

Vetores e Matrizes. Conceito. Conceito. Conceito. Conceito. Conceito. Variáveis Compostas Homogêneas. Matriz

Vetores e Matrizes. Conceito. Conceito. Conceito. Conceito. Conceito. Variáveis Compostas Homogêneas. Matriz Variáveis Compostas Homogêneas São conhecidas na linguagem C como matrizes. Vetores e es É um conjunto de variáveis do mesmo tipo, acessíveis com um único nome e armazenadas de forma contínua na memória.

Leia mais

ponteiros INF Programação I Prof. Roberto Azevedo

ponteiros INF Programação I Prof. Roberto Azevedo ponteiros INF1005 -- Programação I -- 2016.1 Prof. Roberto Azevedo razevedo@inf.puc-rio.br ponteiros tópicos o que são ponteiros operadores usados com ponteiros passagem de ponteiros para funções referência

Leia mais

Introdução à Linguagem C

Introdução à Linguagem C Engenharia de CONTROLE e AUTOMAÇÃO Introdução à Linguagem C Aula 02 DPEE 1038 Estrutura de Dados para Automação Curso de Engenharia de Controle e Automação Universidade Federal de Santa Maria beltrame@mail.ufsm.br

Leia mais

cadeia de caracteres (string) INF Programação I Prof. Roberto Azevedo

cadeia de caracteres (string) INF Programação I Prof. Roberto Azevedo cadeia de caracteres (string) INF1005 -- Programação I -- 2016.1 Prof. Roberto Azevedo razevedo@inf.puc-rio.br cadeia de caracteres (string) tópicos caracteres cadeia de caracteres referência Capítulo

Leia mais

A linguagem C permite dois tipos de alocação de memória: Alocação estática e alocação dinâmica.

A linguagem C permite dois tipos de alocação de memória: Alocação estática e alocação dinâmica. Alocação de Memória Todo programa precisa utilizar memória para ser executado. Quando um programa inicia sua execução, ele começa a solicitar memória ao sistema operacional, ou seja, faz a alocação de

Leia mais

1 Exercícios com ponteiros

1 Exercícios com ponteiros Computação para Informática - Prof. Adriano Joaquim de Oliveira Cruz Oitava Aula Prática - 29 de outubro de 2010 O objetivo desta aula prática é exercitar ponteiros e funções. 1 Exercícios com ponteiros

Leia mais

Estrutura de Programas e Tipos de Dados Simples

Estrutura de Programas e Tipos de Dados Simples SSC0101 - ICC1 Teórica Introdução à Ciência da Computação I Estrutura de Programas e Tipos de Dados Simples Prof. Vanderlei Bonato: vbonato@icmc.usp.br Prof. Claudio Fabiano Motta Toledo: claudio@icmc.usp.br

Leia mais

Anhanguera Educacional S.A. Centro Universitário Ibero-Americano

Anhanguera Educacional S.A. Centro Universitário Ibero-Americano O C++ foi inicialmente desenvolvido por Bjarne Stroustrup durante a década de 1980 com o objetivo de melhorar a linguagem de programação C, mantendo a compatibilidade com esta linguagem. Exemplos de Aplicações

Leia mais

Universidade Estadual de Mato Grosso do Sul Ciência da Computação Algoritmos e Estruturas de Dados I (AED-I) Prof. Nilton

Universidade Estadual de Mato Grosso do Sul Ciência da Computação Algoritmos e Estruturas de Dados I (AED-I) Prof. Nilton Universidade Estadual de Mato Grosso do Sul Ciência da Computação Algoritmos e Estruturas de Dados I (AED-I) Prof. Nilton nilton@comp.uems.br Introdução A linguagem C foi inventada por Dennis Ritchie e

Leia mais

Matrizes em C. Lucas Ferrari de Oliveira Professor Adjunto. Universidade Federal do Paraná

Matrizes em C. Lucas Ferrari de Oliveira Professor Adjunto. Universidade Federal do Paraná em C Lucas Ferrari de Oliveira Professor Adjunto Universidade Federal do Paraná Uma matriz é uma coleção de variáveis do mesmo tipo que é referenciada por um nome comum; Em C todas as matrizes consistem

Leia mais

Comandos de entrada. e saída. Comandos de entrada. Comandos de entrada. Comandos de entrada. Comandos de entrada. Comandos de entrada.

Comandos de entrada. e saída. Comandos de entrada. Comandos de entrada. Comandos de entrada. Comandos de entrada. Comandos de entrada. e saída Biblioteca stdio.h Comandos Função scanf() Função gets() Função getchar() Material cedido pelo prof. Daniel Callegari scanf() Rotina de entrada que lê todos os tipos de dados. Protótipo: int scanf(const

Leia mais

Apêndice B. Cadeias de Caracteres (Strings)

Apêndice B. Cadeias de Caracteres (Strings) Apêndice B. Cadeias de Caracteres (Strings) Até agora, quando desejávamos indicar o número de elementos existentes em um vetor qualquer, utilizávamos uma variável inteira, digamos tam, para armazenar tal

Leia mais

Linguagem C Controle do Fluxo de Execução. Lógica de Programação

Linguagem C Controle do Fluxo de Execução. Lógica de Programação Linguagem C Controle do Fluxo de Execução Lógica de Programação Caro(a) aluno(a), Aqui começaremos a escrever os nossos primeiros programas em uma Linguagem de Programação. Divirta-se!!! Estrutura Seqüencial

Leia mais

Introdução à Linguagem C

Introdução à Linguagem C Introdução à Linguagem C Eduardo Simões de Albuquerque Instituto de Informática UFG 13/03/2006 1 História Inventada e desenvolvida por Dennis Ritchie em um DEC- PDP 11 Originária de: BCPL desenvolvida

Leia mais

C++ - Matrizes. Observ.: C++ não avisa quando o limite de uma matriz foi excedido. Providenciar a verificação é responsabilidade do programador.

C++ - Matrizes. Observ.: C++ não avisa quando o limite de uma matriz foi excedido. Providenciar a verificação é responsabilidade do programador. C++ - Matrizes É um conjunto de variáveis, do mesmo tipo, referenciadas por um único nome, onde cada variável é diferenciada por meio de um número entre colchetes chamado índice. Declaração : tipo nome

Leia mais

Computação para Informática - Prof. Adriano Joaquim de Oliveira Cruz Segunda Aula Prática - 3 de setembro de 2010

Computação para Informática - Prof. Adriano Joaquim de Oliveira Cruz Segunda Aula Prática - 3 de setembro de 2010 Computação para Informática - Prof. Adriano Joaquim de Oliveira Cruz Segunda Aula Prática - 3 de setembro de 2010 1 Introdução O objetivo desta aula prática é exercitar o uso de variáveis de vários tipos

Leia mais

Métodos Computacionais. Funções, Escopo de Variáveis e Ponteiros

Métodos Computacionais. Funções, Escopo de Variáveis e Ponteiros Métodos Computacionais Funções, Escopo de Variáveis e Ponteiros Tópicos da Aula Hoje vamos detalhar funções em C Escrevendo funções Comando return Passagem de argumentos por valor Execução de uma função

Leia mais

Capítulo 2 Operadores. A função scanf()

Capítulo 2 Operadores. A função scanf() Capítulo 2 Operadores A função scanf() A função scanf() é outra das funções de E/S implementadas em todos os compiladores e nos permite ler dados formatados da entrada padrão (teclado). Sintaxe: scanf(

Leia mais

Funções em C. Lucas Ferrari de Oliveira Professor Adjunto. Linguagem de Programação Estruturada I. Universidade Federal do Paraná

Funções em C. Lucas Ferrari de Oliveira Professor Adjunto. Linguagem de Programação Estruturada I. Universidade Federal do Paraná em C Linguagem de Programação Estruturada I Lucas Ferrari de Oliveira Professor Adjunto Universidade Federal do Paraná Sumário Funções: Conceitos; Forma Geral das funções; Regras de Escopo; Argumentos

Leia mais

Linguagem C: Ponteiros - Alocação Dinâmica

Linguagem C: Ponteiros - Alocação Dinâmica Prof. Paulo R. S. L. Coelho paulo@facom.ufu.br Faculdade de Computação Universidade Federal de Uberlândia GEQ007 Organização 1 Ponteiros Alocação Dinâmica de Memória 2 3 4 Organização Ponteiros Alocação

Leia mais

Introdução à Programação em C (II)

Introdução à Programação em C (II) Introdução à Programação em C (II) Resumo Streams de Texto Leitura e escrita de caracteres Caracteres como números inteiros Exemplos Cópia de Ficheiros Contagem de Caracteres Contagem de Linhas Contagem

Leia mais

Outline. 33. Manipulação de arquivos DIM

Outline. 33. Manipulação de arquivos DIM Outline 33. Manipulação de arquivos DIM031 015.1 Leitura e escrita 3 s DIM031 33. Manipulação de arquivos 015.1 1 / 4 DIM031 33. Manipulação de arquivos 015.1 / 4 Arquivo = entidade de armazenamento de

Leia mais

Introdução à Linguagem C Variáveis e Expressões

Introdução à Linguagem C Variáveis e Expressões INF1005: Programação 1 Introdução à Linguagem C Variáveis e Expressões 08/03/10 (c) Paula Rodrigues 1 Tópicos Principais Programando em C Funções Variáveis Define Operadores e Expressões Entrada e Saída

Leia mais

Estruturas de Dados Aula 6: Cadeias de 28/03/2010

Estruturas de Dados Aula 6: Cadeias de 28/03/2010 Estruturas de Dados Aula 6: Cadeias de Caracteres 28/03/2010 Caracteres Caracteres são representados internamente por códigos numéricos Tipo char (inteiro pequeno ) 1 byte (8 bits) 256 caracteres possíveis

Leia mais

Vetores. e o programa deverá ler os valores separadamente:

Vetores. e o programa deverá ler os valores separadamente: Vetores Vetor é um tipo de dado usado para representar uma certa quantidade de variáveis de valores homogêneos (do mesmo tipo). Imagine o seguinte problema: calcular a média das notas da prova de 5 alunos.

Leia mais

Variáveis primitivas e Controle de fluxo

Variáveis primitivas e Controle de fluxo Variáveis primitivas e Controle de fluxo Material baseado na apostila FJ-11: Java e Orientação a Objetos do curso Caelum, Ensino e Inovação, disponível para download em http://www.caelum.com.br/apostilas/

Leia mais

Introdução à Programação. Introdução a Linguagem C. Prof. José Honorato F. Nunes

Introdução à Programação. Introdução a Linguagem C. Prof. José Honorato F. Nunes Introdução à Programação Introdução a Linguagem C Prof. José Honorato F. Nunes honorato.nunes@ifbaiano.bonfim.edu.br Resumo da aula Introdução Variáveis Tipos de dados Operadores e Expressões: Operadores

Leia mais

Trabalho Linguagem e Programação de Compiladores

Trabalho Linguagem e Programação de Compiladores Trabalho Linguagem e Programação de Compiladores Responda as questões. Os exercícios deverão ser desenvolvidos utilizando as estruturas apresentadas em aula e adequadas para cada problema. Forma de entrega:

Leia mais

Universidade Federal do Espírito Santo. Programação I Tipos de Dados Básicos - C Professora: Norminda Luiza

Universidade Federal do Espírito Santo. Programação I Tipos de Dados Básicos - C Professora: Norminda Luiza Universidade Federal do Espírito Santo Programação I Tipos de Dados Básicos - C Professora: Norminda Luiza Variáveis Tipos de Dados Básicos Formação dos identificadores o nome deve começar com uma letra

Leia mais

Strings. Introdução. Definição de strings. Criação/Declaração de strings. Inicialização de strings. Manipulação de strings. Exemplos.

Strings. Introdução. Definição de strings. Criação/Declaração de strings. Inicialização de strings. Manipulação de strings. Exemplos. Introdução Definição de strings. Criação/Declaração de strings. Inicialização de strings. Manipulação de strings. Exemplos. 1 definições Uma string é uma sequência, um conjunto, ou uma cadeia de caracteres.

Leia mais

19 Vetores, Ponteiros e Funções

19 Vetores, Ponteiros e Funções 19 Vetores, Ponteiros e Funções Ronaldo F. Hashimoto e Carlos H. Morimoto Oobjetivodestaaulaérelacionarotipovetor com ponteiros eassimentendercomoutilizarvetorescomo parâmetros de funções. Ao final dessa

Leia mais

Material sobre Funções AEDS 1

Material sobre Funções AEDS 1 Material sobre Funções AEDS 1 1 Funções - revisão Funções definem operações que são usadas frequentemente Funções, na matemática, requerem parâmetros de entrada e definem um valor de saída 2 Funções -

Leia mais

Linguagens de Programação PROGRAMAÇÃO DE COMPUTADORES. Linguagem C. Linguagem C Estrutura Básica. Constante (literais) Linguagem C Primeiro Programa

Linguagens de Programação PROGRAMAÇÃO DE COMPUTADORES. Linguagem C. Linguagem C Estrutura Básica. Constante (literais) Linguagem C Primeiro Programa Linguagens de Programação PROGRAMAÇÃO DE COMPUTADORES Linguagem C - Introdução Linguagens de Máquina Representação numérica Difícil utilização e compreensão Específica para cada máquina Linguagens Simbólicas(Assembly)

Leia mais

11 - Estrutura de um programa em C

11 - Estrutura de um programa em C 11 - Estrutura de um programa em C directivas para o compilador { main ( ) declarações instruções } -É possível utilizar comentários, exemplo: /* Comentário */ que não são traduzidos pelo compilador, pois

Leia mais

Professora Jeane Melo

Professora Jeane Melo Professora Jeane Melo Roteiro Lista Encadeada Alocação: Estática x Dinâmica O que são Ponteiros? Ponteiros Variáveis que Armazenam Endereços de Memória Mas, toda variável não é armazenada na memória? Ponteiros

Leia mais

Linguagem e Técnicas de Programação

Linguagem e Técnicas de Programação Linguagem C Função Prof. Edwar Saliba Júnior Fevereiro de 2011 Unidade 07 Função 1 Conceitos As técnicas de programação dizem que, sempre que possível, evite códigos extensos, separando o mesmo em funções,

Leia mais

Variáveis, Tipos de Dados e Operadores

Variáveis, Tipos de Dados e Operadores ! Variáveis, Tipos de Dados e Operadores Engenharias Informática Aplicada 2.o sem/2013 Profa Suely (e-mail: smaoki@yahoo.com) VARIÁVEL VARIÁVEL É um local lógico, ligado a um endereço físico da memória

Leia mais

Algoritmos e Estruturas de Dados I IEC012. Linguagem C - Guia de bolso - Prof. César Melo

Algoritmos e Estruturas de Dados I IEC012. Linguagem C - Guia de bolso - Prof. César Melo Algoritmos e Estruturas de Dados I IEC012 Linguagem C - Guia de bolso - Prof. César Melo Histórico A linguagem C é uma linguagem de programação inventada na década de 1970 por Dennis Ritchie Brian Kennigaham.

Leia mais

Disciplina de Algoritmos e Programação

Disciplina de Algoritmos e Programação Disciplina de Algoritmos e Programação Aula Passada Prática com declaração e inicialização de variáveis Capacidade de representação (estouro de representação) Tamanho ocupado pela variável na memória (comando

Leia mais

Algoritmos e Programação. Linguagem C Procedimentos e. Eliane Pozzebon

Algoritmos e Programação. Linguagem C Procedimentos e. Eliane Pozzebon Algoritmos e Programação Linguagem C Procedimentos e Funções Eliane Pozzebon Procedimentos e Funções Procedimentos são estruturas que agrupam um conjunto de comandos, que são executados quando o procedimento

Leia mais

Computação L2. Linguagem C++ Observação: Material Baseado na Disciplina Computação Eletrônica.

Computação L2. Linguagem C++ Observação: Material Baseado na Disciplina Computação Eletrônica. Computação L2 Linguagem C++ ovsj@cin.ufpe.br Observação: Material Baseado na Disciplina Computação Eletrônica. Alfabeto São os símbolos ( caracteres ) permitidos na linguagem: Letras (maiúsculas e minúsculas);

Leia mais

Tipos Abstratos de Dados

Tipos Abstratos de Dados Tipos Abstratos de Dados Prof. Rui Jorge Tramontin Jr. UDESC - Rui J. Tramontin Jr. 1 Índice Introdução Definição de Tipos Abstratos de Dados Exemplos de TADs Implementação de TADs Implementação em C Exemplo

Leia mais

INF 1620 P3-29/06/04 Questão 1 Nome:

INF 1620 P3-29/06/04 Questão 1 Nome: INF 1620 P3-29/06/04 Questão 1 Considere um arquivo texto que descreve um conjunto de retângulos e círculos. Cada linha do arquivo contém a descrição de uma figura. O primeiro caractere da linha indica

Leia mais

Linguagem C. Armazenamento de Dados em Arquivos - Continuação

Linguagem C. Armazenamento de Dados em Arquivos - Continuação Linguagem C Armazenamento de Dados em Arquivos - Continuação Arquivos Binários Comandos para gravação e leitura de arquivos (revisão): FILE *arquivo; arquivo = fopen( nome, modo ); fwrite (&variavel, sizeof

Leia mais

LINGUAGEM C: ALOCAÇÃO DINÂMICA

LINGUAGEM C: ALOCAÇÃO DINÂMICA LINGUAGEM C: ALOCAÇÃO DINÂMICA Prof. André Backes DEFINIÇÃO Sempre que escrevemos um programa, é preciso reservar espaço para as informações que serão processadas. Para isso utilizamos as variáveis Uma

Leia mais

Aula 5 Oficina de Programação Introdução ao C. Profa. Elaine Faria UFU

Aula 5 Oficina de Programação Introdução ao C. Profa. Elaine Faria UFU Aula 5 Oficina de Programação Introdução ao C Profa. Elaine Faria UFU - 2017 Linguagem de Programação Para que o computador consiga ler um programa e entender o que fazer, este programa deve ser escrito

Leia mais

Tipos de Dados, Variáveis e Entrada e Saída em C. DCC 120 Laboratório de Programação

Tipos de Dados, Variáveis e Entrada e Saída em C. DCC 120 Laboratório de Programação Tipos de Dados, Variáveis e Entrada e Saída em C DCC 120 Laboratório de Programação Variáveis Uma variável representa um espaço na memória do computador para armazenar um determinado tipo de dado. Em C,

Leia mais

Classes o Objetos. Classes, objetos, métodos e variáveis de instância

Classes o Objetos. Classes, objetos, métodos e variáveis de instância Classes o Objetos Um recurso comum de cada aplicativo feito até agora é que todas as instruções que realizavam tarefas localizavam-se no método main. Se você tornar parte de uma equipe de desenvolvimento

Leia mais

INF 1005 Programação I

INF 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 mais

Estruturas de Dados I

Estruturas de Dados I Estruturas de Dados I Rodrigo Porfírio da Silva Sacchi rodrigosacchi@ufgd.edu.br 3410-2075 Aula 6: Listas Encadeadas e Alocação Dinâmica Listas Encadeadas e Alocação Dinâmica Alocação Seqüencial versus

Leia mais

Computação para Informática - Prof. Adriano Joaquim de Oliveira Cruz Segunda Aula Prática - 29 de agosto de 2008

Computação para Informática - Prof. Adriano Joaquim de Oliveira Cruz Segunda Aula Prática - 29 de agosto de 2008 Computação para Informática - Prof. Adriano Joaquim de Oliveira Cruz Segunda Aula Prática - 29 de agosto de 2008 Introdução O objetivo desta aula prática é exercitar comandos de entrada e saída simples

Leia mais

INTRODUÇÃO A LINGUAGEM C

INTRODUÇÃO A LINGUAGEM C INTRODUÇÃO A LINGUAGEM C Aula 01 Programação em Microinformática Prof. Allbert Velleniche de Aquino Almeida E-mail: professor@allbert.com.br Site: http://www.allbert.com.br Histórico O C nasceu na década

Leia mais

Gilberto A. S. Segundo. 24 de agosto de 2011

Gilberto A. S. Segundo. 24 de agosto de 2011 Exercícios - Alocação Dinâmica Gilberto A. S. Segundo Programação Aplicada de Computadores Engenharia Elétrica Universidade Federal do Espírito Santo - UFES 24 de agosto de 2011 1 / 23 Grupo de e-mail

Leia mais

4. Estruturas Fundamentais de Programação em C

4. Estruturas Fundamentais de Programação em C 4. Estruturas Fundamentais de Programação em C 4.1. Imprimindo Mensagens e Valores no Monitor de Vídeo A biblioteca de entrada e saída (stdio.h) possui a função printf que imprime mensagens e valores diretamente

Leia mais

Depuração e Teste de programas C C Depuração e teste de programas C

Depuração e Teste de programas C C Depuração e teste de programas C Universidade de São Paulo São Carlos Instituto de Ciências Matemáticas e de Computação Depuração e Teste de programas C C Depuração e teste de programas C Profa Rosana Braga (adaptado de material do prof.

Leia mais

Algoritmos RESUMO - LINGUAGEM C

Algoritmos RESUMO - LINGUAGEM C Algoritmos RESUMO - LINGUAGEM C 1 Sintaxe da linguagem C Componentes reconhecidos pela linguagem C (sintaxe da linguagem): tipos propriedades dos dados; declarações partes do programa, podendo dar significado

Leia mais

Métodos Computacionais. Operadores, Expressões Aritméticas e Entrada/Saída de Dados

Métodos Computacionais. Operadores, Expressões Aritméticas e Entrada/Saída de Dados Métodos Computacionais Operadores, Expressões Aritméticas e Entrada/Saída de Dados Tópicos da Aula Hoje aprenderemos a escrever um programa em C que pode realizar cálculos Conceito de expressão Tipos de

Leia mais

Métodos Computacionais. Strings (Vetor de Caracteres)

Métodos Computacionais. Strings (Vetor de Caracteres) Métodos Computacionais Strings (Vetor de Caracteres) Em C, o tipo char : Caracteres é usado para representar caracteres pode armazenar valores inteiros (em 1 byte), representando assim, 256 valores distintos

Leia mais

Programação Básica. Estrutura de um algoritmo

Programação Básica. Estrutura de um algoritmo Programação Básica Estrutura de um algoritmo Código-fonte Como vimos na aula anterior um algoritmo pode ser representado usando um fluxograma Um algoritmo pode também ser representado usando texto Esse

Leia mais

Lição 4 Fundamentos da programação

Lição 4 Fundamentos da programação Lição 4 Fundamentos da programação Introdução à Programação I 1 Objetivos Ao final desta lição, o estudante será capaz de: Identificar as partes básicas de um programa em Java Reconhecer as diferenças

Leia mais

Algoritmos I Aula 13 Linguagem de Programação Java

Algoritmos I Aula 13 Linguagem de Programação Java Algoritmos I Aula 13 Linguagem de Programação Java Professor: Max Pereira http://paginas.unisul.br/max.pereira Ciência da Computação IDE Eclipse IDE (Integrated development environment) Criar um projeto

Leia mais

Programação de Computadores I Arquivos na Linguagem C PROFESSORA CINTIA CAETANO

Programação de Computadores I Arquivos na Linguagem C PROFESSORA CINTIA CAETANO Programação de Computadores I Arquivos na Linguagem C PROFESSORA CINTIA CAETANO Introdução As informações que os programas utilizam são perdidas quando eles são finalizados ou quando o computador é desligado.

Leia mais

Estruturas de Repetição

Estruturas de Repetição Estruturas de Repetição Introdução As estruturas de repetição, permitem executar mais de uma vez um mesmo trecho de código. Trata-se de uma forma de executar blocos de comandos somente sob determinadas

Leia mais

Fundamentos de Programação. Linguagem C++ aula II - Variáveis e constantes. Prof.: Bruno Gomes

Fundamentos de Programação. Linguagem C++ aula II - Variáveis e constantes. Prof.: Bruno Gomes Fundamentos de Programação Linguagem C++ aula II - Variáveis e constantes Prof.: Bruno Gomes 1 Variáveis Representa uma porção da memória que pode ser utilizada pelo programa para armazenar informações

Leia mais

Algoritmos. Algoritmos. Linguagem de programação. Conceitos. Conceitos. Conceitos. Sintaxe do comando para incluir bibliotecas no programa:

Algoritmos. Algoritmos. Linguagem de programação. Conceitos. Conceitos. Conceitos. Sintaxe do comando para incluir bibliotecas no programa: Algoritmos Algoritmos Leandro Tonietto Unisinos ltonietto@unisinos.br http://www.inf.unisinos.br/~ltonietto/inf/pg1/algoritmosi_java.pdf Mar-2008 Possuem sintaxe flexível e são mais úteis para descrição

Leia mais

INF1007: Programação 2. 0 Revisão. 06/08/2015 (c) Dept. de Informática - PUC-Rio 1

INF1007: Programação 2. 0 Revisão. 06/08/2015 (c) Dept. de Informática - PUC-Rio 1 INF1007: Programação 2 0 Revisão 06/08/2015 (c) Dept. de Informática - PUC-Rio 1 Tópicos Principais Variáveis e Constantes Operadores e Expressões Entrada e Saída Tomada de Decisão Construção com laços

Leia mais

Linguagens de Programação I

Linguagens de Programação I Linguagens de Programação I Tema # 4 Operadores em C Susana M Iglesias FUNÇÕES ENTRADA-SAÍDA I/O printf(), utilizada para enviar dados ao dispositivo de saída padrão (stdout), scanf(), utilizada para ler

Leia mais

Capítulo 6: Arquivos

Capítulo 6: Arquivos Capítulo 6: Arquivos Waldemar Celes e Roberto Ierusalimschy 29 de Fevereiro de 2012 1 Funções de entrada e saída em arquivos Nos capítulos anteriores, desenvolvemos programas que capturam seus dados de

Leia mais

INF1337 LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS

INF1337 LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS INF1337 LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS Departamento de Informática PUC-Rio Andrew Diniz da Costa andrew@les.inf.puc-rio.br Programa Capítulo 3 Ponteiros e Variáveis de Objeto Construtores

Leia mais

5. Vetores e alocação dinâmica

5. Vetores e alocação dinâmica 5. Vetores e alocação dinâmica W. Celes e J. L. Rangel 5.1. Vetores A forma mais simples de estruturarmos um conjunto de dados é por meio de vetores. Como a maioria das linguagens de programação, C permite

Leia mais

Arquivos em C Parte 2

Arquivos em C Parte 2 Universidade de São Paulo São Carlos Instituto de Ciências Matemáticas e de Computação Arquivos em C Parte 2 Profa Rosana Braga Material preparado pela profa Silvana Maria Affonso de Lara 1º semestre de

Leia mais