e uso de ponteiros Prof. Leandro Tonietto Estruturas de Dados em C++ - Unisinos abr-10

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

Download "e uso de ponteiros Prof. Leandro Tonietto Estruturas de Dados em C++ - Unisinos abr-10"

Transcrição

1 Alocação de Memória e uso de ponteiros Prof. Leandro Tonietto Estruturas de Dados em C++ - Unisinos ltonietto@unisinos.br abr-10

2 Sumário Introdução Alocação de variáveis: tipos primitivos Alocação de ponteiros: tipos primitivos Manipulação de strings como array de caracteres Ponteiros e instanciação de objetos com new Alocação dinâmica de vetores 27-abr-10 Leandro Tonietto 2

3 Introdução Qualquer dado para ser processado deve estar na memória Como memória podemos entender como slots de bytes para armazenamento temporário. Todas as variáveis são posições de memória Variáveis na memória possuem: nome, tipo, tamanho e valor que armazenam. Memória n 27-abr-10 Leandro Tonietto 3

4 Alocação de variáveis: tipos primitivos A alocação de variáveis de tipos de dados primitivos (int, double, float, char, bool e etc) é estática, com acesso direto a valores e é trivial. Estática significa que alocada no momento de entrada do seu escopo e será descarregada no final do escopo, tudo de forma automática feita pelo compilador. Chamamos de alocação implícita. Portanto, a simples declaração de uma variável implica em alocação de memória. Exemplo: int v1; 27-abr-10 Leandro Tonietto 4

5 Alocação de variáveis: tipos primitivos Memória n v1 v1 está associado com a posição 0 (zero), que é a próxima livre. Código-fonte: int v1; 27-abr-10 Leandro Tonietto 5

6 Alocação de variáveis: tipos primitivos Memória n v1 v2 v2 está associado com a posição 1, que é a próxima livre. Código-fonte: int v1; int v2; 27-abr-10 Leandro Tonietto 6

7 Alocação de variáveis: tipos primitivos Memória n 5 3 v1 v2 Código-fonte: int v1; int v2; v1 = 5; v2 = 3; Quando atribuímos um valor para uma variável, estamos fazendo com a posição de memória da variável tenha este valor. Ex.: v1=5, significa posição zero recebe valor 5 27-abr-10 Leandro Tonietto 7

8 Alocação de variáveis primitivos Memória n v1 v2 r Código-fonte: int v1; int v2; v1 = 5; v2 = 3; int r = v1+v2; Da mesma forma, a variável r foi alocada na próxima posição livre para int e recebeu um valor, no caso a soma dos valores armazenados nas posições 0 e 1; também podemos dizer que é a soma das variáveis v1 e v2, porque v1 e v2 são como apelidos para as posições 0 e 1 da memória. 27-abr-10 Leandro Tonietto 8

9 Alocação de ponteiros: tipos primitivos A alocação de ponteiros para variáveis de tipos primitivos implica alocação dinâmica, com manipulação indireta a valores e não é trivial. Dinâmica significa a área de memória que armazena um valor deve ser alocada explicitamente no momento da sua utilização. Portanto, sem alocação previa. Chamamos de alocação explícita. Portanto, a simples declaração de uma variável NÃO implica em alocação de memória, deve-se alocar memória primeiro para depois utilizá-la. Exemplo: int *p1; p1 = new int; 27-abr-10 Leandro Tonietto 9

10 Alocação de ponteiros: tipos primitivos Memória n 5 v1 v1 está associado com a posição 0 (zero) e recebe o valor 5. Código-fonte: int v1; v1 = 5; 27-abr-10 Leandro Tonietto 10

11 Alocação de ponteiros: tipos primitivos Memória n 5 v1 p1 Criado um ponteiro (p1) para int (int *). O ponteiro, assim como a variável não tem valor inicial. Código-fonte: int v1; v1 = 5; int *p1; 27-abr-10 Leandro Tonietto 11

12 Alocação de ponteiros: tipos primitivos Memória n 5 &5 v1 p1 Código-fonte: Quando atribuímos um valor para um ponteiro, estamos atribuindo um endereço de memória e não exatamente um valor (dado). int v1; v1 = 5; int *p1; p1 = v1; // ERRO DE LÓGICA NO PROGRAMA: p1 = v1 é a mesma coisa que p1=5, que significa que p1 apontará para o endereço 5 da memória. 27-abr-10 Leandro Tonietto 12

13 Alocação de ponteiros: tipos primitivos Memória n 5 &0 v1 p1 Código-fonte: int v1; v1 = 5; int *p1; p1 = &v1; // Agora está correto, pois p1 recebe o endereço de v1. Se diz, então, que p1 aponta para v1, logo p1 aponta para o endereço 0 (zero) da memória. A instrução p1=&v1 é igual a p1=0 Para utilizarmos com eficiência ponteiros, devemos atribuir para eles endereços de variáveis ou de memória previamente alocados. Para informar obter o endereço de memória de uma variável deve-se utilizar o operador & 27-abr-10 Leandro Tonietto 13

14 Resumo alocação de ponteiros Para criar ponteiros Uso do asterisco antes do nome da variável int *ptr; Para atribuir um endereço de uma variável para um ponteiro Uso do e comercial antes da variável ptr = &v1; Usando o valor de uma variável apontada por um ponteiro Uso do asterisco antes da variável de ponteiro *ptr 27-abr-10 Leandro Tonietto 14

15 Resumo alocação de ponteiros Exemplo de código: #include <iostream> int main(){ int v1; v1 = 0; int *p1 = &v1; cout << v1 está na posição << &v1 << e tem o valor << v1 << endl; cout << p1 está na posição << &p1 << e tem o valor << p1 <<. Valor da posição de mem. Apontada por p1 << *p1 << endl; return 0; } 27-abr-10 Leandro Tonietto 15

