linguagens de programação – del-poli/ufrj prof. miguel campista linguagens de programação...

84
Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Linguagens de Programação Prof. Miguel Elias Mitre Campista http://www.gta.ufrj.br/~miguel

Upload: internet

Post on 18-Apr-2015

106 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Linguagens de Programação Prof. Miguel Elias Mitre Campista miguel

Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

Linguagens de Programação

Prof. Miguel Elias Mitre Campista

http://www.gta.ufrj.br/~miguel

Page 2: Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Linguagens de Programação Prof. Miguel Elias Mitre Campista miguel

Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

Parte III

Introdução à Programação em C++ (Continuação)

Page 3: Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Linguagens de Programação Prof. Miguel Elias Mitre Campista miguel

Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

Relembrando da Última Aula...

• Definição de classes e objetos

• Primeiros exemplos de programação orientada a objetos

Page 4: Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Linguagens de Programação Prof. Miguel Elias Mitre Campista miguel

Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

Repetição Controlada por Contador

• Variável contadora– Usada para contar ocorrências de um determinado

evento ou para controlar laços de repetição• Ex.: Indica qual entre as dez notas está sendo

inserida

• Variável acumuladora– Usada para acumular a soma de vários valores– Em geral, é previamente iniciada do zero

• Do contrário, incluiria o valor anterior armazenado nessa posição da memória

Page 5: Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Linguagens de Programação Prof. Miguel Elias Mitre Campista miguel

Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

Nono Exemplo utilizando Classes em C++

Page 6: Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Linguagens de Programação Prof. Miguel Elias Mitre Campista miguel

Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

Nono Exemplo utilizando Classes em C++

Função que utiliza variável contadora e

acumuladora

Page 7: Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Linguagens de Programação Prof. Miguel Elias Mitre Campista miguel

Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

Nono Exemplo utilizando Classes em C++

Page 8: Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Linguagens de Programação Prof. Miguel Elias Mitre Campista miguel

Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

Nono Exemplo utilizando Classes em C++

Page 9: Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Linguagens de Programação Prof. Miguel Elias Mitre Campista miguel

Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

Nono Exemplo utilizando Classes em C++

Declaração das variáveis contadora

e acumuladora

Page 10: Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Linguagens de Programação Prof. Miguel Elias Mitre Campista miguel

Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

Nono Exemplo utilizando Classes em C++

Inicialização das variáveis

Page 11: Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Linguagens de Programação Prof. Miguel Elias Mitre Campista miguel

Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

Nono Exemplo utilizando Classes em C++

Executa o laço de repetição 5

vezes

Acumula e incrementa as variáveis respectivas

Calcula a média ao final do laço

de repetição

Page 12: Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Linguagens de Programação Prof. Miguel Elias Mitre Campista miguel

Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

Nono Exemplo utilizando Classes em C++

Page 13: Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Linguagens de Programação Prof. Miguel Elias Mitre Campista miguel

Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

Nono Exemplo utilizando Classes em C++shell>$ g++ -c gradebook.cpp –o gradebook.o

shell>$ g++ -c principal.cpp –o principal.o

shell>$ g++ -o ex9 gradebook.o principal.o

shell>$ ./ex9Warning: Nome “Programacao de Computadores e Sistemas Distribuidos” excede o limite maximo de 25 caracteres...Nome limitado aos primeiros 25 caracteres: Programacao de ComputadorNome do curso 1 eh: Programacao de ComputadorNome do curso 2 eh: CompIEntre com a nota 1Entre com a nota 1Entre com a nota 1Entre com a nota 1Entre com a nota 2Total das 5 notas eh: 6Media eh: 1Entre com a nota 2Entre com a nota 2Entre com a nota 2Entre com a nota 2Entre com a nota 3Total das 5 notas eh: 11Media eh: 2shell>$

Page 14: Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Linguagens de Programação Prof. Miguel Elias Mitre Campista miguel

Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

Variáveis Não-inicializadas ou Truncadas

• Variáveis não inicializáveis– Contém valores indefinidos

• Não inicializar contadores e acumuladores pode provocar erros de lógica

