Linguagens de Programação - GTA / COPPE / UFRJmiguel/docs/lingprog/aula5.pdf · Linguagens de...

85
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

Transcript of Linguagens de Programação - GTA / COPPE / UFRJmiguel/docs/lingprog/aula5.pdf · Linguagens de...

Page 1: Linguagens de Programação - GTA / COPPE / UFRJmiguel/docs/lingprog/aula5.pdf · Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Repetição Controlada por Contador

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 - GTA / COPPE / UFRJmiguel/docs/lingprog/aula5.pdf · Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Repetição Controlada por Contador

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

Parte IV

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

Page 3: Linguagens de Programação - GTA / COPPE / UFRJmiguel/docs/lingprog/aula5.pdf · Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Repetição Controlada por Contador

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 - GTA / COPPE / UFRJmiguel/docs/lingprog/aula5.pdf · Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Repetição Controlada por Contador

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 - GTA / COPPE / UFRJmiguel/docs/lingprog/aula5.pdf · Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Repetição Controlada por Contador

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

Nono Exemplo utilizando Classes em C++

Page 6: Linguagens de Programação - GTA / COPPE / UFRJmiguel/docs/lingprog/aula5.pdf · Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Repetição Controlada por Contador

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 - GTA / COPPE / UFRJmiguel/docs/lingprog/aula5.pdf · Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Repetição Controlada por Contador

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

Nono Exemplo utilizando Classes em C++

Page 8: Linguagens de Programação - GTA / COPPE / UFRJmiguel/docs/lingprog/aula5.pdf · Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Repetição Controlada por Contador

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

Nono Exemplo utilizando Classes em C++

Page 9: Linguagens de Programação - GTA / COPPE / UFRJmiguel/docs/lingprog/aula5.pdf · Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Repetição Controlada por Contador

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 - GTA / COPPE / UFRJmiguel/docs/lingprog/aula5.pdf · Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Repetição Controlada por Contador

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 - GTA / COPPE / UFRJmiguel/docs/lingprog/aula5.pdf · Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Repetição Controlada por Contador

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 respectivasCalcula a média

ao final do laço de repetição

Page 12: Linguagens de Programação - GTA / COPPE / UFRJmiguel/docs/lingprog/aula5.pdf · Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Repetição Controlada por Contador

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

Nono Exemplo utilizando Classes em C++

Page 13: Linguagens de Programação - GTA / COPPE / UFRJmiguel/docs/lingprog/aula5.pdf · Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Repetição Controlada por Contador

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

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

shell>$ g++ -Wall -c principal.cpp –o principal.oshell>$ g++ -o ex9 gradebook.o principal.oshell>$ ./ex9Warning: Nome “Programacao de Computadores e Sistema s Distribuidos” excede o limite maximo de 25 caracteres...Nome limitado aos primeiros 25 caracteres: Programa cao 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 - GTA / COPPE / UFRJmiguel/docs/lingprog/aula5.pdf · Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Repetição Controlada por Contador

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

Variáveis Não-inicializadas ou Truncadas

• Variáveis não inicializadas– 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 - GTA / COPPE / UFRJmiguel/docs/lingprog/aula5.pdf · Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Repetição Controlada por Contador

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 - GTA / COPPE / UFRJmiguel/docs/lingprog/aula5.pdf · Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Repetição Controlada por Contador

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.: Resultado da divisão de dois inteiros

– Valores de ponto flutuante em geral são apenas aproximações• Calculados com aproximações em série: n = Σ2-i

Page 17: Linguagens de Programação - GTA / COPPE / UFRJmiguel/docs/lingprog/aula5.pdf · Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Repetição Controlada por Contador

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

Exemplo de Aproximação de Ponto Flutuante

Page 18: Linguagens de Programação - GTA / COPPE / UFRJmiguel/docs/lingprog/aula5.pdf · Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Repetição Controlada por Contador

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

Décimo Exemplo utilizando Classes em C++

Page 19: Linguagens de Programação - GTA / COPPE / UFRJmiguel/docs/lingprog/aula5.pdf · Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Repetição Controlada por Contador

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

Décimo Exemplo utilizando Classes em C++

Page 20: Linguagens de Programação - GTA / COPPE / UFRJmiguel/docs/lingprog/aula5.pdf · Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Repetição Controlada por Contador

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 21: Linguagens de Programação - GTA / COPPE / UFRJmiguel/docs/lingprog/aula5.pdf · Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Repetição Controlada por Contador

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

Décimo Exemplo utilizando Classes em C++

