Algoritmos C/C++ - Aula 01

10,179 views
9,913 views

Published on

1 Comment
5 Likes
Statistics
Notes
No Downloads
Views
Total views
10,179
On SlideShare
0
From Embeds
0
Number of Embeds
117
Actions
Shares
0
Downloads
0
Comments
1
Likes
5
Embeds 0
No embeds

No notes for slide

Algoritmos C/C++ - Aula 01

  1. 1. Aula 1 Leandro Rezende Carneiro de Mendonça, MSc. Fundamentos do C++
  2. 2. Objetivos do Estudo <ul><li>Introdução ao C++ </li></ul><ul><ul><li>Origens, Programação Orientada a Objetos, Terminologia </li></ul></ul><ul><li>Variáveis, Expressões e Declarações de Atribuição </li></ul><ul><li>Entrada/Saída de Terminal </li></ul><ul><li>Estilo de Programa </li></ul><ul><li>Bibliotecas e Namespaces </li></ul>
  3. 3. Introdução <ul><li>Origens da Lingugem C++ </li></ul><ul><ul><li>Linguagens de Baixo Nível </li></ul></ul><ul><ul><ul><li>Máquina, assembly </li></ul></ul></ul><ul><ul><li>Linguagens de Alto Nível </li></ul></ul><ul><ul><ul><li>C, C++, ADA, COBOL, FORTRAN, RUBY </li></ul></ul></ul><ul><ul><li>C++ e Programação Orientada a Objetos </li></ul></ul><ul><li>Terminologia do C++ </li></ul><ul><ul><li>Programas e funções </li></ul></ul><ul><ul><li>Entrada/Saída básica (E/S) com cin e cout </li></ul></ul>
  4. 4. Exemplo de programa C/C++ <ul><li>Painel 1.1 </li></ul><ul><li>página 3 </li></ul>
  5. 5. Variáveis em C++ <ul><li>Identificadores em C++ </li></ul><ul><ul><li>Palavras-chave/reservadas vs. identificadores </li></ul></ul><ul><ul><li>Distinção entre maiúsculas/minúsculas </li></ul></ul><ul><ul><li>Validade dos Identificadores </li></ul></ul><ul><ul><li>Nomes com significado! </li></ul></ul><ul><li>Variáveis </li></ul><ul><ul><li>Um local na memória para armazenar dados </li></ul></ul><ul><ul><ul><li>para um programa </li></ul></ul></ul><ul><ul><li>Todas devem ser declaradas antes de serem </li></ul></ul><ul><ul><li>usadas em um programa </li></ul></ul>
  6. 6. Tipos de Variáveis <ul><li>Tipos Primitivos </li></ul>Painel 1.2 página 6
  7. 7. Declarações de Variáveis <ul><li>Inicializando variáveis em declarações </li></ul><ul><ul><ul><li>int meuValor = 0; </li></ul></ul></ul><ul><li>Declarações de atribuição </li></ul><ul><ul><li>Lvalues ( lado esquerdo ) & Rvalues ( lado direito )‏ </li></ul></ul><ul><ul><ul><li>Lvalues devem ser variáveis </li></ul></ul></ul><ul><ul><ul><li>Rvalues podem ser qualquer expressão </li></ul></ul></ul><ul><ul><ul><li>Exemplo: distancia = velocidade * tempo; Lvalue: ‘distancia’ Rvalue: ‘velocidade * tempo’ </li></ul></ul></ul>
  8. 8. Atribuições de Variáveis : Abreviada <ul><li>Notações Abreviadas </li></ul>Painel página 9
  9. 9. Regras de Declarações de Variáveis <ul><li>Compatibilidade de Atribuição </li></ul><ul><ul><li>Má Combinação de Tipos </li></ul></ul><ul><ul><ul><li>Regra Geral: Não se pode armazenar o valor de um tipo, em uma variável de outro tipo </li></ul></ul></ul><ul><ul><li>intVariavel = 2.99; // 2 é atribuído a intVariavel! </li></ul></ul><ul><ul><ul><li>Somente a parte inteira “encaixa” </li></ul></ul></ul><ul><ul><ul><li>Chamada “implícita” ou “conversão automática de tipo” </li></ul></ul></ul><ul><ul><li>Constantes e Literais </li></ul></ul><ul><ul><ul><li>2, 5.75, “Z”, “Olá Mundo” </li></ul></ul></ul><ul><ul><ul><li>Constantes: não podem mudar de valor </li></ul></ul></ul>
  10. 10. Constantes e Literais <ul><li>Constantes e Literais </li></ul><ul><ul><li>Exemplos: </li></ul></ul><ul><ul><ul><li>2 // Constante int </li></ul></ul></ul><ul><ul><ul><li>5.75 // Constante double </li></ul></ul></ul><ul><ul><ul><li>“ Z” // Constante Literal char </li></ul></ul></ul><ul><ul><ul><li>“ Olá Mundo” // Constante Literal string </li></ul></ul></ul><ul><li>Não podem mudar de valor durante a execução </li></ul><ul><li>Chamados de “literais” porque você “literal-mente os digita” em seu programa! </li></ul>
  11. 11. Seqüências de Escape <ul><li>Conjunto de caracteres “Extendidos” </li></ul><ul><li>Contrabarra, precedendo um caracter </li></ul><ul><ul><li>Instrui o compilador: Um ‘caracter de escape’ ou especial está vindo </li></ul></ul><ul><ul><li>O caractere seguinte é tratado como uma ‘seqüência de escape’ </li></ul></ul><ul><ul><li>Painel 1.3 no próximo slide </li></ul></ul>
  12. 12. Seqüências de Escape Painel 1.3 Página 12
  13. 13. Constantes <ul><li>Dando nomes a constantes </li></ul><ul><ul><li>const double PI = 3.1415 </li></ul></ul><ul><li>Utilize nomes significativos para constantes </li></ul><ul><ul><li>const int NUMERO_DE_ESTUDANTES = 24; </li></ul></ul><ul><ul><ul><li>Vantagem: mudanças de valor resultam em uma mudança no código apenas </li></ul></ul></ul>
  14. 14. Operadores Aritméticos <ul><li>Operadores Aritméticos Padrão </li></ul><ul><ul><li>Regras de Precedência – Regras Padrões </li></ul></ul>Painel 1.4 página 13
  15. 15. Presisão Aritmética <ul><li>Exemplos: </li></ul><ul><ul><li>17 / 5 é igual a 3 em C++! </li></ul></ul><ul><ul><ul><li>Ambos os operandos são inteiros </li></ul></ul></ul><ul><ul><ul><li>Um divisão de inteiro é executada! </li></ul></ul></ul><ul><ul><li>17.0 / 5 é igual a 3.4 em C++! </li></ul></ul><ul><ul><ul><li>O operando de ordem maior é do ‘tipo double’ </li></ul></ul></ul><ul><ul><ul><li>Uma divisão com precisão ‘double’ é executada! </li></ul></ul></ul><ul><ul><li>int intVariavel1 =1, intVariavel2=2; intVariavel1 / intVariavel2; </li></ul></ul><ul><ul><ul><li>Executa uma divisão de inteiro! </li></ul></ul></ul><ul><ul><ul><li>Resultado = 0 </li></ul></ul></ul>
  16. 16. Precisão Aritmética Individual <ul><li>Cálculos feitos “um-a-um” </li></ul><ul><ul><li>1 / 2 / 3.0 / 4 executa 3 divisões separadas. </li></ul></ul><ul><ul><ul><li>Primeiro  1 / 2 é igual a 0 </li></ul></ul></ul><ul><ul><ul><li>Então  0 / 3.0 é igual a 0.0 </li></ul></ul></ul><ul><ul><ul><li>Então  0.0 / 4 é igual a 0.0! </li></ul></ul></ul><ul><li>Devem-se ter em mente todos os cálculos individuais que serão executados durante a operação </li></ul>
  17. 17. Conversões de Tipo (Casting) <ul><li>Casting para Variáveis </li></ul><ul><ul><li>Pode-se adicionar ‘.0’ às literais para forçar a precisão aritmética, mas e quanto às variáveis? </li></ul></ul><ul><ul><ul><li>Não podemos usar ‘meuInteiro.0’! </li></ul></ul></ul><ul><ul><li>static_cast<double>intVariavel </li></ul></ul><ul><ul><li>Explicitamente “converte” intVariavel para o tipo </li></ul></ul><ul><ul><li>double </li></ul></ul><ul><ul><li>Exemplo de expressão: doubleVariavel = static_cast<double>intVariavel1 / intVariavel2 ; </li></ul></ul><ul><ul><ul><ul><li>Casting força a divisão de precisão dupla entre duas </li></ul></ul></ul></ul><ul><ul><ul><ul><li>variáveis do tipo inteiro! </li></ul></ul></ul></ul>
  18. 18. Conversões de Tipo (Casting)‏ <ul><li>Dois Tipos </li></ul><ul><ul><li>Implícita – também chamada “Automática” </li></ul></ul><ul><ul><ul><li>Feita PARA você, de forma automática 17 / 5.5 Esta expressão causa uma ‘conversão de tipo </li></ul></ul></ul><ul><ul><ul><li>implícito’, convertendo o 17  17.0 </li></ul></ul></ul><ul><ul><li>Explícita </li></ul></ul><ul><ul><ul><li>O programador especifica a conversão com o operador de conversão (double)17 / 5.5 (Uso mais comum); </li></ul></ul></ul>
  19. 19. Operadores Abreviados <ul><li>Operadores de Incremento e Decremento </li></ul><ul><ul><li>Somente notação abreviada </li></ul></ul><ul><ul><ul><li>Operador de Incremento, ++ intVariavel ++; é equivalente a intVariavel = intVariavel + 1; </li></ul></ul></ul><ul><ul><ul><li>Operador de Decremento, -- intVariavel--; é equivalente a intVariavel = intVariavel – 1; </li></ul></ul></ul>
  20. 20. Operadores Abreviados : Duas Opções <ul><li>Pós-Incremento intVariavel++ </li></ul><ul><ul><li>Usa o valor atual da variável, ENTÃO incrementa-a </li></ul></ul><ul><li>Pré-Incremento ++intVar </li></ul><ul><ul><li>Incrementa a variável primeiro, ENTÃO usa o novo valor </li></ul></ul>
  21. 21. Pós-Incremento em Ação <ul><li>Pós-Incremento em Expressões: int n = 2, valorProduzido; valorProduzido = 2 * (n++); cout << valorProduzido << endl; cout << n << endl; </li></ul><ul><ul><li>Este código produzirá a saída: 4 3 </li></ul></ul><ul><ul><li>Desde que tenha sido usado pós-incremento </li></ul></ul>
  22. 22. Pré-Incremento em Ação <ul><li>Agora Usando Pré-incremento: int n = 2, valorProduzido; valorProduzido = 2 * (++n); cout << valorProduzido << endl; cout << n << endl; </li></ul><ul><ul><li>Este código produzirá a saída: 6 3 </li></ul></ul><ul><ul><li>Porque foi usado pré-incremento </li></ul></ul>
  23. 23. Entrada e Saída de Terminal <ul><li>Objetos E/S cin, cout, cerr </li></ul><ul><li>Definidos em C++ na Biblioteca chamada <iostream> </li></ul><ul><li>Devem conter essas linhas junto ao início do </li></ul><ul><li>código : </li></ul><ul><ul><li>#include <iostream> using namespace std; </li></ul></ul><ul><ul><li>Instrui o C++ a usar a biblioteca apropriada, </li></ul></ul><ul><ul><li>assim podemos usar os I/O Objetos E/S cin, cout, cerr </li></ul></ul>
  24. 24. Saída de Terminal <ul><li>O que pode ser apresentado como saída? </li></ul><ul><ul><li>Qualquer dado pode ser apresentado </li></ul></ul><ul><ul><ul><li>Variáveis </li></ul></ul></ul><ul><ul><ul><li>Constantes </li></ul></ul></ul><ul><ul><ul><li>Literais </li></ul></ul></ul><ul><ul><ul><li>Expressões (as quais podem conter tudo acima)‏ </li></ul></ul></ul><ul><ul><li>cout << numeroDeJogos << “ Jogos realizados.”; 2 valores serão apresentados: ‘valor’ da variável numeroDeJogos e a string “Jogos realizados.” </li></ul></ul>
  25. 25. Separando Linhas de Saída <ul><li>Novas linhas na saída </li></ul><ul><ul><li>Lembre-se: ‘ ’ é a seqüência de escape de caractere de ‘nova linha’ </li></ul></ul><ul><li>Segundo Método: objeto endl </li></ul><ul><li>Exemplos: cout << “Olá Mundo ”; </li></ul><ul><ul><ul><li>Envia a string “ Olá Mundo ” para a tela e a seqüência de escape ‘ ’, pulando para a próxima linha </li></ul></ul></ul><ul><ul><li>cout << “ Olá Mundo ” << endl; </li></ul></ul><ul><ul><ul><li>Apresenta o mesmo resultado </li></ul></ul></ul>
  26. 26. Formatando a Saída <ul><li>Formatando valores numéricos para a saída </li></ul><ul><ul><li>Valores podem não ser mostrados como você espera ! cout << “O preço é R$” << preco << endl; </li></ul></ul><ul><ul><ul><li>Se preco (declarado double) tem o valor 78.5, você pode obter: </li></ul></ul></ul><ul><ul><ul><ul><li>O preço é R$ 78.500000 ou: </li></ul></ul></ul></ul><ul><ul><ul><ul><li>O preço é R$ 78.5 </li></ul></ul></ul></ul><ul><li>Precisamos dizer explicitamente ao C++ </li></ul>
  27. 27. Formatando Números <ul><li>‘ Fórmula Mágica’ para forçar tamanhos decimais: cout.setf(ios::fixed); cout.setf(ios::showpoint); cout.precision(2); </li></ul><ul><li>Estas linhas forçam todos os comandos cout’s : </li></ul><ul><ul><ul><li>Terem exatamente dois dígitos após o ponto decimal </li></ul></ul></ul><ul><ul><li>Exemplo: cout << “O preço é R$ << preco << endl; </li></ul></ul><ul><ul><ul><li>O preço é R$ 78.50 </li></ul></ul></ul>
  28. 28. Saída de Erro <ul><li>Saída com cerr </li></ul><ul><ul><li>cerr é utilizado como cout </li></ul></ul><ul><ul><li>Fornece o mecanismo para distinguir entre uma saída regular e uma saída de erro </li></ul></ul><ul><li>Redireciona a saída </li></ul><ul><ul><li>A maioria dos sistemas permite que cout and cerr </li></ul></ul><ul><ul><li>sejam ‘redirecionados’ para outros dispositivos </li></ul></ul><ul><ul><ul><li>Ex.: Impressora, Arquivo, Terminal de erros, etc. </li></ul></ul></ul>
  29. 29. Entrada usando cin <ul><li>cin para entrada, cout para saída </li></ul><ul><li>Diferenças: </li></ul><ul><ul><li>‘ >>’ as setas apontam para a direção oposta </li></ul></ul><ul><ul><ul><li>Pense nelas como ‘apontando na direção para onde os dados vão’ </li></ul></ul></ul><ul><ul><li>Objeto ‘cin’ usado em vez de ‘cout’ </li></ul></ul><ul><ul><li>Nenhuma literal é permitida para cin </li></ul></ul><ul><ul><ul><li>Deve entrar ‘para uma variável’ </li></ul></ul></ul><ul><li>cin >> num; </li></ul><ul><ul><li>Aguarda na tela por um valor digitado </li></ul></ul><ul><ul><li>O valor digitado é ‘atribuído ’ à num </li></ul></ul>
  30. 30. Solicitando uma Entrada: cin and cout <ul><li>Sempre ‘solicita’ ao usuário uma entrada cout << “Entre com o número de dragões: “; cin >> numeroDeDragões; </li></ul><ul><ul><li>Nenhum ‘ ’ em cout. O cursor ‘aguarda’ na mesma linha por uma entrada digitada: </li></ul></ul><ul><ul><ul><li> Entre com o número de dragões : ____ </li></ul></ul></ul><ul><ul><ul><li>Underscore acima mostra onde a entrada será digitada </li></ul></ul></ul><ul><li>Cada cin tem um cout solicitando dados </li></ul><ul><ul><li>Faça Entradas/Saídas amigáveis ao usuário </li></ul></ul>
  31. 31. Estilo de Programa <ul><li>Comentários, dois métodos: </li></ul><ul><ul><li>// Duas barras indicam que a linha inteira deve ser ignorada </li></ul></ul><ul><ul><li>/* Delimitadores indicam que tudo entre eles deve ser ignorado */ </li></ul></ul><ul><ul><li>Ambos os métodos são usados com frequência </li></ul></ul><ul><li>Nomeando Indentificadores </li></ul><ul><ul><li>MAIÚSCULAS para constantes </li></ul></ul><ul><ul><li>maisbaixoParaMaisAlto para variáveis </li></ul></ul><ul><ul><li>Mais importante: NOMES SIGNIFICATIVOS! </li></ul></ul>
  32. 32. Bibliotecas <ul><li>#include <Nome_Biblioteca> </li></ul><ul><ul><li>Diretiva para ‘adicionar’ o conteúdo do arquivo de biblioteca em seu programa. </li></ul></ul><ul><ul><li>Chamado ‘directiva de pré-processor’ </li></ul></ul><ul><ul><ul><li>Executa antes do compilador e simplesmente ‘copia’ o arquivo de biblioteca em seu programa </li></ul></ul></ul><ul><li>C++ tem muitas bibliotecas </li></ul><ul><ul><li>Entrada/Saída, matemática, strings, etc. </li></ul></ul>
  33. 33. Namespaces <ul><li>Namespaces definidos: </li></ul><ul><ul><li>Coleção de definições de nomes </li></ul></ul><ul><li>Por ora: interesse no namespace ‘std’ </li></ul><ul><ul><li>Todas as bibliotecas-padrão que usaremos colocam suas </li></ul></ul><ul><ul><li>definições no namespace std </li></ul></ul><ul><li>Exemplos: #include <iostream> using namespace std; </li></ul><ul><ul><ul><li>Inclui bibliotecas-padrão inteiras de definições de nomes </li></ul></ul></ul><ul><li>#include <iostream>using std::cin; using std::cout; </li></ul><ul><ul><ul><li>Pode especificar exatamente os objetos que precisamos </li></ul></ul></ul>
  34. 34. Resumo 1 <ul><li>C++ faz diferença entre maiúsculas e minúsculas </li></ul><ul><li>Use Nomes Significativos </li></ul><ul><ul><li>Para variáveis e constantes </li></ul></ul><ul><li>Variáveis devem ser declaradas antes do uso </li></ul><ul><ul><li>Também devem ser inicializadas </li></ul></ul><ul><li>Cuidado na manipulação numérica </li></ul><ul><ul><li>Precisão, parênteses, ordem das operações </li></ul></ul><ul><li>#include C++ bibliotecas necessárias </li></ul>
  35. 35. Resumo 2 <ul><li>Objeto cout </li></ul><ul><ul><li>Usado para saída de terminal </li></ul></ul><ul><li>Objeto cin </li></ul><ul><ul><li>Usado para entrada de terminal </li></ul></ul><ul><li>Objeto cerr </li></ul><ul><ul><li>Usado para mensagens de erros </li></ul></ul><ul><li>Use comentários para ajudar a compreender o seu programa </li></ul>

×