ED1 - Aula 01 Introducao e revisão

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

Download "ED1 - Aula 01 Introducao e revisão"

Transcrição

1 ED1 - Aula 01 Introducao e revisão Profa. Nádia Félix Hebert Coelho Instituto de Informática Universidade Federal de Goiás

2 Roteiro Detalhes do curso Plano de Ensino sharif Revisão Tipos Construídos Alocação Dinâmica Funções Exercícios Laboratório

3 Registro Definição Um registro é uma estrutura que contém diversas variáveis (chamadas de campos), usualmente de tipos diferentes, mas que dentro de um determinado contexto, fazem sentido se agrupadas. Podemos comparar um registro com uma ficha que possui todos os dados sobre uma determinada entidade, por exemplo: Registro de alunos (nome, RA, médias de provas, médias de labs, etc...) Registro de produtos (Nome, código, descrição, etc...)

4 Declarando o formato do registro Para criar um registro é preciso declarar seu formato/estrutura. Isso é feito utilizando a palavra chave struct, da seguinte forma: struct nome_do_tipo_do_registro { tipo_1 nome_1; tipo_2 nome_2; tipo_3 nome_3;... tipo_n nome_n; };

5 Declarando o formato do registro #include <stdio.h> struct aluno { int mat; //matricula float media; }; int main () { struct aluno j; j.mat = 10; j.media = 8.5; printf( Matricula %d, media %f., j.mat, j.media); }

6 Lendo os campos de um Registro A leitura dos campos de um registro a partir do teclado deve ser feita campo a campo, como se fossem variáveis independentes. printf ( Digite a matricula do aluno: ); scanf ( %d, &j.mat); printf ( Digite a média do aluno: ); scanf ( %f, &j.media);

7 Copiando registros A cópia de um registro pode ser feita como se fosse a cópia de uma variável normal, ou seja registro_1 = registro_2;

8 Vetor de registros Registros podem ser declarados como um vetor. #include <stdio.h> struct aluno { int mat; //matricula float media; }; int main () { struct aluno turma[40]; turma[0].mat = 10; turma[0].media = 8.5;... }

9 Registros Aninhados Também é possível declarar um registro como uma das variáveis de um registro, quantas vezes isso for necessário. #include <stdio.h> struct notas { float p1; float p2; float p3; }; typedef struct notas NotasAluno; struct aluno { int mat; //matricula NotasAluno provas; };

10 sizeof O operador unário sizeof calcula o tamanho de qualquer variável ou tipo Construído. sizeof retorna um valor inteiro, assim seu resultado pode ser apresentado na tela com comando printf. Exemplo: int i; printf( %d, sizeof(i)); O printf acima, imprime o tamanho da variável inteira i.

11 Alocação Dinâmica Existem 2 maneiras fundamentais de um programa em C armazenar informações na memória principal do computador. Variáveis locais e globais, incluindo matrizes e estruturas; Armazenamento fixo durante toda a execução do programa. Alocação Dinâmica Nesta maneira o programa pode obter espaço para armazenamento em tempo de execução.

12 C ANSI O padrão C ANSI especifica apenas quatro funções para o sistema de alocação dinâmica: calloc(); malloc(); free(); realloc(); As funções de alocação dinâmica definidas pelo padrão C ANSI estão na biblioteca stdlib.h

13 calloc() void *calloc(size_t num, size_t size); A função calloc() aloca uma quantidade de memória igual a num size. Ou seja, calloc() aloca memória suficiente para uma matriz de num objetos de tamanho size; A função devolve um ponteiro para o primeiro byte da região alocada; Se não houver memória suficiente é devolvido um ponteiro nulo.

14 calloc - Exemplo de uso do calloc 1 #include<stdlib.h> 2 #include<stdio.h> 3 4 float get_mem(void){ 5 float p; 6 7 p=calloc(100, sizeof(float)); 8 if(!p){ 9 printf("erro de alocação abortando."); 10 exit(1); 11 } 12 return p; 13 }

15 malloc() void *malloc(size_t size); A função malloc() devolve um ponteiro para o primeiro byte de uma região de memória de tamanho size que foi alocada do heap; Se não houver memória suficiente é devolvido um ponteiro nulo; Sempre verificar se o valor devolvido não é um ponteiro nulo antes de utilizá-lo;

16 malloc - Exemplo de uso do malloc 1 #include<stdlib.h> 2 #include<stdio.h> 3 4 struct endereco{ 5 char nome[40]; 6 char rua[40]; 7 char cidade[40]; 8 char estado[2]; 9 }; struct endereco get_struct(void){ 12 struct endereco p; if ((p = malloc(sizeof(struct endereco)))==null){ 15 printf("erro de alocação"); 16 exit(1); 17 } 18 return p; 19 }

17 free() void free(void *ptr); A função free() devolve ao heap a memória apontada por ptr, tornando a memória disponível para alocação futura. free() deve ser chamado apenas com um ponteiro que foi previamente alocado com as funções de alocação dinâmica. Um ponteiro inválido pode destruir o mecanismo de gerenciamento de memória;

18 free - Exemplo de uso do free 1 #include<stdlib.h> 2 #include<stdio.h> 3 #include<string.h> 4 #define tam 3 5 int main (){ 6 char str[tam]; 7 int i; 8 9 for (i=0; i<tam; i++){ 10 if ((str[i] = malloc(128))==null){ 11 printf("erro de alocação"); 12 exit(1); 13 } 14 gets(str[i]); 15 puts(str[i]); 16 } 17 for (i=0; i<tam; i++) free(str[i]); 18 return 0; 19 }

19 realloc() void *realloc(void *ptr, size_t size); A função realloc() modifica o tamanho da memória previamente alocada apontada por ptr para aquele especificado por size; O valor de size pode ser maior ou menor que o original; Um ponteiro para o bloco de memória é devolvido porque realloc() pode precisar mover o bloco para aumentar o seu tamanho; Se precisar mover o bloco, o conteúdo do bloco antigo é copiado no novo bloco, nenhuma informação é perdida. Se size é zero, a memória apontada por ptr é liberada. Se não há memória livre suficiente no heap é devolvido um ponteiro nulo e o bloco original é deixado inalterado.

20 realloc - Exemplo de uso do realloc 1 #include<stdlib.h> 2 #include<stdio.h> 3 #include<string.h> 4 int main (){ 5 char p; 6 if ((p = malloc(23))==null){ 7 printf("erro de alocação"); 8 exit(1); 9 } 10 strcpy(p, "isso são 22 caracteres"); p = realloc(p,24); 13 if(!p){ 14 printf("erro de alocação"); 15 exit(1); 16 } 17 strcat(p,"."); 18 printf(p); 19 free(p); 20 return 0; 21 }