• Divisão de inteiros e truncamento– Divisão de inteiros

• Divisão de dois inteiros leva a resultado truncado– Uma fração do quociente resultante é perdida– Assumir que a divisão de inteiros arredonda (em lugar

de truncar) pode gerar resultados incorretos

Page 15: Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Linguagens de Programação Prof. Miguel Elias Mitre Campista miguel

Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

Repetição Controlada por Sentinela

• Também conhecida por repetição indefinida

• Usar um valor de sentinela– Indica o final da entrada de dados

• Um valor de sentinela não pode ser um valor de entrada válido

– É também conhecido por valor de sinal, valor fictício ou valor de flag

Page 16: Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Linguagens de Programação Prof. Miguel Elias Mitre Campista miguel

Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

Repetição Controlada por Sentinela

• Números de ponto flutuante– Um número real com um ponto decimal– O C++ fornece os tipos de dados float e double

• Os números double podem ter maior magnitude e mais detalhes

– Isso é chamado de precisão

• Valores de ponto flutuante são tratados como valores double por padrão

– Ex.: Surgidos da divisão de dois inteiros

– Valores de ponto flutuante em geral são apenas aproximações

Page 17: Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Linguagens de Programação Prof. Miguel Elias Mitre Campista miguel

Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

Décimo Exemplo utilizando Classes em C++

Page 18: Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Linguagens de Programação Prof. Miguel Elias Mitre Campista miguel

Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

Décimo Exemplo utilizando Classes em C++

Page 19: Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Linguagens de Programação Prof. Miguel Elias Mitre Campista miguel

Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

Décimo Exemplo utilizando Classes em C++

Biblioteca para definir a

precisão da saída numérica

Page 20: Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Linguagens de Programação Prof. Miguel Elias Mitre Campista miguel

Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

Décimo Exemplo utilizando Classes em C++

Page 21: Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Linguagens de Programação Prof. Miguel Elias Mitre Campista miguel

Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

Décimo Exemplo utilizando Classes em C++A variável

average agora é double

O while executa desde que grade não seja igual ao

valor de sentinela -1

Page 22: Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Linguagens de Programação Prof. Miguel Elias Mitre Campista miguel

Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

Décimo Exemplo utilizando Classes em C++

Calcula a nota média usando

static_cast<double> para executar uma

conversão explícita da variável total. No

resultado da divisão prevalece o tipo double

Page 23: Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Linguagens de Programação Prof. Miguel Elias Mitre Campista miguel

Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

Décimo Exemplo utilizando Classes em C++

Define a precisão do número de ponto

flutuante

Fixa o número de casas

decimais que são impressas

Page 24: Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Linguagens de Programação Prof. Miguel Elias Mitre Campista miguel

Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

Décimo Exemplo utilizando Classes em C++

Page 25: Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Linguagens de Programação Prof. Miguel Elias Mitre Campista miguel

Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

Décimo Exemplo utilizando Classes em C++shell>$ g++ -c gradebook.cpp –o gradebook.o

shell>$ g++ -c principal.cpp –o principal.o

shell>$ g++ -o ex10 gradebook.o principal.o

shell>$ ./ex10

Warning: Nome “Programacao de Computadores e Sistemas Distribuidos” excede o limite

maximo de 25 caracteres...

Nome limitado aos primeiros 25 caracteres: Programacao de Computador

Nome do curso 1 eh: Programacao de Computador

Nome do curso 2 eh: CompI

Entre com a nota ou -1 para sair: 2

Entre com a nota ou -1 para sair: 1

Entre com a nota ou -1 para sair: 1

Entre com a nota ou -1 para sair: -1

Total das 5 notas eh: 4

Media eh: 1.33Entre com a nota ou -1 para sair: 2Entre com a nota ou -1 para sair: 2Entre com a nota ou -1 para sair: 2Entre com a nota ou -1 para sair: -1Total das 5 notas eh: 6Media eh: 2.00

shell>$

Page 26: Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Linguagens de Programação Prof. Miguel Elias Mitre Campista miguel

Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

Conversão de Tipos

• Operador de Coerção Unário– Cria uma cópia temporária de seu operando com um

