1. http://informaticaentretenimento.blogspot.com/
CEP- CENTRO DE EDUCAÇÃO PROFISSIONAL DE ITAJUBÁ
TÉCNICO EM INFORMÁTICA
Turma: V2I
Verônica Veiga Soares de Souza. N :17
Arquitetura de Computadores
Estruturas de linguagem de programação C++
Trabalho apresentado na disciplina:
De Arquitetura de Computadores.
Do Professor Janderson Cruzz.
No curso técnico em informática.
Do CEP: Centro Profissional de
Itajubá.
4 DE NOVEMBRO DE 2011
ITAJUBÁ-MG
2. Estruturas Condicionais – IF/ELSE e Switch
Uma ação muito importante que o processador de qualquer computador executa, e que o
torna diferente de qualquer outra máquina, é a tomada de decisão definindo o que é
verdadeiro e o que é falso.
Se quisermos fazer um bom programa, esse programa deve ser capaz de definir caminhos
diferentes de acordo com decisões que o próprio programa toma. Para isso, precisamos de
uma estrutura seletiva da qual o único valor possível é o bit 1 ou 0, resumindo: retornar o
valor VERDADEIRO ou FALSO.
Em C / C++, como em muitas linguagens de programação, quem faz isso é o IF (SE
traduzindo).
Ou seja, se for tal coisa, faça isso! Simples desse jeito.
O ELSE é o que chamamos de caso contrário, ou seja, se for falso execute o que está no
ELSE.
Exemplificando: Se (IF) for tal coisa, faça isso! Caso contrário (ELSE), faça aquilo!
Usando IF
Para usar o IF basta digitar entre parênteses o que deve ser comparado.
IMPORTANTE: IF é uma palavra reservada que não aceita ponto-e-vírgula (;) no final.
Se for verdadeiro, o programa executará a primeira linha logo abaixo do if.
Mas, e se quisermos executar várias linhas se if for verdadeiro?
Se o if tiver que executar várias linhas, todas as linhas que devem ser enquadradas dentro
do bloco de dados - as chaves ({}).
Usando ELSE
O ELSE só existe se tiver um IF. O else só será executado se o IF for falso.
Else executará só a primeira linha abaixo dele. Se o else tiver que executar várias linhas,
vale a mesma regra de if. Todas as linhas a ser executadas deverão estar contidas dentro
do bloco de dados ({}).
No exemplo abaixo está um exemplo de uso do if e else com apenas uma linha a ser
executada.
#include <cstdio>
#include <cstdlib>
int main (void){
3. int nr;
printf ("Digite um numero:n");
scanf ("%d", &nr);
getchar ();
if (nr>=0)
printf ("O numero digitado e positivonn");
//se nr for maior ou igual a 0 o numero sera positivo
else
printf ("O numero digitado e negativonn");
//caso contrario, ele sera negativo!
system ("pause");
}
Agora, um exemplo de um programa onde o if e o else têm mais de uma linha a ser
executada
#include <cstdio>
#include <cstdlib>
int main (void){
int nr, a, b, x;
printf ("Escolha uma opcao:n");
printf ("1.tmultiplicarn");
printf ("2.tdividirn");
scanf ("%d", &nr);
getchar ();
if (nr==1)
{
//se nr for igual a um executara todo esse bloco
printf ("Digite os dois numero que deverao ser multiplicadosn");
scanf ("%d %d", &a, &b);
getchar ();
x=a*b;
system ("cls"); //limpa a tela
printf ("%d X %d = %dn", a, b, x);
}
else
{
//se nr nao for igual a um executara todo esse bloco
printf ("Digite os dois numero que deverao ser divididosn");
scanf ("%d %d", &a, &b);
getchar ();
x=a/b;
system ("cls"); //limpa a tela
printf ("%d / %d = %dn", a, b, x);
}
system ("pause");
}
Switch
Uma instrução switch torna-se prática sempre que um programa necessita selecionar
algumas ações dentre as diversas possíveis, tendo como base o resultado de uma
expressão ou uma variável, equivalentes a um valor inteiro ou a um caractere. Isto é, o
4. comando switch é próprio para se testar uma variável em relação a diversos valores pré-
estabelecidos.
Sintaxe: switch (variável) {
case constante_1:
bloco_de_comandos_1;
break;
case constante_2:
bloco_de_comandos_2;
break;
case constante_n:
bloco_de_comandos_n;
break;
default:
bloco_de_comandos_default;
}
A estrutura switch não aceita expressões. Aceita apenas constantes. O switch testa a
variável e executa o bloco_de_comandos cujo case corresponda ao valor atual da variável.
A declaração default é opcional e será executada apenas se a variável, que está sendo
testada, não for igual a nenhuma das constantes. O comando break faz com que o switch
seja interrompido assim que uma das declarações for executada. Mas ele não é essencial
ao comando switch. Se após a execução do bloco_de_comandos não houver um break, o
programa continuará executando os próximos blocos de comandos sem testar com o valor
das próximas constantes. Isto pode ser útil em algumas situações, mas é recomendado
muito cuidado.
Exemplo 1
#include <stdio.h>
main ()
{
int num;
printf ("Digite um numero: ");
scanf ("%d",&num);
switch (num) {
case 9:
printf ("nnO numero e igual a 9.n");
break;
case 10:
printf ("nnO numero e igual a 10.n");
break;
5. case 11:
printf ("nnO numero e igual a 11.n");
break;
default:
printf ("nnO numero nao e nem 9 nem 10 nem 11.n");
}
}
Exemplo 2
#include <iostream>
#include <cstdlib>
#include <ctype.h>
using namespace std;
int reiniciar (void);
int main (void){
reiniciar ();
}
int reiniciar (void){
char opcao;
cout <<"Deseja reiniciar o programa? [S/N]n";
cin >> opcao;
opcao=toupper(opcao); // deixa a letra maiúscula
switch (opcao){
case 'S': //Entre aspas simples porque é um caracter
system ("cls");
main ();
case 'N': //Entre aspas simples porque é um caracter
return EXIT_SUCCESS;
6. default:
cout <<"aOpcao invalida!nn";
reiniciar ();
}
}
Estruturas Repetição – FOR, WHILE e DO WHILE
FOR
O FOR como qualquer iteração* precisa de uma variável para controlar os loops (voltas).
Em for, essa variável deverá ser inicializada, indicada seu critério de execução, e forma de
incremento ou decremento. Ou seja, for precisa de três condições. Vale salientar que essas
condições são separadas por ponto-e-vírgula (;).
*ITERAÇÃO é sinônimo de repetição.
Como procedemos:
FOR (inicialização ; até quando irá ser executado ; incremento ou decremento).
No exemplo, faremos um programa que contará de 1 a 100. Você verá que é um programa
que faz algo muito simples, ele soma um a uma variável várias vezes. O x começa em 1, o
loop só será executado enquanto x for
//loop com FOR
#include <iostream>
#include <cstdlib>
using namespace std;
int main (void){
int x;
for (x=1; x<=100; x++)
/* inicialização: x começa em 1
critério: executar enquanto x for menor ou igual a 100
incremento (++) será somado 1 a x */
cout << x <<"t"; system ("pause");
}
O FOR também segue a mesma regra de IF. Caso haja mais de uma linha a ser executada
pelo comando FOR, essas deverão estar agrupadas num bloco de dados ( { } ).
Este comando não se limita a operações com constantes, por exemplo: x=1, executar
enquanto x for menor ou igual a 100... Às vezes, o usuário pode entrar com dados para
controlar o loop. Veja:
No exemplo 1, a contagem começará a partir do número que o usuário digitar.
http://informaticaentretenimento.blogspot.com/
7. Exemplo 1
#include <iostream>
#include <cstdlib>
using namespace std;
int main (void){
int x, user;
cout <<"Digite um numero menor que 100 para iniciar a contagemn";
cin >> user;
cin.ignore ();
system ("cls"); // limpa a tela
for (x=user; x<=100; x++)
cout << x <<"t";
system ("pause");
}
No exemplo 2, a contagem começará no 1 e terminará no número digitado pelo usuário.
Exemplo 2
#include <iostream>
#include <cstdlib>
using namespace std;
int main (void){
int x, user;
cout <<"Digite um numero menor que 100 para iniciar a contagemn";
cin >> user;
cin.ignore ();
system ("cls"); // limpa a tela
for (x=1; x<=user; x++)
cout << x <<"t";
system ("pause");
}
No exemplo 3, a contagem irá de 0 a 100 com intervalos determinados pelo usuário.
//exemplo 3
#include <iostream>
#include <cstdlib>
using namespace std;
int main (void){
int x, user;
cout <<"Digite qual sera o intervalo da contagemn";
cin >> user;
cin.ignore ();
system ("cls"); // limpa a tela
for (x=1; x<=100; x+=user)
8. cout << x <<"t";
system ("pause");
}
WHILE
Uma outra forma de iteração (repetição) em C/C++ é o WHILE.
While executa uma comparação com a variável. Se a comparação for verdadeira, ele
executa o bloco de instruções ( { } ) ou apenas a próxima linha de código logo abaixo.
Procedemos da seguinte maneira: WHILE (comparação)
Veja o exemplo abaixo.
#include <iostream>
#include <cstdlib>
using namespace std;
int main (void){
int par=0;
cout <<"Os numeros pares de 0 a 100 sao:nn";
while (par<=100)
{
cout <<par<<"t";
par+=2; //o mesmo que par=par+2
}
system ("pause");
return 0;
}
Neste exemplo serão mostrados os números pares entre 0 e 100.
Algumas precauções:
O WHILE muitas vezes pode nos pregar peças. Se prestarmos atenção, no exemplo acima
inicializamos a variável par em 0, pois quando usamos no while uma variável sem
inicializa-la pode causar comportamentos estranhos. E por que isso acontece? É simples.
C/C++ não inicializa variáveis automaticamente em 0, ou seja, se você comparar uma
variável não inicializada, essa variável pode ser qualquer coisa, ex.: 1557745, -9524778, 1
ou até mesmo 0.
Outro problema comum com o while é o loop infinito. O WHILE, diferentemente de FOR,
não incrementa ou decrementa automaticamente uma variável, isso deve estar expressado
dentro do bloco de instruções, como podemos ver na linha par+=2. Caso contrário, par
sempre seria zero e nunca chegaria a 100 para o loop parar, causando o loop infinito.
O ideal é utilizar o WHILE em um loop definido pelo usuário, que a partir de uma entrada
ele termine. Ou seja, enquanto o usuário não fizer determinada ação, o loop continuará a
dar voltas. Como no exemplo abaixo.
#include <iostream>
#include <cstdlib>
using namespace std;
9. int main (void){
int nr=1;
while (nr!=0) //enquanto nr for diferente de 0
{
cout <<"Digite um numero (0 para finalizar): ";
cin >> nr;
cin.ignore ();
if (nr>0)
cout <<"Este numero e positivon";
else
cout <<"Este numero e negativon";
}
return 0;
}
DO WHILE
A estrutura de repetição DO WHILE parte do princípio de que deve-se fazer algo primeiro e
só depois comparar uma variável para saber se o loop será executado mais uma vez.
Devemos proceder da seguinte maneira:
DO {bloco de instruções} WHILE (comparação);
Usamos DO, depois escrevemos tudo que o DO deve fazer no bloco de instruções, no final
do bloco colocamos o WHILE com a comparação entre parênteses, e não se esqueça que
neste caso termina-se a linha do WHILE com ponto-e-vírgula (;). Veja:
#include <iostream>
#include <cstdlib>
using namespace std;
int main (void){
int nr;
do
{
cout <<"Digite um numero (0 para finalizar): ";
cin >> nr;
cin.ignore ();
if (nr%2==0)
/* se nr for divisivel por 2
(O resto da divisão por 2 for 0)*/
cout <<"Este numero e parn";
else
cout <<"Este numero e imparn";
system ("pause");
system ("cls");
} while (nr!=0); //enquanto nr for diferente de 0
return 0;
}
10. Este programa verifica se um número é par ou ímpar, e finaliza em 0.
Partindo do ponto de vista que o usuário irá digitar o valor da variável nr durante o bloco
do DO e só depois será comparada no WHILE no final do bloco, então não tem porque
inicializar a variável (int nr;). Isso pode ajudar muitas vezes em que é necessário executar
um loop, nem que seja uma vez.
Math.h e Cmath
Em C existe uma biblioteca própria para cálculos matemáticos um pouco mais complexo, a
biblioteca ao qual nos referimos é a math.h, que tem seu correspondente em C++
como cmath.
Com a biblioteca math.h (cmath) podemos encontrar facilmente funções para calcular
potências, raíz quadrada, funções trigonométricas para cálculos que envolvem seno, co-
seno e tangente, além de constantes para números irracionais como, por exemplo, PI (Π) e
√2.
Constantes matemáticas
Vamos iniciar listando as constantes matemáticas:
Constante em C/C+ valor da constante em
Simbologia O que é
+ C/C++
e Número de Euler M_E 2,7182818284590452354
log2 e Logaritmo de e na base 2 M_LOG2E 1,4426950408889634074
log10 e Logaritmo de e na base 10 M_LOG10E 0,43429448190325182765
Logaritmo neperiano
Ln2 (x) M_LN2 0,69314718055994530942
binário
Logaritmo neperiano ou
Ln10 (x) M_LN10 2,30258509299404568402
natural
Π Pi M_PI 3,14159265358979323846
Π/2 Meio Pi M_PI_2 1,57079632679489661923
Π/4 Quarto de Pi M_PI_4 0,78539816339744830962
√2 Raiz quadrada de 2 M_SQRT2 1,41421356237309504880
√½ Raiz quadrada de meio M_SQRT1_2 0,70710678118654752440
Como podemos ver, todas as constantes são valores do tipo double. E isso se reflete nas
funções.
11. Funções matemáticas
Trigonométricas
sin (): Retorna o valor do seno. Recebe como argumento o valor dos graus em double.
cos (): Retorna o valor do co-seno. Recebe como argumento o valor dos graus em double.
tan (): Retorna o valor da tangente. Recebe como argumento o valor dos graus em double.
Logaritmicas
log (): Retorna o valor do logaritmo na base 2. Exige um argumento do tipo double.
log10 (): Retorna o valor do logaritmo na base 10. Exige um argumento do tipo double.
Potências
pow (): Retorna o valor da base elevada ao expoente. Recebe dois argumentos do tipo
double, o primeiro é a base e o segundo o expoente. Por exemplo: se quisermos saber o
resultado da operação 210, faríamos pow (2, 10).
sqrt (): Retorna o valor da raiz quadrada. Recebe como argumento um double do qual ele
deve extrair a raiz.
Arredondamento
ceil(): Retorna o primeiro float sem casas decimais acima. Recebe um float como
argumento. Exemplo: ceil (45.98561) resultaria em 46.
floor(): Retorna o primeiro float sem casas decimais abaixo. Recebe um float como
argumento. Exemplo: floor (45.98561) resultaria em 45.
Para ilustrar todas essas funções e constantes, abaixo está um código demonstrando o
resultado de cada função da biblioteca math.h (cmath) vista neste artigo.
http://informaticaentretenimento.blogspot.com/
12. Para ilustrar todas essas funções e constantes, abaixo está um código demonstrando o
resultado de cada função da biblioteca math.h (cmath) vista neste artigo.
#include <cmath> // ou <math.h>
#include <iostream>
#include <cstdlib>
using namespace std;
int main (void){
double graus, raio, base, expoente, x;
cout << "TrigonometrianDigite o numero dos graus -> ";
cin >> graus;
cout << "GeometrianDigite a distancia do raio do circulo -> ";
cin >> raio;
cout << "PotenciacaonDigite a base -> ";
cin >> base;
cout << "Digite o expoente -> ";
cin >> expoente;
cin.ignore();
system ("cls");
x = pow (base, expoente);
cout << "O seno de "<<graus<<" e "<<sin(graus)<<endl;
cout << "O co-seno de "<<graus<<" e "<<cos(graus)<<endl;
cout << "A tangente de "<<graus<<" e "<<tan(graus)<<endl;
cout << base<<" elevado a "<<expoente<<" e "<<x<<endl;
cout << "A raiz quadrada de "<<x<<" e "<<sqrt(x)<<endl;
cout << "O log2 de "<<x<<" e "<<log(x)<<endl;
cout << "O log10 de "<<x<<" e "<<log10(x)<<endl;
cout << "O teto de "<<x<<" e "<<ceil(x)<<endl;
cout << "A parte inteira de "<<x<<" e "<<floor(x)<<endl;
cout << "Um circulo com "<<raio<<"cm de raio tem: ";
cout << raio*2*M_PI<<"cm de comprimento e ";
cout << pow(raio,2)*M_PI<<"cm de area.n"<<endl;
system ("pause");
13. return EXIT_SUCCESS;
}
Construa um programa que tendo como entrada dois pontos quaisquer do plano P(x1,y1) e
Q(x2,y2), imprima a distância entre eles. A fórmula da distância é:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
main()
{
float x1, y1, x2, y2;
float distancia;
printf ("nDigite o valor de x1: ");
scanf ("%f",&x1);
printf ("nDigite o valor de y1: ");
scanf ("%f",&y1);
printf ("nDigite o valor de x2: ");
scanf ("%f",&x2);
printf ("nDigite o valor de y2: ");
scanf ("%f",&y2);
distancia=sqrt(pow((x2-x1),2)+pow((y2-y1),2));
printf ("nA distancia entre os pontos P1 e P2 eh %.2fn", distancia);
system("PAUSE");
}
Construa um programa que calcule a quantidade de latas de tinta necessárias e o custo
para pintar tanques cilíndricos de combustível, onde são fornecidos a altura e o raio desse
cilindro.
Sabendo que:
14. - a lata de tinta custa R$20,00
- cada lata contém 5 litros
- cada litro de tinta pinta 3 metros quadrados.
Sabendo que:
Área do cilindro=3.14*raio2 + 2*3.14*raio*altura
e que raio e altura são dados de entrada.
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
main()
{
float altura, raio, areaCilindro, qtdadeLitros, qtdadeLatas, custo;
printf ("nDigite o valor da altura em metros: ");
scanf ("%f",&altura);
printf ("nDigite o valor do raio em metros: ");
scanf ("%f",&raio);
areaCilindro=3.14*raio*raio + 2*3.14*raio*altura;
printf ("nA area do cilindro eh %.2f metros quadrados", areaCilindro);
qtdadeLitros=areaCilindro/3;
printf ("nA qtidade de litros necessaria eh de %.2f ", qtdadeLitros);
qtdadeLatas=qtdadeLitros/5;
printf ("nA qtidade de latas necessaria eh de %.2f ", qtdadeLatas);
custo=qtdadeLatas*20;
printf ("nO valor total das tintas eh de R$ %.2f n", custo);
system("PAUSE");
}
http://informaticaentretenimento.blogspot.com/