Aula 3 C++: variáveis e expressões aritméticas 2017/1 BCC201 Introdução à Computação Turmas 61, 62, 63, 64, 65 e 66, 32 e 33 Puca Huachi Vaz Penna Departamento de Computação Universidade Federal de Ouro Preto http://www.decom.ufop.br/puca puca@iceb.ufop.br
Aula Anterior Linguagens de Programação Linguagens de Máquina Linguagens Assembly Linguagens de Alto-nível Noções de C++ 2 de 33
Introdução ao C++: Comandos de Saída 1 /* 2 Meu primeiro programa : primeiro. cpp 3 Programa que imprime uma mensagem na tela 4 */ 5 # include < iostream > 6 7 // Funç~ao principal. Inicia a execuç~ao do programa 8 int main () 9 { 10 std :: cout << " Hello world!" << std :: endl ; 11 12 return 0; 13 } Saída do programa: Hello world! 3 de 33
Entendendo o Programa O programa primeiro.cpp, escrito em C++ é composto pelos seguintes componentes: Comentários: São ignorados pelo compilador e servem para auxiliar o programador a descrever o programa. Uma linha: // Comentário Uma ou várias linhas: /* Comentário */ Todos os comandos terminam por ; (ponto-e-vírgula). As chaves { e } indicam, respectivamente, o início e o fim de um bloco de comandos. Os comandos da linguagem são palavras reservadas (também chamados palavras-chave) e são escritos em letras minúsculas. 4 de 33
Entendendo o Programa A diretiva de compilação #include <iostream>, informa ao compilador que ele deve incluir a biblioteca iostream (Input/Output stream) durante o processo de compilação. int main(): declara a função principal main() do tipo int (número inteiro). O comando std::cout imprime o texto na saída padrão (tela). O operador :: separa o namespace std do objeto cout. Utiliza o operador << para inserir o texto no stream cout. O comando endl (end line), também do namespace std pula para o início da próxima linha. O comando return finaliza o programa retornando o valor 0. 5 de 33
Introdução ao C++: Comandos de Saída 1 /* 2 Meu primeiro programa : primeiro. cpp 3 Programa que imprime uma mensagem na tela 4 */ 5 # include < iostream > 6 7 // Funç~ao principal. Inicia a execuç~ao do programa 8 int main () 9 { 10 std :: cout << " Hello " << " world!" << std :: endl ; 11 12 return 0; 13 } Saída do programa: Hello world! 6 de 33
Introdução ao C++ 7 de 33
Declaração de Variáveis int number1 O identificador number1 é o nome da variável. Toda variável tem um nome, um tipo e um valor. Uma variável é uma locação na memória do computador onde pode-se armazenar um valor. O tipo int especifica que o valor armazenado é do tipo inteiro (valor inteiro). Se já existir um valor armazenado na variável e um novo valor é atribuído a está variável, esse valor sobrescreve o valor anterior naquela locação. Uma variável deve ser declarada com um nome e um tipo de dado, antes de ser usada no programa. Pode-se declarar várias variáveis em uma mesma linha: int number1, number2, sum 8 de 33
Declaração de Variáveis Identificadores é o nome de uma variável, e não pode ser uma palavra-chave. é formado por uma combinação de letras, dígitos e sublinhado (underline), começando com uma letra. case sensitive: as letras maiúsculas e minúsculas são diferentes. para assegurar a portabilidade use no máximo 31 caracteres. escolha nomes significativos para aprimorar a documentação do programa. 9 de 33
Declaração de Variáveis Tipos fundamentais double especifica os números reais; 3.4, -0.985, etc. char armazena um único caractere minúsculo ou maiúsculo, um dígito, ou um caractere especial ( $ * @ ). int armazena um número inteiro. Os tipos fundamentais são palavras reservadas e são escritos em letra minúscula. 10 de 33
Declaração de Variáveis Onde declarar? podem ser colocadas em qualquer lugar no programa, mas devem aparecer antes que as variáveis correspondentes sejam usadas no programa. Exemplo 1 Exemplo 2 int x; int x; x = 80; int y; cout << x; x = 80; int y; y = 60; y = 60; cout << x; cout << y; cout << y; 11 de 33
Declaração de Variáveis Os tipos de variáveis podem ocupar tamanhos diferentes na memória, dependo do tipo, exemplo: Tipo Bytes Intervalo short 2 32.768 a 32.767 int 4-2.147.483.648 a 2.147.483.647 long 4-2.147.483.648 a 2.147.483.647 float 4 1, 2 10 38 a 3, 4 10 +38 double 8 2, 2 10 308 a 1, 8 10 +308 12 de 33
Entrada de dados Obtendo valores digitados pelo usuários: std::cout << Enter first integer: ; std::cout é usado para escrever uma mensagem na tela para explicar ao usuário o que ele deve digitar. std::cin >> number1; std::cin em conjunto com o operador de extração ( >> ) do stream std::cin recebe um valor do teclado e armazena na variável number1. 13 de 33
Entrada de dados Obtendo valores digitados pelo usuários: std::cout << Enter first integer: ; std::cout é usado para escrever uma mensagem na tela para explicar ao usuário o que ele deve digitar. std::cin >> number1; std::cin em conjunto com o operador de extração ( >> ) do stream std::cin recebe um valor do teclado e armazena na variável number1. 14 de 33
Operador de atribuição sum = number1 + number2; O símbolo = é um operador de atribuição. avalia-se a expressão matemática do lado direito do = e atribui-se o resultado à variável do lado esquerdo. = e + são operadores binários; requerem dois operandos. Obs.: coloque espaços em branco em ambos os lados de um operador binário, para facilitar a leitura do programa. 15 de 33
Saída de dados Exibindo o resultado: std::cout << Sum is << sum << std::endl; std::endl manipulador de stream, fim de linha (similar ao \n). Faz a saída de uma nova linha, e a seguir, descarrega o buffer de saída. Em alguns sistemas a saída fica acumulada até que haja uma quantidade viável para ser exibida na tela; o endl força a saída. 16 de 33
Exemplo de um programa C++ 1 # include < iostream > 2 # include < clocale > // Para a funç~ao setlocale 3 using namespace std ; 4 5 int main () 6 { 7 setlocale ( LC_ALL, " Portuguese "); 8 9 int evento = 5; // inicializa evento com 5 10 char corrida = C ; // inicializa corrida com C 11 float tempo = 27. 24; // inicia tempo com 27. 24 12 13 cout << "\ no tempo vitorioso na eliminatória " 14 << corrida << " da competiç~ao " << evento 15 << " foi " << tempo << " minutos " << endl ; 16 17 return 0; 18 } 17 de 33
Operadores aritméticos Operador módulo % : resulta no resto da divisão inteira (somente usado com operandos inteiros); Por exemplo: 7 % 4 é igual a 3 18 de 33
Operadores aritméticos Regras da Precedência de Operadores São as mesma da álgebra: 1. os operadores nas expressões entre parênteses são avaliados primeiro; o parênteses também quebra a precedência de um operador. 2. a seguir, aplicam-se as operações de multiplicação, divisão e operações de módulo. Se uma expressão contém vários desses operadores, as operações são aplicadas da esquerda para a direita. 3. Por último aplicam-se a adição e a subtração. Também, se há vários + e, a aplicação ocorre da esquerda para a direita. 19 de 33
Operadores aritméticos Regras da Precedência de Operadores 20 de 33
Operadores aritméticos Ordem de avaliação das expressões aritméticas 21 de 33
Ordem de avaliação 22 de 33
Tomada de decisões Permite a um programa realizar uma ação alternativa, a partir de um resultado verdadeiro ou falso produzido por uma condição. As condições são formadas utilizando-se os operadores de igualdade e os operadores relacionais. Ambos operadores de igualdade têm o mesmo nível de precedência, o qual é inferior ao dos operadores relacionais, e associam-se da esquerda para a direita 23 de 33
Operadores de igualdade e relacionais 24 de 33
Erro Comum em Programação Confundir o operador de igualdade == Com o operador de atribuição = 25 de 33
Expressões booleanas no século 18, George Boole, matemático e filósofo britânico, desenvolveu um sistema algébrico lógico, que passou a ser conhecido como Álgebra de Boole. base para a lógica dos computadores digitais modernos. nesse sistema, as expressões lógicas (expressões booleanas) possuem o valor true ou false. em computação as expressões booleanas são também chamadas de condições. para manter a compatibilidade com C, os inteiros também são usados como valores booleanos: qualquer valor não nulo (1) representa true; e 0 representa false. 26 de 33
Expressões booleanas compostas na matemática, podemos restringir uma temperatura a um intervalo fechado, 0 temp 100 em C++ não podemos representar essa expressão por: 0 <= temp <= 100 embora ela seja uma expressão C++ válida! por exemplo, suponha que temp = 150; (não está no intervalo definido, logo esperamos que o resultado da expressão seja falso). 27 de 33
Expressões booleanas compostas os operadores relacionais são associativos a esquerda. A expressão será processada da seguinte forma: 0 } <= {{ 150 } <= 100 (a) a expressão (a) resulta em true, que é representado em C++ pelo inteiro 1. Assim, na segunda etapa da avaliação, a expressão resulta em: 1 <= 100 que também é verdadeira e resulta em true. Entretanto, a expressão original deveria resultar falso, como na matemática. 28 de 33
Expressões booleanas compostas Para solucionar esse problema, reescrevemos a desigualdade como: onde, && é um operador lógico. (temp >= 0) && (temp <= 100) utilizamos os operadores lógicos para combinar as expressões booleanas, formando assim, as expressões booleanas compostas. 29 de 33
Operadores lógicos Operador Expressão Nome Descrição!!p NÃO!p é falso, se p é verd.; (negação)!p é verd., se p é falso. && p && q E p && q é verdadeiro, (conjunção) se ambos, p e q são verd.; e falso, caso contrário. p q OU p q é verdadeiro, (disjunção) se p, q ou ambos é verd.; e falso, caso contrário. 30 de 33
Operadores lógicos Tabela verdade 31 de 33
Operadores lógicos Procedência 32 de 33
Próxima Aula Comando condicionais if - then if - then - else 33 de 33