SlideShare ist ein Scribd-Unternehmen logo
1 von 25
Downloaden Sie, um offline zu lesen
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 e 255.

   Cada byte na memória é identificado por um
    endereço numérico, independente do seu
    conteúdo.



                        Prof. Adriano Teixeira de Souza
Conteúdo                      Endereço



    0000 0001                0x0022FF16



    0001 1001                0x0022FF17



    0101 1010                0x0022FF18



    1111 0101                0x0022FF19



    1011 0011                0x0022FF1A


                Prof. Adriano Teixeira de Souza
   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
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          0x0022FF10
char string[4]       0101 1010
                     1111 0101
                     1011 0011


                     Prof. Adriano Teixeira de Souza
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
   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
*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
int x;
int *ap;    // apontador para inteiros
ap = &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
   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
int          *ap_int;      //   apontador      para    int
char         *ap_char;     //   apontador      para    char
float        *ap_float;    //   apontador      para    float
double       *ap_double;   //   apontador      para    double

// apontador para apontador
int          **ap_ap_int;




                              Prof. Adriano Teixeira de Souza
   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
int    *ap;




00         00                                 00
22         22                                 22
FF         FF                                 FF
18         14                                 10


ap         ap+1                               ap+2



            Prof. Adriano Teixeira de Souza
   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
   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
   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
   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
   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
   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
   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
   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
   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
   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
   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
   Desenvolver 3 programas, cada programa
    deverá imprimir uma das figuras abaixo
**********           *****              **********
*********            ****               **** ****
********             ***                ***    ***
*******              **                 **      **
******               *                  *        *
*****                *                  *        *
****                 **                 **      **
***                  ***                ***    ***
**                   ****               **** ****
*                    *****              **********


                       Prof. Adriano Teixeira de Souza

Weitere ähnliche Inhalte

Was ist angesagt?

Estrutura de Dados - Aula de revisão de C na prática
Estrutura de Dados - Aula de revisão de C na práticaEstrutura de Dados - Aula de revisão de C na prática
Estrutura de Dados - Aula de revisão de C na práticaLeinylson Fontinele
 
Estrutura de dados - Introdução a linguagem C
Estrutura de dados - Introdução a linguagem CEstrutura de dados - Introdução a linguagem C
Estrutura de dados - Introdução a linguagem CAdriano Teixeira de Souza
 
Introdução a Linguagem de Programação C
Introdução a Linguagem de Programação CIntrodução a Linguagem de Programação C
Introdução a Linguagem de Programação CGercélia Ramos
 
Estrutura de Dados - Conceitos fundamentais
Estrutura de Dados - Conceitos fundamentaisEstrutura de Dados - Conceitos fundamentais
Estrutura de Dados - Conceitos fundamentaisFabrício Lopes Sanchez
 
Estrutura de Dados - Aula 12 - Pesquisa de Dados (Sequencial e Binária)
Estrutura de Dados - Aula 12 - Pesquisa de Dados (Sequencial e Binária)Estrutura de Dados - Aula 12 - Pesquisa de Dados (Sequencial e Binária)
Estrutura de Dados - Aula 12 - Pesquisa de Dados (Sequencial e Binária)Leinylson Fontinele
 
Estrutura de Dados e Algoritmos com Java #02-12: Vetores e Arrays
Estrutura de Dados e Algoritmos com Java #02-12: Vetores e ArraysEstrutura de Dados e Algoritmos com Java #02-12: Vetores e Arrays
Estrutura de Dados e Algoritmos com Java #02-12: Vetores e ArraysLoiane Groner
 
Estrutura de Dados Apoio (Tabela Hash)
Estrutura de Dados Apoio (Tabela Hash)Estrutura de Dados Apoio (Tabela Hash)
Estrutura de Dados Apoio (Tabela Hash)Leinylson Fontinele
 
Estrutura de Dados - Aula 15 - Pesquisa de Dados (Árvore de Pesquisa)
Estrutura de Dados - Aula 15 - Pesquisa de Dados (Árvore de Pesquisa)Estrutura de Dados - Aula 15 - Pesquisa de Dados (Árvore de Pesquisa)
Estrutura de Dados - Aula 15 - Pesquisa de Dados (Árvore de Pesquisa)Leinylson Fontinele
 
