You are on page 1of 88

ALGORITMOS

RAV2 - RAV3

ALGORITMOS

Ateno aos Temas Principais dessa Aula

RAV2 RAV3

ALGORITMOS

Contedo Programtico desta aula


Reviso dos principais pontos das aulas de 6 a 10;

RAV2 RAV3

ALGORITMOS

Direto ao Assunto

RAV2 RAV3

ALGORITMOS

Assista Aula de Reviso da AV1;


Refaa o maior nmero possvel de exerccios das Listas;
Dvidas de Matemtica:
Apostila Matemtica&&Programao
site http://anitalopes.com senha: leicam2010
Leia slides dessa Aula;
Relacione todas as dvidas e poste no frum de dvidas
AV2/ AV3.

RAV2 RAV3

ALGORITMOS
display
teclado

atribuio

Estrutura bsica

se simples

se composto

para
ses encadeados

enquanto

faca enquanto
RAV2 RAV3

ALGORITMOS

se composto

ses encadeados

UAL

se simples

RAV2 RAV3

ALGORITMOS

enquanto

UAL

faca enquanto

se simples

se composto
para
RAV2 RAV3

ALGORITMOS

se composto

ses encadeados

Portugol

se simples

RAV2 RAV3

ALGORITMOS

escolha

Portugol

RAV2 RAV3

ALGORITMOS

enquanto

Portugol
faca enquanto

para
RAV2 RAV3

ALGORITMOS

se composto
ses encadeados
se simples
RAV2 RAV3

ALGORITMOS

switch()

RAV2 RAV3

ALGORITMOS

while

for

do while
RAV2 RAV3

ALGORITMOS

Obs: Todos tm a mesma hierarquia

Obs: !(nao) tem maior hierarquia, seguido do &&(and) e, depois, ||(ou)


RAV2 RAV3

ALGORITMOS

Praticando

RAV2 RAV3

ALGORITMOS

Vamos treinar Onde est o erro?


if( a=5) ->
if(a <> 8) ->
if(num mod 2 == 0) ->
if(a> b && > c) ->
if( nota>10 && nota<0) ->

RAV2 RAV3

ALGORITMOS

Vamos treinar Onde est o erro?


if( a=5) -> ==
if(a <> 8) -> !=
if(num mod 2 == 0) -> if(num % 2 == 0)
if(a> b && > c) -> if(a> b && a > c)
if( nota>10 && nota<0) -> if( nota>10 || nota < 0)

RAV2 RAV3

ALGORITMOS

Construa um programa que deixe entrar com trs


nmeros e exiba o maior.

RAV2 RAV3

ALGORITMOS

#include <iostream>
#include <cstdlib>
using namespace std;
int main()
{ double a,b,c;
cout<<"\n1o numero:
cout<<"\n2o numero:
cout<<"\n3o numero:
if( a > b && a > c )
cout<<a<<"\n";
else if( b > c )
cout<<b<<"\n";
else
cout<<c<<"\n";
system("pause");
}

Dois menores

";
";
";

cin>>a;
cin>>b;
cin>>c;

Menor

Dois maiores

RAV2 RAV3

ALGORITMOS

#include <iostream>
#include <cstdlib>
using namespace std;
int main()
{ double a,b,c;
cout<<"\n1o numero:
cout<<"\n2o numero:
cout<<"\n3o numero:
if( a > b && a > c )
cout<<a<<"\n";
else if( b > c )
cout<<b<<"\n";
else
cout<<c<<"\n";
system("pause");
}

Dois menores

";
";
";

cin>>a;
cin>>b;
cin>>c;

cout<<b<<"\t"<<c<<"\n";
cout<<a<<"\t"<<c<<"\n";
cout<<a<<"\t"<<b<<"\n";
Menor

Dois maiores

RAV2 RAV3

ALGORITMOS

#include <iostream>
#include <cstdlib>
using namespace std;
int main()
{ double a,b,c;
cout<<"\n1o numero:
cout<<"\n2o numero:
cout<<"\n3o numero:
if( a > b && a > c )
cout<<a<<"\n";
else if( b > c )
cout<<b<<"\n";
else
cout<<c<<"\n";
system("pause");
}

Dois menores

