A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

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

Apresentações semelhantes


Apresentação em tema: "Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Linguagens de Programação Prof. Miguel Elias Mitre Campista"— Transcrição da apresentação:

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

2 Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Parte III Introdução à Programação em C++ (Continuação)

3 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

4 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

5 Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Nono Exemplo utilizando Classes em C++

6 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

7 Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Nono Exemplo utilizando Classes em C++

8 Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Nono Exemplo utilizando Classes em C++

9 Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Nono Exemplo utilizando Classes em C++ Declaração das variáveis contadora e acumuladora

10 Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Nono Exemplo utilizando Classes em C++ Inicialização das variáveis

11 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

12 Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Nono Exemplo utilizando Classes em C++

13 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>$./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 2 Entre com a nota 3 Total das 5 notas eh: 11 Media eh: 2 shell>$

14 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

15 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

16 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

17 Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Décimo Exemplo utilizando Classes em C++

18 Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Décimo Exemplo utilizando Classes em C++

19 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

20 Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Décimo Exemplo utilizando Classes em C++

21 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

22 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 para executar uma conversão explícita da variável total. No resultado da divisão prevalece o tipo double

23 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

24 Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Décimo Exemplo utilizando Classes em C++

25 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 Total das 5 notas eh: 4 Media eh: 1.33 Entre com a nota ou -1 para sair: 2 Entre com a nota ou -1 para sair: -1 Total das 5 notas eh: 6 Media eh: 2.00 shell>$

26 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 ( 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

27 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 × 10 3 ) Manipulador de fluxo showpoint –Força a exibição do ponto decimal

28 Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Décimo Primeiro Exemplo utilizando Classes em C++

29 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

30 Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Décimo Primeiro Exemplo utilizando Classes em C++

31 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

32 Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Décimo Primeiro Exemplo utilizando Classes em C++

33 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.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>$

34 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--

35 Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Décimo Primeiro Exemplo utilizando Classes em C++

36 Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Décimo Primeiro Exemplo utilizando Classes em C++ Operadores de incremento

37 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; }

38 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; }

39 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; }

40 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++);

41 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

42 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

43 Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Décimo Segundo Exemplo utilizando Classes em C++

44 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

45 Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Décimo Segundo Exemplo utilizando Classes em C++

46 Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Décimo Segundo Exemplo utilizando Classes em C++ Emprego de um construtor

47 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

48 Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Décimo Segundo Exemplo utilizando Classes em C++

49 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

50 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

51 Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Décimo Segundo Exemplo utilizando Classes em C++

52 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: Entre com o numero de anos: 10 A progressao eh: AnoTotal shell>$

53 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 " ( 'a' ) << endl; O caractere (a) tem valor 97

54 Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Décimo Terceiro Exemplo utilizando Classes em C++

55 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

56 Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Décimo Terceiro Exemplo utilizando Classes em C++

57 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

58 Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Décimo Terceiro Exemplo utilizando Classes em C++

59 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

60 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

61 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

62 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

63 Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Décimo Terceiro Exemplo utilizando Classes em C++

64 Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Décimo Terceiro Exemplo utilizando Classes em C++

65 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 b c ^Z Numero de alunos que receberam cada um dos conceitos: A: 3 B: 2 C: 1 shell>$

66 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

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

68 Uso do manipulador de fluxo boolalpha

69 Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista 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>$

70 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. ?

71 Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Exemplo 1: Cadastro

72 Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Exemplo 1: Cadastro

73 Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Exemplo 1: Cadastro

74 Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Exemplo 1: Cadastro

75 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. ?

76 Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Exemplo 2: Agenda

77 Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Exemplo 2: Agenda

78 Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Exemplo 2: Agenda

79 Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Exemplo 2: Agenda

80 Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Exemplo 2: Agenda

81 Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Exemplo 2: Agenda

82 Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Exemplo 2: Agenda

83 Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Exemplo 2: Agenda Arquivo Makefile

84 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


Carregar ppt "Linguagens de Programação – DEL-Poli/UFRJ Prof. Miguel Campista Linguagens de Programação Prof. Miguel Elias Mitre Campista"

Apresentações semelhantes


Anúncios Google