16 Alocação de ponteiros: dicas de sobrevivência!! Inicializando ponteiros Uso de NULL ou 0 (são equivalentes) ptr = NULL; // ou ptr = 0; Podem ser criados ponteiros para qualquer tipo de dados, inclusive tipos criados pelo usuário Dica! Use o sufixo ptr nas variáveis de ponteiro Importante: Sempre inicialize os ponteiros para preservar sua sanidade :-) Um ponteiro não inicializado aponta para uma área qualquer de memória, provavelmente, uma área inválida de memória. Erro: access violation. 27-abr-10 Leandro Tonietto 16

17 Strings como array de char Uma texto é formado várias letras, assim como uma string (cadeia de caracteres) é formada por vários dados do tipo char. Exemplo: char c; // declaramos uma letra; char t[10]; //declaramos um texto com 10 letras. Problema: quando é necessário representar um texto com tamanho desconhecido, o que podemos fazer 27-abr-10 Leandro Tonietto 17

18 Strings como array de char A solução é utilizar um ponteiro para char. Exemplo: char *t; // alocamos um ponteiro para char A questão agora é: Todo ponteiro aponta para um endereço de memória, então a string deve estar na memória para ser apontada. A string é um array de caracteres, contudo ponteiros também são utilizados para manipulação de arrays (aliás, lógica de ponteiros e de arrays estão intimamente relacionadas). O acesso a caracteres individuais feito como no uso de arrays, pelo caracteres [ e ]. Exemplo: t[0]. 27-abr-10 Leandro Tonietto 18

19 Strings como array de char Exemplo: #include <iostream> int main(){ char *t = new char[10]; for(int i=0; i<10; i++){ t[i] = 65 + i; // 65=A, 66=B, 67=C,... } char *t2 = t; // o que fizemos aqui t2[0] = Z ; cout << t = << t << endl; cout << t2= << t2 << endl; // o que será impresso na tela return 0; } 27-abr-10 Leandro Tonietto 19

20 Strings como array de char Exemplo: #include <iostream> int main(){ char *t = new char[8]; for(int i=0; i<8; i++){ t[i] = 65 + i; // 65=A, 66=B, 67=C,... } char *t2 = t; // o que fizemos aqui ERRO t2[0] = z ; cout << t= << t < endl; cout << t2= << t2 << endl; // o que será impresso na tela return 0; } Atribuímos o mesmo endereço de memória de t para t2. Quando alteramos um impacta no outro. É um erro comum com ponteiros. Solução: criar nova área de memória e copiar os bytes. 27-abr-10 Leandro Tonietto 20

21 Strings como array de char Exemplo: #include <iostream> int main(){ char *t = new char[8]; for(int i=0; i<8; i++){ t[i] = 65 + i; // 65=A, 66=B, 67=C,... } char *t2 = new char[8]; for(int i=0; i<8; i++){ t2[i] = t[i]; } t2[0] = z ; cout << t= << t < endl; cout << t2= << t2 << endl; return 0; } Atribuímos o mesmo endereço de memória de t para t2. Quando alteramos um impacta no outro. É um erro comum com ponteiros. Solução: criar nova área de memória e copiar os bytes. 27-abr-10 Leandro Tonietto 21

22 Strings como array de char Memória: ERRO t2 = t Memória: SOLUÇÃO t2 = new char[8] 0 &1 t 0 &1 t 1 ZBCDEFGH 1 ABCDEFGH 2 &1 t2 2 &3 t2 3 3 ZBCDEFGH n n 27-abr-10 Leandro Tonietto 22

23 Tarefas Utilizar lógica de ponteiros para resolver o problema abaixo: Criar uma classe Pessoa com os atributos nome e endereco do tipo array de char; e com o atributo inteiro idade. Criar um main para instanciar 3 pessoas. Solicitar que o usuário digite os dados de 3 pessoas diferentes e atribuir estes dados para os objetos de pessoa instanciados anteriormente. Quando copiar dados do tipo char *, cuidar para não apontar para a mesma área de memória. No main, quando utilize sempre a mesma variável temporária para leitura das strings. Por exemplo: char buffer[80]; Dicas: o comando strlen(buffer) retorna o número de caracteres de uma string O comando para leitura de strings de maneira mais fácil é: cin.getline(buffer, 80); 27-abr-10 Leandro Tonietto 23

24 Strings como array de char Quando fizemos a cópia de strings em classes ocorre o mesmo problema do exemplo (t2=t), então temos que utilizar a mesma solução: criar uma nova área de memória, fazer o atributo ponteiro apontar para ela e copiar as informações individualmente. Exemplo: // no main: char buffer[80]; cin.getline(buffer,80); Pessoa p; p.setnome(buffer); Importante: : em strings char * o fim da string deve ser sinalizado com o caractere terminador de string: \0 // na classe Pessoa (.cpp): void Pessoa::setNome(char *n){ int length = strlen(n); nome = new char[length+1]; for(int i=0; i<length; i++){ nome[i] = n[i]; } nome[length] = \0 ; } 27-abr-10 Leandro Tonietto 24

25 Funções para usar com char * Nas bibliotecas padrões de C++ podemos fazer uso de diversas funções utilitárias para manipulação de strings do tipo char *. Biblioteca string.h: #include <string.h> Funções: strcat, strcpy, strtok, strlen, strcmp e etc. 27-abr-10 Leandro Tonietto 25

26 Funções para usar com char * strcat: Concatena duas strings: char *c = new char[3]; strcpy(c, "blá"); strcat(c, "blá123"); // ficará bláblá123 strcpy: Copia conteúdo de um string para outra: char *c = new char[strlen(n)]; strcpy(c, n); // é a mesma coisa que: void Pessoa::setNome(char *n){ int length = strlen(n); nome = new char[length+1]; for(int i=0; i<length; i++){ nome[i] = n[i]; } nome[length] = \0 ; 27-abr-10 Leandro Tonietto 26 }

27 Funções para usar com char * strtok: Separa uma string em várias strings, separadas por algum delimitador. Exemplo: char c[] = "fulano;23;2550.0"; char s[] = ";"; char *t = strtok(c, s); // recebe o primeiro token fulano strlen: Retorna o tamanho de uma string. Na realidade a quantidade de caracteres até encontrar o terminador \0. Exemplo: int length = strlen(nome); strcmp: Compara duas strings caractere-a-caractere e retorna: 0 (zero) se são iguais 1 se a primeira é maior que a segunda -1 se a segunda é maior que a primeira if(strcmp(s1, s2) == 0) return s1; 27-abr-10 Leandro Tonietto 27