";
";
";

cin>>a;
cin>>b;
cin>>c;

Menor
if( a < b && a < c )
else if( b < c )
Dois maiores

RAV2 RAV3

ALGORITMOS

#include <iostream>
#include <cstdlib>
using namespace std;
int main()
{ double a,b,c;
cout<<"\n1o numero:
cout<<"\n2o numero:
cout<<"\n3o numero:
if( a > b && a > c )
cout<<a<<"\n";
else if( b > c )
cout<<b<<"\n";
else
cout<<c<<"\n";
system("pause");
}

Dois menores

";
";
";

cin>>a;
cin>>b;
cin>>c;

Menor

Dois maiores
cout<<b<<"\t"<<c<<"\n";
cout<<a<<"\t"<<c<<"\n";
cout<<a<<"\t"<<b<<"\n";
RAV2 RAV3

ALGORITMOS

#include <iostream>
#include <cstdlib>
using namespace std;
int main()
{ double a,b,c;
cout<<"\n1o numero:
cout<<"\n2o numero:
cout<<"\n3o numero:
if( a > b && a > c )
cout<<a<<"\n";
else if( b > c )
cout<<b<<"\n";
else
cout<<c<<"\n";
system("pause");
}

Dois menores

";
";
";

cin>>a;
cin>>b;
cin>>c;

cout<<b<<"\t"<<c<<"\n";
cout<<a<<"\t"<<c<<"\n";
cout<<a<<"\t"<<b<<"\n";
Menor
if( a < b && a < c )
else if( b < c )
Dois maiores
cout<<b<<"\t"<<c<<"\n";
cout<<a<<"\t"<<c<<"\n";
cout<<a<<"\t"<<b<<"\n";
RAV2 RAV3

ALGORITMOS

Construa um programa que deixe entrar com uma letra do


Sistema Romano e exiba seu valor.

RAV2 RAV3

ALGORITMOS

#include <iostream>
#include <cstdlib>
#include <cctype>
using namespace std;
int main()
{
char letra;
cout<<"\nDigite letra do Sistema Romano: ";
cin>>letra;
letra=toupper(letra);

RAV2 RAV3

ALGORITMOS

switch(letra)
{
case 'I': cout<<"\nEquivale a 1\n";
break;
case 'V': cout<<"\nEquivale a 5\n";
break;
case 'X': cout<<"\nEquivale a 10\n"; break;
case 'L': cout<<"\nEquivale a 50\n"; break;
case 'C': cout<<"\nEquivale a 100\n"; break;
case 'D': cout<<"\nEquivale a 500\n"; break;
case 'M': cout<<"\nEquivale a 1000\n"; break;
default: cout<<"\nNao euma letra do Sistema Romano\n";
}
cout<<"\n\n"; system("pause");
}
RAV2 RAV3

ALGORITMOS

Construa um programa que 20 vezes possa entrar com o


salrio e o nome do funcionrio. Sabe-se que o salrio
dever ser reajustado em 7%.
Exibir o nome, o novo salrio, o desconto do INSS(10% do
salrio), o desconto do IR(8% do salrio j descontado o
INSS) e o salrio lquido.

RAV2 RAV3

ALGORITMOS

#include <iostream>
#include <cstdlib>
#include <iomanip>
#include <cstring>
using namespace std;
int main()
{
float sal, salN, INSS, IR, salLiq;
char nome[31];int x;

RAV2 RAV3

ALGORITMOS

for(x=1; x<=20; x++)


{
cout<<"\nDigite Nome: ";
cin.getline(nome, 31);
strupr(nome);
cout<<"\nDigite salario:"; cin>>sal; cin.get();
salN=sal * 1.07; INSS= salN * 0.1;
IR= salN * 0.9 * 0.08; salLiq= salN-(INSS + IR);
cout<<fixed<<setprecision(2);
cout<<"\n"<<nome<<"\t"<<salN<<"\t"<<INSS<<"\t"<<IR
<<"\t"<<salLiq<<endl;
}
cout<<"\n\n"; system("pause");
}
RAV2 RAV3

ALGORITMOS

RAV2 RAV3

ALGORITMOS

Construa um programa que deixe entrar com o valor de 10