Algoritmos e Programação: Vetores
Algoritmos e Programação: VetoresAlgoritmos e Programação: Vetores
Algoritmos e Programação: VetoresAlex Camargo
 
Aula1 - Apresentação de Banco de Dados
Aula1 - Apresentação de Banco de DadosAula1 - Apresentação de Banco de Dados
Aula1 - Apresentação de Banco de DadosRafael Albani
 
Banco de dados exercícios resolvidos
Banco de dados exercícios resolvidosBanco de dados exercícios resolvidos
Banco de dados exercícios resolvidosGleydson Sousa
 

Was ist angesagt? (20)

Estrutura de Dados - Aula de revisão de C na prática
Estrutura de Dados - Aula de revisão de C na práticaEstrutura de Dados - Aula de revisão de C na prática
Estrutura de Dados - Aula de revisão de C na prática
 
Estrutura de dados - Introdução a linguagem C
Estrutura de dados - Introdução a linguagem CEstrutura de dados - Introdução a linguagem C
Estrutura de dados - Introdução a linguagem C
 
Linguagem C - Ponteiros
Linguagem C - PonteirosLinguagem C - Ponteiros
Linguagem C - Ponteiros
 
Árvore Binária
Árvore BináriaÁrvore Binária
Árvore Binária
 
Introdução a Linguagem de Programação C
Introdução a Linguagem de Programação CIntrodução a Linguagem de Programação C
Introdução a Linguagem de Programação C
 
Estrutura de Dados - Conceitos fundamentais
Estrutura de Dados - Conceitos fundamentaisEstrutura de Dados - Conceitos fundamentais
Estrutura de Dados - Conceitos fundamentais
 
Estrutura de dados - Pilhas
Estrutura de dados - PilhasEstrutura de dados - Pilhas
Estrutura de dados - Pilhas
 
Tabela Hash
Tabela HashTabela Hash
Tabela Hash
 
Structs em C
Structs em CStructs em C
Structs em C
 
Estrutura de Dados - Registros
Estrutura de Dados - RegistrosEstrutura de Dados - Registros
Estrutura de Dados - Registros
 
Algoritmo - tipos de dados
Algoritmo - tipos de dadosAlgoritmo - tipos de dados
Algoritmo - tipos de dados
 
Algoritmos - Matrizes
Algoritmos - MatrizesAlgoritmos - Matrizes
Algoritmos - Matrizes
 
Estrutura de Dados - Aula 12 - Pesquisa de Dados (Sequencial e Binária)
Estrutura de Dados - Aula 12 - Pesquisa de Dados (Sequencial e Binária)Estrutura de Dados - Aula 12 - Pesquisa de Dados (Sequencial e Binária)
Estrutura de Dados - Aula 12 - Pesquisa de Dados (Sequencial e Binária)
 
Estrutura de dados - Filas
Estrutura de dados - FilasEstrutura de dados - Filas
Estrutura de dados - Filas
 
Estrutura de Dados e Algoritmos com Java #02-12: Vetores e Arrays
Estrutura de Dados e Algoritmos com Java #02-12: Vetores e ArraysEstrutura de Dados e Algoritmos com Java #02-12: Vetores e Arrays
Estrutura de Dados e Algoritmos com Java #02-12: Vetores e Arrays
 
Estrutura de Dados Apoio (Tabela Hash)
Estrutura de Dados Apoio (Tabela Hash)Estrutura de Dados Apoio (Tabela Hash)
Estrutura de Dados Apoio (Tabela Hash)
 
Estrutura de Dados - Aula 15 - Pesquisa de Dados (Árvore de Pesquisa)
Estrutura de Dados - Aula 15 - Pesquisa de Dados (Árvore de Pesquisa)Estrutura de Dados - Aula 15 - Pesquisa de Dados (Árvore de Pesquisa)
Estrutura de Dados - Aula 15 - Pesquisa de Dados (Árvore de Pesquisa)
 
Algoritmos e Programação: Vetores
Algoritmos e Programação: VetoresAlgoritmos e Programação: Vetores
Algoritmos e Programação: Vetores
 
Aula1 - Apresentação de Banco de Dados
Aula1 - Apresentação de Banco de DadosAula1 - Apresentação de Banco de Dados
Aula1 - Apresentação de Banco de Dados
 
Banco de dados exercícios resolvidos
Banco de dados exercícios resolvidosBanco de dados exercícios resolvidos
Banco de dados exercícios resolvidos
 