28 Funções para usar com char * Exercícios para praticar strings (desafio 2, entregar no GA): Crie um programa que leia duas palavras, se forem iguais, escreva: palavras são iguais. Caso a primeira palavra seja maior alfabeticamente, crie uma nova string com a mensagem: <palavra1> é maior que <palavra2>. Onde <palavra1> é primeira palavra digitada e <palavra2> é a segunda. Crie um programa que leia uma data fornecida pelo usuário. Considere que o usuário digitará uma string no formato dd/mm/yyyy. Imprima os campos da data separadamente. Exemplo: dia <dd> de <MM> de <yyyy>. Onde: <dd>, <mm> e <yyyy> são os valores digitados pelo usuário na string dd/mm/yyyy. Crie uma calculadora de linha de comando. O usuário digita uma expressão no formato: <operando1> <operador> <operando2> (exemplo: 5 + 6). O programa interpretar a expressão, extraindo os números, realizando a operação desejada e imprimindo o resultado. 27-abr-10 Leandro Tonietto 28

29 Alocação de variáveis: tipos estruturados Assim como acontece na alocação de variáveis de tipos primitivos, a alocação de variáveis de tipos estruturados (objetos de classes) é trivial e feita de forma automática e estática: Estática significa que alocada no momento de entrada do seu escopo e será descarregada no final do escopo, tudo de forma automática feita pelo compilador. Chamamos de alocação implícita. Portanto, a simples declaração de uma variável implica em alocação de memória. Exemplo: Pessoa p; 27-abr-10 Leandro Tonietto 29

30 Alocação de variáveis: tipos estruturados N Memória nome=<> endereco=<> idade=<> p Pessoa p; Quando a variável p é declarada ela é automaticamente alocada na memória do programação. Então p já tem um endereço de memória e sua área de memória recebe os seus atributos. Repare que os atributos não possuem valores válidos, sendo eles ponteiros ou não. 27-abr-10 Leandro Tonietto 30

31 Alocação de variáveis: tipos estruturados Memória nome=&13 endereco=<> idade=<> aux[0]= L aux[1]= u aux[2]= i p aux Pessoa p; char aux[4]; cin.getline(aux,4); // aux = Luis p.setnome(aux); aux[3]= s L u i void Pessoa::setNome(char *n){ nome = new char[strlen(n)]; strcpy(nome, n); } 16 s 27-abr-10 Leandro Tonietto 31

32 Alocação de variáveis: tipos estruturados Perguntas: Neste momento, após a linha do setnome(aux), o que aconteceria tentássemos executar imediatamente após a linha: cout << p.getendereco() Justifique Como ficaria o código e o desenho da memória para a atribuição de um endereço para o objeto p 27-abr-10 Leandro Tonietto 32

33 Alocação de ponteiros: tipos estruturados A alocação de ponteiros para objetos de tipos estruturados (classes) implica alocação dinâmica, com manipulação indireta a valores e não é trivial. Dinâmica significa a área de memória que armazena um valor deve ser alocada explicitamente no momento da sua utilização. Portanto, sem alocação previa. Chamamos de alocação explícita. Portanto, a simples declaração de uma variável NÃO implica em alocação de memória, deve-se alocar memória primeiro para depois utilizá-la (new). Exemplo: Pessoa *p; p = new Pessoa(); 27-abr-10 Leandro Tonietto 33

34 Alocação de variáveis: tipos estruturados Memória N &1 nome=<> endereco=<> idade=<> p Pessoa *p; p = new Pessoa(); Quando a variável p é declarada ela é alocada na memória como um ponteiro, ou seja, ela não possui um objeto, mas sim um apontamento apenas. Neste caso, deve-se alocar memória explicitamente para que o ponteiro aponte para uma área de memória válida (operador new). Repare que os atributos ainda não foram alocados. 27-abr-10 Leandro Tonietto 34

35 Alocação de variáveis: tipos estruturados &1 aux[2]= i aux[3]= s u i 27-abr-10 Leandro Tonietto Memória nome=&14 endereco=<> idade=<> aux[0]= L aux[1]= u L s p aux Pessoa *p; p = new Pessoa(); char aux[80]; cin.getline(aux); p->setnome(aux); A alocação dos atributos do objeto apontado pelo ponteiro segue as mesmas regras. Eles devem ser alocados e atribuídos ou copiados para os atributos do objeto. Há uma diferença significativa no uso de ponteiros, ao invés do ponto (.) para acessar os membros do objeto, agora deve-se utilizar a ->.

36 Alocação de variáveis: tipos estruturados Memória 0 &1 p nome=&14 endereco=<> idade=<> aux[0]= L aux[1]= u aux[2]= i aux[3]= s L u i aux Pessoa *p; p = new Pessoa(); char aux[80]; cin.getline(aux); p->setnome(aux); Pessoa *p2; p2 = p; 17 s 18 &1 p2 27-abr-10 Leandro Tonietto 36

37 Resumo sobre ponteiros para objetos Para criar ponteiros Uso do asterisco antes do nome da variável Aluno *ptr; Para atribuir um endereço de um objeto para um ponteiro Uso do e comercial antes da variável Aluno v1; ptr = &v1; Para acessar o conteúdo (objeto) apontado por um ponteiro Uso do asterisco antes da variável de ponteiro *ptr (*ptr).setnome(aux); ou ptr->setnome(aux); 27-abr-10 Leandro Tonietto 37

