Pearson Education Slide 1. Pearson Education Slide 2 Cap í tulo 1 Criado por Frederick H....

Preview:

Citation preview

Pearson Education Slide 1

Pearson Education Slide 2

Capítulo 1

Criado por Frederick H. Colclough, Colorado Technical University

Fundamentos do C++

Pearson Education Slide 3

Objetivos do Estudo Introdução ao C++

Origens, Programação Orientada a Objetos, Terminologia

Variáveis, Expressões e Declarações deAtribuição

Entrada/Saída de Terminal Estilo de Programa Bibliotecas e Namespaces

Pearson Education Slide 4

Introdução ao C++ Origens da Lingugem C++

Linguagens de Baixo Nível Máquina, assembly

Linguagens de Alto Nível C, C++, ADA, COBOL, FORTRAN

C++ e Programação Orientada a Objetos Terminologia do C++

Programas e funções Entrada/Saída básica (E/S) com cin e cout

Pearson Education Slide 5

Amostra de Programa em C++

Painel 1.1página 3

Pearson Education Slide 6

Variáveis em C++ Identificadores em C++

Palavras-chave/reservadas vs. identificadores Distinção entre maiúsculas/minúsculas e validade dos Identificadores Nomes com significado!

Variáveis Um local na memória para armazenar dados

para um programa Todas devem ser declaradas antes de serem

usadas em um programa

Pearson Education Slide 7

Tipos de Variáveis Tipos Simples

Painel 1.2

página 6

Pearson Education Slide 8

Declarações de Variáveis Inicializando variáveis em declarações de atribuição

Resulta ‘indefinida’ se você não declarar! int meuValor = 0;

Declarações de atribuição Lvalues (lado esquerdo) & Rvalues (lado direito)

Lvalues devem ser variáveis Rvalues podem ser qualquer expressão Exemplo:

distancia = velocidade * tempo;Lvalue: ‘distancia’Rvalue: ‘velocidade * tempo’

Pearson Education Slide 9

Declarações de Variáveis : Abreviada Notações

AbreviadasPainel página 9

Pearson Education Slide 10

Regras de Declarações de Variáveis Compatibilidade de Atribuição

Má Combinação de Tipos Regra Geral: Não se pode armazenar o valor de um

tipo em uma variável de outro tipo intVariavel = 2.99; // 2 é atribuído a intVariavel!

Somente a parte inteira “encaixa” Chamada “implícito” ou “conversão automática de tipo”

Literais 2, 5.75, “Z”, “Olá Mundo” Considerados “constantes”: não podem mudar de valor

Pearson Education Slide 11

Literais Literais

Exemplos: 2 // Constante Literal int 5.75 // Constante Literal double “Z” // Constante Literal char “Olá Mundo” // Constante Literal string

Não podem mudar de valor durante a execução Chamados de “literais” porque você

“literal-mente os digita” em seu programa!

Pearson Education Slide 12

Seqüências de Escape

Conjunto de caracteres “Extendidos” Contrabarra, \ precedendo um caracter

Instrui o compilador: Um ‘caracter de escape’especial está vindo

O caractere seguinte é tratado comouma ‘seqüência de escape’

Painel 1.3 no próximo slide

Pearson Education Slide 13

Seqüências de Escape (cont.)

Painel 1.3 Página 12

Pearson Education Slide 14

Constantes Dando nomes a constantes

Constantes estão “OK”, mas fornecem poucosignificado.

Ex.: Ver 24 em um prg, não nos diz nada sobreo que ele representa

Em vez disso, utilize constantes nomeadas Nome significativo para representar o dado

const int NUMERO_DE_ESTUDANTES = 24; Chamada de ‘constante declarada’ ou ‘nomeada’ Agora use seu nome sempre que precisar no prg Vantagem: mudanças de valor resultam em um conserto

Pearson Education Slide 15

Operadores Aritméticos Operadores

Aritméticos Padrão Regras de

Precedência – Regras Padrões

Painel 1.4página 13

Pearson Education Slide 16

Precisão Aritmética Precisão dos Cálculos

Consideração MUITO importante! Expressões em C++ podem não ser avaliadas

como esperado! ‘Operandos de ordem maior’ determinam o tipo

de ‘precisão’ aritmética apresentada Armadilha comum!

Pearson Education Slide 17

Exemplos de Presisão Aritmética Exemplos:

17 / 5 é igual a 3 em C++! Ambos os operandos são inteiros Um divisão de inteiro é executada!

17.0 / 5 é igual a 3.4 em C++! O operando de ordem maior é do ‘tipo double’ Uma divisão com precisão ‘double’ é executada!

int intVariavel1 =1, intVariavel2=2;intVariavel1 / intVariavel2;

Executa uma divisão de inteiro! Resulta: 0!

Pearson Education Slide 18

Precisão Aritmética Individual Cálculos feitos “um-a-um”

1 / 2 / 3.0 / 4 executa 3 divisões separadas. Primeiro 1 / 2 é igual a 0 Então 0 / 3.0 é igual a 0.0 Então 0.0 / 4 é igual a 0.0!

Assim, não é necessariamente suficiente mudar somente ‘um operando’ em uma expressão grande

Devem-se ter em mente todos os cálculos individuais que serão executados durante aoperação!

Pearson Education Slide 19

Conversões de Tipo (Casting) Casting para Variáveis

Pode-se adicionar ‘.0’ às literais para forçar a precisão aritmética, mas e quanto às variáveis?

Não podemos usar ‘meuInteiro.0’! static_cast<double>intVariavel Explicitamente “converte” intVariavel para o tipo double O resultado da conversão é usado

Exemplo de expressão:doubleVariavel = static_cast<double>intVariavel1 / intVariavel2; Casting força a divisão de precisão dupla entre duas

variáveis do tipo inteiro!

Pearson Education Slide 20

Conversões de Tipo (Casting) Dois Tipos

Implícita – também chamada “Automática” Feita PARA você, de forma automática

17 / 5.5Esta expressão causa uma ‘conversão de tipoimplícito’, convertendo o 17 17.0

Conversão de Tipo Explícita O programador especifica a conversão com o

operador de conversão (double)17 / 5.5A mesma expressão acima usando

uma con-versão explícita (double) meuInteiro / meuDoubleUso mais comum; Operador de conversão sobre a variável

Pearson Education Slide 21

Operadores Abreviados Operadores de Incremento e

Decremento Somente notação abreviada Operador de Incremento, ++

intVariavel ++; é equivalente aintVariavel = intVariavel + 1;

Operador de Decremento, --intVariavel--; é equivalente a intVariavel = intVariavel – 1;

Pearson Education Slide 22

Operadores Abreviados : Duas Opções Pós-Incremento

intVariavel++ Usa o valor atual da variável, ENTÃO incrementa-a

Pré-Incremento++intVar

Incrementa a variável primeiro, ENTÃO usa o novo valor

“Uso” é definido como qualquer “contexto”

Nenhuma diferença se “sozinho” na expressão:intVariavel++; e ++intVariavel; resultado idêntico

Pearson Education Slide 23

Pós-Incremento em Ação Pós-Incremento em Expressões:

int n = 2,valorProduzido;

valorProduzido = 2 * (n++);cout << valorProduzido << endl;cout << n << endl;

Este código produzirá a saída:43

Desde que tenha sido usado pós-incremento

Pearson Education Slide 24

Pré-Incremento em Ação Agora Usando Pré-incremento:

int n = 2,valorProduzido;

valorProduzido = 2 * (++n);cout << valorProduzido << endl;cout << n << endl;

Este código produzirá a saída:63

Porque foi usado pré-incremento

Pearson Education Slide 25

Entrada e Saída de Terminal Objetos E/S cin, cout, cerr Definidos em C++ na Biblioteca chamada

<iostream> Devem conter essas linhas junto ao início do

código: #include <iostream>

using namespace std; Instrui o C++ a usar a biblioteca apropriada,

assim podemos usar os I/O Objetos E/S cin, cout, cerr

Pearson Education Slide 26

Saída de Terminal O que pode ser apresentado como saída?

Qualquer dado pode ser apresentado Variáveis Constantes Literais Expressões (as quais podem conter tudo acima)

cout << numeroDeJogos << “ Jogos realizados.”;2 valores serão apresentados:

‘valor’ da variável numeroDeJogos e astring “Jogos realizados.”

Cascata: múltiplos valores em um cout

Pearson Education Slide 27

Separando Linhas de Saída Novas linhas na saída

Lembre-se: ‘\n’ é a seqüência de escape de caractere de ‘nova linha’

Segundo Método: objeto endl Exemplos:

cout << “Olá Mundo\n”; Envia a string “Olá Mundo” para a tela e a