tipo de dado diferente• Conversão explícita

– Converte tipos numéricos e tipos de classes relacionados (polimorfismo)

– Ex.: static_cast< double > ( total )• Cria uma cópia do ponto flutuante temporária de total

• Promoção– Conversão de um valor (p. ex., int) em outro tipo de

dado (p. ex., double) para realizar um cálculo• Conversão implícita

Page 27: Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Linguagens de Programação Prof. Miguel Elias Mitre Campista miguel

Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

Formatação de Números de Ponto Flutuante

• Manipulador de fluxo parametrizado setprecision– Especifica o número de dígitos de precisão para

exibir à direita do ponto decimal– A precisão-padrão é de seis dígitos

• Manipulador de fluxo não parametrizado fixed– Indica que os valores de ponto flutuante devem ser

enviados para a saída no formato de ponto fixo• Em oposição à notação científica (3.1 × 103)

• Manipulador de fluxo showpoint– Força a exibição do ponto decimal

Page 28: Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Linguagens de Programação Prof. Miguel Elias Mitre Campista miguel

Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

Décimo Primeiro Exemplo utilizando Classes em C++

Page 29: Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Linguagens de Programação Prof. Miguel Elias Mitre Campista miguel

Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

Décimo Primeiro Exemplo utilizando Classes em C++

Função para processar os resultados de um exame

de uma turma

Page 30: Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Linguagens de Programação Prof. Miguel Elias Mitre Campista miguel

Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

Décimo Primeiro Exemplo utilizando Classes em C++

Page 31: Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Linguagens de Programação Prof. Miguel Elias Mitre Campista miguel

Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

Décimo Primeiro Exemplo utilizando Classes em C++

Declaração e inicialização das variáveis locais

Determina se esse aluno foi aprovado ou reprovado e

incrementa a variável apropriada

Page 32: Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Linguagens de Programação Prof. Miguel Elias Mitre Campista miguel

Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

Décimo Primeiro Exemplo utilizando Classes em C++

Page 33: Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Linguagens de Programação Prof. Miguel Elias Mitre Campista miguel

Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

Décimo Primeiro Exemplo utilizando Classes em C++

shell>$ g++ -c gradebook.cpp –o gradebook.oshell>$ g++ -c principal.cpp –o principal.oshell>$ g++ -o ex11 gradebook.o principal.oshell>$ ./ex11Entre o resultado (1 = aprovado, 2 = reprovado): 1Entre o resultado (1 = aprovado, 2 = reprovado): 1Entre o resultado (1 = aprovado, 2 = reprovado): 1Entre o resultado (1 = aprovado, 2 = reprovado): 1Entre o resultado (1 = aprovado, 2 = reprovado): 1Entre o resultado (1 = aprovado, 2 = reprovado): 1Entre o resultado (1 = aprovado, 2 = reprovado): 1Entre o resultado (1 = aprovado, 2 = reprovado): 1Entre o resultado (1 = aprovado, 2 = reprovado): 1Entre o resultado (1 = aprovado, 2 = reprovado): 1Aprovados 10Reprovados 0Prova estava mole!shell>$

Page 34: Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Linguagens de Programação Prof. Miguel Elias Mitre Campista miguel

Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

Operadores de Incremento e Decremento

• Operador de incremento ++ – Incrementa um ao valor da variável

• Exemplo– c++

• Operador de decremento -- – Decrementa um do valor da variável

• Exemplo– c--

Page 35: Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Linguagens de Programação Prof. Miguel Elias Mitre Campista miguel

Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

Décimo Primeiro Exemplo utilizando Classes em C++

Page 36: Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Linguagens de Programação Prof. Miguel Elias Mitre Campista miguel

Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

Décimo Primeiro Exemplo utilizando Classes em C++Operadores de incremento

Page 37: Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Linguagens de Programação Prof. Miguel Elias Mitre Campista miguel

Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

Sentença de Repetição (for)

• Apresenta todos os requisitos de uma repetição controlada por contador– Declaração e inicialização do contador– Expressão de condição de contorno– Operador de incremento

• Pode ser usada no lugar do while