38 Ponteiros e arrays Arrays e ponteiros estão intimamente relacionados. Podem ser acessados com a mesma lógica. Um ponteiro pode apontar tanto para um 1 elemento quanto para um array de elementos de um determinado tipo. Não importa o tipo de dados. Sendo assim: int b[3]; int *bptr; bptr = b; // repare que não se usa o & // outra forma de fazer a mesma coisa bptr = &b[0]; // é exatamente a mesma coisa!! // é possível acessar elementos do array assim: cout << bptr[2]; bptr += 2; cout << *bptr; // também imprime terceiro elemento 27-abr-10 Leandro Tonietto 38

39 Ponteiros e arrays Memória n b[0]=2 b[1]=1 b[2]=4 &0 b p Código-fonte: int b[]={2,1,4}; int *p = b; cout << p; //imp. 0 cout << *p; // imp. 2 cout << p[2]; // imp. 4 p += 2; // p = = 2 cout << *p; // imp. 4 Quando se atribui um array para um ponteiro, na verdade está se atribuindo o endereço do primeiro elemento. Os demais podem ser acessados pela mesma lógica de array, usando os caracteres [ e ] ou deslocando o ponteiro, com operadores +=, ++, -- e -=. 27-abr-10 Leandro Tonietto 39

40 Resumo: Ponteiros e arrays Ponteiros podem apontar para arrays; neste caso, devese passar o endereço do primeiro elemento: ptr = b; ou ptr=&b[0] Acesso aos elementos do array é feito através da lógica de arrays, usando colchetes. Exemplo, para acessar o n-ésimo elemento do array: ptr[n]; Para arrays de objeto funciona da mesma maneira: Mensagem *mensagens = new Mensagem[5]; // array mensagens[2].settexto(buffer); 27-abr-10 Leandro Tonietto 40

41 Ponteiros para ponteiros Muitas vezes precisamos criar arrays de ponteiros para representar uma coleção de objetos que são de subclasses diferentes, mas de uma mesma superclasse. Por exemplo Criar um array de Pessoas, sendo que é possível instanciar cada registro como Aluno ou Professor. Criar um array de objetos da classe abstrata de Processo, sendo que é possível instanciar como ProcessoCalculo, ou ProcessoLeitura ou outro subtipo qualquer. Exemplo de declaração de array de ponteiros: // cria um array de 100 ponteiros para objetos da classe Pessoa Pessoa *pessoas[100]; // normalmente, deve-se manter também um contador de tamanho // lógico do array int ultimo=0; // para cada elemento do array a ser utilizado no programa, // devemos instanciar um objeto pessoas[ultimo++] = new Professor(); 27-abr-10 Leandro Tonietto 41