depsitos e, ao final, exiba a soma de todos os depsitos.

RAV2 RAV3

ALGORITMOS

#include <iostream>
#include <cstdlib>
using namespace std;
int main ()
{ int i;
float deposito, soma = 0;
for (i = 1; i <= 10; i++)
{ cout << "\nDigite deposito: "; cin >> deposito;
soma += deposito;
}
cout<<"\nSoma: "<<soma<<endl;
system("pause");
}
RAV2 RAV3

ALGORITMOS

Observe o algoritmo

prog xxx
int C;
para(C<-1; C<=10; C++)
{
imprima "*";
}
imprima "\n\n";
fimprog

RAV2 RAV3

ALGORITMOS

Observe o algoritmo

prog xxx
int C;
para(C<-1; C<=10; C++)
{
imprima "*";
}
imprima "\n\n";
fimprog

RAV2 RAV3

ALGORITMOS

Vamos colocar o para dentro


de outro para.

prog xxx
int C, L;
para(L<-1; L<=10; L++)
{
para(C<-1; C<=10; C++)
{ imprima "*"; }
imprima "\n";
}
imprima "\n\n";
fimprog

RAV2 RAV3

ALGORITMOS

Vamos colocar o para dentro


de outro para.

prog xxx
int C, L;
para(L<-1; L<=10; L++)
{
para(C<-1; C<=10; C++)
{ imprima "*"; }
imprima "\n";
}
imprima "\n\n";
fimprog

RAV2 RAV3

ALGORITMOS

Vamos alterar o valor final do


para interno.

prog xxx
int C, L;
para(L<-1; L<=10; L++)
{
para(C<-1; C<= L ; C++)
{ imprima "*"; }
imprima "\n";
}
imprima "\n\n";
fimprog

RAV2 RAV3

ALGORITMOS

Construa um programa que entre com a idade de 50 pessoas


e exiba, ao final, quantas tm idade maior ou igual a 60
anos.

RAV2 RAV3

ALGORITMOS

#include <iostream>
#include <cstdlib>
using namespace std;
int main ()
{
int i, idade, conta = 0;
for (i = 1; i <= 50; i++)
{
cout << "\nDigite idade: "; cin >> idade;
if(idade >= 65) conta++;
}
cout<<"\nTotal: "<<conta<<endl;
system("pause");
}
RAV2 RAV3

ALGORITMOS

Uma
Um comando leia, ou de atribuio, antes do enquanto/
while para entrar na repetio e um comando leia, ou de
atribuio, antes de fechar o enquanto/ while, para repetir
ou sair da repetio.

RAV2 RAV3

ALGORITMOS

Observe o programa
#include <iostream>
#include <cstdlib>
#include <cmath>
using namespace std;
int main()
{ int c=0, n;
while(c < 20 )
{
cout<<"\nDois Numero maior que 0: "; cin>>n;
cout<<"\nRaiz: "<< sqrt(n)<<endl;
c+=2;
}
cout<<"\n\n"; system("pause");
}
RAV2 RAV3

ALGORITMOS

Observe o programa
#include <iostream>
#include <cstdlib>
Que estrutura est sendo
#include <cmath>
simulada pelo while?
using namespace std;
int main()
{ int c=0, n;
while(c < 20 )
{
cout<<"\nDois Numero maior que 0: "; cin>>n;
cout<<"\nRaiz: "<< sqrt(n)<<endl;
c+=2;
}
cout<<"\n\n"; system("pause");
}
RAV2 RAV3

ALGORITMOS

Observe o programa
#include <iostream>
#include <cstdlib>
Que estrutura est sendo
#include <cmath>
simulada pelo while?
using namespace std;
int main()
{ int c=0, n;
while(c < 20 )
{
cout<<"\nDois Numero maior que 0: "; cin>>n;
cout<<"\nRaiz: "<< sqrt(n)<<endl;
c+=2;
}
cout<<"\n\n"; system("pause");
}

for

RAV2 RAV3

ALGORITMOS