inicialização;while (expressão){ bloco; incremento;}

for(inicialização; expressão; incremento) { bloco;}

Page 38: Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Linguagens de Programação Prof. Miguel Elias Mitre Campista miguel

Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

Sentença de Repetição (for)

• Apresenta todos os requisitos de uma repetição controlada por contador– Declaração e inicialização do contador– Expressão de condição de contorno– Operador de incremento

• Pode ser usada no lugar do while– Ex.:

for(int i = 0, j = 0; i + j <= 10; i++, j++) { cout << i << j << endl;}

Page 39: Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Linguagens de Programação Prof. Miguel Elias Mitre Campista miguel

Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

Sentença de Repetição (for)

• O corpo do for pode ser inserido na parte de incremento– Requer o uso da vírgula

int soma = 0;for(int i = 0; i <= 10; i++) { soma = soma + i;}

Page 40: Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Linguagens de Programação Prof. Miguel Elias Mitre Campista miguel

Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

Sentença de Repetição (for)

• O corpo do for pode ser inserido na parte de incremento– Requer o uso da vírgula

int soma = 0;for(int i = 0; i <= 10; i++) { soma = soma + i;}

int soma = 0;for(int i = 0; i <= 10; soma += i, i++);

Page 41: Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Linguagens de Programação Prof. Miguel Elias Mitre Campista miguel

Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

Sentença de Repetição (for)

• O corpo do for pode ser inserido na parte de incremento– Requer o uso da vírgula

int soma = 0;for(int i = 0; i <= 10; i++) { soma = soma + i;}

int soma = 0;for(int i = 0; i <= 10; soma += i, i++);

corpo do for Uso do ponto e vírgula no lugar do corpo

Page 42: Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Linguagens de Programação Prof. Miguel Elias Mitre Campista miguel

Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

Sentença de Repetição (for)

• O corpo do for pode ser inserido na parte de incremento– Requer o uso da vírgula

int soma = 0;for(int i = 0; i <= 10; i++) { soma = soma + i;}

int soma = 0;for(int i = 0; i <= 10; soma += i, i++);

Esse formato pode prejudicar a legibilidade do código

Page 43: Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Linguagens de Programação Prof. Miguel Elias Mitre Campista miguel

Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

Décimo Segundo Exemplo utilizando Classes em C++

Page 44: Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Linguagens de Programação Prof. Miguel Elias Mitre Campista miguel

Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

Décimo Segundo Exemplo utilizando Classes em C++

Função para exibir a

progressão de um investimento

Função para calcular os juros

Page 45: Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Linguagens de Programação Prof. Miguel Elias Mitre Campista miguel

Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

Décimo Segundo Exemplo utilizando Classes em C++

Page 46: Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Linguagens de Programação Prof. Miguel Elias Mitre Campista miguel

Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

Décimo Segundo Exemplo utilizando Classes em C++

Emprego de um construtor

Page 47: Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Linguagens de Programação Prof. Miguel Elias Mitre Campista miguel

Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

Décimo Segundo Exemplo utilizando Classes em C++

Biblioteca matemática

para cálculo dos juros

Função para cálculo dos

juros, uso da função pow

Page 48: Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Linguagens de Programação Prof. Miguel Elias Mitre Campista miguel

Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

Décimo Segundo Exemplo utilizando Classes em C++

Page 49: Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Linguagens de Programação Prof. Miguel Elias Mitre Campista miguel

Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

Décimo Segundo Exemplo utilizando Classes em C++

Define uma largura de 21 caracteres e justifica o texto à

direita. Caso o texto tenha mais

que 21 caracteres, a coluna é

expandida para atender essa

largura

Page 50: Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Linguagens de Programação Prof. Miguel Elias Mitre Campista miguel

Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

Décimo Segundo Exemplo utilizando Classes em C++

Emprego do for e inicialização da

variável contadora ano

Define o formato de saída dos resultados

Page 51: Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Linguagens de Programação Prof. Miguel Elias Mitre Campista miguel

Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

Décimo Segundo Exemplo utilizando Classes em C++

Page 52: Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Linguagens de Programação Prof. Miguel Elias Mitre Campista miguel

Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