Andere mochten auch

Estrutura de dados em Java - Ponteiros e Alocação de Memória
Estrutura de dados em Java - Ponteiros e Alocação de Memória Estrutura de dados em Java - Ponteiros e Alocação de Memória
Estrutura de dados em Java - Ponteiros e Alocação de Memória Adriano Teixeira de Souza
 
Estrutura de dados - Variáveis homogêneas e Heterogêneas
Estrutura de dados - Variáveis homogêneas e HeterogêneasEstrutura de dados - Variáveis homogêneas e Heterogêneas
Estrutura de dados - Variáveis homogêneas e HeterogêneasAdriano Teixeira de Souza
 
Estrutura de dados - Aula de Revisão (Linguagem C/C++, Função, Vetor, Matriz,...
Estrutura de dados - Aula de Revisão (Linguagem C/C++, Função, Vetor, Matriz,...Estrutura de dados - Aula de Revisão (Linguagem C/C++, Função, Vetor, Matriz,...
Estrutura de dados - Aula de Revisão (Linguagem C/C++, Função, Vetor, Matriz,...Leinylson Fontinele
 
Conceitos de ponteiros struct e buffers
Conceitos de ponteiros struct e buffersConceitos de ponteiros struct e buffers
Conceitos de ponteiros struct e buffersRodrigo Almeida
 
Estrutura de Dados - Alocação dinâmica de memória
Estrutura de Dados - Alocação dinâmica de memóriaEstrutura de Dados - Alocação dinâmica de memória
Estrutura de Dados - Alocação dinâmica de memóriaAdriano Teixeira de Souza
 
Algoritmos e Estruturas de Dados, edição de 2013/2014
Algoritmos e Estruturas de Dados, edição de 2013/2014Algoritmos e Estruturas de Dados, edição de 2013/2014
Algoritmos e Estruturas de Dados, edição de 2013/2014Pedro Guerreiro
 
Estrutura de Dados Aula 04 - Listas Estáticas
Estrutura de Dados Aula 04 - Listas EstáticasEstrutura de Dados Aula 04 - Listas Estáticas
Estrutura de Dados Aula 04 - Listas EstáticasLeinylson Fontinele
 
Material Modelagem - Prof. Marcos Alexandruk
Material Modelagem - Prof. Marcos AlexandrukMaterial Modelagem - Prof. Marcos Alexandruk
Material Modelagem - Prof. Marcos AlexandrukHebert Alquimim
 
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)Adriano Teixeira de Souza
 
Estrutura de Dados Aula 07 - Alocação dinâmica de memória
Estrutura de Dados Aula 07 - Alocação dinâmica de memóriaEstrutura de Dados Aula 07 - Alocação dinâmica de memória
Estrutura de Dados Aula 07 - Alocação dinâmica de memóriaLeinylson Fontinele
 
Estrutura de Dados em Java (Revisão de Algoritimos em Java)
Estrutura de Dados em Java (Revisão de Algoritimos em Java)Estrutura de Dados em Java (Revisão de Algoritimos em Java)
Estrutura de Dados em Java (Revisão de Algoritimos em Java)Adriano Teixeira de Souza
 
Estrutura de dados em Java - Filas com lista encadeada
Estrutura de dados em Java - Filas com lista encadeada Estrutura de dados em Java - Filas com lista encadeada
Estrutura de dados em Java - Filas com lista encadeada Adriano Teixeira de Souza
 
Estrutura de Dados em Java (Variáveis Compostas - Vetores e Matrizes)
Estrutura de Dados em Java (Variáveis Compostas - Vetores e Matrizes)Estrutura de Dados em Java (Variáveis Compostas - Vetores e Matrizes)
Estrutura de Dados em Java (Variáveis Compostas - Vetores e Matrizes)Adriano Teixeira de Souza
 
Estrutura de Dados em Java (Funções e Procedimentos)
Estrutura de Dados em Java (Funções e Procedimentos)Estrutura de Dados em Java (Funções e Procedimentos)
Estrutura de Dados em Java (Funções e Procedimentos)Adriano Teixeira de Souza
 
Estrutura de dados em Java - Árvores Binárias
Estrutura de dados em Java - Árvores BináriasEstrutura de dados em Java - Árvores Binárias
Estrutura de dados em Java - Árvores BináriasAdriano Teixeira de Souza
 

Andere mochten auch (20)

Estrutura de dados em Java - Ponteiros e Alocação de Memória
Estrutura de dados em Java - Ponteiros e Alocação de Memória Estrutura de dados em Java - Ponteiros e Alocação de Memória
Estrutura de dados em Java - Ponteiros e Alocação de Memória
 
Estrutura de Dados - Listas Encadeadas
Estrutura de Dados - Listas EncadeadasEstrutura de Dados - Listas Encadeadas
Estrutura de Dados - Listas Encadeadas
 
Estrutura de dados - Variáveis homogêneas e Heterogêneas
Estrutura de dados - Variáveis homogêneas e HeterogêneasEstrutura de dados - Variáveis homogêneas e Heterogêneas
Estrutura de dados - Variáveis homogêneas e Heterogêneas
 
Estrutura de dados - Aula de Revisão (Linguagem C/C++, Função, Vetor, Matriz,...
Estrutura de dados - Aula de Revisão (Linguagem C/C++, Função, Vetor, Matriz,...Estrutura de dados - Aula de Revisão (Linguagem C/C++, Função, Vetor, Matriz,...
Estrutura de dados - Aula de Revisão (Linguagem C/C++, Função, Vetor, Matriz,...
 
Conceitos de ponteiros struct e buffers
Conceitos de ponteiros struct e buffersConceitos de ponteiros struct e buffers
Conceitos de ponteiros struct e buffers
 
Estrutura de Dados - Alocação dinâmica de memória
Estrutura de Dados - Alocação dinâmica de memóriaEstrutura de Dados - Alocação dinâmica de memória
Estrutura de Dados - Alocação dinâmica de memória
 
Algoritmos e Estruturas de Dados, edição de 2013/2014
Algoritmos e Estruturas de Dados, edição de 2013/2014Algoritmos e Estruturas de Dados, edição de 2013/2014
Algoritmos e Estruturas de Dados, edição de 2013/2014
 
Estrutura de Dados Aula 04 - Listas Estáticas
Estrutura de Dados Aula 04 - Listas EstáticasEstrutura de Dados Aula 04 - Listas Estáticas
Estrutura de Dados Aula 04 - Listas Estáticas
 
Material Modelagem - Prof. Marcos Alexandruk
Material Modelagem - Prof. Marcos AlexandrukMaterial Modelagem - Prof. Marcos Alexandruk
Material Modelagem - Prof. Marcos Alexandruk
 
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)
 
Estrutura de Dados Aula 07 - Alocação dinâmica de memória
Estrutura de Dados Aula 07 - Alocação dinâmica de memóriaEstrutura de Dados Aula 07 - Alocação dinâmica de memória
Estrutura de Dados Aula 07 - Alocação dinâmica de memória
 
Estrutura de Dados em Java (Revisão de Algoritimos em Java)
Estrutura de Dados em Java (Revisão de Algoritimos em Java)Estrutura de Dados em Java (Revisão de Algoritimos em Java)
Estrutura de Dados em Java (Revisão de Algoritimos em Java)
 
Apostila modelagem de banco de dados
Apostila modelagem de banco de dadosApostila modelagem de banco de dados
Apostila modelagem de banco de dados
 
Estrutura de dados em Java - Filas com lista encadeada
Estrutura de dados em Java - Filas com lista encadeada Estrutura de dados em Java - Filas com lista encadeada
Estrutura de dados em Java - Filas com lista encadeada
 
Estrutura de Dados em Java (Variáveis Compostas - Vetores e Matrizes)
Estrutura de Dados em Java (Variáveis Compostas - Vetores e Matrizes)Estrutura de Dados em Java (Variáveis Compostas - Vetores e Matrizes)
Estrutura de Dados em Java (Variáveis Compostas - Vetores e Matrizes)
 
Estrutura de Dados em Java (Introdução)
Estrutura de Dados em Java (Introdução)Estrutura de Dados em Java (Introdução)
Estrutura de Dados em Java (Introdução)
 
Estrutura de Dados em Java (Funções e Procedimentos)
Estrutura de Dados em Java (Funções e Procedimentos)Estrutura de Dados em Java (Funções e Procedimentos)
Estrutura de Dados em Java (Funções e Procedimentos)
 
Estrutura de dados em Java - Árvores Binárias
Estrutura de dados em Java - Árvores BináriasEstrutura de dados em Java - Árvores Binárias
Estrutura de dados em Java - Árvores Binárias
 
Estrutura de dados em Java - Recursividade
Estrutura de dados em Java - RecursividadeEstrutura de dados em Java - Recursividade
Estrutura de dados em Java - Recursividade
 
Estrutura de dados em Java - Filas
Estrutura de dados em Java - Filas Estrutura de dados em Java - Filas
Estrutura de dados em Java - Filas
 

Ähnlich wie Estrutura de Dados - Ponteiros

Estrutura de Dados - Características da linguagem C - 2
Estrutura de Dados - Características da linguagem C - 2Estrutura de Dados - Características da linguagem C - 2
Estrutura de Dados - Características da linguagem C - 2Adriano Teixeira de Souza
 
Aula04 ponteiros e conversao
Aula04   ponteiros e conversaoAula04   ponteiros e conversao
Aula04 ponteiros e conversaoYuri Passos
 
Apresentação curso pic básico fbs eletrônica
Apresentação   curso pic básico fbs eletrônicaApresentação   curso pic básico fbs eletrônica
Apresentação curso pic básico fbs eletrônicaFabio Souza
 
Algoritmos e LP - Aula 09 - Linguagem C - p2.pdf
Algoritmos e LP - Aula 09 - Linguagem C - p2.pdfAlgoritmos e LP - Aula 09 - Linguagem C - p2.pdf
Algoritmos e LP - Aula 09 - Linguagem C - p2.pdfEnio Filho
 
Aula 03 estrutura de seleção
Aula 03   estrutura de seleçãoAula 03   estrutura de seleção
Aula 03 estrutura de seleçãoTácito Graça
 
Algoritmos e Estrutura de Dados - Aula 05
Algoritmos e Estrutura de Dados - Aula 05Algoritmos e Estrutura de Dados - Aula 05
Algoritmos e Estrutura de Dados - Aula 05thomasdacosta
 
Java Básico :: Introdução
Java Básico :: IntroduçãoJava Básico :: Introdução
Java Básico :: IntroduçãoWesley R. Bezerra
 
Curso de OO com C# - Parte 02 - Introdução ao C#
Curso de OO com C# - Parte 02 - Introdução ao C#Curso de OO com C# - Parte 02 - Introdução ao C#
Curso de OO com C# - Parte 02 - Introdução ao C#Leonardo Melo Santos
 
Introdução ao Python
Introdução ao PythonIntrodução ao Python
Introdução ao PythonMarcio Palheta
 
Python para desenvolvedores - material apoio (parte I)
Python para desenvolvedores - material apoio (parte I)Python para desenvolvedores - material apoio (parte I)
Python para desenvolvedores - material apoio (parte I)Marcelo Barros de Almeida
 
Aula3PythonBasico (1).ppt
Aula3PythonBasico (1).pptAula3PythonBasico (1).ppt
Aula3PythonBasico (1).pptMichaelArrais1
 
Py sintaxe
Py sintaxePy sintaxe
Py sintaxeFlapenta
 

Ähnlich wie Estrutura de Dados - Ponteiros (20)

Estrutura de Dados - Características da linguagem C - 2
Estrutura de Dados - Características da linguagem C - 2Estrutura de Dados - Características da linguagem C - 2
Estrutura de Dados - Características da linguagem C - 2
 
Aula04 ponteiros e conversao
Aula04   ponteiros e conversaoAula04   ponteiros e conversao
Aula04 ponteiros e conversao
 
Apresentação curso pic básico fbs eletrônica
Apresentação   curso pic básico fbs eletrônicaApresentação   curso pic básico fbs eletrônica
Apresentação curso pic básico fbs eletrônica
 
01 variaveis io if
01 variaveis io if01 variaveis io if
01 variaveis io if
 
Algoritmos e LP - Aula 09 - Linguagem C - p2.pdf
Algoritmos e LP - Aula 09 - Linguagem C - p2.pdfAlgoritmos e LP - Aula 09 - Linguagem C - p2.pdf
Algoritmos e LP - Aula 09 - Linguagem C - p2.pdf
 
Aula 03 estrutura de seleção
Aula 03   estrutura de seleçãoAula 03   estrutura de seleção
Aula 03 estrutura de seleção
 
Ud3
Ud3Ud3
Ud3
 
Java Básico
Java BásicoJava Básico
Java Básico
 
Aula de C e C++
Aula de C e C++Aula de C e C++
Aula de C e C++
 
Programação Orientada a Objetos - 001
Programação Orientada a Objetos - 001Programação Orientada a Objetos - 001
Programação Orientada a Objetos - 001
 
Cool 3 assembly para linux
Cool 3   assembly para linuxCool 3   assembly para linux
Cool 3 assembly para linux
 
Algoritmos e Estrutura de Dados - Aula 05
Algoritmos e Estrutura de Dados - Aula 05Algoritmos e Estrutura de Dados - Aula 05
Algoritmos e Estrutura de Dados - Aula 05
 
Java Básico :: Introdução
Java Básico :: IntroduçãoJava Básico :: Introdução
Java Básico :: Introdução
 
Curso de OO com C# - Parte 02 - Introdução ao C#
Curso de OO com C# - Parte 02 - Introdução ao C#Curso de OO com C# - Parte 02 - Introdução ao C#
Curso de OO com C# - Parte 02 - Introdução ao C#
 
Introdução ao Python
Introdução ao PythonIntrodução ao Python
Introdução ao Python
 
Python para desenvolvedores - material apoio (parte I)
Python para desenvolvedores - material apoio (parte I)Python para desenvolvedores - material apoio (parte I)
Python para desenvolvedores - material apoio (parte I)
 
Pged 01
Pged 01Pged 01
Pged 01
 
Aula3PythonBasico (1).ppt
Aula3PythonBasico (1).pptAula3PythonBasico (1).ppt
Aula3PythonBasico (1).ppt
 
Aula3PythonBasico.ppt
Aula3PythonBasico.pptAula3PythonBasico.ppt
Aula3PythonBasico.ppt
 
Py sintaxe
Py sintaxePy sintaxe
Py sintaxe
 

Mehr von Adriano Teixeira de Souza

Aplicação de Integração Contínua para viabilizar a rastreabilidade de artefat...
Aplicação de Integração Contínua para viabilizar a rastreabilidade de artefat...Aplicação de Integração Contínua para viabilizar a rastreabilidade de artefat...
Aplicação de Integração Contínua para viabilizar a rastreabilidade de artefat...Adriano Teixeira de Souza
 
Sistemas Distribuídos - Comunicacao Distribuida - Middleware - JMS
Sistemas Distribuídos - Comunicacao Distribuida - Middleware - JMSSistemas Distribuídos - Comunicacao Distribuida - Middleware - JMS
Sistemas Distribuídos - Comunicacao Distribuida - Middleware - JMSAdriano Teixeira de Souza
 
Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)
Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)
Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)Adriano Teixeira de Souza
 
Paradigmas de Linguagens de Programação - Gerenciamento de Memória em Java
Paradigmas de Linguagens de Programação - Gerenciamento de Memória em JavaParadigmas de Linguagens de Programação - Gerenciamento de Memória em Java
Paradigmas de Linguagens de Programação - Gerenciamento de Memória em JavaAdriano Teixeira de Souza
 
Ferramentas para desenvolvimento web com produtividade - Artigo Final - Pos-G...
Ferramentas para desenvolvimento web com produtividade - Artigo Final - Pos-G...Ferramentas para desenvolvimento web com produtividade - Artigo Final - Pos-G...
Ferramentas para desenvolvimento web com produtividade - Artigo Final - Pos-G...Adriano Teixeira de Souza
 
Ferramentas para desenvolvimento web com produtividade - Slide Artigo (2009)
Ferramentas para desenvolvimento web com produtividade -  Slide Artigo (2009)Ferramentas para desenvolvimento web com produtividade -  Slide Artigo (2009)
Ferramentas para desenvolvimento web com produtividade - Slide Artigo (2009)Adriano Teixeira de Souza
 
Paradigmas de Linguagens de Programação - Biblioteca de Classes e Frameworks
Paradigmas de Linguagens de Programação - Biblioteca de Classes e Frameworks Paradigmas de Linguagens de Programação - Biblioteca de Classes e Frameworks
Paradigmas de Linguagens de Programação - Biblioteca de Classes e Frameworks Adriano Teixeira de Souza
 
Paradigmas de Linguagens de Programação - Modularização, componentização e re...
Paradigmas de Linguagens de Programação - Modularização, componentização e re...Paradigmas de Linguagens de Programação - Modularização, componentização e re...
Paradigmas de Linguagens de Programação - Modularização, componentização e re...Adriano Teixeira de Souza
 
Paradigmas de Linguagens de Programação - Tratamento de Exceções
Paradigmas de Linguagens de Programação - Tratamento de ExceçõesParadigmas de Linguagens de Programação - Tratamento de Exceções
Paradigmas de Linguagens de Programação - Tratamento de ExceçõesAdriano Teixeira de Souza
 
Paradigmas de Linguagens de Programação - Estruturas de Controle
Paradigmas de Linguagens de Programação - Estruturas de ControleParadigmas de Linguagens de Programação - Estruturas de Controle
Paradigmas de Linguagens de Programação - Estruturas de ControleAdriano Teixeira de Souza
 
Paradigmas de Linguagens de Programação - Expressões e Instruções de Atribuição
Paradigmas de Linguagens de Programação - Expressões e Instruções de AtribuiçãoParadigmas de Linguagens de Programação - Expressões e Instruções de Atribuição
Paradigmas de Linguagens de Programação - Expressões e Instruções de AtribuiçãoAdriano Teixeira de Souza
 
Paradigmas de Linguagens de Programação - Tipos primitivos e compostos
Paradigmas de Linguagens de Programação - Tipos primitivos e compostosParadigmas de Linguagens de Programação - Tipos primitivos e compostos
Paradigmas de Linguagens de Programação - Tipos primitivos e compostosAdriano Teixeira de Souza
 
Paradigmas de Linguagens de Programação - Tipos Abstratos de Dados
Paradigmas de Linguagens de Programação - Tipos Abstratos de DadosParadigmas de Linguagens de Programação - Tipos Abstratos de Dados
Paradigmas de Linguagens de Programação - Tipos Abstratos de DadosAdriano Teixeira de Souza
 
Paradigmas de Linguagens de Programação - Escopo estático/dinâmico
Paradigmas de Linguagens de Programação - Escopo estático/dinâmicoParadigmas de Linguagens de Programação - Escopo estático/dinâmico
Paradigmas de Linguagens de Programação - Escopo estático/dinâmicoAdriano Teixeira de Souza
 
Paradigmas de Linguagens de Programação - Quatro Paradigmas + Ambientes de Pr...
Paradigmas de Linguagens de Programação - Quatro Paradigmas + Ambientes de Pr...Paradigmas de Linguagens de Programação - Quatro Paradigmas + Ambientes de Pr...
Paradigmas de Linguagens de Programação - Quatro Paradigmas + Ambientes de Pr...Adriano Teixeira de Souza
 
Paradigmas de Linguagens de Programação - Classificações
Paradigmas de Linguagens de Programação - ClassificaçõesParadigmas de Linguagens de Programação - Classificações
Paradigmas de Linguagens de Programação - ClassificaçõesAdriano Teixeira de Souza
 

Mehr von Adriano Teixeira de Souza (19)

Aplicação de Integração Contínua para viabilizar a rastreabilidade de artefat...
Aplicação de Integração Contínua para viabilizar a rastreabilidade de artefat...Aplicação de Integração Contínua para viabilizar a rastreabilidade de artefat...
Aplicação de Integração Contínua para viabilizar a rastreabilidade de artefat...
 
Estrutura de dados em Java - Pilhas
Estrutura de dados em Java - PilhasEstrutura de dados em Java - Pilhas
Estrutura de dados em Java - Pilhas
 
Estrutura de dados em Java - Filas
Estrutura de dados em Java - FilasEstrutura de dados em Java - Filas
Estrutura de dados em Java - Filas
 
Responsive web design
Responsive web designResponsive web design
Responsive web design
 
Sistemas Distribuídos - Comunicacao Distribuida - Middleware - JMS
Sistemas Distribuídos - Comunicacao Distribuida - Middleware - JMSSistemas Distribuídos - Comunicacao Distribuida - Middleware - JMS
Sistemas Distribuídos - Comunicacao Distribuida - Middleware - JMS
 
Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)
Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)
Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)
 