21 Funções - Dividindo Tarefas?

22 Por que dividir o código em funções? Dividir o código em módulos - Alinhar com orientação a objetos. Reuso: Reuso de código desenvolvido por outros programadores. Exemplo: Funções de entrada e saída são o exemplo mais direto deste reuso. Vantagens: Diminui o tempo de desenvolvimento do programas. Vantagens: Funções foram testadas por diversos usuários contribuindo para a redução dos custos de desenvolvimento dos projetos.

23 Forma Geral 1 tipo nome (tipo nome1, tipo nome2,..., tipo nomen ) { 2 declaração das variáveis 3 corpo da função 4 }

24 E daí? Uma função recebe uma lista de argumentos (nome1, nome2,..., nomen), executa comandos com estes argumentos e pode retornar ou não um resultado para a função que chamou esta função.

25 Funções Retorno #include<stdio.h> void function_name(void) { } int main (void) { function_name();... return 0; } Chamada

26 Observações A lista de argumentos, também chamados de parâmetros, é uma lista, separada por vírgulas, de variáveis com seus tipos associados. Não é possível usar uma única definição de tipo para várias variáveis. A lista de argumentos pode ser vazia, ou seja, a função não recebe nenhum argumento. O nome da função pode ser qualquer identificador válido. O tipo que aparece antes do nome da função especifica o tipo do resultado que será devolvido ao final da execução da função. O tipo void pode ser usado para declarar funções que não retornam valor algum.

27 Retornando. Há basicamente duas maneiras de terminar a execução de uma função. Normalmente usa-se o comando return para retornar o resultado da função. Portanto, quando o comando return expressão; for executado, o valor da expressão é devolvido para a função que chamou. Quando não há valor para retornar o comando return não precisa ser usado e a função termina quando a chave que indica o término do corpo da função é atingido.

28 Exemplo Nome Tipo função #include<stdio.h> Parâmetros float media(float n1, float n2) { return (n1 + n2)/2; } Retorno int main (void) { float nt1, nt2, nt3, nt4; float m1, m2; Chamadas } scanf("%f %f %f %f", &nt1, &nt2, &nt3, &nt4); m1 = media(nt1, nt2); m2 = media(nt3, nt4); printf("%f %f\n", m1, m2); return 0;

29 Observações É importante notar que o nome da função pode aparecer em qualquer lugar onde o nome de uma variável apareceria. Além disso os tipos e o número de parâmetros que aparecem na declaração da função e na sua chamada devem estar na mesma ordem e ser tipos equivalentes. Os nomes das variáveis nos programas que usam uma função podem ser diferentes dos nomes usados na definição da função.

30 Exemplo 1 #include<stdio.h> 2 int fat(int n) { 3 int f = 1; 4 5 for ( ; n>1; n ) { 6 f = n; 7 } 8 return f; 9 } 10 int main ( void ) { 11 int n, p, c; 12 n = 5; p = 3; 13 c = fat(n) / (fat(p) fat(n p)); 14 printf("%d \n", c); 15 return 0; 16 }

31 Protótipos O padrão ANSI estendeu a declaração da função para permitir que o compilador faça uma verificação mais rígida da compatibilidade entre os tipos que a função espera receber e àqueles que são fornecidos. Protótipos de funções ajudam a detectar erros antes que eles ocorram, impedindo que funções sejam chamadas com argumentos inconsistentes.

32 Protótipos O padrão ANSI estendeu a declaração da função para permitir que o compilador faça uma verificação mais rígida da compatibilidade entre os tipos que a função espera receber e àqueles que são fornecidos. Protótipos de funções ajudam a detectar erros antes que eles ocorram, impedindo que funções sejam chamadas com argumentos inconsistentes. A forma geral de definição de um protótipo é a seguinte: tipo nome (tipo nome1, tipo nome2,..., tipo nomen);

33 Exemplo 1 #include<stdio.h> 2 3 / Prototipo da funcao / 4 int soma (int a, int b); 5 6 / Funcao Principal / 7 int main() { 8 int a=5, b=9; 9 printf("%d\n", soma(a,b)); 10 return 0; 11 } / Definicao da funcao / 14 int soma(int a, int b) { 15 return a+b; 16 }

34 Escopo de Variáveis Variáveis podem ser definidas para serem usadas somente dentro de uma função particular, ou pode ocorrer que variáveis precisem ser acessíveis à diversas funções diferentes. Por esta razão, temos que apresentar os locais onde as variáveis de um programa podem ser definidas e a partir destes locais podermos inferir onde elas estarão disponíveis. As variáveis podem ser declaradas basicamente em três lugares: dentro de funções, variáveis locais fora de todas as funções, variáveis globais na lista de parâmetros das funções parâmetros formais.

35 Escopo de Variáveis int k; /* global */ int main() int i, j; j = f(i) bum! pá! int f(int i) int s, t;... return s;

36 Variáveis Locais As variáveis locais são aquelas declaradas dentro de uma função ou um bloco de comandos. Elas passam a existir quando do início da execução do bloco de comandos ou função onde foram definidas e são destruídas ao final da execução do bloco. Uma variável local só pode ser referenciada, ou seja usada, dentro da função (ou bloco) onde foi declarada. Variáveis locais são invisíveis para outras funções do mesmo programa.

37 Exemplo 1 #include <stdio.h> 2 void pares(void) { 3 int i; 4 for (i = 2; i <= 10; i += 2) { 5 printf("%d: ", i); 6 } 7 } 8 void impares(void) { 9 int i; 10 for (i = 3; i <= 11; i += 2) { 11 printf("%d: ", i); 12 } 13 } 14 int main(int argc, char *argv[]) { 15 pares(); 16 printf("\n"); 17 impares(); 18 return 0;}

38 Variáveis Globais As variáveis globais são definidas fora de qualquer função e são portanto disponíveis para qualquer função. Este tipo de variável pode servir como uma canal de comunicação entre funções, uma maneira de transferir valores entre elas. Por exemplo, se duas funções tem de partilhar dados, mais uma não chama a outra, uma variável global tem de ser usada.