Décimo Segundo Exemplo utilizando Classes em C++

shell>$ g++ -c gradebook.cpp –o gradebook.o

shell>$ g++ -c principal.cpp –o principal.o

shell>$ g++ -o ex12 gradebook.o principal.o

shell>$ ./ex12

Entre com o interesse: 0.05

Entre com o valor principal: 1000.0

Entre com o numero de anos: 10

A progressao eh:

Ano Total

1 1050.00

2 1102.50

3 1157.63

4 1215.51

5 1276.28

6 1340.10

7 1407.10

8 1477.46

9 1551.33

10 1628.89

shell>$

Page 53: Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Linguagens de Programação Prof. Miguel Elias Mitre Campista miguel

Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

Leitura de Caracteres do Teclado

• Uso da função cin.get()– Função lê um caractere do teclado e retorna o

valor lido• O valor de retorno pode ser armazenado também em

uma variável int

cout << “O caractere (" << 'a' << ") tem valor " << static_cast< int > ( 'a' ) << endl;

O caractere (a) tem valor 97

Page 54: Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Linguagens de Programação Prof. Miguel Elias Mitre Campista miguel

Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

Décimo Terceiro Exemplo utilizando Classes em C++

Page 55: Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Linguagens de Programação Prof. Miguel Elias Mitre Campista miguel

Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

Décimo Terceiro Exemplo utilizando Classes em C++

Função para entrada de notas pelo teclado

Função para exibir um sumário das notas

Contadores para contabilizar os

conceitos

Page 56: Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Linguagens de Programação Prof. Miguel Elias Mitre Campista miguel

Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

Décimo Terceiro Exemplo utilizando Classes em C++

Page 57: Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Linguagens de Programação Prof. Miguel Elias Mitre Campista miguel

Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

Décimo Terceiro Exemplo utilizando Classes em C++

Inicialização das variáveis no construtor

Page 58: Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Linguagens de Programação Prof. Miguel Elias Mitre Campista miguel

Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

Décimo Terceiro Exemplo utilizando Classes em C++

Page 59: Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Linguagens de Programação Prof. Miguel Elias Mitre Campista miguel

Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

Décimo Terceiro Exemplo utilizando Classes em C++

Uso da função cin.get() para

leitura de caractere do teclado. O

caractere lido é atribuído à variável

grade

Page 60: Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Linguagens de Programação Prof. Miguel Elias Mitre Campista miguel

Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

Décimo Terceiro Exemplo utilizando Classes em C++

Após a inicialização da variável grade, ela é comparada ao EOF.

Em sistemas UNIX, o EOF pode ser um Ctrl+d e em

WINDOWS, o Ctrl+z

Page 61: Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Linguagens de Programação Prof. Miguel Elias Mitre Campista miguel

Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

Décimo Terceiro Exemplo utilizando Classes em C++

Entradas podem ser em letras maiúsculas

ou minúsculas

Page 62: Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Linguagens de Programação Prof. Miguel Elias Mitre Campista miguel

Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

Décimo Terceiro Exemplo utilizando Classes em C++

Evita que caracteres

diferentes dos permitidos sejam considerados pelo programa. Ex.: ao teclar ENTER um

caractere especial é lido do teclado

Page 63: Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Linguagens de Programação Prof. Miguel Elias Mitre Campista miguel

Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

Décimo Terceiro Exemplo utilizando Classes em C++

Page 64: Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Linguagens de Programação Prof. Miguel Elias Mitre Campista miguel

Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

Décimo Terceiro Exemplo utilizando Classes em C++

Page 65: Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Linguagens de Programação Prof. Miguel Elias Mitre Campista miguel

Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

Décimo Terceiro Exemplo utilizando Classes em C++shell>$ g++ -c gradebook.cpp –o gradebook.o

shell>$ g++ -c principal.cpp –o principal.o

shell>$ g++ -o ex13 gradebook.o principal.o

shell>$ ./ex13

Warning: Nome “Programacao de Computadores e Sistemas Distribuidos” excede o limite

maximo de 25 caracteres...

Nome limitado aos primeiros 25 caracteres: Programacao de Computador