seqüênciade escape ‘\n’, pulando para a próxima linha

cout << “Olá Mundo” << endl; Apresenta o mesmo resultado

Pearson Education Slide 28

Formatando a Saída Formatando valores numéricos para a saída

Valores podem não ser mostrados como você espera!cout << “O preço é R$” << preco << endl;

Se preco (declarado double) tem o valor 78.5, vocêpode obter: O preço é R$ 78.500000 ou: O preço é R$ 78.5

Precisamos dizer explicitamente ao C++ comoapresentar os números em seu programa!

Pearson Education Slide 29

Formatando Números ‘Fórmula Mágica’ para forçar tamanhos decimais:

cout.setf(ios::fixed);cout.setf(ios::showpoint);cout.precision(2);

Estas linhas forçam todos os comandos cout’s: Terem exatamente dois dígitos após o ponto decimal

Exemplo:cout << “O preço é R$ << preco << endl;

Agora o resultado será: O preço é R$ 78.50

Modifique a precisão ‘como você precisar’!

Pearson Education Slide 30

Saída de Erro Saída com cerr

cerr é utilizado como cout Fornece o mecanismo para distinguir entre

uma saída regular e uma saída de erro Redireciona a saída

A maioria dos sistemas permite que cout and cerr sejam ‘redirecionados’ para outros dispositivos

Ex.: Impressora, Arquivo, Terminal de erros, etc.

Pearson Education Slide 31

Entrada usando cin cin para entrada, cout para saída Diferenças:

‘>>’ as setas apontam para a direção oposta Pense nelas como ‘apontando na direção para onde os dados vão’

Objeto ‘cin’ usado em vez de ‘cout’ Nenhuma literal é permitida para cin

Deve entrar ‘para uma variável’ cin >> num;

Aguarda na tela por um valor digitado O valor digitado é ‘atribuído ’ à num

Pearson Education Slide 32

Solicitando uma Entrada: cin and cout Sempre ‘solicita’ ao usuário uma entrada

cout << “Entre com o número de dragões: “;cin >> numeroDeDragões;

Nenhum ‘\n’ em cout. O cursor ‘aguarda’ namesma linha por uma entrada digitada:

Entre com o número de dragões : ____

Underscore acima mostra onde a entrada serádigitada

Cada cin tem um cout solicitando dados Faça Entradas/Saídas amigáveis ao usuário

Pearson Education Slide 33

Estilo de Programa Ponto principal: Faça programas fáceis

de ler e modificar Comentários, dois métodos:

// Duas barras indicam que a linha inteira deve ser ignorada /*Delimitadores indicam que tudo entre eles deve ser ignorado*/ Ambos os métodos são usados com frequência

Nomeando Indentificadores MAIÚSCULAS para constantes maisbaixoParaMaisAlto para variáveis Mais importante: NOMES SIGNIFICATIVOS!

Pearson Education Slide 34

Bibliotecas Bibliotecas Padrão em C++ #include <Nome_Biblioteca>

Diretiva para ‘adicionar’ o conteúdo do arquivode biblioteca em seu programa.

Chamado ‘directiva de pré-processor’ Executa antes do compilador e simplesmente

‘copia’ o arquivo de biblioteca em seu programa

C++ tem muitas bibliotecas Entrada/Saída, matemática, strings, etc.

Pearson Education Slide 35

Namespaces Namespaces definidos:

Coleção de definições de nomes Por ora: interesse no namespace ‘std’

Todas as bibliotecas-padrão que usaremos colocam suasdefinições no namespace std

Exemplos:#include <iostream>using namespace std;

Inclui bibliotecas-padrão inteiras de definições de nomes

#include <iostream>using std::cin;using std::cout;

Pode especificar exatamente os objetos que precisamos

Pearson Education Slide 36

Resumo 1 C++ faz diferença entre maiúsculas e

minúsculas Use Nomes Significativos

Para variáveis e constantes Variáveis devem ser declaradas antes do

uso Também devem ser inicializadas

Cuidado na manipulação numérica Precisão, parênteses, ordem das operações

#include C++ bibliotecas necessárias

Pearson Education Slide 37

Resumo 2 Objeto cout

Usado para saída de terminal Objeto cin

Usado para entrada de terminal Objeto cerr

Usado para mensagens de erros Use comentários para ajudar na

compreen-são do seu programa

Não exagere nos comentários

Recommended