• Nenhum resultado encontrado

Aula21 Ponteiros Parte2

N/A
N/A
Protected

Academic year: 2021

Share "Aula21 Ponteiros Parte2"

Copied!
35
0
0

Texto

(1)

P

ROGRAMAÇÃO DE

C

OMPUTADORES

I

Ponteiros – Parte 2

(2)

COMPARAÇÃO ENTRE

PONTEIROS



É possível comparar ponteiros em uma expressão

relacional



>



<



==

>=

Universidade Federal de Ouro Preto Campus João Monlevade

Instituto de Ciências Exatas e Aplicadas



>=



<=

(3)

Os ponteiros podem

ser comparados

entre si

Repare que os if`s e

Universidade Federal de Ouro Preto Campus João Monlevade

Instituto de Ciências Exatas e Aplicadas

Repare que os if`s e

eles`s estão

organizados em

escada sem a

necessidade de

abertura de chaves

para cada else

(4)

EXECUÇÃO

Universidade Federal de Ouro Preto Campus João Monlevade

(5)

PONTEIROS E

STRINGS



Já vimos que a definição de uma variável de um tipo

primitivo é diferente de um array



Quando declaramos um array de double por exemplo,

alocamos um espaço contíguo na memória do tamanho de

elementos multiplicado pelo tamanho de bytes ocupado por

aquele tipo

Universidade Federal de Ouro Preto Campus João Monlevade

Instituto de Ciências Exatas e Aplicadas



A variável notas não é um tipo primitivo e sim um ponteiro

para a primeira posição do array

(6)

PONTEIROS E

STRINGS



O mesmo acontece para strings



A variável que representa uma String é um ponteiro para a

primeira posição do array na memória

Pergunta

Será que o código abaixo compila?

Universidade Federal de Ouro Preto Campus João Monlevade

(7)

PONTEIROS E

STRINGS



O mesmo acontece para strings



A variável que representa uma String é um ponteiro para a

primeira posição do array na memória

Pergunta

Será que o código abaixo compila?

Universidade Federal de Ouro Preto Campus João Monlevade

(8)

PONTEIROS E

STRINGS



Exemplo de execução

Universidade Federal de Ouro Preto Campus João Monlevade

(9)

PONTEIROS E

STRINGS

Universidade Federal de Ouro Preto Campus João Monlevade

(10)

PONTEIROS E

STRINGS

Pergunta

Será que o código abaixo compila?

Universidade Federal de Ouro Preto Campus João Monlevade

(11)

PONTEIROS E

STRINGS

Pergunta

Será que o código abaixo compila?

Compila – mas ocorre erro em tempo de execução

Universidade Federal de Ouro Preto Campus João Monlevade

(12)

PONTEIROS E

STRINGS

Pergunta

Será que o código abaixo compila?

Ocorrerá erro de execução

no DevC++ porque a string

armazenada na tabela de

strings é constante quando

ela é declarada como

Universidade Federal de Ouro Preto Campus João Monlevade

Instituto de Ciências Exatas e Aplicadas

ela é declarada como

ponteiro. Dessa forma, não

podemos modificá-la

(13)

PONTEIROS E

STRINGS

Pergunta

Será que o código abaixo compila agora?

Universidade Federal de Ouro Preto Campus João Monlevade

(14)

PONTEIROS E

STRINGS



E agora? Funciona?

Universidade Federal de Ouro Preto Campus João Monlevade

(15)

PONTEIROS E

STRINGS



E agora? Funciona?

A variável array3 agora

aponta para o endereço

do conteúdo do array2

Universidade Federal de Ouro Preto Campus João Monlevade

(16)

PONTEIROS E

STRINGS



E agora? Funciona?

Lembrando que as linhas de código

marcado não copiam o conteúdo das

strings. Eles apenas fazem com que

array e array3 apontem para o

conteúdo do array2.

Universidade Federal de Ouro Preto Campus João Monlevade

(17)

PONTEIROS E

STRINGS



E agora? Funciona?

Universidade Federal de Ouro Preto Campus João Monlevade

(18)

PONTEIROS E

STRINGS



Erros ao manipular strings



Erro 1 – Agora funciona

Universidade Federal de Ouro Preto Campus João Monlevade

Instituto de Ciências Exatas e Aplicadas

Funciona porque ponteiro p foi inicializado e

está apontando para a primeira posição do

vetor str2.

(19)



Erros ao manipular strings



Erro 2

PONTEIROS E

STRINGS

Universidade Federal de Ouro Preto Campus João Monlevade

Instituto de Ciências Exatas e Aplicadas

ERRO: o ponteiro p não foi inicializado.

(20)

PONTEIROS E

STRINGS



Função gets

scanf(...);

getchar();

gets(...);

Atenção: Usar a função gets após o uso da função

scanf causa um erro de lógica. O retorno de carro

usado para terminar a leitura de scanf fica

armazenada no buffer e é lido diretamente pela

função gets. Para evitar esse problema, podemos

chamar a função getchar(); para obter o retorno de

carro, esvaziando o buffer. Exemplo abaixo

puts: método que escreve uma

Universidade Federal de Ouro Preto Campus João Monlevade

Instituto de Ciências Exatas e Aplicadas

puts: método que escreve uma

String no stdout (stantard output)

no caso o monitor.

(21)

USO DO

CONST EM

PONTEIROS



O ponteiro ptr não pode ser modificado

Universidade Federal de Ouro Preto Campus João Monlevade

Instituto de Ciências Exatas e Aplicadas



O seguinte trecho de código cria um ponteiro constante

para um valor constante

(22)

USO DO

CONST EM

PONTEIROS



O valor apontado pelo ponteiro ptr não pode ser

modificado

Universidade Federal de Ouro Preto Campus João Monlevade

(23)

P

ASSAGEM DE

P

ARÂMETROS POR

REFERÊNCIA



Lembrando como funciona o scanf ?

Universidade Federal de Ouro Preto Campus João Monlevade

(24)

P

ASSAGEM DE

P

ARÂMETROS POR

REFERÊNCIA



Primeiro vamos ver a passagem de

parâmetro por valor

Universidade Federal de Ouro Preto Campus João Monlevade

(25)

P

ASSAGEM DE

P

ARÂMETROS POR

REFERÊNCIA



Agora por referência

Universidade Federal de Ouro Preto Campus João Monlevade

(26)

P

ASSAGEM DE

P

ARÂMETROS

POR

REFERÊNCIA



Arrays – quando declaramos arrays estamos declarando

ponteiros. Certo?



Então posso receber um array como parâmetro de um

método da forma abaixo?

Universidade Federal de Ouro Preto Campus João Monlevade

Instituto de Ciências Exatas e Aplicadas

(27)

P

ASSAGEM DE

P

ARÂMETROS

POR

REFERÊNCIA



Arrays – quando declaramos arrays estamos declarando

ponteiros. Certo?



Então posso receber um array como parâmetro de um

método da forma abaixo?

Universidade Federal de Ouro Preto Campus João Monlevade

Instituto de Ciências Exatas e Aplicadas

(28)

P

ASSAGEM DE

P

ARÂMETROS POR

REFERÊNCIA



Exemplo 1



Método que recebe uma string e exibe seus elementos com

um espaço entre eles



Duas formas de recebimento de parâmetros

Universidade Federal de Ouro Preto Campus João Monlevade

(29)



Exemplo

Universidade Federal de Ouro Preto Campus João Monlevade

Instituto de Ciências Exatas e Aplicadas

(30)

P

ASSAGEM DE

P

ARÂMETROS POR

REFERÊNCIA



Exemplo 2



Criação de funções para o cálculo do tamanho de uma string



Modificação na condição de parada do while

Universidade Federal de Ouro Preto Campus João Monlevade

(31)

Universidade Federal de Ouro Preto Campus João Monlevade

Instituto de Ciências Exatas e Aplicadas

Critério de parada! Importante: Funciona

para o array de caracteres apenas.

(32)

P

ASSAGEM DE

P

ARÂMETROS POR

REFERÊNCIA



E se quisermos passar como referência um array de

inteiros?



Em geral passamos como parâmetro além do ponteiro a

quantidade de elementos presentes no array.

Universidade Federal de Ouro Preto Campus João Monlevade

(33)

P

ASSAGEM DE

P

ARÂMETROS POR

REFERÊNCIA

Universidade Federal de Ouro Preto Campus João Monlevade

(34)

P

ASSAGEM DE

P

ARÂMETROS POR

REFERÊNCIA

Universidade Federal de Ouro Preto Campus João Monlevade

(35)

REFERÊNCIAS



Notas de Aula do Professor Romildo Malaquias

(DECOM/UFOP)



Notas de Aula do Professor Giori Ambrósio



C Completo e Total - 3ª edição

Universidade Federal de Ouro Preto Campus João Monlevade

Referências

Documentos relacionados

As principais características deste agente são: avaliação do diálogo sobre as emoções, representação do modelo de personalidade Big-Five e impacto dos valores

Visando a este cenário, o Ministério da Saúde criou o Programa de Educação pelo Trabalho para a Saúde (PET-Saúde), regulamentado pela Portaria Interministerial

Varr edura TCP Window ( cont inuação) ACK- win manipulado Não Responde ACK- win manipulado ICMP Tipo 3 Firewall Negando Firewall Rejeitando Scanner de Porta... Var r edur a FI N/

4- A responsabilidade profissional está muito bem estabelecida no Código de Defesa e Proteção ao Consumidor, pois coloca em questão a efetiva participação preventiva e

Evidentemente, a língua portuguesa representa o Brasil. A valorização da mesma significa, por transferência de significado, uma valorização da nação brasileira. A comparação do

Presumia-se que o sistema da memória de curta duração fornecia e retirava informação da memória de longa duração, a qual foi ainda subdividida em memória explícita ou declarativa

Por outro lado, quando se fala em pequenas e médias empresas, onde o número de funcionários é maior, é mais bem dividida e o uso da Intranet se torna

Entre os bairros avaliados o Santa Rita apresentou as condições mais precárias de saneamento básico no ano de 2007 em função da ausência de fornecimento de