39 Variáveis Globais 1 #include <stdio.h> 2 int i; /* variavel global */ 3 void soma1(void) { 4 i += 1; 5 printf("funcao soma1: i = %d\n", i); 6 } 7 void sub1(void) { 8 int i = 10; 9 i -= 1; 10 printf("funcao sub1: i = %d\n", i); 11 } 12 int main(int argc, char *argv[]) { 13 i = 0; 14 soma1(); 15 sub1(); 16 printf("funcao main: i = %d\n", i); 17 return 0; 18 }

40 Resultados O resultado da execução deste programa é o seguinte: Funcao soma1: i = 1 Funcao sub1: i = 9 Funcao main: i = 1 Observe que a variável global i recebe o valor 0 no início da função main. A função soma1 ao executar um comando que aumenta o valor de i em uma unidade está aumentando a variável global. Em seguida vemos que a função sub1 define uma variável local também chamada i e, portanto, a alteração feita por esta função somente modifica esta variável. Finalmente, a função main imprime o valor final da variável global.

41 Parâmetros Formais As variáveis que aparecem na lista de parâmetros da função são chamadas de parâmetros formais. Eles são criados no início da execução da função e destruídos no final. Normalmente os parâmetros são inicializados durante a chamada da função, pois para isto foram criados. No entanto, as variáveis que atuam como parâmetros são iguais a todas as outras e podem ser modificadas, operadas, etc, sem nenhuma restrição. Parâmetros podem ser passados para funções: por valor ou por referência.

42 Passagem por valor Na passagem por valor uma cópia do valor do argumento é passado para a função. Neste caso a função que recebe este valor, ao fazer modificações no parâmetro, não estará alterando o valor original que somente existe na função que chamou.

43 Exemplo 1 #include<stdio.h> 2 float Eleva(float a, int b) { 3 float res = 1.0; 4 for ( ; b>0; b--) res *= a; 5 return res; 6 } 7 int main() { 8 float numero; 9 int potencia; puts("entre com um numero"); 12 scanf("%f", &numero); 13 puts("entre com a potencia"); 14 scanf("%d", &potencia); 15 printf("%f Elevado a %d e igual a %f\n", 16 numero, potencia, Eleva(numero, potencia)); 17 return 0; 18 }

44 Outro exemplo 1 #include <stdio.h> 2 void trocar(int a, int b) { 3 int temp; 4 temp = a; a = b; b = temp; 5 } 6 7 int main(int argc, char *argv[]) { 8 int a = 10, b = 20; 9 trocar(a, b); 10 printf("a = %d, b = %d\n", a, b); return 0; 13 }

45 Passagem por Referência Na passagem por referência o que é passado para a função é o endereço do parâmetro e, portanto, a função que recebe pode, através do endereço, modificar o valor do argumento diretamente na função que chamou. Para a passagem de parâmetros por referência é necessário o uso de ponteiros. Isto será visto na próxima apresentação.

46 Passagem de Vetores e Matrizes Matrizes são um caso especial e exceção a regra que nomes de variáveis como parâmetros indicam passagem por valor. Como veremos mais adiante, o nome de um vetor corresponde ao endereço do primeiro elemento do array. Quando um nome de vetor é passado como parâmetro o endereço do primeiro elemento é passado.

47 Passagem de Vetores e Matrizes Existem basicamente três maneiras de declarar um vetor como um parâmetro de uma função. Na primeira ele é declarado segundo as regras de declaração de uma variável do tipo vetor.

48 Exemplo primeiro caso 1 #include<stdio.h> 2 #define DIM 80 3 int conta (char v[dim], char c); 4 int main() { 5 char c, linha[dim]; 6 int maiusculas[26], minusculas[26]; 7 gets (linha); 8 for (c = a; c <= z; c++) 9 minusculas[c-a] = conta(linha, c); 10 for (c = A; c <= Z; c++) 11 maiusculas[c-a] = conta(linha, c); 12 for (c = a; c <= z; c++) 13 if (minusculas[c-a]) 14 printf("%c apareceu %d vezes\n", c, minusculas[ca]); 15 for (c = A; c <= Z; c++) 16 if (maiusculas[c-a]) 17 printf("%c apareceu %d vezes\n", c, maiusculas[ c-a]); 18 return 0;

49 Exemplo primeiro caso 1 #include<stdio.h> 2 #define DIM 80 3 int conta (char v[dim], char c) { 4 int i=0, vezes=0; 5 while (v[i]!= \0) 6 if (v[i++] == c) vezes++; 7 return vezes; 8 }

50 Segundo caso Uma outra maneira, leva em conta que apenas o endereço do vetor é passado. Neste modo o parâmetro é declarado como um vetor sem dimensão. Isto é perfeitamente possível porque a função somente precisa receber o endereço onde se encontra o vetor. C não confere onde estão os limites de vetores e portanto a função precisa do endereço inicial do vetor e uma maneira de descobrir o final do vetor. Esta maneira pode ser, por exemplo, uma constante, ou o caractere \0 em um vetor de caracteres.

51 Exemplo segundo caso 1 2 #include<stdio.h> 3 #define DIM 6 4 void Le_vetor (int v[], int tam); 5 void Imprime_vetor (int v[], int tam); 6 void Inverte_vetor (int v[], int tam); 7 8 int main() { 9 int v[dim]; Le_vetor(v, DIM); 12 Imprime_vetor (v, DIM); 13 Inverte_vetor (v, DIM); 14 Imprime_vetor (v, DIM); 15 return 0; 16 }

52 Exemplo segundo caso 1 void Le_vetor (int v[], int tam) { 2 int i; 3 for ( i = 0; i < tam; i++) { 4 printf("%d =? ", i); scanf("%d", &v[i]); 5 } 6 } 7 void Imprime_vetor (int v[], int tam) { 8 int i; 9 for (i = 0; i < tam; i++) 10 printf("%d = %d\n", i, v[i]); 11 } 12 void Inverte_vetor (int v[], int tam) { 13 int i, temp; 14 for (i = 0; i < tam/2; i++){ 15 temp = v[i]; 16 v[i] = v[tam-i-1]; 17 v[tam-i-1] = temp; 18 } 19 }

53 Passagem de Vetores e Matrizes A terceira maneira de passagem de parâmetros implica no uso de ponteiros

54 Passagem de argumentos por valor Exemplo Quando passamos argumentos a uma função, os valores fornecidos são copiados para os parâmetros da função. Este processo é idêntico a uma atribuição. Desta forma, alterações nos parâmetros dentro da função não alteram os valores que foram passados. void nao_troca(int x, int y) { int aux; aux = x; x = y; y = aux; }