Paradigmas de Linguagens de Programação - Gerenciamento de Memória em Java
Paradigmas de Linguagens de Programação - Gerenciamento de Memória em JavaParadigmas de Linguagens de Programação - Gerenciamento de Memória em Java
Paradigmas de Linguagens de Programação - Gerenciamento de Memória em Java
 
Ferramentas para desenvolvimento web com produtividade - Artigo Final - Pos-G...
Ferramentas para desenvolvimento web com produtividade - Artigo Final - Pos-G...Ferramentas para desenvolvimento web com produtividade - Artigo Final - Pos-G...
Ferramentas para desenvolvimento web com produtividade - Artigo Final - Pos-G...
 
Ferramentas para desenvolvimento web com produtividade - Slide Artigo (2009)
Ferramentas para desenvolvimento web com produtividade -  Slide Artigo (2009)Ferramentas para desenvolvimento web com produtividade -  Slide Artigo (2009)
Ferramentas para desenvolvimento web com produtividade - Slide Artigo (2009)
 
Paradigmas de Linguagens de Programação - Biblioteca de Classes e Frameworks
Paradigmas de Linguagens de Programação - Biblioteca de Classes e Frameworks Paradigmas de Linguagens de Programação - Biblioteca de Classes e Frameworks
Paradigmas de Linguagens de Programação - Biblioteca de Classes e Frameworks
 
