Carregar apresentação
A apresentação está carregando. Por favor, espere
1
Linguagens de Programação
Prof. Miguel Elias Mitre Campista Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista
2
Introdução à Programação em C++ (Continuação)
Parte III Introdução à Programação em C++ (Continuação) Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista 2
3
Relembrando da Última Aula...
Definição de classes e objetos Primeiros exemplos de programação orientada a objetos Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista
4
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 Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista
5
Nono Exemplo utilizando Classes em C++
Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista
6
Nono Exemplo utilizando Classes em C++
Função que utiliza variável contadora e acumuladora Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista
7
Nono Exemplo utilizando Classes em C++
Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista
8
Nono Exemplo utilizando Classes em C++
Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista
9
Nono Exemplo utilizando Classes em C++
Declaração das variáveis contadora e acumuladora Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista
10
Nono Exemplo utilizando Classes em C++
Inicialização das variáveis Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista
11
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 Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista
12
Nono Exemplo utilizando Classes em C++
Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista
13
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>$ ./ex9 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 1 Entre com a nota 2 Total das 5 notas eh: 6 Media eh: 1 Entre com a nota 3 Total das 5 notas eh: 11 Media eh: 2 shell>$ Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista
14
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 Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista
15
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 Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista
16
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 Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista
17
Décimo Exemplo utilizando Classes em C++
Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista
18
Décimo Exemplo utilizando Classes em C++
Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista
19
Décimo Exemplo utilizando Classes em C++
Biblioteca para definir a precisão da saída numérica Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista
20
Décimo Exemplo utilizando Classes em C++
Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista
21
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 Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista
22
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 Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista
23
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 Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista
24
Décimo Exemplo utilizando Classes em C++
Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista
25
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 Total das 5 notas eh: 4 Media eh: 1.33 Total das 5 notas eh: 6 Media eh: 2.00 shell>$ Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista
26
Conversão de Tipos Operador de Coerção Unário Promoção
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 Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista
27
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 Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista
28
Décimo Primeiro Exemplo utilizando Classes em C++
Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista
29
Décimo Primeiro Exemplo utilizando Classes em C++
Função para processar os resultados de um exame de uma turma Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista
30
Décimo Primeiro Exemplo utilizando Classes em C++
Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista
31
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 Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista
32
Décimo Primeiro Exemplo utilizando Classes em C++
Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista
33
Décimo Primeiro Exemplo utilizando Classes em C++
shell>$ g++ -c gradebook.cpp –o gradebook.o shell>$ g++ -c principal.cpp –o principal.o shell>$ g++ -o ex11 gradebook.o principal.o shell>$ ./ex11 Entre o resultado (1 = aprovado, 2 = reprovado): 1 Aprovados 10 Reprovados 0 Prova estava mole! shell>$ Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista
34
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 c-- Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista
35
Décimo Primeiro Exemplo utilizando Classes em C++
Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista
36
Décimo Primeiro Exemplo utilizando Classes em C++
Operadores de incremento Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista
37
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; } Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista
38
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; } Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista
39
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; } Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista
40
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++); Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista
41
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++); Uso do ponto e vírgula no lugar do corpo corpo do for Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista
42
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 Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista
43
Décimo Segundo Exemplo utilizando Classes em C++
Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista
44
Décimo Segundo Exemplo utilizando Classes em C++
Função para exibir a progressão de um investimento Função para calcular os juros Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista
45
Décimo Segundo Exemplo utilizando Classes em C++
Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista
46
Décimo Segundo Exemplo utilizando Classes em C++
Emprego de um construtor Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista
47
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 Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista
48
Décimo Segundo Exemplo utilizando Classes em C++
Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista
49
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 Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista
50
Décimo Segundo Exemplo utilizando Classes em C++
Define o formato de saída dos resultados Emprego do for e inicialização da variável contadora ano Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista
51
Décimo Segundo Exemplo utilizando Classes em C++
Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista
52
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: Entre com o numero de anos: 10 A progressao eh: Ano Total shell>$ Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista
53
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 Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista
54
Décimo Terceiro Exemplo utilizando Classes em C++
Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista
55
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 Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista
56
Décimo Terceiro Exemplo utilizando Classes em C++
Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista
57
Décimo Terceiro Exemplo utilizando Classes em C++
Inicialização das variáveis no construtor Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista
58
Décimo Terceiro Exemplo utilizando Classes em C++
Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista
59
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 Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista
60
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 Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista
61
Décimo Terceiro Exemplo utilizando Classes em C++
Entradas podem ser em letras maiúsculas ou minúsculas Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista
62
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 Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista
63
Décimo Terceiro Exemplo utilizando Classes em C++
Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista
64
Décimo Terceiro Exemplo utilizando Classes em C++
Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista
65
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 b c ^Z Numero de alunos que receberam cada um dos conceitos: A: 3 B: 2 C: 1 shell>$ Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista
66
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 Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista
67
Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista
68
Uso do manipulador de fluxo boolalpha
Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista
69
shell>$ g++ gradebook.cpp –o ex14
shell>$ ./ex14 Logico AND (&&) falso && falso: false falso && verdadeiro: false verdadeiro && falso: false verdadeiro && verdadeiro: true Logico OR (||) falso || falso: false falso || verdadeiro: true verdadeiro || falso: true verdadeiro || verdadeiro: true Logico NOT (!) !falso: true !verdadeiro: false shell>$ Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista
70
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. ? Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista
71
Exemplo 1: Cadastro Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista
72
Exemplo 1: Cadastro Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista
73
Exemplo 1: Cadastro Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista
74
Exemplo 1: Cadastro Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista
75
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. ? Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista
76
Exemplo 2: Agenda Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista
77
Exemplo 2: Agenda Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista
78
Exemplo 2: Agenda Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista
79
Exemplo 2: Agenda Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista
80
Exemplo 2: Agenda Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista
81
Exemplo 2: Agenda Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista
82
Exemplo 2: Agenda Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista
83
Exemplo 2: Agenda Arquivo Makefile
Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista
84
Leitura Recomendada Capítulos 4 e 5 do livro
Deitel, “C++ How to Program”, 5th edition, Editora Prentice Hall, 2005 Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista 84
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.