37
Pearson Education Slide 1

Pearson Education Slide 1. Pearson Education Slide 2 Cap í tulo 1 Criado por Frederick H. Colclough, Colorado Technical University Fundamentos do C++

Embed Size (px)

Citation preview

Page 1: 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 1

Page 2: 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 2

Capítulo 1

Criado por Frederick H. Colclough, Colorado Technical University

Fundamentos do C++

Page 3: 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

Page 4: 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 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

Page 5: 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 5

Amostra de Programa em C++

Painel 1.1página 3

Page 6: 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 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

Page 7: 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 7

Tipos de Variáveis Tipos Simples

Painel 1.2

página 6

Page 8: 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 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’

Page 9: 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 9

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

AbreviadasPainel página 9

Page 10: 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 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

Page 11: 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 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!

Page 12: 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 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

Page 13: 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 13

Seqüências de Escape (cont.)

Painel 1.3 Página 12

Page 14: 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 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

Page 15: 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 15

Operadores Aritméticos Operadores

Aritméticos Padrão Regras de

Precedência – Regras Padrões

Painel 1.4página 13

Page 16: 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 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!

Page 17: 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 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!

Page 18: 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 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!

Page 19: 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 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!

Page 20: 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 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

Page 21: 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 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;

Page 22: 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 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

Page 23: 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 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

Page 24: 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 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

Page 25: 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 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

Page 26: 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 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

Page 27: 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 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

Page 28: 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 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!

Page 29: 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 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’!

Page 30: 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 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.

Page 31: 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 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

Page 32: 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 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

Page 33: 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 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!

Page 34: 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 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.

Page 35: 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 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

Page 36: 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 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

Page 37: 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 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