Observe o programa
#include <iostream>
#include <cstdlib>
Que estrutura est sendo
#include <cmath>
simulada pelo while?
using namespace std;
int main()
Quantas vezes o bloco
{ int c=0, n;
ser repetido?
while(c < 20 )
{
cout<<"\nDois Numero maior que 0: "; cin>>n;
cout<<"\nRaiz: "<< sqrt(n)<<endl;
c+=2;
}
cout<<"\n\n"; system("pause");
}

for

RAV2 RAV3

ALGORITMOS

Observe o programa
#include <iostream>
#include <cstdlib>
Que estrutura est sendo
#include <cmath>
simulada pelo while?
using namespace std;
int main()
Quantas vezes o bloco
{ int c=0, n;
ser repetido?
while(c < 20 )
{
cout<<"\nDois Numero maior que 0: "; cin>>n;
cout<<"\nRaiz: "<< sqrt(n)<<endl;
c+=2;
}
cout<<"\n\n"; system("pause");
}

for

10

RAV2 RAV3

ALGORITMOS

Construa um programa que deixe entrar com dois nmeros


enquanto foram maiores ou iguais a zero. A cada entrada,
exibir a mdia.

RAV2 RAV3

ALGORITMOS

#include <iostream>
#include <cstdlib>
using namespace std;
int main()
{ float n1, n2, med;
cout<<"\nDois numeros >= 0: "; cin>>n1>>n2;
while(n1 >= 0 && n2 >= 0)
{
med=( n1 + n2 )/2;
cout<<"\nMedia: "<< med << "\n\n";
cout<<"\nDois numeros >= 0: "; cin>>n1>>n2;
}
cout<<"\n\n"; system("pause");
}
RAV2 RAV3

ALGORITMOS

Aprendemos a criar
RAV2 RAV3

ALGORITMOS

cout<<"\nDigite idade: ";


cin>>idade;
while(idade < 0 || idade > 120)
{
cout<<"\nInvalida. Digite idade:";
cin>>idade;
}

RAV2 RAV3

ALGORITMOS

Observe o programa
#include <iostream>
#include <cstdlib>
using namespace std;
int main()
{
int c=3, soma=0;
do
{
soma += c;
c+=3;
}while(c <= 90 );
cout<<"\nSoma: "<<soma;
cout<<"\n\n"; system("pause");
}
RAV2 RAV3

ALGORITMOS

Observe o programa
#include <iostream>
#include <cstdlib>
Que estrutura est sendo
using namespace std;
simulada pelo do while?
int main()
{
int c=3, soma=0;
do
{
soma += c;
c+=3;
}while(c <= 90 );
cout<<"\nSoma: "<<soma;
cout<<"\n\n"; system("pause");
}
RAV2 RAV3

ALGORITMOS

Observe o programa
#include <iostream>
#include <cstdlib>
Que estrutura est sendo
using namespace std;
simulada pelo do while?
int main()
{
int c=3, soma=0;
do
{
soma += c;
c+=3;
}while(c <= 90 );
cout<<"\nSoma: "<<soma;
cout<<"\n\n"; system("pause");
}

for

RAV2 RAV3

ALGORITMOS

Observe o programa
#include <iostream>
#include <cstdlib>
Que estrutura est sendo
using namespace std;
simulada pelo do while?
int main()
{
Quais os nmeros que
int c=3, soma=0;
sero somados?
do
{
soma += c;
c+=3;
}while(c <= 90 );
cout<<"\nSoma: "<<soma;
cout<<"\n\n"; system("pause");
}

for

RAV2 RAV3

ALGORITMOS

Observe o programa
#include <iostream>
#include <cstdlib>
Que estrutura est sendo
using namespace std;
simulada pelo do while?
int main()
{
Quais os nmeros que
int c=3, soma=0;
sero somados?
do
{
3:6:9:...:84:87:90,
soma += c;
totalizando, 30 nmeros
c+=3;
}while(c <= 90 );
cout<<"\nSoma: "<<soma;
cout<<"\n\n"; system("pause");
}

for

RAV2 RAV3

ALGORITMOS

MATRIZES

A1x4

13

Unidimensional(vetor)
bidimensional

Amxn

a11

a12 a13 ... a1n

a21

a22 a23 ... a3n

a31

a32 a33 ... a3n

...

...

2
A4x1

3
1
13

... ... ...

am1 am2 am3 ... amn