Page 22: Linguagens de Programação - GTA / COPPE / UFRJmiguel/docs/lingprog/aula5.pdf · Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Repetição Controlada por Contador

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

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

average agora édouble

O whileexecuta desde que grade não seja igual ao valor de

sentinela -1

Page 23: Linguagens de Programação - GTA / COPPE / UFRJmiguel/docs/lingprog/aula5.pdf · Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Repetição Controlada por Contador

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 24: Linguagens de Programação - GTA / COPPE / UFRJmiguel/docs/lingprog/aula5.pdf · Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Repetição Controlada por Contador

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 25: Linguagens de Programação - GTA / COPPE / UFRJmiguel/docs/lingprog/aula5.pdf · Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Repetição Controlada por Contador

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

Décimo Exemplo utilizando Classes em C++

Page 26: Linguagens de Programação - GTA / COPPE / UFRJmiguel/docs/lingprog/aula5.pdf · Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Repetição Controlada por Contador

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 Sistema s Distribuidos” excede o limite maximo de 25 caracteres...Nome limitado aos primeiros 25 caracteres: Programa cao de ComputadorNome do curso 1 eh: Programacao de ComputadorNome do curso 2 eh: CompIEntre com a nota ou -1 para sair: 2Entre com a nota ou -1 para sair: 1Entre com a nota ou -1 para sair: 1Entre com a nota ou -1 para sair: -1Total das 5 notas eh: 4Media 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 27: Linguagens de Programação - GTA / COPPE / UFRJmiguel/docs/lingprog/aula5.pdf · Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Repetição Controlada por Contador

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 implícita– Conversão de um valor (p. ex., int ) em outro tipo de dado (p. ex., double ) para realizar um cálculo

Page 28: Linguagens de Programação - GTA / COPPE / UFRJmiguel/docs/lingprog/aula5.pdf · Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Repetição Controlada por Contador

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

• Junto com o fixed está relacionado com o número de casas decimais

– 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 29: Linguagens de Programação - GTA / COPPE / UFRJmiguel/docs/lingprog/aula5.pdf · Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Repetição Controlada por Contador

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

Décimo Primeiro Exemplo utilizando Classes em C++

Page 30: Linguagens de Programação - GTA / COPPE / UFRJmiguel/docs/lingprog/aula5.pdf · Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Repetição Controlada por Contador

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 31: Linguagens de Programação - GTA / COPPE / UFRJmiguel/docs/lingprog/aula5.pdf · Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Repetição Controlada por Contador

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

Décimo Primeiro Exemplo utilizando Classes em C++

Page 32: Linguagens de Programação - GTA / COPPE / UFRJmiguel/docs/lingprog/aula5.pdf · Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Repetição Controlada por Contador

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 33: Linguagens de Programação - GTA / COPPE / UFRJmiguel/docs/lingprog/aula5.pdf · Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Repetição Controlada por Contador

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

Décimo Primeiro Exemplo utilizando Classes em C++

Page 34: Linguagens de Programação - GTA / COPPE / UFRJmiguel/docs/lingprog/aula5.pdf · Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Repetição Controlada por Contador

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 35: Linguagens de Programação - GTA / COPPE / UFRJmiguel/docs/lingprog/aula5.pdf · Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Repetição Controlada por Contador

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 36: Linguagens de Programação - GTA / COPPE / UFRJmiguel/docs/lingprog/aula5.pdf · Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Repetição Controlada por Contador

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

Décimo Primeiro Exemplo utilizando Classes em C++

Page 37: Linguagens de Programação - GTA / COPPE / UFRJmiguel/docs/lingprog/aula5.pdf · Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Repetição Controlada por Contador

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

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

Page 38: Linguagens de Programação - GTA / COPPE / UFRJmiguel/docs/lingprog/aula5.pdf · Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Repetição Controlada por Contador

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 39: Linguagens de Programação - GTA / COPPE / UFRJmiguel/docs/lingprog/aula5.pdf · Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Repetição Controlada por Contador

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 40: Linguagens de Programação - GTA / COPPE / UFRJmiguel/docs/lingprog/aula5.pdf · Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Repetição Controlada por Contador

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 41: Linguagens de Programação - GTA / COPPE / UFRJmiguel/docs/lingprog/aula5.pdf · Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Repetição Controlada por Contador

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 42: Linguagens de Programação - GTA / COPPE / UFRJmiguel/docs/lingprog/aula5.pdf · Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Repetição Controlada por Contador

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 43: Linguagens de Programação - GTA / COPPE / UFRJmiguel/docs/lingprog/aula5.pdf · Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Repetição Controlada por Contador

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 44: Linguagens de Programação - GTA / COPPE / UFRJmiguel/docs/lingprog/aula5.pdf · Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Repetição Controlada por Contador

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