Nome do curso 1 eh: Programacao de Computador

Nome do curso 2 eh: CompI

Entre com o conceito.

Entre com o caractere EOF para finalizar.

a

a

a

bbc^ZNumero de alunos que receberam cada um dos conceitos:A: 3B: 2C: 1shell>$

Page 66: Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Linguagens de Programação Prof. Miguel Elias Mitre Campista miguel

Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

Operadores Lógicos

• And (&&), Or (||), Not (!)

• Manipulador de fluxo boolalpha– Exibe o valor de cada expressão booleana

• true ao invés de 1• false ao invés de 0

Page 67: Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Linguagens de Programação Prof. Miguel Elias Mitre Campista miguel

Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

Page 68: Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Linguagens de Programação Prof. Miguel Elias Mitre Campista miguel

Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

Uso do manipulador de fluxo boolalpha

Page 69: Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Linguagens de Programação Prof. Miguel Elias Mitre Campista miguel

Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

shell>$ g++ gradebook.cpp –o ex14

shell>$ ./ex14Logico AND (&&)falso && falso: falsefalso && verdadeiro: falseverdadeiro && falso: falseverdadeiro && verdadeiro: true

Logico OR (||)falso || falso: falsefalso || verdadeiro: trueverdadeiro || falso: trueverdadeiro || verdadeiro: true

Logico NOT (!)!falso: true!verdadeiro: falseshell>$

Page 70: Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Linguagens de Programação Prof. Miguel Elias Mitre Campista miguel

Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

Exemplo 1: Cadastro

• Escreva uma agenda em C++ para armazenar em memória três cadastros contendo nome, telefone e endereço. Cada um dos cadastros deve ser um objeto da classe Cadastro. A classe Cadastro ainda deve oferecer uma função para exibição dos dados de cada cadastro.

?

Page 71: Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Linguagens de Programação Prof. Miguel Elias Mitre Campista miguel

Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

Exemplo 1: Cadastro

Page 72: Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Linguagens de Programação Prof. Miguel Elias Mitre Campista miguel

Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

Exemplo 1: Cadastro

Page 73: Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Linguagens de Programação Prof. Miguel Elias Mitre Campista miguel

Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

Exemplo 1: Cadastro

Page 74: Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Linguagens de Programação Prof. Miguel Elias Mitre Campista miguel

Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

Exemplo 1: Cadastro

Page 75: Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Linguagens de Programação Prof. Miguel Elias Mitre Campista miguel

Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

Exemplo 2: Agenda

• Escreva uma agenda em C++ para armazenar em memória três cadastros contendo nome, telefone e endereço. Uma classe Agenda deve ser criada e nela três cadastros devem ser inseridos. Cada cadastro é um objeto da classe Cadastro.

?

Page 76: Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Linguagens de Programação Prof. Miguel Elias Mitre Campista miguel

Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

Exemplo 2: Agenda

Page 77: Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Linguagens de Programação Prof. Miguel Elias Mitre Campista miguel

Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

Exemplo 2: Agenda

Page 78: Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Linguagens de Programação Prof. Miguel Elias Mitre Campista miguel

Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

Exemplo 2: Agenda

Page 79: Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Linguagens de Programação Prof. Miguel Elias Mitre Campista miguel

Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

Exemplo 2: Agenda

Page 80: Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Linguagens de Programação Prof. Miguel Elias Mitre Campista miguel

Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

Exemplo 2: Agenda

Page 81: Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Linguagens de Programação Prof. Miguel Elias Mitre Campista miguel

Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

Exemplo 2: Agenda

Page 82: Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Linguagens de Programação Prof. Miguel Elias Mitre Campista miguel

Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

Exemplo 2: Agenda

Page 83: Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Linguagens de Programação Prof. Miguel Elias Mitre Campista miguel

Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

Exemplo 2: AgendaArquivo Makefile

Page 84: Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Linguagens de Programação Prof. Miguel Elias Mitre Campista miguel

Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista

Leitura Recomendada

• Capítulos 4 e 5 do livro– Deitel, “C++ How to Program”, 5th edition, Editora

Prentice Hall, 2005