55 Passagem de argumentos por referência Exemplo Existe uma forma de alterarmos as variáveis passadas como argumento, ao invés de usarmos apenas o seu valor. O artifício é passarmos como argumento o endereço da variável, e não o seu valor. Para indicarmos que será passado o endereço do argumento, usamos o mesmo tipo que usamos para declarar um variável que guarda um endereço. tipo nome (tipo *parâmetro1,..., tipo *parâmetron) { comandos; }

56 Passagem de argumentos por referência Um endereço de uma variável passado como parâmetro não é muito útil. Para acessarmos o valor de uma variável apontada por um endereço, usamos o operador *; Ao precedermos uma variável que contém um endereço com este operador, obtemos o equivalente a variável armazenada no endereço em questão; Exemplo void troca(int *x, int *y) { int aux; aux = *x; *x = *y; *y = aux; }

57 Passagem de argumentos por referência Uma outra forma de conseguirmos alterar os valores de variáveis externas a funções é usando variáveis globais; Nesta abordagem usamos variáveis globais no lugar de parâmetros e de valores de retorno; Porém, ao usar esta técnica estamos negando uma das principais vantagens de se usar funções, reaproveitamento de código.

58 Vetores em funções Vetores têm um comportamento diferente quando usados como parâmetros ou valores de retorno de funções; Por padrão, um vetor é interpretado pelo compilador como o endereço do primeiro elemento do vetor; Desta forma, sem precisarmos usar uma notação especial, os vetores são sempre passados por referência. Maneiras para declarar um parâmetro que receberá um vetor void display(int num[10]) void display(int num[]) void display(int *num) // Forma mais usada

59 Vetores em funções Ao passar um vetor como parâmetro não é necessário fornecer o seu tamanho na declaração da função. Porém, é importante lembrar que o vetor tem um tamanho que deve ser considerado. Quando o vetor é multi-dimensional a possibilidade de não informar o tamanho na declaração se restringe apenas a primeira dimensão. Maneiras para declarar um parâmetro que receberá um vetor void display(int num[10]) void display(int num[]) void display(int *num) // Forma mais usada

Adriano Cruz 21 de julho de Instituto de Matemática Departamento de Ciência da Computação UFRJ

Adriano Cruz 21 de julho de Instituto de Matemática Departamento de Ciência da Computação UFRJ C Funções Adriano Cruz adriano@nce.ufrj.br 21 de julho de 2017 Instituto de Matemática Departamento de Ciência da Computação UFRJ 1 Resumo Seção Introdução Forma Geral Protótipos de Funções Escopo de Variáveis

Leia mais

Ponteiros em C. Adriano Joaquim de Oliveira Cruz 21 de julho de Instituto de Matemática Departamento de Ciência da Computação UFRJ

Ponteiros em C. Adriano Joaquim de Oliveira Cruz 21 de julho de Instituto de Matemática Departamento de Ciência da Computação UFRJ Ponteiros em C Adriano Joaquim de Oliveira Cruz 21 de julho de 2017 Instituto de Matemática Departamento de Ciência da Computação UFRJ 1 Resumo da Seção Introdução Declaração Incrementando e Decrementando

Leia mais

Ponteiros. Introdução e Alocação Dinâmica

Ponteiros. Introdução e Alocação Dinâmica Ponteiros Introdução e Alocação Dinâmica Conceito Um PONTEIRO ou APONTADOR é uma variável usada para armazenar um endereço de memória. Normalmente, o endereço armazenado em um PONTEIRO é a posição de uma

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

SSC304 Introdução à Programação Para Engenharias. Alocação Dinâmica. GE4 Bio

SSC304 Introdução à Programação Para Engenharias. Alocação Dinâmica. GE4 Bio Universidade de São Paulo Instituto de Ciências Matemáticas e de Computação Departamento de Sistemas de Computação Introdução à Para Engenharias GE4 Bio GE4Bio Grupo de Estudos em Sinais Biológicos Prof.Dr.

Leia mais

Reinaldo Gomes Alocação Dinâmica

Reinaldo Gomes Alocação Dinâmica Algoritmos e Lógica de Programação Linguagem C Alocação Dinâmica i de Memória Reinaldo Gomes reinaldo@cefet-al.br Alocação Dinâmica Quando declaramos uma variável ou um arranjo, o compilador automaticamente

Leia mais

Exercício. 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ício. 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ício Crie uma função que recebe o número de dias até um determinado evento e calcula e retorna o equivalente em meses, semanas e dias, sem usar vetor ou o conceito de vetor. Considerar que todos os

Leia mais

Linguagem C. Ponteiros. Alex Vidigal Bastos.

Linguagem C. Ponteiros. Alex Vidigal Bastos. Linguagem C Ponteiros Alex Vidigal Bastos alexvbh@gmail.com Ponteiros Ponteiros são variáveis que contém endereços. Estas variáveis apontam para algum determinado endereço da memória. Em geral, o ponteiro

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

13. ALOCAÇÃO DINÂMICA DE MEMÓRIA

13. ALOCAÇÃO DINÂMICA DE MEMÓRIA 787878787878787878787878787878787878787878787878787878 13. ALOCAÇÃO DINÂMICA DE MEMÓRIA Sempre é necessário declarar o número de elementos do array. Mas e se ele for desconhecido? E se ele variar? Pode

Leia mais

Ponteiros e Tabelas. K&R: Capitulo 5 IAED, 2012/2013

Ponteiros e Tabelas. K&R: Capitulo 5 IAED, 2012/2013 Ponteiros e Tabelas K&R: Capitulo 5 Ponteiros e Tabelas Ponteiros e endereços Ponteiros e argumentos de funções Ponteiros e tabelas Alocação dinâmica de memória Aritmética de ponteiros Tabelas de ponteiros

Leia mais

Ponteiros e Tabelas. K&R: Capitulo 5 IAED, 2012/2013

Ponteiros e Tabelas. K&R: Capitulo 5 IAED, 2012/2013 Ponteiros e Tabelas K&R: Capitulo 5 Ponteiros e Tabelas Ponteiros e endereços Ponteiros e argumentos de funções Ponteiros e tabelas Alocação dinâmica de memória Aritmética de ponteiros Tabelas de ponteiros

Leia mais

Ponteiros & tabelas (cont.) K&R: Capítulo 5

Ponteiros & tabelas (cont.) K&R: Capítulo 5 Ponteiros & tabelas (cont.) K&R: Capítulo 5 Sinopse da aula de hoje Pointers in a nutshell & alocação dinâmica de memória Estruturas, funções e apontadores Estruturas auto-referenciadas Exemplo de aplicação:

Leia mais

Ponteiros e Tabelas. K&R: Capítulo 5

Ponteiros e Tabelas. K&R: Capítulo 5 Ponteiros e Tabelas K&R: Capítulo 5 Ponteiros e Tabelas Ponteiros e endereços Ponteiros e argumentos de funções Ponteiros e tabelas Alocação dinâmica de memória Aritmética de ponteiros Tabelas de ponteiros

Leia mais

Programação Computacional Aula 16: Alocação Dinâmica de Memória

Programação Computacional Aula 16: Alocação Dinâmica de Memória Programação Computacional Aula 16: Alocação Dinâmica de Memória Profa. Madeleine Medrano madeleine@icte.uftm.edu.br Definição Sempre que escrevemos um programa, é preciso reservar espaço para as informações

Leia mais

Aula 17: Ponteiros e Alocação Dinâmica em C

Aula 17: Ponteiros e Alocação Dinâmica em C Aula 17: Ponteiros e Alocação Dinâmica em C Fernanda Passos Universidade Federal Fluminense Programação de Computadores IV Fernanda Passos (UFF) Ponteiros e Alocação Dinâmica Programação de Computadores

Leia mais

Ponteiros. Introdução

Ponteiros. Introdução Ponteiros Introdução Conceito Um PONTEIRO ou APONTADOR é uma variável usada para armazenar um endereço de memória. Normalmente, o endereço armazenado em um PONTEIRO é a posição de uma outra variável na

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

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

Algoritmos e Estruturas de Dados. Prof. Marcelo Zorzan Profa. Melissa Zanatta

Algoritmos e Estruturas de Dados. Prof. Marcelo Zorzan Profa. Melissa Zanatta Algoritmos e Estruturas de Dados Prof. Marcelo Zorzan Profa. Melissa Zanatta Assuntos da Aula Alocação de Memória Alocação estática de memória Alocação dinâmica de memória Malloc, Calloc, Free, Realloc

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

Introdução a Programação. Ponteiros e Strings, Alocação Dinâmica

Introduçã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 mais

Introdução a Programação. Ponteiros e Vetores, Alocação Dinâmica

Introdução a Programação. Ponteiros e Vetores, Alocação Dinâmica Introdução a Programação Ponteiros e Vetores, Alocação Dinâmica Tópicos da Aula Hoje aprenderemos que existe uma forte relação entre ponteiros e vetores Associação entre ponteiros e vetores Ponteiros constantes

Leia mais

Ponteiros - Parte I. Ponteiros, Ponteiros e Vetores, Algoritmo Bubble Sort, Alocação Dinâmica de Memória

Ponteiros - Parte I. Ponteiros, Ponteiros e Vetores, Algoritmo Bubble Sort, Alocação Dinâmica de Memória Ponteiros - Parte I Ponteiros, Ponteiros e Vetores, Algoritmo Bubble Sort, Alocação Dinâmica de Memória Ponteiros Um ponteiro é uma variável que contém um endereço de memória. Esse endereço é normalmente

Leia mais

Programação Estruturada

Programação Estruturada Programação Estruturada Ponteiros Parte 1 Professores Emílio Francesquini e Carla Negri Lintzmayer 2018.Q3 Centro de Matemática, Computação e Cognição Universidade Federal do ABC Ponteiros Ponteiro Ponteiros

Leia mais

Modularidade - Funções e Procedimentos

Modularidade - Funções e Procedimentos Modularidade - Funções e Procedimentos José Gustavo de Souza Paiva Problema Em diversas situações, é preciso executar uma tarefa específica diversas vezes em um programa, variando apenas os dados de entrada

Leia mais

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA RIO GRANDE DO NORTE

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA RIO GRANDE DO NORTE INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA RIO GRANDE DO NORTE Algoritmos ANSI C - Gerenciamento de Memória Copyright 2014 IFRN Agenda Introdução Alocação dinâmica Funções malloc free calloc realloc

Leia mais

Programação II. Vetores e Alocação Dinâmica. Bruno Feijó Dept. de Informática, PUC-Rio

Programação II. Vetores e Alocação Dinâmica. Bruno Feijó Dept. de Informática, PUC-Rio Programação II Vetores e Alocação Dinâmica Bruno Feijó Dept. de Informática, PUC-Rio Vetores (arrays) Vetor: estrutura de dados definindo um conjunto enumerável Exemplo: v = vetor de inteiros com 10 elementos

Leia mais

Alocação Dinâmica. Introdução à Computação

Alocação Dinâmica. Introdução à Computação Alocação Dinâmica Introdução à Computação Alocação de memória Uso da memória: uso de variáveis globais (e está>cas): O espaço reservado para uma variável global existe enquanto o programa es>ver sendo

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

Programação II. Vetores e Alocação Dinâmica. Bruno Feijó Dept. de Informática, PUC-Rio

Programação II. Vetores e Alocação Dinâmica. Bruno Feijó Dept. de Informática, PUC-Rio Programação II Vetores e Alocação Dinâmica Bruno Feijó Dept. de Informática, PUC-Rio Vetores (arrays) Vetor: estrutura de dados definindo um conjunto enumerável Exemplo: v = vetor de inteiros com 10 elementos

Leia mais

Introdução à Ciência da Computação I. Alocação Dinâmica. Prof. Claudio Fabiano Motta Toledo

Introdução à Ciência da Computação I. Alocação Dinâmica. Prof. Claudio Fabiano Motta Toledo Introdução à Ciência da Computação I Alocação Dinâmica Prof. Claudio Fabiano Motta Toledo Sumário Funções para alocação de memória Ponteiros para ponteiros 8/12/16 2 Funções para alocação de memória malloc(),

Leia mais

Aula 18: Funções em C

Aula 18: Funções em C Aula 18: Funções em C Fernanda Passos Universidade Federal Fluminense Programação de Computadores IV Fernanda Passos (UFF) Funções em C Programação de Computadores IV 1 / 38 Agenda 1 Revisão e Contexto

Leia mais

LINGUAGEM C: FUNÇÕES FUNÇÃO 08/01/2018. Funções são blocos de código que podem ser nomeados e chamados de dentro de um programa.

LINGUAGEM C: FUNÇÕES FUNÇÃO 08/01/2018. Funções são blocos de código que podem ser nomeados e chamados de dentro de um programa. LINGUAGEM C: FUNÇÕES Prof. André Backes FUNÇÃO Funções são blocos de código que podem ser nomeados e chamados de dentro de um programa. printf(): função que escreve na tela scanf(): função que lê o teclado

