Escolar Documentos
Profissional Documentos
Cultura Documentos
Entendo a programação...
A Informática é uma área que permeia quase todas as outras áreas. Na Engenharia, Agronomia,
Arquitetura e até nas artes podemos encontrar exemplos de aplicações da tecnologia da informação.
EXEMPLO 1
EXEMPLO 2
Para pegar a caneta que está dentro da gaveta da gaveta fechada, precisamos primeiro abrir a
gaveta para depois pegar a caneta.
O pensamento (e a lógica) pode ser expresso por meio da palavra falada ou da palavra escrita.
Um mesmo pensamento pode ser expresso em inúmeros idiomas, tanto oralmente quanto por escrito.
1
Os fluxogramas
Em qualquer tipo de tamanho de projeto, sendo ele de software ou não, é feito um planejamento ou
um esboço do que será desenvolvido.
Esses esboços são muito importantes porque ajudam tanto a equipe de desenvolvimento quanto
o cliente a entender melhor o problema a ser resolvido. Servem também como uma ferramenta de
apoio e linguagem comum entre quem está desenvolvendo e o cliente.
Saiba mais
A representação gráfica possibilita que entendamos, de forma rápida e fácil, uma solução para um
problema e mostra a como as informações ou documentos entre os elementos que participam no
processo são transformadas.
Criação de fluxogramas
1. Suponha que um processo vá ser representado 2. Vamos examinar um exemplo de outra situação:
por um retângulo. E para o início e fim do o objetivo é determinar o valor do saldo no final
desenho, vamos usar um retângulo arredondado. do 3º mês de uma aplicação financeira, com
Sendo assim, para ligar um carro, o desenho do investimento inicial de R$100,00, com juros de 1%
fluxo seria assim: ao mês. Observe o fluxograma a seguir:
2
Você sabe o significado de cada figura nos fluxogramas?
No fluxograma, vimos que existem figuras diferentes, cada uma delas com um significado. Observe:
3
Não diga que é complicado! Ele é apenas um pouco mais elaborado do que os outros e mostra que
nem todas as tarefas são sequenciais.
Ele avalia e calcula as raízes de uma equação do segundo grau. Para que seja possível executar a operação x
= -b/(2*a), é preciso verificar se o valor de a não é zero.
Para terminar, observe que também existem fluxogramas para problemas que não sejam
exclusivamente matemáticos.
A outra forma que vamos estudar, a qual representa uma solução de um problema, é o famoso algoritmo.
Algoritmos
O algoritmo é a representação do pensamento descrito como uma sequência de passos que visam
atingir um objetivo.
4
Escrever um algoritmo é fácil. E quanto mais simples você escrever, mais claro e objetivo ele será.
Como fazemos para trocar uma lâmpada? Trata-se de uma sequência de passos, não é mesmo?
Temos que:
Saiba mais
Dependendo da equipe, do problema ou do projeto, é bom usar uma dessas duas formas (algoritmos ou
fluxogramas), ou até mesmo as duas formas simultaneamente, se for o caso, para poder esclarecer com
precisão a solução de um determinado problema. O algoritmo é muito usado em várias situações. Na
matemática, existem vários tipos de algoritmos, assim como na genética em Biologia e até mesmo na
Administração e Economia.
5
Viu que um algoritmo não precisa ser tão
“matemático” ou “computacional” como o primeiro exemplo?
Ele também serve para documentar qualquer tipo de processo, em qualquer área.
Atenção
Você já entendeu que é possível representar programas de computador ou processos por meio de
figuras (no fluxograma) ou por texto (no caso de algoritmo). É preciso agora entender como de fato os
computadores são programados. Para isto, usamos uma linguagem de programação.
Linguagens de programação
As linguagens de programação
não surgiram recentemente.
Elas fazem parte da história da
computação, de uma maneira
muito marcante.
A figura a seguir mostra um
pequeno resumo de como as
linguagens de programação
surgiram ao longo do tempo,
desde a década de 1960:
Reflexão
Em 1960, não tínhamos a internet na forma como é hoje, logo a linguagem Fortran, que é uma das
primeiras a serem usadas em grande escala, não serve para programar para a internet. Essa linguagem
era voltada para as características de sua época como cálculos científicos e outros. E assim ocorreu com
as outras linguagens. Veja como evoluíram até chegar à linguagem C++, que vamos estudar nesta
disciplina. E veja que o C++ deu origem a duas grandes linguagens muito usadas atualmente: o Java e o
C#.
Muito bem, um estudo introdutório de programação não pode deixar de abordar a plataforma onde
ele vai ser utilizado. O hardware é o parceiro do software, por isso, vamos estudar a organização básica de
computadores, ou seja, vamos ver como ele é por dentro.
Assim como qualquer equipamento moderno como a TV, o telefone, o automóvel e outros, o
computador é fruto direto da evolução tecnológica das últimas décadas. É claro que em 1940, quando
apareceu o primeiro computador, a tecnologia não era como hoje. Naquela época, mal tínhamos a telefonia
como conhecemos hoje, imagine um computador. A história dos computadores é dividida em gerações, e
vamos dar uma rápida olhada em cada uma delas:
Primeira Geração
1943
A primeira geração dos computadores foi marcada pelo ENIAC (Electrical Numerical Integrator and
Calculator). Ele foi criado em 1943 por John Eckert e John Mauchly e era bem diferente do que
conhecemos por um computador atual.
Segunda Geração
1947
A segunda geração dos computadores ficou marcada pelo desenvolvimento do transístor em 1947.
Os transístores oferecem muitas vantagens em relação às válvulas:
6
São muito menores que as válvulas;
Muito mais econômicos;
Muito mais rápidos;
Não esquentam.
1951
Em 1951, foi criado o UNIVAC (Universal Automatic Computer). Os computadores desta época eram
diferentes dos atuais em vários sentidos. Um deles é que os computadores eram construídos com
finalidades muito específicas.
Terceira Geração
Período de 1965 a 1970
Outro grande avanço na eletrônica contribuiu diretamente na arquitetura dos computadores: o
surgimento do circuito integrado (CI), também chamado de microchip.
Quarta Geração
Começo da década de 1970
Os computadores ficam menores ainda e começam a usar o microprocessador, que é um circuito com
vários circuitos eletrônicos presentes internamente.
Dias atuais
Depois da quarta geração, os computadores tiveram uma evolução muito rápida. Assim como a
tecnologia evoluiu em outras áreas, o computador seguiu esta evolução. Porém, mesmo com os
computadores modernos que temos hoje, ultrabooks, tablets, surfaces e outros, sua arquitetura interna
não foi tão modificada assim.
Comentário
Essa arquitetura foi criada por John Von Neumann, um matemático húngaro naturalizado estadunidense
que contribuiu com várias áreas, inclusive a computação. A arquitetura desenvolvida por ele é usada de
uma maneira geral nos computadores mais modernos, inclusive em supercomputadores, com algumas
variações, mas de qualquer forma obedecem ao princípio desenvolvido por Von Neumann.
A arquitetura tem o seguinte diagrama. Von Neumann sugeriu uma forma de organizar o computador
por meio dos seguintes elementos:
7
UMA MEMÓRIA, UMA UNIDADE DE UMA UNIDADE LÓGICA E DISPOSITIVOS DE
DIVIDIDA EM PRIMÁRIA E CONTROLE ARITMÉTICA (ALU) ENTRADA E SAÍDA
SECUNDÁRIA
A memória primária é o Responsável pela Responsável pelos Compreendendo os
que conhecemos como sincronização entre os cálculos e seus discos, pendrives e
RAM: memória de demais componentes. controles. demais dispositivos de
acesso aleatório, armazenamento.
podendo ser escrita e
apagada.
Atividade
GABARITO
1. Armazenamento Secundário
2. Entrada
3. Processamento
4. Processamento
5. Saída
CARACTERISTICAS DE UM ALGORÍTMO
1. A finitude – todo algoritmo deve terminar após um número finito de passos.
2. Definição – cada passo do algoritmo deve ser claramente definido.
3. Entradas – tem que ser nulas ou com algum valor específico.
4. Saídas – O algoritmo tem que ter um número X ou Y de saída.
5. Efetividade – todas operações devem ser simples, de modo que possam ser executadas por
um determinado tempo. E o tempo tem que ser limitado.
8
Algoritmos / Aula 2 - Nosso primeiro programa
O que é um programa?
Um programa nada mais é do que uma sequência de comandos ou ordens dados a um computador.
Mas é bem difícil pegar um microfone e dar ordens verbais para um computador realizar o que queremos.
Então, um programa é um arquivo de texto, feito no mais simples editor de texto que você possuir no
seu computador.
Compilação
Saiba mais
Dizemos que uma linguagem é de alto nível quando conseguimos ler e escrever usando palavras
conhecidas por nós. O C++, por mais que pareça difícil, possui muitas palavras que nós entendemos,
como if (se), while (enquanto), for (para) etc. Portanto, compilar um programa significa converter um
arquivo de texto escrito em uma linguagem de programação em códigos binários pertencentes a uma
plataforma de execução.
Lembre-se: o computador é uma máquina que só entende a linguagem binária. E devido à forma como
os sistemas operacionais são construídos, cada um tem suas peculiaridades.
Vamos supor que a seguinte sequência signifique: “Escreva ‘alô’ na tela” no Linux:
0111010000100010101.
No Mac Os e no Windows, essa sequência pode não significar a mesma coisa; por isso, cada uma das
plataformas tem o seu próprio compilador.
9
Nosso primeiro programa
Vamos começar com um exemplo bem simples. Em muitos livros, tutoriais, videoaulas e afins, o
pessoal costuma criar um programa com a mensagem “Alô, mundo”.
Nosso caso é mais interessante: vamos calcular a média de um aluno baseado em suas 4 notas
bimestrais.
Dê uma olhada nele. Será que, mesmo sem saber programar, você consegue adivinhar o que ele faz?
Embora já tenhamos adiantado, leia o programa desde o começo, tente traduzir as palavras em inglês e
verifique a expressão matemática existente na linha 13.
Iniciando o programa
A linha 1 contém uma palavra que nos indica que ela inicia um programa. Qual seria a palavra?
GABARITO
Se você pensou em main, acertou. Main significa “principal” e, portanto, essa linha indica que
estamos iniciando o programa principal.
Mas e as outras palavras que aparecem na linha, o que significam? Por enquanto, não é hora de
tratarmos delas. Apenas vamos considerar que, para começar um programa em C++, precisamos
escrever o programa principal iniciando tal como está na linha 1.
10
Nosso primeiro programa –
Segundo passo
Float significa flutuar, e como estamos lidando com notas (nota1, nota2, nota3, nota4 e média), isto nos
faz pensar que são números de ponto flutuante (ou números com casas decimais).
Afinal, uma nota de um aluno pode variar de 0 a 10 e ter casas decimais (7.5, 8.25 etc.), certo?
Então, as linhas de 2 a 6 servem para dizer ao compilador que vamos usar 4 palavras para representar as
notas e 1 para a média. O bom é que podemos usar qualquer palavra para essa representação.
Poderíamos ter usado, por exemplo, n1 no lugar de nota1, a2 para nota2 etc., só que teríamos um
problema: elas não iam fazer muito sentido para quem lesse o programa depois.
Porém, a palavra float não pode ser mudada. Ela faz parte de um conjunto próprio da linguagem C++
chamado de palavras reservadas, e não podemos usar palavras que estejam neste conjunto.
11
Nosso primeiro programa – terceiro passo
Continuando... As próximas linhas deixam claro que as palavras que criamos antes, nota1 a nota4, vão
receber alguns valores.
8 nota1 = 7;
9 nota2 = 6;
10 nota3 = 9;
11 nota4 = 5;
Se fosse um caso real, no boletim desse suposto aluno, ele teria tirado estas 4 notas. Mas agora temos uma
pergunta:
13 media = (nota1+nota2+nota3+nota4)/4;
Reflexão
Como cada aluno tem uma nota diferente, temos que esta nota é um valor variável, ou seja, varia de
acordo com o aluno. Logo, o nome destas palavras que usamos é “variável”, e este é um conceito que
existe em qualquer linguagem de programação.
Então, a resposta é: para que o programa possa aceitar outros valores para as variáveis, precisamos de
alguma forma realizar entradas de dados para obter os valores do usuário. Vamos ver isso mais à frente.
Nosso primeiro programa – quinto passo Exatamente. Não tem ainda. Nosso objetivo aqui
Neste momento, você pode estar pensando sobre foi estudar um programa do início ao fim, e o
o programa: programa cumpre o que promete. Vamos estudar
sobre entradas e saídas de dados mais adiante.
12
Em C++, o comando que exibe uma mensagem na tela, ou seja, faz a saída de dados, é o cout. Observe
que na linha 14, após o comando cout, temos o operador “<<”. Tudo o que vier após o “<<” será
impresso na tela. No caso da linha citada, será impresso a string entre aspas.
Pontos importantes
Após verificar como o programa funciona, lembre-se de alguns pontos:
ABRIU? FECHE!
Em todas as linguagens de programação, alguns comandos precisam de caracteres que iniciam outra
expressão ou bloco de informações ou comandos. É o caso dos caracteres (, [, {, “, ‘e, dependendo da
linguagem, outros ainda são necessários, como < e >. Observe que, toda vez que você abre um
parêntese, ele precisa ser fechado; idem para as aspas, chaves, colchetes etc. Nas linguagens de
programação, isto não é diferente.
TODAS AS VARIÁVEIS EM C++ PRECISA SER DECLARADAS
No nosso exemplo, antes de fazermos o cálculo da média, tivemos que escrever que seriam usadas 5
variáveis (nota1, nota2, ... , nota4 e média). Se fizéssemos o cálculo da média diretamente, o compilador
iria gerar um erro. Portanto, se formos usar 300 variáveis no programa, todas as 300 terão que ser
declaradas antes.
“UMA COISA É UMA COISA; OUTRA COISA É OUTRA COISA”!
Em C++, se você declarar uma variável “nota”, ela será diferente de “Nota”, “NOTA”, nOta” etc. Ou seja,
C++ é case sensitive (faz distinção de caracteres maiúsculos e minúsculos).
INICIE OS PROGRAMAS COM INT MAIN (INT ARGC, CHAR** ARGV) { E TERMINE COM RETURN 0.
Existe um motivo para isso, e cada palavra destes comandos tem um significado e um sentido. Mas
vamos estudar sobre isto em outra aula.
USE ASEDENTAÇÕES, LINHAS BRANCAS E COMENTÁRIOS.
Eles servem para deixar o código mais legível e fácil de ser entendido. Pense sempre na manutenção!
Não é porque um programa é executado com sucesso que está tudo finalizado. A manutenção posterior
de programas é um assunto importante, e
13
Entrada e saída de dados
Todo algoritmo ou programa tem um objetivo. Este objetivo é alcançado por meio de uma entrada de
dados, a qual será processada e resultará em uma saída que será avaliada.
O problema é que, se a entrada for ruim, serão processados da maneira correta e a saída será ruim (e a
culpa cairá sobre o sistema, ou o computador, como sempre!).
Portanto, fazer a correta entrada de dados é fundamental. O processo de entrada-processamento-saída
ocorre o tempo todo. Todo fluxograma obedece a esse processo; assim como os processos de
compilação e de execução.
A entrada e a saída podem ocorrer de diversas formas em um computador. Podemos ter a leitura de um
cartão de banco em um caixa eletrônico, a digitação da senha, a informação que a senha digitada foi
errada como saída e várias outras formas.
Portanto, toda vez que for escrever um programa, lembre-se desse trio: entrada-processamento-saída.
Finalizando
Por enquanto, é só, mas antes de finalizarmos completamente, o que acontece se os valores das variáveis
mudarem?
Como podemos ver o resultado? Pense nisso e veja nossa atividade proposta em seguida.
Até a próxima!
14
Algoritmos / Aula 3 - Conhecendo o DevC++
Introdução
Existem várias formas de aprender programação. Uma delas é usar o nosso conhecido editor de
textos e fazer a compilação “na unha”, ou seja, executar o compilador na linha de comando e
acompanhar os resultados gerados.
Outra forma é usar os softwares conhecidos como IDE (integrated development environment ou
ambiente de desenvolvimento integrado), que facilitam bastante o nosso trabalho.
A linguagem C++ possui vários IDEs diferentes, cada um com sua particularidade. Vamos estudar
nesta aula o DevC++, que é o nosso escolhido para nos acompanhar durante o aprendizado da linguagem
C++. Trata-se de um software muito popular e largamente usado por quem trabalha com C++.
Vamos lá!
Mas o Notepad, ou mesmo o Wordpad, que vem com o Windows, também são editores de texto.
Porque ele possui outros recursos como editores de equação, mala direta, tabelas, etc., que não estão
presentes no Wordpad.
Ou seja, o Word é um programa composto de outros que o tornam poderoso suficiente para ser o
preferido de quem edita texto. A IDE é parecida.
Há alguns anos, quando o Windows ainda nem era sistema operacional, para que um programa C++
fosse compilado, era preciso que o programador possuísse na máquina um compilador e outro programa
chamado Linker, para poder gerar o programa executável.
Para quem está acostumado, é fácil, mas para nós que estamos aprendendo, nada melhor que uma tela
gráfica, não é?
15
Exemplo
Entre as IDE mais comuns e gratuitas para o desenvolvimento em C++, temos o DevC++, o Eclipse, o
Netbeans, o Codeblocks e o CodeLite.
Entre as pagas, temos o Visual Studio, o CLion e o C++Builder.Todas elas podem ser usadas para o
desenvolvimento de sistemas de qualquer porte, porém algumas delas têm programas de trabalho em
equipe, que as “menores” não possuem.
Melhorar o código por meio da construção de um código mais eficiente, sem abalar a estrutura geral
do programa e geralmente contando com a colaboração de outros membros da equipe.
Assim como vários outros IDEs, o DevC++ trabalha com um tipo de arquivo chamado de projeto.
Um projeto é um agregador de recursos, ou seja, quando desenvolvemos um software, além dos arquivos
de código-fonte, podemos ter imagens, bibliotecas de terceiros que podemos incluir no nosso programa,
arquivos de configuração e outros.
Para criarmos nossos programas em C++, vamos criar um projeto em primeiro lugar. Fazer isto é muito fácil,
como podemos ver no vídeo a seguir:
COMPILAR
Esta opção apenas compila o programa. Em um programa novo, esta opção é obrigatória e inicial. Sem
ela, a execução não é possível. Muitas vezes, durante o desenvolvimento do programa, é necessário
somente compilar o programa sem precisar necessariamente executá-lo. Neste caso, esta opção é
interessante e muito útil.
EXECUTAR
Esta opção executa o programa previamente compilado. Em programas pequenos, a etapa de
compilação é muito rápida. Já em programas grandes, a compilação pode levar vários minutos. Quando
a compilação já foi executada com sucesso, usar a opção para somente executar o programa pode ser
bem útil.
COMPILAR E EXECUTAR
Esta opção é útil nas situações em que o programador precisa compilar e logo em seguida executar o
programa.
16
Novo programa
Lembra o programa proposto na aula 2 para transformar graus Celsius em Fahrenheit? Observe-o
atentamente!
Compilação e execução
Você percebeu que o programa contém um erro, certo? Ou seja, o programa anterior não será compilado
nem executado. E qual é o erro?
Observe que o DevC++ é bem camarada e nos indica qual é a linha onde o compilador não conseguiu
transformar o código-fonte em código objeto. No exemplo, a variável c não foi declarada. O programador
esqueceu que nomeou a variável para os graus Celsius como celsius e não como c.
Saiba mais
Lembre-se: sempre salve o programa antes de compilar novamente. Senão, as alterações que você fez
não serão verificadas pelo compilador. O programa correto está aqui:
#include
using namespace std;
float celsius;
float fahrenheit;
celsius = 25;
fahrenheit = celsius*1.8 + 32;
cout<<celsius<<" graus="" celsius="" equivale="" a="" "<<fahrenheit<<"="" fahrenheit.";
}</celsius<<">
17
Cin e cout
Antes de continuar, você deve
ter notado o cout. E já deve ter
percebido que ele é o
responsável por exibir algo na
tela.
Veja o exemplo.
Depurando o programa
Já vimos as opções mais básicas de operação do DevC++. Existem muito mais, mas vamos nos concentrar
nesse momento em como usar o Dev para nos ajudar a criar e executar os programas.
1. Ler a mensagem de erro, sem medo. Se a mensagem está difícil porque esta em inglês, use um
dicionário, pesquise na internet, pois é muito importante que você leia e entenda onde esta o
erro no seu programa.
2. Depure o programa. Vamos aprender agora como fazer isso, que muitos programadores, por
incrível que pareça não fazem.
A depuração é uma atividade que permite ao programador executar o programa passo a passo. Desta
forma, ele pode verificar os valores das variáveis e descobrir qual é a execução natural de um
programa.
Nesse programa, a depuração é muito tranquila, porque é um programa sequencial. Nos programas
que possuem desvios condicionais e repetições, o depurador realmente fará diferença e te mostrará o
quanto ele pode ser útil durante o desenvolvimento de um programa.
Para começar, vamos inserir um breakpoint. Breakpoint é um ponto de parada, ou seja, após o
compilador ter feito a sua parte, o depurador entrará em execução e rodará o programa até a linha que tem
o breakpoint. Esta linha (que contém o breakpoint) estará marcada em vermelho.
Comentario
Como vimos, para criar um breakpoint, podemos usar o mouse, clicando na linha desejada, ou usar o
menu Executar, ou ainda usar a tecla F4.
Uma vez criado o breakpoint, é hora de executar o programa. Porém, lembre-se que agora a execução ficará
parada na linha do breakpoint.
Um detalhe: você pode criar quantos breakpoints quiser, porém quando o programa começar, obviamente
ele ficará parado no primeiro deles.
18
Nosso objetivo nessa depuração será apenas verificar os valores das variáveis Celsius e Fahrenheit. Viu
como é fácil?
Para observar os valores das variáveis durante a execução do programa, basta criar marcadores para cada
uma das variáveis que deseja observar. Você pode criar quantos marcadores quiser e pode criar expressões
matemáticas envolvendo marcadores também.
Depurador
A parte inferior da tela muda para o modo Depurador. Neste modo, aparecem alguns botões diferentes:
19
Alguns recursos do DEVC++
O DevC++ possui outros vários recursos que auxiliam o programador. Entre eles, temos:
Veja que podemos facilmente ver a quantidade de linhas do arquivo, quantas linhas estão vazias,
linhas de código etc.
Pode parecer insignificante, mas muitas medidas em relação ao tamanho do software podem ser
obtidas destes indicadores.
CONFIGURAÇÕES DO AMBIENTE
Nesta tela podem ser configuradas várias opções como por exemplo criar arquivos de backup
automaticamente, mudar o tema (aparência) do DevC++, entre outras.
20
OPÇÕES DO EDITOR
Esta tela é muito útil. Ela configura o comportamento do DevC++ em várias situações, como por
exemplo, a auto endentação, posições do cursor etc.
Podem parecer configurações insignificantes, mas no dia a dia do trabalho de programação, esses
pequenos ajustes ajudam demais o programador a se tornar mais produtivo.
Variáveis
21
Algoritmos / Aula 4 - Conhecendo alguns elementos de C++
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?
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.
E agora?
Bem, já vimos anteriormente que, quando temos vários caracteres juntos, isso é chamado de string.
22
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 o cout. Lembra que temos de importar a biblioteca iostream para o cout? No
caso da string, a biblioteca é a string!
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.
Temos algumas variações desses tipos, que usam os seguintes modificadores de tipos:
Veja que o modificador unsigned retira o sinal do tipo e dobra sua capacidade no intervalo positivo
23
Entenda o que é o domínio estendido e as precisões de cada tipo em C++ na tabela a seguir:
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++:
24
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;
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:
25
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ê?”.
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.
26
Funçõ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.
SQRT é a forma mnemônica de square root em inglês. Vamos estudar as funções em C++ algumas aulas mais
à frente.
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).
27
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 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.
Os operadores lógicos “e” e “ou” em C++ são representados pelos símbolos “&&” e “||” respectivamente.
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.
28
Vejamos um exemplo. Considere:
a = 1;
b = 2;
c = verdadeiro;
int a = 1;
int b = 2;
bool c = true;
29
Algoritmos / Aula 5 - Estrutura de decisão
Introdução
Tomar decisões é uma parte muito importante da nossa vida e também dos nossos programas. Fazemos
isso todos os dias e a toda hora.
Um programa também tem momentos nos quais tem de parar e avaliar as condições para tomar uma
determinada direção. Imagine o robô Curiosity em Marte fazendo suas explorações: ao encontrar um
determinado tipo de material, ele precisa avaliar e tomar alguma decisão.
Vamos dividir este conceito em duas aulas e, nesta, vamos começar com os conceitos mais básicos.
Vamos lá?
Recordando...
Para continuar nossos estudos, temos que começar a aplicar estes conceitos daqui para a frente e estudar
alguns comandos que desviam o fluxo sequencial e natural de um algoritmo e de um programa.
É assim que ocorre também na estrada a seguir: o motorista que está nesta estrada tem uma importante
decisão a fazer: ou toma o caminho da direita ou o da esquerda.
Exemplo
Nos programas de computador, as decisões são muito mais comuns do que você pensa. Quando você
abre um arquivo, se ele for protegido, então vai aparecer uma janela avisando. No Word, se o botão de
negrito estiver selecionado, então o seu texto ficará em negrito, e por aí vai.
Vamos usar um exemplo mais fácil: pense nas suas notas escolares. Suponha que a média para
aprovação seja 6.
30
Como você bolaria um programa para verificar se você está aprovado ou não?
Esse desvio é chamado de desvio condicional simples. Vamos observá-lo com mais detalhes em C++.
“Se” e “então”. Aí, entramos no conceito do primeiro tipo de desvio: o chamado desvio condicional
simples.
31
Compare a forma como usamos o if com a figura do comando exibida anteriormente. Tranquilo, né? Se o
cálculo for menor que 17, o sujeito está bem abaixo do peso.
Essa classificação é feita de acordo com a tabela a seguir. Esta tabela pode ser obtida em qualquer site que
mostre o cálculo do IMC.
Programando...
Perceba que temos alguns detalhes que precisam ser seguidos para o if poder funcionar.
32
Exemplo
Em C++, não utilizamos a palavra “então”. Fica implícito que o código que virá a seguir é o que deve ser
feito quando a condição testada é verdadeira.
O comando é simples. Dentro dos parênteses há um teste, o qual pode ser uma simples comparação ou
uma expressão lógica maior. Isto vai depender do programa.
Então, prepare-se para colocar dentro desse teste qualquer tipo de expressão que possa ser avaliada e
retornar verdadeiro (true) ou falso (false). Se o teste for verdadeiro, o bloco é executado. Se for falso, o
bloco é ignorado completamente e o fluxo do programa continua na linha seguinte ao bloco.
O tamanho do bloco pode ser de 1, 2, 200, 2.000 linhas. De qualquer forma, se o teste for false, todo o
bloco, independentemente do tamanho que seja, será ignorado.
É simples. Se for menor que 17, já fizemos, a situação é “muito abaixo do peso”.
Se estiver entre 17 e 18,49, a situação é “abaixo do peso”. Se estiver entre 18,5 e 24,99, a situação é “peso
normal”.
33
GABARITO
Veja o exemplo:
Observe que se a idade for menor que 18, o programa vai ignorar todo o bloco entre as linhas 10 a 14 e
continuar o seu fluxo normal na linha 15.
Mas e se quisermos tratar a condição quando a idade for menor que 18 anos?
Sua primeira resposta pode ser: “mas isto já é feito no programa acima. A linha 15 é executada se a idade
for menor que 18”.
34
Programando um desvio condicional composto
Em C++, a sintaxe é a seguinte:
Na linha 10, o teste é feito. Se o número for positivo, o programa executa a linha 11, encontra o fim do
bloco e (preste atenção agora) vai para a linha 16. O programa ignora o bloco do “else” (pois este bloco é a
execução caso o teste for falso).
Se o teste da linha 10 for falso, o programa vai ignorar o bloco que começa com o { logo após o if e vai
diretamente procurar o else, que está na linha 13. Ele executa o bloco do else, também passa pela linha 16 e
finaliza o programa.
35
O código do programa executado no vídeo é o seguinte:
Introdução
Esta é a segunda parte das estruturas de decisão. Na primeira aula, vimos alguns conceitos básicos
que são as estruturas iniciais para começarmos a tratar o assunto.
Nesta aula, vamos mostrar as outras formas de tomar decisões e suas implementações em
C++.Dessa forma, nosso repertório de comandos vai aumentar e você vai conseguir criar programas mais
interessantes e completos em C++.
Vamos lá?
Recapitulando...
36
Para lembrar a estrutura, observe o exemplo a seguir.
Lembrou?
O teste é feito na linha 10; caso
verdadeiro, executa o bloco das linhas 10-
12; senão, executa o bloco das linhas 13-
15.
Mudando o teste...
É uma forma que parece bem complicada, não é? Mas vamos explicar: trata-se de outro operador existente
em C++ e em outras linguagens, chamado de operador ternário. Ele é uma alternativa para substituir o
desvio condicional composto em algumas situações.
37
Esse operador também é útil quando vamos atribuir um valor a uma variável como resultado de um if.
Observe:
if (x == 10) // Se x for igual a 10
y = 20; // então faço y receber 20else
y = 30; // senão faço y receber 30
Colocar um if dentro do outro é mais comum do que você imagina. Esta forma é chamada
de aninhamento ou encadeamento de ifs e é usada em várias linguagens de programação e também com
outros comandos. Vamos nos concentrar nos ifs por enquanto.
1- #include <iostream>
2- using namespace std;
3-
4- int main(void){
5- int idade;
6- char sexo;
7-
8- cout<<"Qual a sua idade?"<<endl;
9- cin>>idade;
10- cout<<"Digite (m)para Masculino, (f)para Feminino"<<endl;
11- cin>>sexo;
12-
13- if (idade>=18){
14- cout<<"Você pode dirigir"<<endl;
15-
16- if (sexo=='m'){
17- Militar"<<endl;
18- }
19- }
20- else {
21- if (idade>16){
22- cout<<"Você já pode votar"<<endl;
23- }
24- else {
cout<<"Você não pode votar nem
25- dirigir"<<endl;
26- }
27- }
28- return 0;
29- }
38
Veja que temos um if dentro do outro:
O if que começa na linha 13 vai até a linha 18, quando a condição (idade>=18) for verdadeira.
Dentro deste if, temos um if simples aninhado entre as linhas 16 e 18.
Caso a condição da linha 13 seja falsa, temos o else, que compreende as linhas de 20 a 27.
Dentro do else, temos um if-then-else completo nas linhas 21 a 26.
Como podemos ver, o aninhamento de ifs é muito útil e é mais comum do que pensa. Existem muitas
situações que usam estruturas aninhadas, e nas próximas aulas esta estrutura ficará cada vez mais comum,
e com outros comandos também.
O Comando Switch
Este comando é bastante útil.
Veja um exemplo em que ele pode ser usado: imagine um programa no qual o usuário informa um mês, e o
programa devolve se o mês tem 30 ou 31 dias.
“Se for fevereiro, pode ter 28 ou 29 dias. Se o ano for bissexto, tem 29; senão, tem 28. Bem, mas acho que
desta vez, eu vou considerar que tem 28 dias, só pra facilitar.”
Se fosse usar o comando if, o programa teria pelo menos 12 ifs. O comando switch facilita a nossa vida. Sua
sintaxe é:
switch (variável){
case constante1:
Instruções;
break;
case constante2:
Instruções;
break;
default
Instruções;
}
39
Vamos ver o programa em execução
Durante o vídeo, você percebeu que foram testados alguns valores corretos para os meses, porém na
última execução foi inserido o mês 29 e o programa executou a cláusula default. Imagine se fizéssemos
esse programa usando o if.
Seriam vários ifs e, além disso, seria difícil ler o programa. O switch é muito bom para deixar o programa
mais claro.
Porém, a última execução do programa deixou uma “rebarba”. Veja que, se o usuário digitar um mês
negativo ou outro valor que não esteja dentro das cláusulas case, o programa executa corretamente a
cláusula default, mas imprime na tela a mensagem da linha 51.
Seria melhor que essa linha não fosse impressa quando o valor for inválido.
E agora?
Agora, precisamos de uma forma de criar uma condição lógica. Para isso, entramos no próximo tópico desta
aula.
Operadores Lógicos
Em C++, temos três operadores:
No exemplo anterior, precisamos criar uma condição que não deixe que o programa aceite valores abaixo
de 1 E acima de 12. Se fosse nas aulas de Matemática, seria fácil: poderíamos criar uma expressão assim:
1<=mês<=12
Mas em C++, precisamos transformar essa condição de acordo com a sintaxe da linguagem.
40