Paradigmas de Linguagens de Programação - Modularização, componentização e re...
Paradigmas de Linguagens de Programação - Modularização, componentização e re...Paradigmas de Linguagens de Programação - Modularização, componentização e re...
Paradigmas de Linguagens de Programação - Modularização, componentização e re...
 
Paradigmas de Linguagens de Programação - Tratamento de Exceções
Paradigmas de Linguagens de Programação - Tratamento de ExceçõesParadigmas de Linguagens de Programação - Tratamento de Exceções
Paradigmas de Linguagens de Programação - Tratamento de Exceções
 
Paradigmas de Linguagens de Programação - Estruturas de Controle
Paradigmas de Linguagens de Programação - Estruturas de ControleParadigmas de Linguagens de Programação - Estruturas de Controle
Paradigmas de Linguagens de Programação - Estruturas de Controle
 
Paradigmas de Linguagens de Programação - Expressões e Instruções de Atribuição
Paradigmas de Linguagens de Programação - Expressões e Instruções de AtribuiçãoParadigmas de Linguagens de Programação - Expressões e Instruções de Atribuição
Paradigmas de Linguagens de Programação - Expressões e Instruções de Atribuição
 
Paradigmas de Linguagens de Programação - Tipos primitivos e compostos
Paradigmas de Linguagens de Programação - Tipos primitivos e compostosParadigmas de Linguagens de Programação - Tipos primitivos e compostos
Paradigmas de Linguagens de Programação - Tipos primitivos e compostos
 