RAV2 RAV3

ALGORITMOS

Dimensionando Matriz - unidimensional (vetor)

int
float
double
char
long long int
...
RAV2 RAV3

ALGORITMOS

DECLARAO / ATRIBUIO
Numrico ou vetor de char unidimensional

RAV2 RAV3

ALGORITMOS

TRECHO de ENTRADA
Numrico ou char* de um caracter unidimensional

Uma palavra

Mais de uma
palavra
RAV2 RAV3

ALGORITMOS

TRECHO de SADA
Numrico ou char* (Matriz Coluna) unidimensional

Numrico ou char* (Matriz Linha) unidimensional

Vetor de char unidimensional

RAV2 RAV3

ALGORITMOS

Os trs trechos da matriz linha


int idades[10] , x;
for(x=0; x<10; x++)
{
cout<<"\nIdade: ";
cin>>idades[x];
}
cout<<"\n\nIdades\n\n";
for(x=0; x<10; x++)
cout<<idades[x]<<"\t";
RAV2 RAV3

ALGORITMOS

Os trs trechos da matriz coluna


int idades[10] , x;
for(x=0; x<10; x++)
{
cout<<"\nIdade: ";
cin>>idades[x];
}
cout<<"\n\nIdades\n\n";
for(x=0; x<10; x++)
cout<<idades[x]<<"\n";
RAV2 RAV3

ALGORITMOS

Gerando o vetor soma de dois vetores


for(x=0; x<TAM; x++)
soma[x]= A[x] + B[x];

RAV2 RAV3

ALGORITMOS

Gerando o vetor soma de dois vetores


for(x=0; x<TAM; x++)
soma[x]= A[x] + B[x];

Gerando o vetor media de dois vetores


for(x=0; x<TAM; x++)
media[x]=(A[x] + B[x])/2;

RAV2 RAV3

ALGORITMOS

Trecho que soma todos os elementos de um vetor


soma=0;
for(x=0; x<TAM; x++)
soma += vet[x];

RAV2 RAV3

ALGORITMOS

Trecho que soma todos os elementos de um vetor


soma=0;
for(x=0; x<TAM; x++)
soma += vet[x];
Trecho que calcula a mdia todos os elementos de um vetor
soma=0;
for(x=0; x<TAM; x++)
soma += vet[x];
media = soma/TAM;
RAV2 RAV3

ALGORITMOS

MATRIZES BIDIMENSIONAIS

Notas4x4

Amxn

a11

a12 a13 ... a1n

a21

a22 a23 ... a3n

a31

a32 a33 ... a3n

...

...

9 7 8,5

5 7 8

10 4 6 7
6

5 9

5,5

... ... ...

am1 am2 am3 ... amn


RAV2 RAV3

ALGORITMOS

Dimensionando Matriz - bidimensional

int
float
double
char
long long int
...
RAV2 RAV3

ALGORITMOS

RAV2 RAV3

ALGORITMOS

Matriz somaLinha

70
mat4x3

30 150

250

300 50 200

550

120 80 100
130 70 200

somaLinha

300
400

RAV2 RAV3

ALGORITMOS

Trecho que inicializa a Matriz somaLinha


//inicializa SomaLinha
for(L=0; L < TamLinha ; L++)
somaLinha[L] = 0;

RAV2 RAV3

ALGORITMOS

Trecho que inicializa a Matriz somaLinha


//inicializa SomaLinha
for(L=0; L < TamLinha ; L++)
somaLinha[L] = 0;

Trecho que gera a Matriz somaLinha


//gera a matriz SomaLinha
for(L=0;L < TamLinha; L++)
for (c=0; c<TamColuna;c++)
somaLinha[L] += mat[L][c];
RAV2 RAV3

ALGORITMOS

Matriz somaColuna

70

30 150

300 50 200
mat4x3

120 80 100
130 70 200

somaColuna 620 230 650

RAV2 RAV3

ALGORITMOS

Trecho que inicializa a Matriz somaColuna


//inicializa somaColuna
for (C=0; C<TamColuna; C++)
somaColuna[C] = 0;
Trecho que gera a Matriz somaColuna
//gera a matriz somaColuna
for (C=0; C < TamColuna; C++)
for(L=0; L < TamLinha; L++)
somaColuna[C] += mat[L][C];
RAV2 RAV3