Leia mais

Ponteiros e Alocação de Memória

Ponteiros e Alocação de Memória Algoritmos e Estrutura de Dados I Ponteiros e Alocação de Memória Prof. Paulo Henrique Pisani fevereiro/2019 Memória Podemos entender a memória como um grande vetor de bytes devidamente endereçados: 0x1051

Leia mais

Suponha um conjunto habitacional, com várias famílias... imagina se todas elas morassem em uma única casa?

Suponha um conjunto habitacional, com várias famílias... imagina se todas elas morassem em uma única casa? Funções Suponha um conjunto habitacional, com várias famílias...... imagina se todas elas morassem em uma única casa? Funções Programação de Computadores 1 de 28 Funções Na Programação, funções são conjuntos

Leia mais

LINGUAGEM C: FUNÇÕES FUNÇÃO 04/07/2017. Funções são blocos de código que podem ser nomeados e chamados de dentro de um programa.

LINGUAGEM C: FUNÇÕES FUNÇÃO 04/07/2017. Funções são blocos de código que podem ser nomeados e chamados de dentro de um programa. LINGUAGEM C: FUNÇÕES Prof. André Backes FUNÇÃO Funções são blocos de código que podem ser nomeados e chamados de dentro de um programa. printf(): função que escreve na tela scanf(): função que lê o teclado

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

Modulo 12: alocação dinâmica de memória