Paradigmas de Linguagens de Programação - Tipos Abstratos de Dados
Paradigmas de Linguagens de Programação - Tipos Abstratos de DadosParadigmas de Linguagens de Programação - Tipos Abstratos de Dados
Paradigmas de Linguagens de Programação - Tipos Abstratos de Dados
 
Paradigmas de Linguagens de Programação - Escopo estático/dinâmico
Paradigmas de Linguagens de Programação - Escopo estático/dinâmicoParadigmas de Linguagens de Programação - Escopo estático/dinâmico
Paradigmas de Linguagens de Programação - Escopo estático/dinâmico
 
Paradigmas de Linguagens de Programação - Quatro Paradigmas + Ambientes de Pr...
Paradigmas de Linguagens de Programação - Quatro Paradigmas + Ambientes de Pr...Paradigmas de Linguagens de Programação - Quatro Paradigmas + Ambientes de Pr...
Paradigmas de Linguagens de Programação - Quatro Paradigmas + Ambientes de Pr...
 
Paradigmas de Linguagens de Programação - Classificações
Paradigmas de Linguagens de Programação - ClassificaçõesParadigmas de Linguagens de Programação - Classificações
Paradigmas de Linguagens de Programação - Classificações
 

Estrutura de Dados - Ponteiros

  • 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 0x0022FF10 char 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 inteiros ap = &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 int char *ap_char; // apontador para char float *ap_float; // apontador para float double *ap_double; // apontador para double // apontador para apontador int **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 00 22 22 22 FF FF FF 18 14 10 ap 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