42 Ponteiros para ponteiros Quanto temos arrays de ponteiros ou, simplesmente, precisamos alterar um ponteiro criado num objeto em outro objeto, precisamos passar referências como ponteiro para ponteiro. Por exemplo, continuando o exemplo anterior de pessoas: class Impressao { // para fins de exemplificação não foi criado cpp void imprimir(pessoa **p, int ult){ for(int i=0; i<ult; i++){ cout << p[i]->getnome() << endl; } } } Ainda, podemos aumentar (ou modificar) o array original: class AlgumaOutraClasse { // para fins de exemplificação não foi criado cpp void adicionaprofessorfulano(pessoa **p, int *ult){ p[*ult] = new Professor(); p[*ult]->setnome( Fulano ); } } **p é um ponteiro para ponteiro, portanto, podemos receber nesta variável um array de ponteiros *ult é um ponteiro para o último elemento lógico do array ((Professor*)p[*ult])->setEspecialidade( Estrutura de Dados ); (*ult)++; 27-abr-10 Leandro Tonietto 42

43 Próximos passos Exercícios Continuar apresentação sobre programação OO, com herança, uso de ponteiros para relacionamento classebase e classe-derivada e polimorfismo. Passagem de parâmetros para funções. 27-abr-10 Leandro Tonietto 43

44 Exercício Cria a classe Mensagem que representa uma mensagem de . Classe deve conter os atributos: remetente, destinatário, assunto e corpo da mensagem. Crie também os métodos necessários para acesso aos atributos. Entretanto, para os atributos remetente e destinatário, deve-se colocar uma validação, ou seja, só serão aceitos endereços de que: Contenham mais do 6 caracteres. Que possuam o Que possuam algum domínio válido.com,.net ou.org Fazer um arquivo main que crie um ponteiro para um objeto mensagem. Alocar memória dinamicamente para o objeto e fazer a leitura dos campos solicitados. Depois imprimir os dados da mensagem na tela. Modifique o código do método setdestinatario(char *d) para receber mais de um destinatário numa string separada por ; ou, e quebrar num array de vários destinatários (utilize a função strtok). Por exemplo: o usuário digita fulano@tal.com;beltrano@tal.com e o método setdestinatario() quebra em duas strings fulano@tal.com e beltrano@tal.com. 27-abr-10 Leandro Tonietto 44

45 Tarefas Faça a lista de exercícios que está no site da disciplina. Alguns exercícios vão além do que foi visto até o momento, tente fazê-los mesmo assim. Para tanto, seria interessante a leitura do capítulo 8 Ponteiros e strings baseadas em ponteiros do livro C++: como programar, a partir da pág Especialmente o as seções que falam sobre sizeof, const e passagem de parâmetros para funções. Se não conseguir este livro, você pode qualquer outro que fale nestes assuntos. 27-abr-10 Leandro Tonietto 45

46 Referências bibliográficas DEITEL, Harvey M., DEITEL, Paul J. C++: como programar. 5ed. Pearson Education do Brasil Ltda., págs abr-10 Leandro Tonietto 46

Fundamentos de Programação

Fundamentos de Programação Fundamentos de Programação Linguagem C++: arrays - aula I Bruno Emerson Gurgel Gomes 1 1 Instituto Federal de Educação, Ciência e Tecnologia do RN (IFRN) 2012 Bruno Gomes (IFRN) Fundamentos de Programação

Leia mais

Aula 27: Estruturas heterogêneas e alocação dinâmica

Aula 27: Estruturas heterogêneas e alocação dinâmica Aula 27: Estruturas heterogêneas e alocação dinâmica Introdução a Programação Túlio Toffolo & Puca Huachi http://www.toffolo.com.br BCC201 2018/2 Departamento de Computação UFOP Aulas anteriores Memória

Leia mais

Centro Universitário Franciscano Curso de Sistemas de Informação Disciplina de algoritmos e programação II. Ponteiros

Centro Universitário Franciscano Curso de Sistemas de Informação Disciplina de algoritmos e programação II. Ponteiros Centro Universitário Franciscano Curso de Sistemas de Informação Disciplina de algoritmos e programação II Ponteiros Profa.: Simone Ceolin Slides (Prof.Tiago Rios da Rocha) Primeiro Semestre 2011 Sumário

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

Aula 24: Ponteiros e Alocação Dinâmica

Aula 24: Ponteiros e Alocação Dinâmica Aula 24: Ponteiros e Alocação Dinâmica Introdução a Programação Túlio Toffolo & Puca Huachi http://www.toffolo.com.br BCC201 2018/2 Departamento de Computação UFOP Aula anterior Memória Ponteiro Utilização

Leia mais

Caracteres, Vetores e Matrizes

Caracteres, Vetores e Matrizes Caracteres, Vetores e Matrizes STRINGS VETORES DE CARACTERES Para realizar processamento de texto e trabalhar com letras do alfabeto e outros caracteres como, por exemplo, símbolos de pontuação, a linguagem

Leia mais

CURSO BÁSICO DE PROGRAMAÇÃO AULA 15. Revisão Vetores e Matrizes Trabalho

CURSO BÁSICO DE PROGRAMAÇÃO AULA 15. Revisão Vetores e Matrizes Trabalho CURSO BÁSICO DE PROGRAMAÇÃO AULA 15 Revisão Vetores e Matrizes Trabalho Definição: Introdução a Linguagem C Vetores Estrutura que permite armazenar um conjunto de dados do mesmo tipo na mesma variável;

Leia mais

Estrutura de dados 1. Ponteiros

Estrutura de dados 1. Ponteiros Estrutura de dados 1 Ponteiros Ponteiros Um ponteiro é um endereço de memória O valor de um ponteiro indica onde uma variável está armazenada Um ponteiro proporciona um modo de acesso a uma variável sem

Leia mais

Curso Básico de Programação Aula 11. Revisão Aula Anterior Laços de Repetição While; Do-While; For.

Curso Básico de Programação Aula 11. Revisão Aula Anterior Laços de Repetição While; Do-While; For. Curso Básico de Programação Aula 11 Revisão Aula Anterior Laços de Repetição While; Do-While; For. Introdução à Linguagem C Laços de Repetição While Do-While For while () { } do {

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

Instituto Federal de Educação, Ciência e Tecnologia do RN Câmpus Currais Novos. LINGUAGEM C++ VARIÁVEIS COMPOSTAS Arrays Aula I

Instituto Federal de Educação, Ciência e Tecnologia do RN Câmpus Currais Novos. LINGUAGEM C++ VARIÁVEIS COMPOSTAS Arrays Aula I LINGUAGEM C++ VARIÁVEIS COMPOSTAS Arrays Aula I Prof. Bruno E. G. Gomes Uma variável em um algoritmo pode ser vista como uma gaveta. A declaração de uma variável reserva uma gaveta (posição) de um certo

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

Essencialmente, um ponteiro nada mais é do que uma variável que ao invés de conter um valor, contém um endereço de memória.

Essencialmente, um ponteiro nada mais é do que uma variável que ao invés de conter um valor, contém um endereço de memória. Ponteiros e Arrays Ponteiros são fundamentais para a programação bem sucedida em C: Passagem de parâmetros por referência; Alocação dinâmica de memória; Aumentar a eficiência de certar rotinas. Essencialmente,

Leia mais

Programação de Computadores II. Cap. 7 Cadeias de Caracteres

Programação de Computadores II. Cap. 7 Cadeias de Caracteres Programação de Computadores II Cap. 7 Cadeias de Caracteres Livro: Waldemar Celes, Renato Cerqueira, José Lucas Rangel. Introdução a Estruturas de Dados, Editora Campus (2004) Slides adaptados dos originais

Leia mais

CURSO BÁSICO DE PROGRAMAÇÃO AULA 11. Revisão Aula Anterior Vetores Cadeia de Caracteres

CURSO BÁSICO DE PROGRAMAÇÃO AULA 11. Revisão Aula Anterior Vetores Cadeia de Caracteres CURSO BÁSICO DE PROGRAMAÇÃO AULA 11 Revisão Aula Anterior Vetores Cadeia de Caracteres Introdução a Linguagem C Laços de Repetição While Do-While For while() { } do { }while();

Leia mais

CURSO BÁSICO DE PROGRAMAÇÃO AULA 16. Ordenação Revisão para a prova

CURSO BÁSICO DE PROGRAMAÇÃO AULA 16. Ordenação Revisão para a prova CURSO BÁSICO DE PROGRAMAÇÃO AULA 16 Ordenação Revisão para a prova Algoritmos de Ordenação São algoritmos que organizam uma sequência (por exemplo, os elementos de um vetor) em ordem crescente ou decrescente.

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

TÉCNICAS DE LINGUAGEM DE PROGRAMAÇÃO

TÉCNICAS DE LINGUAGEM DE PROGRAMAÇÃO TÉCNICAS DE LINGUAGEM DE PROGRAMAÇÃO Ponteiros Definição Variável: área de memória que armazena dados de um certo tipo. Na memória, toda variável possui um endereço. Um Ponteiro é uma variável especial

Leia mais

Caracteres e Cadeias de Caracteres

Caracteres e Cadeias de Caracteres Caracteres e Cadeias de Caracteres INF1005 Programação I Prof. Hélio Lopes lopes@inf.puc-rio.br sala 408 RDC 1 caracteres e cadeias de caracteres tópicos caracteres cadeias de caracteres (strings) vetor

Leia mais

Capítulo 1: Introdução à Linguagem C. Pontifícia Universidade Católica Departamento de Informática

Capítulo 1: Introdução à Linguagem C. Pontifícia Universidade Católica Departamento de Informática Capítulo 1: Introdução à Linguagem C Pontifícia Universidade Católica Departamento de Informática Programa Programa é um algoritmo escrito em uma linguagem de programação. No nosso caso, a linguagem C.

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

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

Ponteiros de Variáveis

Ponteiros de Variáveis Ponteiros de Variáveis C++ permite o armazenamento e a manipulação de valores de endereços de memória. Para cada tipo existente, há um tipo ponteirocapaz de armazenar endereços de memória em que existem

Leia mais

Índice Valor C A D E I A \0 memória

Índice Valor C A D E I A \0 memória Strings em C A linguagem C não possui um tipo específico de dados Strings. Para fazer uma string, o C utiliza um vetor de caracteres, onde cada posição do vetor representa uma letra. É importante lembrar

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

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

3. Linguagem de Programação C

3. Linguagem de Programação C Introdução à Computação I IBM1006 3. Linguagem de Programação C Prof. Renato Tinós Departamento de Computação e Matemática (FFCLRP/USP) 1 Principais Tópicos 3.5. Vetores 3.5.1. Vetores 3.5.2. Strings 3.5.3.

Leia mais

Computação Eletrônica. Strings. Prof: Luciano Barbosa. CIn.ufpe.br

Computação Eletrônica. Strings. Prof: Luciano Barbosa. CIn.ufpe.br Computação Eletrônica Strings Prof: Luciano Barbosa Recapitulando: Vetores Representar uma coleção de variáveis de um mesmo tipo em uma dimensão Ex: float notas[5]; ou float notas[5] = {2.5,3.2,1.9,4.1,2.0};

Leia mais

Aula 26: Estruturas heterogêneas

Aula 26: Estruturas heterogêneas Aula 26: Estruturas heterogêneas Introdução a Programação Túlio Toffolo & Puca Huachi http://www.toffolo.com.br BCC201 2018/2 Departamento de Computação UFOP Aulas anteriores Memória Ponteiro Utilização

Leia mais

Aula 4: Introdução à Linguagem C++

Aula 4: Introdução à Linguagem C++ CI208 - Programação de Computadores Aula 4: Introdução à Linguagem C++ Prof. MSc. Diego Roberto Antunes diegor@inf.ufpr.br www.inf.ufpr.br/diegor Universidade Federal do Paraná Setor de Ciências Exatas

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

Programação Orientada a Objetos para Redes de Computadores. Arrays. Arrays

Programação Orientada a Objetos para Redes de Computadores. Arrays. Arrays Programação Orientada a Objetos para Redes de Computadores Elias Mitre http://www.gta.ufrj.br/~miguel PARTE 2 Programação em C++ - Arrays e Ponteiros Arrays Arrays Estruturas de dados que contêm itens

Leia mais

Aula 9 Oficina de Programação Strings. Profa. Elaine Faria UFU

Aula 9 Oficina de Programação Strings. Profa. Elaine Faria UFU Aula 9 Oficina de Programação Strings Profa. Elaine Faria UFU - 2017 String Cadeia de caracteres (ou String) É uma seqüência de letras e símbolos, na qual os símbolos podem ser espaços em branco, dígitos

Leia mais

Módulo 7 Cadeias de Caracteres

Módulo 7 Cadeias de Caracteres Estruturas de Dados Módulo 7 Cadeias de Caracteres 9/8/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

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 Orientada a Objetos para Redes de Computadores

Programação Orientada a Objetos para Redes de Computadores Programação Orientada a Objetos para Redes de Computadores Prof. Miguel Elias Mitre Campista http://www.gta.ufrj.br/~miguel PARTE 2 Programação em C++ - Arrays e Ponteiros Arrays Estruturas de dados que

Leia mais

Computação 2. Aula 3. Diego Addan Vetores de caracteres (strings)

Computação 2. Aula 3. Diego Addan Vetores de caracteres (strings) Computação 2 Aula 3 Vetores de caracteres (strings) Diego Addan diegoaddan@gmail.com Vetor de caracteres (Strings) Uma cadeia de caracteres, mais conhecida como string, é uma seqüência de caracteres (letras

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

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

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 2018/2 Departamento de Computação UFOP Aulas anteriores Memória Ponteiro Utilização de ponteiros

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

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

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

Tratamento de Caracteres

Tratamento de Caracteres Tratamento de Caracteres Notas de Aula Prof. Francisco Rapchan www.geocities.com/chicorapchan A tabela ASCII Se os computadores manipulam apenas números, como eles podem armazenar os caracteres de um nome

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

C++ Orientado a Objetos

C++ Orientado a Objetos flavio@facom.ufu.br flaviosilva@computer.org a@comp org 1 Declaração As variáveis em C++ podem ser de duas diferentes naturezas Uma variável pode conter um VALOR ou um ENDEREÇO VALOR A declaração de uma

Leia mais

Classes e Objetos. Sintaxe de classe em Java

Classes e Objetos. Sintaxe de classe em Java Classes e Objetos Classes e Objetos A Programação Orientada a Objetos (POO) é uma técnica de programação que se baseia na construção de classes e utilização de objetos. Os objetos são formados por dados

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

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

Array em Java. Figura 1 - Exemplo de um array de inteiros

Array em Java. Figura 1 - Exemplo de um array de inteiros Array em Java 1. Objetivos Nesta lição, abordaremos Array em Java. Primeiro, definiremos o que é array e, então, discutiremos como declará-los e usá-los. Ao final desta lição, o estudante será capaz de:

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

INF 1620 P2-14/10/05 Questão 1 Nome:

INF 1620 P2-14/10/05 Questão 1 Nome: INF 1620 P2-14/10/05 Questão 1 Considere um cadastro de produtos de um estoque, com as seguintes informações para cada produto: Código de identificação do produto: representado por um valor inteiro Nome

Leia mais

Programação Estruturada Prof. Rodrigo Hausen Organização e Gerenciamento de Memória

Programação Estruturada Prof. Rodrigo Hausen  Organização e Gerenciamento de Memória Programação Estruturada Prof. Rodrigo Hausen http://progest.compscinet.org Organização e Gerenciamento de Memória 1 AULA PASSADA - vetores ou arrays Declaração de um vetor (array) em C: tipo nome[tamanho];

Leia mais

Algoritmos e Programação de Computadores Profs: Ronaldo Castro de Oliveira Anilton Joaquim da Silva

Algoritmos e Programação de Computadores Profs: Ronaldo Castro de Oliveira Anilton Joaquim da Silva Algoritmos e Programação de Computadores Profs: Ronaldo Castro de Oliveira ronaldo.co@ufu.br Anilton Joaquim da Silva anilton@ufu.br Matrizes Uma matriz é uma variável capaz de armazenar vários dados de

Leia mais

Algoritmos e Programação

Algoritmos e Programação Algoritmos e Programação Aula 3 Introdução a Linguagem C Profa. Marina Gomes marinagomes@unipampa.edu.br 1 Aula de Hoje - Criar programas simples em C utilizando a estrutura básica; - Declarar variáveis;

Leia mais

Métodos Computacionais. Tipos Estruturados

Métodos Computacionais. Tipos Estruturados Métodos Computacionais Tipos Estruturados Tipos Estruturados C oferece tipos primitivos que servem para representar valores simples Reais (float, double), inteiros (int), caracter (char) C oferece também

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

Programação científica C++

Programação científica C++ Programação científica C++ NIELSEN CASTELO DAMASCENO Slide 8 Matrizes como argumento de funções O nome de uma matriz (sem os colchetes) representa o endereço onde a matriz está armazenada. Ao passar o

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 à Programação C

Introdução à Programação C Introdução à Programação C Fabio Mascarenhas - 2014.2 http://www.dcc.ufrj.br/~fabiom/introc Vetores Para vários problemas precisamos de uma maneira de representar uma sequência de valores com um número

Leia mais

Linguagem C: Tipos básicos de dados escalares e cadeia de caracteres. Prof. Leonardo Barreto Campos 1

Linguagem C: Tipos básicos de dados escalares e cadeia de caracteres. Prof. Leonardo Barreto Campos 1 Linguagem C: Tipos básicos de dados escalares e cadeia de caracteres Prof. Leonardo Barreto Campos 1 Sumário Dados Escalares; Strings: Strings Constantes; Strings Variáveis; A função gets(); A função strcpy();

Leia mais

Introdução a classes e objetos. Prof. Marcelo Roberto Zorzan Prof a. Rachel Reis

Introdução a classes e objetos. Prof. Marcelo Roberto Zorzan Prof a. Rachel Reis Introdução a classes e objetos Prof. Marcelo Roberto Zorzan Prof a. Rachel Reis Estruturas de Seleção if... else Operador condicional (? : ) switch Aula de Hoje Estruturas de Repetição: while/do... while/for

Leia mais

Aula 8 Oficina de Programação Vetores. Profa. Elaine Faria UFU

Aula 8 Oficina de Programação Vetores. Profa. Elaine Faria UFU Aula 8 Oficina de Programação Vetores Profa. Elaine Faria UFU - 2017 Variáveis Compostas Homogêneas O que uma variável composta homogênea? - Conjunto de variáveis do mesmo tipo - É chamada de forma geral

Leia mais

Vetores II. Strings Leitura e exibição Biblioteca string.h Operações com Strings. Matrizes Definição de Acesso Operações com Matrizes

Vetores II. Strings Leitura e exibição Biblioteca string.h Operações com Strings. Matrizes Definição de Acesso Operações com Matrizes Strings Leitura e exibição Biblioteca string.h Operações com Strings Matrizes Definição de Acesso Operações com Matrizes Utilidade da String Facilidade de manipulação de um grande conjunto de caracteres

Leia mais

3. Linguagem de Programação C

3. Linguagem de Programação C Introdução à Computação I IBM1006 3. Linguagem de Programação C Prof. Renato Tinós Departamento de Computação e Matemática (FFCLRP/USP) 1 Principais Tópicos 3.6. Ponteiros 3.6.1. Introdução 3.6.2. Uso

Leia mais

Introdução aos caracteres e processamento de cadeias.! caracteres são blocos fundamentais de programas em

Introdução aos caracteres e processamento de cadeias.! caracteres são blocos fundamentais de programas em Introdução aos caracteres e processamento de cadeias.! caracteres são blocos fundamentais de programas em C++.! Programa: composto de seqüência de caracteres que quando agrupadas tem um significado, ou

Leia mais

Programação I Matrizes e Strings. Prof. Carlos Alberto

Programação I Matrizes e Strings. Prof. Carlos Alberto Programação I Matrizes e Strings Prof. Carlos Alberto carlos.batista@facape.br carlos36_batista@yahoo.com.br Matrizes Matriz é uma coleção de variáveis do mesmo tipo que é referenciada por um nome comum;

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

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

Aula 1 Apresentação do Curso

Aula 1 Apresentação do Curso Departamento de Sistemas de Computação Universidade de São Paulo SSC 502 Laboratório de Introdução a Ciência de Computação I Aula 1 Apresentação do Curso Responsável Prof. Seiji Isotani (sisotani@icmc.usp.br)

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

O vetor é provavelmente um dos mais simples e importantes tipos agregados. Através do seu uso, podemos

O vetor é provavelmente um dos mais simples e importantes tipos agregados. Através do seu uso, podemos Cláudio C. Rodrigues Faculdade da Computação -UFU LINGUAGEM C 04: VETORES, STRINGS E MATRIZES Faculdade da Computação - UFU 1 Introdução & Objetivo O vetor é provavelmente um dos mais simples e importantes

Leia mais

ALOCAÇÃO DINÂMICA DE MEMÓRIA

ALOCAÇÃO DINÂMICA DE MEMÓRIA INE5408 Estruturas de Dados Semestre 2008/1 Prof. Leandro J. Komosinski ALOCAÇÃO DINÂMICA DE Memória de Computador 1 byte = 8 bits (ex.: 00100110) 1 KB = 1024 bytes 1 MB = 1024 KB 1 GB = 1024 MB Meu computador

Leia mais

LISTA DE EXERCÍCIOS 2

LISTA DE EXERCÍCIOS 2 UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO DE CIÊNCIA DA COMPUTAÇÃO PROGRAMAÇÃO DE COMPUTADORES 1. TIPOS COMPOSTOS DE DADOS LISTA DE EXERCÍCIOS 2 1. Considerando as declarações abaixo, responda dizendo

Leia mais

Programação Estruturada Prof. Rodrigo Hausen Agregados de Dados Heterogêneos (structs)

Programação Estruturada Prof. Rodrigo Hausen   Agregados de Dados Heterogêneos (structs) Programação Estruturada Prof. Rodrigo Hausen http://progest.compscinet.org Agregados de Dados Heterogêneos (structs) 1 AGREGADO HOMOGÊNEO Um agregado homogêneo de dados é um conjunto de dados que são necessariamente

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

Mais sobre Ponteiros em C

Mais sobre Ponteiros em C Universidade de São Paulo São Carlos Instituto de Ciências Matemáticas e de Computação Mais sobre Ponteiros em C Material preparado pela profa Silvana Maria Affonso de Lara 2º semestre de 2010 ROTEIRO

Leia mais

Vetores. Vetores. Vetores. Vetores. Vetores. Algoritmos e Lógica de Programação. Vetores

Vetores. Vetores. Vetores. Vetores. Vetores. Algoritmos e Lógica de Programação. Vetores Algoritmos e Lógica de Programação Linguagem C Conceitos Básicos (Matriz Unidimensional) Conjunto de elementos de um mesmo tipo Elementos são referenciados por um único nome e individualizados pela posição

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

x=0; y=x+1; x=&y+2; x 1000 y 1004

x=0; y=x+1; x=&y+2; x 1000 y 1004 Variáveis Conceitos São alocadas em memória; Elas ocupam uma quantidade de btes que depende do tipo da variável; Esses btes são alocados de forma contígua na memória; O valor de uma variável corresponde

Leia mais

prim = A ; prim = &A[0];

prim = A ; prim = &A[0]; 57 12 - MAIS SOBRE APONTADOR 12.1 - Ponteiros e arrays Em C, ponteiros e matrizes são tratados de maneira semelhante. 12.1.1 - Nome O nome é um ponteiro, ou seja, aponta (contém o endereço) para o primeiro

Leia mais

Caracteres. Caracteres são representados através de códigos numéricos. Tabela de códigos: Define correspondência entre caracteres e códigos numéricos

Caracteres. Caracteres são representados através de códigos numéricos. Tabela de códigos: Define correspondência entre caracteres e códigos numéricos Caracteres Caracteres são representados através de códigos numéricos. Tabela de códigos: Define correspondência entre caracteres e códigos numéricos Exemplo: Tabela ASCII Alguns alfabetos precisam de maior

Leia mais

ORIENTAÇÃO A OBJETOS SISTEMAS DE INFORMAÇÃO DR. EDNALDO B. PIZZOLATO

ORIENTAÇÃO A OBJETOS SISTEMAS DE INFORMAÇÃO DR. EDNALDO B. PIZZOLATO ORIENTAÇÃO A OBJETOS SISTEMAS DE INFORMAÇÃO DR. EDNALDO B. PIZZOLATO SOBRECARGA DE OPERADORES (C++) A sobrecarga de operadores ocorre quando desejamos utilizar operadores jáj conhecidos (+,-,*,/,=,+=...)

Leia mais

ESTRUTURA DE DADOS VARIÁVEIS E PONTEIROS

ESTRUTURA DE DADOS VARIÁVEIS E PONTEIROS ESTRUTURA DE DADOS VARIÁVEIS E PONTEIROS Prof. Dr. Daniel Caetano 2014-2 Objetivos Compreender a organização dos dados na memória Compreender o que são ponteiros Capacitar para implementar programas com

Leia mais

Vetores. IFSC/Florianópolis - Programação Orientada a Objetos + POO - prof. Herval Daminelli

Vetores. IFSC/Florianópolis - Programação Orientada a Objetos + POO - prof. Herval Daminelli Vetores De modo geral, em linguagem de programação, vetores ou arrays são estruturas de dados que permitem que uma mesma variável possa armazenar mais de um valor; Em Java, vetores são coleções de dados,

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

Laboratório de programação II

Laboratório de programação II Laboratório de programação II Herança e Polimorfismo Edson Moreno edson.moreno@pucrs.br http://www.inf.pucrs.br/~emoreno Herança Mecanismo da Orientação a Objeto que permite criar novas classes aproveitando

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

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

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

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

Aula 23: Ponteiros Introdução a Programação Túlio Toffolo & Puca Huachi

Aula 23: Ponteiros Introdução a Programação Túlio Toffolo & Puca Huachi Aula 23: Ponteiros Introdução a Programação Túlio Toffolo & Puca Huachi http://www.toffolo.com.br BCC201 2018/2 Baseado nos slides do Prof. Guillermo Cámara-Chávez Aulas anteriores Vetores Matrizes Cadeias

Leia mais

Introdução a Programação. Strings (Vetor de Caracteres)

Introdução a Programação. Strings (Vetor de Caracteres) Introdução a Programação Strings (Vetor de Caracteres) Tópicos da Aula Hoje aprenderemos a manipular vetores de caracteres (Strings) Caracteres em C Entrada/Saída de caracteres Funções que manipulam caracteres

Leia mais

Linguagens de Programação

Linguagens de Programação Linguagens de Programação Prof. Miguel Elias Mitre Campista http://www.gta.ufrj.br/~miguel Parte IV Introdução à Programação em C++ (Continuação) Relembrando da Última Aula... Arrays Mais exemplos de programação

Leia mais

Programação científica C++

Programação científica C++ Programação científica C++ NIELSEN CASTELO DAMASCENO Slide 2 Expressões Combinação de dados e operadores que resulta em um valor. expressão x = 2 * y + 4; variável operador constante Memória do computador

Leia mais