Décimo Segundo Exemplo utilizando Classes em C++

Page 45: Linguagens de Programação - GTA / COPPE / UFRJmiguel/docs/lingprog/aula5.pdf · Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Repetição Controlada por Contador

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 46: Linguagens de Programação - GTA / COPPE / UFRJmiguel/docs/lingprog/aula5.pdf · Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Repetição Controlada por Contador

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

Décimo Segundo Exemplo utilizando Classes em C++

Page 47: Linguagens de Programação - GTA / COPPE / UFRJmiguel/docs/lingprog/aula5.pdf · Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Repetição Controlada por Contador

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

Décimo Segundo Exemplo utilizando Classes em C++

Emprego de um construtor

Page 48: Linguagens de Programação - GTA / COPPE / UFRJmiguel/docs/lingprog/aula5.pdf · Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Repetição Controlada por Contador

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 49: Linguagens de Programação - GTA / COPPE / UFRJmiguel/docs/lingprog/aula5.pdf · Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Repetição Controlada por Contador

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

Décimo Segundo Exemplo utilizando Classes em C++

Page 50: Linguagens de Programação - GTA / COPPE / UFRJmiguel/docs/lingprog/aula5.pdf · Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Repetição Controlada por Contador

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 51: Linguagens de Programação - GTA / COPPE / UFRJmiguel/docs/lingprog/aula5.pdf · Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Repetição Controlada por Contador

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 52: Linguagens de Programação - GTA / COPPE / UFRJmiguel/docs/lingprog/aula5.pdf · Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Repetição Controlada por Contador

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

Décimo Segundo Exemplo utilizando Classes em C++

Page 53: Linguagens de Programação - GTA / COPPE / UFRJmiguel/docs/lingprog/aula5.pdf · Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Repetição Controlada por Contador

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.05Entre com o valor principal: 1000.0Entre com o numero de anos: 10A progressao eh:Ano Total

1 1050.002 1102.503 1157.634 1215.515 1276.286 1340.107 1407.108 1477.469 1551.33

10 1628.89

shell>$

Page 54: Linguagens de Programação - GTA / COPPE / UFRJmiguel/docs/lingprog/aula5.pdf · Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Repetição Controlada por Contador

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

Leitura de Caracteres do Teclado

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

– Função istream::get ���� int 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 55: Linguagens de Programação - GTA / COPPE / UFRJmiguel/docs/lingprog/aula5.pdf · Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Repetição Controlada por Contador

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

Décimo Terceiro Exemplo utilizando Classes em C++

Page 56: Linguagens de Programação - GTA / COPPE / UFRJmiguel/docs/lingprog/aula5.pdf · Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Repetição Controlada por Contador

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 57: Linguagens de Programação - GTA / COPPE / UFRJmiguel/docs/lingprog/aula5.pdf · Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Repetição Controlada por Contador

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

Décimo Terceiro Exemplo utilizando Classes em C++

Page 58: Linguagens de Programação - GTA / COPPE / UFRJmiguel/docs/lingprog/aula5.pdf · Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Repetição Controlada por Contador

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 59: Linguagens de Programação - GTA / COPPE / UFRJmiguel/docs/lingprog/aula5.pdf · Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Repetição Controlada por Contador

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

Décimo Terceiro Exemplo utilizando Classes em C++

Page 60: Linguagens de Programação - GTA / COPPE / UFRJmiguel/docs/lingprog/aula5.pdf · Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Repetição Controlada por Contador

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 61: Linguagens de Programação - GTA / COPPE / UFRJmiguel/docs/lingprog/aula5.pdf · Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Repetição Controlada por Contador

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 EOFpode ser um Ctrl+d e em WINDOWS, o

Ctrl+z

Page 62: Linguagens de Programação - GTA / COPPE / UFRJmiguel/docs/lingprog/aula5.pdf · Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Repetição Controlada por Contador

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 63: Linguagens de Programação - GTA / COPPE / UFRJmiguel/docs/lingprog/aula5.pdf · Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Repetição Controlada por Contador

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 ENTERum caractere especial é lido do teclado

Page 64: Linguagens de Programação - GTA / COPPE / UFRJmiguel/docs/lingprog/aula5.pdf · Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Repetição Controlada por Contador

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

