Baixe o app para aproveitar ainda mais
Prévia do material em texto
Algoritmos / Aula 4 Conhecendo alguns elementos de C++ Introdução Esta aula vai mostrar os operadores aritméticos e os tipos de dados que podemos usar. Você também vai entender como funcionam a entrada e a saída em C++. Aproveite a aula e preste atenção aos exemplos! Tipos primitivos Vamos começar a nossa aula com um assunto presente em todas as linguagens de programação: os tipos primitivos. O que é isso? Vamos responder com um exemplo. Imagine que você está navegando na internet e chega a um cadastro como este a baixo. Observe que você tem de preencher campos como: nome, data de nascimento, e-mail, sexo, telefone, identidade, entre outros. Cada cadastro que você encontrar como exemplo na internet possui campos iguais ou semelhantes a esse. CAMPO “SEXO” Quais são os possíveis valores que ele pode assumir de acordo com o formulário? Masculino ou feminino, correto? E provavelmente, no banco de dados, dentro do sistema, ele ficará armazenado como “m” ou “f”. Ou seja, na definição desse formulário, haverá uma variável chamada sexo, a qual poderá guardar apenas dois valores: “m” ou “f”. São caracteres! Logo, a variável sexo não poderá receber valores como “1”, “verdadeiro”, “3.14159266” etc. Somente poderá receber caracteres. Será que existe em C++ um tipo para somente caracteres? Tem. E é chamado de char. E para o campo nome? Poderíamos usar o char? O tipo char tem uma característica: ele guarda apenas um caractere. Logo, o nome “Matusalém” não poderá ser um valor possível para uma variável do tipo char. E agora? Bem, já vimos anteriormente que, quando temos vários caracteres juntos, isso é chamado de string. Temos o tipo string em C++? Não. No caso de C++, para guardar uma string, temos que importar uma biblioteca chamada string. É o mesmo que ocorre com a função cout. Lembra que temos de importar a biblioteca iostream para o cout? No caso da string, a biblioteca é a string! Mas como vou saber isso? Estude a API da linguagem! Lembre-se: a API (application program interface) é o local onde você vai encontrar os recursos disponíveis com toda a documentação para a linguagem que você está usando para programar. E o campo DDD? É uma variável que não pode aceitar letras, nem símbolos especiais, apenas números. Para isso temos o tipo int (inteiro). No exemplo do formulário, por se tratar de uma ficha de inscrição para o Vestibular, não temos campo como altura ou peso, que também são números, mas podem ter valores decimais. Para este caso, usamos o já conhecido float. Em C++, temos os seguintes tipos básicos de variáveis: Temos algumas variações desses tipos, que usam os seguintes modificadores de tipos: Declaração e inicialização de variáveis Em C++, é obrigatório que toda variável usada no programa seja declarada. A declaração reserva o espaço em memória necessário para a alocação do conteúdo que receberá. A sintaxe da declaração de variáveis em C++ é: Atenção Existem algumas regras para a escolha dos nomes de variáveis em C++: Nomes de variáveis só podem conter letras, números e o caractere “_”; Não podem começar com um número; Embora seja possível ter uma variável com o nome “_var” (começando com “_”), estes são reservados para a implementação interna do programa, e seu uso é bem restrito e desaconselhado. O compilador não vai mostrar erro quando criamos variáveis desse jeito, mas o programa criado se comportará de forma inesperada; Não é possível utilizar palavras reservadas da linguagem C++. Vamos listar as palavras reservadas em seguida; Também não é possível criar uma variável que tenha o mesmo nome de uma função, mesmo que essa função tenha sido criada pelo programador ou que seja uma função de biblioteca; Não há limite para o tamanho de nome de variável em C++;Quando criarmos constantes, estas devem ser escritas com todas as letras em maiúsculas. Portanto, as declarações de variáveis a seguir são válidas: int a;char a, b, c;unsigned int x1, x2, media;char _a; Lendo e escrevendo em C++ Já vimos rapidamente como é o comando de saída de dados em C++, certo? Agora, vamos tratar um pouco mais profundamente deste assunto. É muito importante criar formas de orientar o usuário com relação ao que o programa necessita para poder funcionar adequadamente. Ou seja, é importante mostrar mensagens na tela e receber informações do usuário de maneira eficiente. Em C++, o comando que exibe uma mensagem na tela, ou seja, que faz a saída de dados, é o cout. Para esse comando funcionar, vimos que é necessário inserir duas linhas no início dos nossos programas: Seria mais trabalhoso, certo? Então, para escrevermos algo na tela, a função que vamos usar é o cout. Veja alguns exemplos: Comando Vai resultar em: cout<<”Alô mundo”; Alô mundo cout<<”Alo mundo”<<endl; Alô mundo (e pula linha devido ao endl) cout << “Alô mundo\n”; Alô mundo (e pula linha devido ao “\n”) int a=1; cout << “1+1=”<<a+a; 1+1=2 int a=1; cout << “O valor de a=”<<a; O valor de a=1 Observe que tudo que estiver entre aspas, e após o operador <<, será impresso na tela. O comando endl no final do comando faz com que o compilador imprima a string na tela e depois posicione o cursor na linha seguinte. Outro detalhe que percebemos na tabela é que podemos combinar expressões curtas com a string entre aspas. Isto é muito comum, principalmente em programas que mostram resultados de operações ou cálculos feitos durante o programa. Esta foi a saída. A entrada de dados em C++ pode ser feita com a função cin. Esta função faz a leitura de uma sequência de caracteres sem espaços e sem tabulações. Veja o exemplo a seguir, extraído de um programa que calcula a média final de um aluno: 11 cout<<"Digite a primeira nota: "<<endl; 12 cin>>nota1; 13 cout<<"Digite a segunda nota: "<<endl; 14 cin>>nota2; 15 cout<<"Digite a terceira nota: "<<endl; 2 16 cin>>nota3; 17 cout<<"Digite a quarta nota: "<<endl; 18 cin>>nota4; A parte legal do exemplo é que ele mescla comandos cin e cout. Neste caso, as variáveis nota1, nota2, nota3 e nota4 devem ser previamente declaradas. O cin usa o operador >>. O que for colocado após este operador será atribuído na variável usada. Fonte: https://www.youtube.com/_XtNWKWtfmw O código do programa mostrado no vídeo é: include #include using namespace std; int main(void){ string nome; cout<<"Qual eh o seu nome?"<cin>>nome; cout<<"Oi "<return 0; } Saiba mais Vimos que o vídeo mostra o resultado do valor lido na variável nome. Perceba que no código estamos usando duas diretivas para o compilador (nas linhas 1 e 2). Uma carrega a biblioteca para os comandos cin e cout, e a outra carrega a biblioteca para o tipo string. No vídeo, o valor que é armazenado na variável nome é exibido juntamente com a string “Oi _____, tudo bem com você?”. Bem, por enquanto é isso sobre entrada e saída. Simples, né? O cin e cout são bem eficientes e você vai notar que eles são bastante usados em C++ e aparecem na maioria das referências que vamos encontrar sobre a linguagem. É claro que a linguagem oferece outros comandos para escrever e ler informações, mas o cin e cout já dão conta muito bem do recado. Operadores aritméticos em C++ Toda linguagem de programação possui capacidade para fazer contas aritméticas, e com o C++ não é diferente.Na programação de computadores, é possível fazer vários tipos de operações, além das aritméticas. É preciso conhecer o que são operações lógicas, relacionais e outros detalhes para poder construir programas. Temos os seguintes operadores aritméticos em C++. Com eles, podemos fazer as contas mais comuns: Fu nções do C++ Certo, já vimos que existem operadores na linguagem. Mas o que acontece quando precisamos de operações um pouco mais complexas como o cálculo de senos, cossenos, raiz quadrada? Fazer isto em C++? Assim como outras linguagens de programação, o C++ possui funções que auxiliam o programador em algumas tarefas. Da mesma forma que usamos bibliotecas para as strings e para o cin e cout, podemos usar outras bibliotecas para as funções matemáticas. Uma destas bibliotecas é a cmath. Com ela, podemos calcular a raiz quadrada, por exemplo. Observe este programa: SQRT é a forma mnemônica de square root em inglês. Vamos estudar as funções em C++ algumas aulas mais à frente. Novamente você pode perguntar: “Como eu vou saber em qual biblioteca tem o que eu preciso?”. Lembra-se da resposta? A resposta é “estude a API”. Não tem jeito; é muito importante estudar a API da linguagem que você está aprendendo. Operadores lógicos Como já dissemos, na programação existem operações que não são só aritméticas. Em muitos e muitos casos, precisamos criar situações de comparação entre valores, e essa comparação faz parte de um tipo de operação chamada de operação lógica. Esse tipo de operação faz parte de uma lógica chamada proposicional e foi muito estudada por um matemático chamado George Boole. Assim, também ganhou o nome de “álgebra booleana”. Essa álgebra trabalha principalmente com valores booleanos ou lógicos, e basicamente nesta lógica só existem dois valores: verdadeiro (true) ou falso (false). Tudo que conhecemos na computação atual é baseada nessa álgebra. Ela possui propriedades, teoremas e um monte de coisas que excedem o nosso contexto. Mas saiba que ela é muito importante na computação atual. Aliás, quando trabalhamos com a aritmética binária, de certa forma, também estamos trabalhando com a álgebra de Boole, e neste caso normalmente usamos 0 para valores falsos e 1 para verdadeiros. Na álgebra de Boole, temos basicamente três operadores: Na álgebra booleana, usamos um recurso chamado de tabela verdade para mostrar os valores possíveis que as variáveis lógicas podem assumir. A tabela verdade mostra todas as possibilidades combinatórias entre os valores de diversas variáveis lógicas que são encontradas em somente duas situações e um conjunto de operadores lógicos. Nas tabelas verdade a seguir, A e B são proposições. Os operadores lógicos “e” e “ou” em C++ são representados pelos símbolos “&&” e “||” respectivamente. Veja suas tabelas verdades: Guarde essas informações, pois vamos fazer um exemplo mais completo adiante. Saiba mais Duas dicas que pode te ajudar nas operações envolvendo condições lógicas: Em uma expressão envolvendo o operador E (&&), a expressão só será verdadeira se todas as partes da expressão forem verdadeiras. Se contiver uma só que seja falsa, toda a expressão será falsa; Em uma expressão envolvendo o operador OU (||), a expressão só será falsa se todas as partes da expressão forem falsas. Se contiver uma só que seja verdadeira, toda a expressão será verdadeira. Operadores relacionais Os operadores relacionais são usados para fazer comparações entre dois operandos do mesmo tipo primitivo. Esses valores são representados por constantes, variáveis ou expressões aritméticas. Vejamos um exemplo. Considere: a = 1; b = 2; c = verdadeiro; Se fôssemos fazer essas declarações em C++, teríamos: int a = 1; int b = 2; bool c = true; bool é um tipo em C++ e pode assumir os valores booleanos true ou false. Vamos praticar um pouco com uma atividade. Preste atenção e veja algumas situações envolvendo expressões relacionais. Usando os operadores que vimos nesta aula, observe: a) a > b a é maior que b? ( ) Sim / ( ) Não b) b >= a b é maior ou igual a a? ( ) Sim / ( ) Não c) a == b o valor de a é igual ao valor de b? ( ) Sim / ( ) Não GABARITO a) Não b) Sim c) Não Saiba mais Observe que quando estamos comparando a igualdade de dois valores, usamos 2 sinais de igual (==). Operadores relacionais Não se preocupe. A partir das próximas aulas, vamos começar a estudar os comandos de controle de fluxo, e estas condições booleanas sempre aparecerão nos programas e ficarão mais claras para você. Até a próxima aula! Atividade Vamos ver se você está craque! Você consegue simplificar estas expressões? A primeira delas já está feita: !(a==b) é equivalente a (a!=b) !(a!=b) é equivalente a:_________________ !(a>b) é equivalente a:_________________ !(a<b) é equivalente a:_________________ !(a>=b) é equivalente a:_________________ !(a<=b) é equivalente a:_________________ GABARITO b) (a==b) c) (a<=b) d) (a>=b) e) (a>b) f) (a<b) Assinale a alternativa correta: Em C++, quando usamos = é para atribuição, e == é para comparação. O símbolo para o operador “diferente” em C++ é <>. Para armazenar strings em uma variável, usamos o tipo char. Para armazenar valores booleanos, usamos o tipo boolean. O cin e cout são comandos nativos da linguagem C++. GABARITO Em C++, quando usamos = é para atribuição, e == é para comparação. O símbolo para “diferente” em c++ é “!=”.Para armazenar strings, temos que importar a biblioteca string, que contém o tipo string. Para armazenar valores booleanos, o tipo é o bool. O cin e o cout são comandos que estão na biblioteca iostream. Não são nativos. Verifique as afirmações abaixo: I - Em C++, nem todos os recursos de que precisamos estão na linguagem nativa. É necessário incluir algumas bibliotecas quando necessário. II - Em C++, existem quatro tipos de dados nativos: int, float, double e char. III - cout>>”Oi gente!”; é uma linha correta em C++. Qual é a alternativa verdadeira? Somente a i está correta Somente a ii está correta Somente a iii está correta Nenhuma está correta Todas estão corretas GABARITO A afirmação II está incorreta. São cinco tipos nativos em C++: int, float, double, char e bool. A afirmação III está incorreta. O operador “>>” está errado. O correto seria usar o operador “<<”. Observe o seguinte programa em C++: #include int main(void) { string nome; int idade; std::cin >> nome >> idade; std::cout << "\n\nNome " << nome << std::endl; std::cout << "Idade " << idade << std::endl; return 0; } O programa está correto O erro está no uso do std::endl; O erro está no uso geral do std O erro está na linha 5 O erro está na falta de uma biblioteca GABARITO O único problema do programa é que falta incluir a biblioteca string. O restante está correto. Coloque true ou false em cada uma das operações abaixo: 6<=7 3+5<=2*4 “oi” == “OI” (64)^(1/2) > (5)*2 Observação: Quando usamos o “^” estamos nos referindo à exponenciação, ou seja, 3^2 =9. False, false, false, false False, true, true, true True, true, false, false True, true, true, false True, false, true, false GABARITO 6 é menor ou igual a 7, true.8 é menor ou igual a 8, true.“oi” é diferente de “OI” em C++, false.641/2= 8. 8 é menor que 10, false. Idem ao exercício anterior: “mario” == “maria” 2 + 4 = 6 10 - 4 > 7 (2*3)>(3*2) !('a' == 'A') false, false, true, true, true false, true, false, false, false false, false, false, false, false true, false, true, false, false true, true, false, false, false GABARITO “mario” e “maria” são diferentes, false2 + 4 =6, true6>7, false6=6, false‘a’ == ‘A’, isso é true. Colocando o ! na frente da expressão, ela vira false.
Compartilhar