Modulo 12: alocação dinâmica de memória PROGRAMAÇÃO DE COMPUTADORES V - TCC- 00.323 Modulo 12: alocação dinâmica de memória Aura - Erick aconci@ic.uff.br, erickr@id.uff.br Roteiro porque e como utilizar a alocação dinâmica funções: malloc (

Leia mais

1/34 GESTÃO DINÂMICA DE MEMÓRIA

1/34 GESTÃO DINÂMICA DE MEMÓRIA 1/34 GESTÃO DINÂMICA DE MEMÓRIA Memória Estática 2/34 Memória Estática Exemplo #include main() { int V[300], N; do{ printf ( N =? ); scanf ( %d, &N); while ((N < 0) (N > 300); for (i = 0; i

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

Métodos Computacionais. Vetores e Matrizes Dinâmicas

Métodos Computacionais. Vetores e Matrizes Dinâmicas Métodos Computacionais Vetores e Matrizes Dinâmicas Vetores Um programa para o cálculo da média Média m n i= = 1 n x i Variância v n i= = 1 ( x i n m) 2 A forma mais simples de estruturar um conjunto de

Leia mais

Programação I Funções. Prof. Carlos Alberto

Programação I Funções. Prof. Carlos Alberto Programação I Funções Prof. Carlos Alberto carlos.batista@facape.br carlos36_batista@yahoo.com.br Funções Funções são blocos de códigos que podem ser nomeados e chamados de dentro de um programa; Funções

Leia mais

Estruturas de Dados. Profa. Juliana Pinheiro Campos

Estruturas de Dados. Profa. Juliana Pinheiro Campos Estruturas de Dados Profa. Juliana Pinheiro Campos Vetores Forma mais simples de estruturar um conjunto de dados. Exemplo: int p[10]; // vetor de inteiros com 10 elementos Reserva de um espaço de memória

Leia mais

Permite modularidade (dividir programa em partes): Facilita a depuração (debug) e portabilidade.

Permite modularidade (dividir programa em partes): Facilita a depuração (debug) e portabilidade. 222222222222222222222222222 8 - FUNÇÕES 81 - Características básicas É um trecho independente de código, com objetivos bem definidos Programas em C, geralmente consistem em várias pequenas funções, ao

Leia mais

Suponha um conjunto habitacional, com várias famílias... imagina se todas elas morassem em uma única casa?

Suponha um conjunto habitacional, com várias famílias... imagina se todas elas morassem em uma única casa? Funções Suponha um conjunto habitacional, com várias famílias...... imagina se todas elas morassem em uma única casa? Funções Introdução à Computação 1 de 28 Funções Na Programação, funções são conjuntos

Leia mais

Sub-rotinas em C. Disciplina de Programação de Computadores I Universidade Federal de Ouro Preto

Sub-rotinas em C. Disciplina de Programação de Computadores I Universidade Federal de Ouro Preto Sub-rotinas em C Disciplina de Programação de Computadores I Universidade Federal de Ouro Preto Agenda Sub-rotinas: Função e Procedimentos A função main Variáveis globais e locais Escopo de variáveis Passagem

Leia mais

Ponteiros. Prof. Fernando V. Paulovich *Baseado no material do Prof. Gustavo Batista

Ponteiros. Prof. Fernando V. Paulovich *Baseado no material do Prof. Gustavo Batista Ponteiros SCC0202 - Algoritmos e Estruturas de Dados I Prof. Fernando V. Paulovich *Baseado no material do Prof. Gustavo Batista http://www.icmc.usp.br/~paulovic paulovic@icmc.usp.br Instituto de Ciências

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

Ponteiros e alocação dinâmica de memória. Disciplina de Programação de Computadores I Universidade Federal de Ouro Preto

Ponteiros e alocação dinâmica de memória. Disciplina de Programação de Computadores I Universidade Federal de Ouro Preto Ponteiros e alocação dinâmica de memória Disciplina de Programação de Computadores I Universidade Federal de Ouro Preto Agenda Ponteiros Ponteiros e vetores Passagem por cópia e por referência Alocação

Leia mais

Estruturas Dinâmicas - Ponteiros

Estruturas Dinâmicas - Ponteiros SSC0800 - ICC1 Teórica Introdução à Ciência da Computação I Estruturas Dinâmicas - Ponteiros Prof. Claudio Fabiano Motta Toledo: claudio@icmc.usp.br Sumário Ponteiros Ponteiros e Vetores Funções para alocação

Leia mais

Laboratório de Introdução à Ciência da Computação I

Laboratório de Introdução à Ciência da Computação I Laboratório de Introdução à Ciência da Computação I Aula 12 Alocação dinâmica de memória Professor: Jó Ueyama Estagiária PAE: Aurea Soriano slide 1 Funções para alocação de memória malloc(), calloc(),

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

Programação I Ponteiros e alocação dinâmica de memória. Prof. Carlos Alberto

Programação I Ponteiros e alocação dinâmica de memória. Prof. Carlos Alberto Programação I Ponteiros e alocação dinâmica de memória Prof. Carlos Alberto carlos.batista@facape.br carlos36_batista@yahoo.com.br Ponteiros O ponteiro é um tipo de dado como int, char ou float; Variáveis

Leia mais

Estruturas de Dados. Introdução Definição de Ponteiros Declaração de Ponteiros em C Manipulação de Ponteiros em C

Estruturas de Dados. Introdução Definição de Ponteiros Declaração de Ponteiros em C Manipulação de Ponteiros em C Estruturas de Dados Revisão de Ponteiros 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 e Arranjos

Leia mais

Modularidade - Fun ções e Procedimentos

Modularidade - Fun ções e Procedimentos Modularidade - Fun ções e Procedimentos José Gustavo de Souza Paiva Problema Em diversas situa ções, é preciso executar uma tarefa específica diversas vezes em um programa, variando apenas os dados de

Leia mais

Alocação dinâmica de Memória

Alocação dinâmica de Memória Alocação dinâmica de Memória Vetores e Arrays A variável vetor é uma variável que armazena outras variáveis, no caso tem que ser do mesmo tipo. Exemplo Criar um cont Declarar um vet com o tamanho Laço

Leia mais

PROGRAMAÇÃO DE COMPUTADORES V - TCC Modulo 6 : Funções Escopo de Variáveis: Globais x Locais Aura - Erick

PROGRAMAÇÃO DE COMPUTADORES V - TCC Modulo 6 : Funções Escopo de Variáveis: Globais x Locais Aura - Erick PROGRAMAÇÃO DE COMPUTADORES V - TCC- 00.323 Modulo 6 : Funções Escopo de Variáveis: Globais x Locais Aura - Erick aconci@ic.uff.br, erickr@id.uff.br Roteiro Funções Escopo de Variáveis Variáveis Globais

Leia mais

Alocação Dinâmica de Memória - Exercício

Alocação Dinâmica de Memória - Exercício Alocação Dinâmica de Memória - Exercício Construa um programa que leia da entrada padrão o número de linhas e de colunas de uma matriz de floats, aloque espaço dinamicamente para esta e a inicialize, com

Leia mais

ESTRUTURA DE DADOS (TCC )

ESTRUTURA DE DADOS (TCC ) ESTRUTURA DE DADOS (TCC-00.319) Ponteiros e funções Cristina Boeres 2 Ponteiros Variável do tipo ponteiro:! Linguagens como C permite o armazenamento e a manipulação de valores de endereços de memória!

Leia mais

Aula 25: Alocação Dinâmica

Aula 25: Alocação Dinâmica Aula 25: Alocação Dinâmica Introdução a Programação Túlio Toffolo & Puca Huachi http://www.toffolo.com.br BCC201 2019/1 Departamento de Computação UFOP Aulas anteriores Estruturas de memórias heterogêneas

Leia mais

ALGORITMOS E ESRUTRA DE DADOS I. Ponteiros Passagem por Valor e Referência Alocação de Memória

ALGORITMOS E ESRUTRA DE DADOS I. Ponteiros Passagem por Valor e Referência Alocação de Memória ALGORITMOS E ESRUTRA DE DADOS I Ponteiros Passagem por Valor e Referência Alocação de Memória 2 Agenda Ponteiros Conceitos gerais O que é Ponteiro? Declaração de Ponteiros Operadores para Ponteiros Exemplos

Leia mais

Fundamentos de Programação

Fundamentos de Programação Fundamentos de Programação ET42G Aula 21 Prof. Daniel Cavalcanti Jeronymo Conversão de tipos. Alocação dinâmica de memória. Recursão. Criação de bibliotecas, arquivos de cabeçalhos e variáveis globais.

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

Ponteiros. Baseado nos slides do Prof. Mauro.

Ponteiros. Baseado nos slides do Prof. Mauro. Baseado nos slides do Prof. Mauro. A memória do computador é uma sequência de bytes, na qual endereçamos cada um sequencialmente. Como vimos, uma variável é uma região da memória que reservamos para armazenar

Leia mais

11a. Aula Ponteiros e Vetores

11a. Aula Ponteiros e Vetores 11a. Aula Ponteiros e Vetores 2013.2 2 É um tipo de variável com uma ressalva...... armazena apenasendereçode memória (ou null) Se eu tiver o endereço da casa de Francisca, eu poderei visitá-la e lhe fazer

Leia mais

1. Revisão de Vetores, Ponteiros, Funções e Estruturas em C

1. Revisão de Vetores, Ponteiros, Funções e Estruturas em C Introdução à Computação II 5952011 1. Revisão de Vetores, Ponteiros, Funções e Estruturas em C Prof. Renato Tinós Local: Depto. de Computação e Matemática (FFCLRP/USP) 1 Principais Tópicos 1.1. Revisão

Leia mais

PONTEIROS E LISTAS. Kalinka Regina Lucas Jaquie Castelo Branco

PONTEIROS E LISTAS. Kalinka Regina Lucas Jaquie Castelo Branco PONTEIROS E LISTAS Kalinka Regina Lucas Jaquie Castelo Branco kalinka@icmc.usp.br ALOCAÇÃO DINÂMICA DE MEMÓRIA Pode-se assumir que as variáveis declaradas na cláusula variável do pseudo-código do algoritmo

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

Algoritmos e Estruturas de Dados I IEC012. Procedimentos e Funções. Prof. César Melo Todos os créditos para o professor Leandro Galvão

Algoritmos e Estruturas de Dados I IEC012. Procedimentos e Funções. Prof. César Melo Todos os créditos para o professor Leandro Galvão Algoritmos e Estruturas de Dados I IEC012 Procedimentos e Funções Prof. César Melo Todos os créditos para o professor Leandro Galvão Procedimentos e Funções Procedimentos são s estruturas que agrupam um

Leia mais

Estrutura de Dados. Aula 07 Alocação Dinâmica

Estrutura de Dados. Aula 07 Alocação Dinâmica Estrutura de Dados Aula 07 Alocação Dinâmica 2 ALOCAÇÃO DINÂMICA Existem três modos de reservar espaço de memória para o armazenamento de informações: 1ª - através do uso de variáveis globais (e estáticas).

Leia mais

Estrutura de dados 2. Ponteiro. Prof. Jesuliana N. Ulysses

Estrutura de dados 2. Ponteiro. Prof. Jesuliana N. Ulysses 1 3 Estrutura de dados 2 Ponteiro Ponteiro 2 O ponteiro é um tipo de dado como int, char ou float. A diferença do ponteiro ponteiro guardará um endereço de memória. Por meio deste endereço pode-se acessar

Leia mais

Funções em Linguagem C Parte II

Funções em Linguagem C Parte II Slides inicialmente preparados pelo Prof. Dr. Claudio Fabiano Motta Toledo Funções em Linguagem C Parte II Profa. Dra. Elisa Yumi Nakagawa 1. Semestre 2017 Sumário Introdução a Ponteiros Escopo de Variáveis

Leia mais

DAS5102 Fundamentos da Estrutura da Informação

DAS5102 Fundamentos da Estrutura da Informação Ponteiros e Funções Funções ou sub-rotinas são parcelas de código que podem ser invocadas a partir do programa principal ou até mesmo por outras sub-rotinas. Elas têm como objetivo a execução de uma tarefa

Leia mais

FUNÇÕES EM C Material adaptado da profa Silvana Maria Affonso de Lara

FUNÇÕES EM C Material adaptado da profa Silvana Maria Affonso de Lara Universidade do Estado de Minas Gerais - UEMG Curso de Engenharia da Computação FUNÇÕES EM C 1 Material adaptado da profa Silvana Maria Affonso de Lara ROTEIRO DA AULA Definição de Função Argumentos, retornos

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

Princípios de Desenvolvimento de Algoritmos MAC122

Princípios de Desenvolvimento de Algoritmos MAC122 Princípios de Desenvolvimento de Algoritmos MAC122 Prof. Dr. Paulo Miranda IME-USP Alocação Dinâmica de Memória Motivação: Nossos programas pré-fixavam o número de variáveis a serem utilizadas. No caso

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

REVISÃO DE C. Vanessa Braganholo Estruturas de Dados e Seus Algoritmos

REVISÃO DE C. Vanessa Braganholo Estruturas de Dados e Seus Algoritmos REVISÃO DE C Vanessa Braganholo Estruturas de Dados e Seus Algoritmos REVISÃO DE C Ponteiros Alocação dinâmica de memória Recursão INSTITUTO DE COMPUTAÇÃO - UFF 2 PONTEIROS PONTEIROS C permite o armazenamento

Leia mais

Professor: Jó Ueyama Estagiário PAE: Heitor Freitas

Professor: Jó Ueyama Estagiário PAE: Heitor Freitas Alocação Dinâmica de Memória Professor: Jó Ueyama Estagiário PAE: Heitor Freitas Instituto de Ciências Matemáticas e de Computação Universidade de São Paulo SSC 300 - Linguagem de Programação e Aplicações

Leia mais

Programação. Cap. 12 Gestão de Memória Dinâmica

Programação. Cap. 12 Gestão de Memória Dinâmica Programação Engenharia Informática (11543) 1º ano, 1º semestre Tecnologias e Sistemas de Informação (6619) 1º ano, 1º semestre Cap. 12 Gestão de Memória Dinâmica Sumário : Utilização de memória Alocação

Leia mais

C Estruturas. Adriano Cruz 21 de julho de Instituto de Matemática Departamento de Ciência da Computação UFRJ

C Estruturas. Adriano Cruz 21 de julho de Instituto de Matemática Departamento de Ciência da Computação UFRJ C Estruturas Adriano Cruz adriano@nce.ufrj.br 21 de julho de 2017 Instituto de Matemática Departamento de Ciência da Computação UFRJ 1 Section Summary 1 Introdução 2 Definições Básicas 3 typedef 4 typedef

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

A sintaxe para se declarar uma variável do tipo ponteiro é dada por:

A sintaxe para se declarar uma variável do tipo ponteiro é dada por: Pense duas vezes e faça uma vez. Provérbio Chinês. PONTEIROS Um ponteiro nada mais é que uma variável capaz de armazenar um número hexadecimal que corresponde a um endereço de memória de outra variável.

Leia mais

MC-102 Aula 13. Instituto de Computação Unicamp. 29 de Setembro de 2016

MC-102 Aula 13. Instituto de Computação Unicamp. 29 de Setembro de 2016 MC-102 Aula 13 Funções I Instituto de Computação Unicamp 29 de Setembro de 2016 Roteiro 1 Funções Definindo uma função Invocando uma função 2 O tipo void 3 A função main 4 Protótipo de funções 5 Funções

Leia mais

Estruturas de Dados Aulas 3 e 4: Uso da memória e Vetores

Estruturas de Dados Aulas 3 e 4: Uso da memória e Vetores Estruturas de Dados Aulas 3 e 4: Uso da memória e Vetores Uso da memória Existem 3 maneiras de reservar o espaço da memória: Variáveis globais (estáticas) Espaço existe enquanto programa estiver executando

Leia mais

Estruturas dinâmicas Ponteiros

Estruturas dinâmicas Ponteiros SSC0102 LABORATÓRIO DE INTRODUÇÃO À CIÊNCIA DA COMPUTAÇÃO I Estruturas dinâmicas Ponteiros Prof. Claudio Fabiano Motta Toledo SUMÁRIO Ponteiros e Vetores Funções para alocação de memória PONTEIROS Declaração

Leia mais

Alocação Dinâmica de Memória

Alocação Dinâmica de Memória Alocação Dinâmica de Memória Elerson R. S. Santos elerson@dcc.ufmg.br Algoritmos e Estruturas de DCC UFMG Variáveis Uma variável representa um nome simbólico para uma posição de memória. Cada posição de

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

Tipos Básicos. Operadores de Incremento e Decremento. Operador Sizeof. Estruturas de Dados Aula 2: Estruturas Estáticas

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

Leia mais

Estruturas de Dados Homogêneas (Vetores e Matrizes) e Ponteiros em C

Estruturas de Dados Homogêneas (Vetores e Matrizes) e Ponteiros em C Estruturas de Dados Homogêneas (Vetores e Matrizes) e Ponteiros em C 2015/1 Programação Básica de Computadores (INF 09325) Archimedes Detoni www.inf.ufes.br/~archimedesdetoni archimedesdetoni@inf.ufes.br

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

Estruturas de Dados Aula 2: Estruturas Estáticas. Tipos Básicos. Quantos valores distintos podemos representar com o tipo char?

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

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

Aula 24 Ponteiros, vetores e structs

Aula 24 Ponteiros, vetores e structs Programação Aula 24 Ponteiros, vetores e structs Prof. Laura Silva de Assis Engenharia de Computação 2 o Período CEFET/RJ - Centro Federal de Educação Tecnológica Celso Suckow da Fonseca UnED Petrópolis

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

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