Prof. Adriano Teixeira de Souza
 A memória de qualquer computador é uma seqüência de bytes. Cada byte pode armazenar um número inteiro entre 0...
Conteúdo Endereço 0000 0001 0x0022FF16 0001 1001 0x0022FF17 01...
 Cada objeto (variáveis, strings, vetores, etc.) que reside na memória do computador ocupa um certo número de byt...
Variável Valor Endereço 0001 1001 0x0022F...
int x = 100; Ao declararmos uma variável x como acima, temos associados a ela os seguintes elementos: ◦ Um nome (...
 Um ponteiro (apontador ou pointer) é um tipo especial de variável cujo valor é um endereço. Um ponteiro pode ...
*var A expressão acima representa o conteúdo do endereço de memória guardado na variável var Ou seja, var não ...
int x;int *ap; // apontador para inteirosap = &x; // ap aponta para x 0000 0000 (00) 0x0022FF1...
 Há vários tipos de ponteiros: ◦ ponteiros para caracteres ◦ ponteiros para inteiros ◦ ponteiros...
int *ap_int; // apontador para intchar *ap_char; // apontador para charfloat...
 Um conjunto limitado de operação aritméticas pode ser executado. Os ponteiros são endereços de memória. Assim...
int *ap;00 00 0022 22 22FF FF ...
 Sempre que somar ou subtrair ponteiros, deve-se trabalhar com o tamanho do tipo de dado utilizado. Para isso ...
 O while deve ser usado sempre que: ◦ Não soubermos exatamente quantas vezes o laço deve ser repetido ◦ O te...
 Permite que um certo trecho de programa seja executado ATÉ QUE uma certa condição deixe de ser verdadeira: do...
 Funcionamento: 1.Executar os comando dentro do bloco do-while. 2.Testar a condição. 3.Se a condição for falsa...
 O comando do-while deve ser usado sempre que: ◦ Não soubermos exatamente quantas vezes o laço deve ser repe...
 Ler um número e verificar se este é ou não um número primo. Dada uma dívida de 10 mil reais que cresce a juro...
 Permite que um certo trecho de programa seja executado um número determinado de vezes.for (comandos_inic; condiç...
 Funcionamento: 1.Executar os comandos de inicialização. 2.Testar a condição. 3.Se a condição for falsa então ...
 Observações: ◦ Os comandos de inicialização são executados apenas uma vez. ◦ O contador é incrementado/decr...
 O comando for deve ser usado sempre que: ◦ Soubermos exatamente quantas vezes o laço deve ser repetido. ◦ O...
 Comandos for aninhados ◦ Um comando for pode ser utilizado dentro de outro comando for. ◦ Cuidados devem se...
 Desenvolver 3 programas, cada programa deverá imprimir uma das figuras abaixo********** ***** ...
of 25

Estrutura de Dados - Ponteiros

Published on: Mar 4, 2016
Published in: Technology      Entertainment & Humor      
Source: www.slideshare.net


Transcripts - Estrutura de Dados - Ponteiros

  • 1. Prof. Adriano Teixeira de Souza
  • 2.  A memória de qualquer computador é uma seqüência de bytes. Cada byte pode armazenar um número inteiro entre 0 e 255. Cada byte na memória é identificado por um endereço numérico, independente do seu conteúdo. Prof. Adriano Teixeira de Souza
  • 3. Conteúdo Endereço 0000 0001 0x0022FF16 0001 1001 0x0022FF17 0101 1010 0x0022FF18 1111 0101 0x0022FF19 1011 0011 0x0022FF1A Prof. Adriano Teixeira de Souza
  • 4.  Cada objeto (variáveis, strings, vetores, etc.) que reside na memória do computador ocupa um certo número de bytes: ◦ Inteiros: 4 bytes consecutivos ◦ Caracteres: 1 byte ◦ Ponto-flutuante: 4 bytes consecutivos Cada objeto tem um endereço. Prof. Adriano Teixeira de Souza
  • 5. Variável Valor Endereço 0001 1001 0x0022FF24 char string1[4] 0101 1010 1111 0101 1011 0011 0000 0001 0x0022FF14 0001 1001 0101 1010 1111 0101 1011 0011 0000 0001 0001 1001 float real[4] 0101 1010 1111 0101 1011 0011 0000 0001 0001 1001 0101 1010 1111 0101 1011 0011 0000 0001 0001 1001 0x0022FF10char string[4] 0101 1010 1111 0101 1011 0011 Prof. Adriano Teixeira de Souza
  • 6. int x = 100; Ao declararmos uma variável x como acima, temos associados a ela os seguintes elementos: ◦ Um nome (x) ◦ Um endereço de memória ou referência (0xbfd267c4) ◦ Um valor (100) Para acessarmos o endereço de uma variável, utilizamos o operador & Prof. Adriano Teixeira de Souza
  • 7.  Um ponteiro (apontador ou pointer) é um tipo especial de variável cujo valor é um endereço. Um ponteiro pode ter o valor especial NULL, quando não contém nenhum endereço. NULL é uma constante definida na biblioteca stdlib.h. Prof. Adriano Teixeira de Souza
  • 8. *var A expressão acima representa o conteúdo do endereço de memória guardado na variável var Ou seja, var não guarda um valor, mas sim um endereço de memória. Prof. Adriano Teixeira de Souza
  • 9. int x;int *ap; // apontador para inteirosap = &x; // ap aponta para x 0000 0000 (00) 0x0022FF14 ap 0010 0010 (22) 1111 1111 (FF) 0001 0000 (10) 0000 0001 0x0022FF10 x 0001 1001 0101 1010 1111 0101 Prof. Adriano Teixeira de Souza
  • 10.  Há vários tipos de ponteiros: ◦ ponteiros para caracteres ◦ ponteiros para inteiros ◦ ponteiros para ponteiros para inteiros ◦ ponteiros para vetores ◦ ponteiros para estruturas O compilador C faz questão de saber de que tipo de ponteiro você está definindo. Prof. Adriano Teixeira de Souza
  • 11. int *ap_int; // apontador para intchar *ap_char; // apontador para charfloat *ap_float; // apontador para floatdouble *ap_double; // apontador para double// apontador para apontadorint **ap_ap_int; Prof. Adriano Teixeira de Souza
  • 12.  Um conjunto limitado de operação aritméticas pode ser executado. Os ponteiros são endereços de memória. Assim, ao somar 1 a um ponteiro, você estará indo para o próximo endereço de memória do tipo de dado especificado. Prof. Adriano Teixeira de Souza
  • 13. int *ap;00 00 0022 22 22FF FF FF18 14 10ap ap+1 ap+2 Prof. Adriano Teixeira de Souza
  • 14.  Sempre que somar ou subtrair ponteiros, deve-se trabalhar com o tamanho do tipo de dado utilizado. Para isso você pode usar o operador sizeof(). Prof. Adriano Teixeira de Souza
  • 15.  O while deve ser usado sempre que: ◦ Não soubermos exatamente quantas vezes o laço deve ser repetido ◦ O teste deva ser feito antes de iniciar a execução de um bloco de comandos ◦ Houver casos em que o laço não deva ser repetido nenhuma vez antes do teste da condição Atenção: ◦ As variáveis usadas no teste devem ser inicializadas antes do teste. Prof. Adriano Teixeira de Souza
  • 16.  Permite que um certo trecho de programa seja executado ATÉ QUE uma certa condição deixe de ser verdadeira: do { <comandos_a_repetir> } while (<condição>); <comandos_após_laço_do-while> Prof. Adriano Teixeira de Souza
  • 17.  Funcionamento: 1.Executar os comando dentro do bloco do-while. 2.Testar a condição. 3.Se a condição for falsa, então sair do laço. 4.Se a condição for verdadeira, então retornar para o passo 1. Prof. Adriano Teixeira de Souza
  • 18.  O comando do-while deve ser usado sempre que: ◦ Não soubermos exatamente quantas vezes o laço deve ser repetido ◦ O teste deva ser feito depois da execução de um bloco de comandos ◦ O bloco de comandos deve se executado pelo menos uma vez Prof. Adriano Teixeira de Souza
  • 19.  Ler um número e verificar se este é ou não um número primo. Dada uma dívida de 10 mil reais que cresce a juros de 2,5% ao mês e uma aplicação de 1.500 reais com rendimento de 4% ao mês, escrever um algoritmo que determine o numero de meses necessários para pagar a dívida. Prof. Adriano Teixeira de Souza
  • 20.  Permite que um certo trecho de programa seja executado um número determinado de vezes.for (comandos_inic; condição_teste; incre/decremento){ <comandos_a_repetir>}<comandos_após_laço_for>; Prof. Adriano Teixeira de Souza
  • 21.  Funcionamento: 1.Executar os comandos de inicialização. 2.Testar a condição. 3.Se a condição for falsa então sair do laço for. 4.Se a condição for verdadeira então executar os comandos que estão subordinados ao for. 5.Executar os comandos de incremento/decremento. 6.Voltar ao passo 2. Prof. Adriano Teixeira de Souza
  • 22.  Observações: ◦ Os comandos de inicialização são executados apenas uma vez. ◦ O contador é incrementado/decrementado sempre ao final da execução do bloco. ◦ O teste é feito sempre antes do início da execução do bloco de comandos. Prof. Adriano Teixeira de Souza
  • 23.  O comando for deve ser usado sempre que: ◦ Soubermos exatamente quantas vezes o laço deve ser repetido. ◦ O teste deva ser feito antes da execução de um bloco de comandos. ◦ Houver casos em que o laço não deva ser repetido nenhuma vez. Prof. Adriano Teixeira de Souza
  • 24.  Comandos for aninhados ◦ Um comando for pode ser utilizado dentro de outro comando for. ◦ Cuidados devem ser tomados para não aumentar o tempo de execução do algoritmo. Prof. Adriano Teixeira de Souza
  • 25.  Desenvolver 3 programas, cada programa deverá imprimir uma das figuras abaixo********** ***** ******************* **** **** ************ *** *** ********** ** ** ******** * * ****** * * ***** ** ** ***** *** *** ***** **** **** ***** ***** ********** Prof. Adriano Teixeira de Souza

Related Documents