ALGORITMOS

Para finalizar, vou fazer um programa mais matemtico.

M5x5

- - - -

- - - -

- - - -

- - - -

- - - -

RAV2 RAV3

ALGORITMOS

Dimensionamento

Entrada

RAV2 RAV3

ALGORITMOS

Dimensionamento
float M[5][5]; int L, C;
Entrada

RAV2 RAV3

ALGORITMOS

Dimensionamento
float M[5][5]; int L, C;
Entrada
for(L=0; L < 5 ; L++)
{
for(C=0; C < 5 ;C++)
{
cout<<"\nElemento "<<L+1<<", "<<C+1<<": ";
cin>>M[L][C];
}
}

RAV2 RAV3

ALGORITMOS

Saida

RAV2 RAV3

ALGORITMOS

Saida
system("cls");
cout<<"\nElementos da Matriz\n\n";
for (L= 0; L < 5 ; L++)
{
for(C=0; C < 5 ; C++)
cout<<M[L][C]<< "\t";
cout<<"\n\n";
}

RAV2 RAV3

ALGORITMOS

system("cls");
cout<<"\nElementos da Matriz Acima da DP\n\n";
for (L= 0; L < TAM ; L++)
{
for(C=0; C < TAM ; C++)
if( L < C )
cout<<M[L][C]<< "\t";
else
cout<<"\t";
cout<<"\n";
}

RAV2 RAV3

ALGORITMOS

system("cls");
cout<<"\nElementos da Matriz Acima da DP\n\n";
for (L= 0; L < TAM ; L++)
{
for(C=0; C < TAM ; C++)
if( L < C )
cout<<M[L][C]<< "\t";
else
cout<<"\t";
cout<<"\n";
}

RAV2 RAV3

ALGORITMOS

if( L > C )
cout<<M[L][C]<< "\t"; //Triangulo Superior DP
else
cout<<"\t";

if( L == C )
cout<<M[L][C]<< "\t"; //Diagonal Principal
else
cout<<"\t";

RAV2 RAV3

ALGORITMOS

FUNES que manipulam strings(algumas)


C++

Biblioteca cstring

strlen(str)

n de caracteres de uma cadeia

strcpy(strD, strO)

copia cadeia strO em strD

strcmp(str1, str2)

compara duas cadeias, retornando:


0 se forem iguais
menor que 0 se str1 vier antes de str2
maior que 0 se str1 vier depois de str2

strcat(str1, str2)

concatena duas cadeias

strupr(str) **

converte a cadeia de caracteres para letras


maisculas.

strlwr(str) **

converte a cadeia de caracteres para letras


minsculas.
RAV2 RAV3

ALGORITMOS

FUNES que manipulam caracteres(algumas)


C++

Biblioteca cctype

toupper(char c) converte uma letra minscula para letra maiscula


tolower(char c) converte uma letra maiscula para letra minscula
isalpha(char c)

checa se o caracter uma letra

isdigit(char c)

checa se o caracter um algarismo

RAV2 RAV3

ALGORITMOS

FUNES que manipulam caracteres(algumas)


C++

Biblioteca cstdlib

atoi(str[])

converte uma string para int se possvel, ou 0

atoII(str[])

converte uma string para long long int se possvel,ou 0

atof(str[])

converte uma string para ponto flutuante

system(...) executa um comando


abs(nmero)

Retorna o valor absoluto do nmero

RAV2 RAV3

ALGORITMOS

FUNES que manipulam caracteres(algumas)


C++

Biblioteca iomanip

setw(int n)

define a largura do campo(nmero de colunas)

setfill(char c)

preenche as colunas no usadas com o caracter c

setprecision(int n) define o nmero de casas decimais


setbase(int n)

define a base que ser usada(8/10/16)

fixed

fixa o ponto flutuante(notao normal)

left

ajusta o valor esquerda

right

ajusta o valor direita

oct

converte para octal

hex

converte para hexadecimal

uppercase

sada em hexadecimal com letras maisculas


RAV2 RAV3

ALGORITMOS

Resumindo

RAV2 RAV3