Décimo Terceiro Exemplo utilizando Classes em C++

Page 65: Linguagens de Programação - GTA / COPPE / UFRJmiguel/docs/lingprog/aula5.pdf · Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Repetição Controlada por Contador

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

Décimo Terceiro Exemplo utilizando Classes em C++

Page 66: Linguagens de Programação - GTA / COPPE / UFRJmiguel/docs/lingprog/aula5.pdf · Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Repetição Controlada por Contador

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 Sistema s Distribuidos” excede o limite maximo de 25 caracteres...Nome limitado aos primeiros 25 caracteres: Programa cao de ComputadorNome do curso 1 eh: Programacao de ComputadorNome do curso 2 eh: CompIEntre com o conceito.Entre com o caractere EOF para finalizar.aaabbc^ZNumero de alunos que receberam cada um dos conceito s:A: 3B: 2C: 1shell>$

Page 67: Linguagens de Programação - GTA / COPPE / UFRJmiguel/docs/lingprog/aula5.pdf · Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Repetição Controlada por Contador

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 68: Linguagens de Programação - GTA / COPPE / UFRJmiguel/docs/lingprog/aula5.pdf · Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Repetição Controlada por Contador

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

Page 69: Linguagens de Programação - GTA / COPPE / UFRJmiguel/docs/lingprog/aula5.pdf · Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Repetição Controlada por Contador

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

Uso do manipulador de fluxo

boolalpha

Page 70: Linguagens de Programação - GTA / COPPE / UFRJmiguel/docs/lingprog/aula5.pdf · Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Repetição Controlada por Contador

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 71: Linguagens de Programação - GTA / COPPE / UFRJmiguel/docs/lingprog/aula5.pdf · Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Repetição Controlada por Contador

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 72: Linguagens de Programação - GTA / COPPE / UFRJmiguel/docs/lingprog/aula5.pdf · Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Repetição Controlada por Contador

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

Exemplo 1: Cadastro

Page 73: Linguagens de Programação - GTA / COPPE / UFRJmiguel/docs/lingprog/aula5.pdf · Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Repetição Controlada por Contador

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

Exemplo 1: Cadastro

Page 74: Linguagens de Programação - GTA / COPPE / UFRJmiguel/docs/lingprog/aula5.pdf · Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Repetição Controlada por Contador

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

Exemplo 1: Cadastro

Page 75: Linguagens de Programação - GTA / COPPE / UFRJmiguel/docs/lingprog/aula5.pdf · Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Repetição Controlada por Contador

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

Exemplo 1: Cadastro

Page 76: Linguagens de Programação - GTA / COPPE / UFRJmiguel/docs/lingprog/aula5.pdf · Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Repetição Controlada por Contador

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 77: Linguagens de Programação - GTA / COPPE / UFRJmiguel/docs/lingprog/aula5.pdf · Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Repetição Controlada por Contador

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

Exemplo 2: Agenda

Page 78: Linguagens de Programação - GTA / COPPE / UFRJmiguel/docs/lingprog/aula5.pdf · Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Repetição Controlada por Contador

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

Exemplo 2: Agenda

Page 79: Linguagens de Programação - GTA / COPPE / UFRJmiguel/docs/lingprog/aula5.pdf · Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Repetição Controlada por Contador

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

Exemplo 2: Agenda

Page 80: Linguagens de Programação - GTA / COPPE / UFRJmiguel/docs/lingprog/aula5.pdf · Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Repetição Controlada por Contador

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

Exemplo 2: Agenda

Page 81: Linguagens de Programação - GTA / COPPE / UFRJmiguel/docs/lingprog/aula5.pdf · Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Repetição Controlada por Contador

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

Exemplo 2: Agenda

Page 82: Linguagens de Programação - GTA / COPPE / UFRJmiguel/docs/lingprog/aula5.pdf · Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Repetição Controlada por Contador

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

Exemplo 2: Agenda

Page 83: Linguagens de Programação - GTA / COPPE / UFRJmiguel/docs/lingprog/aula5.pdf · Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Repetição Controlada por Contador

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

Exemplo 2: Agenda

Page 84: Linguagens de Programação - GTA / COPPE / UFRJmiguel/docs/lingprog/aula5.pdf · Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Repetição Controlada por Contador

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

Exemplo 2: AgendaArquivo Makefile

Page 85: Linguagens de Programação - GTA / COPPE / UFRJmiguel/docs/lingprog/aula5.pdf · Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Repetição Controlada por Contador

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