Baixe o app para aproveitar ainda mais
Prévia do material em texto
INTRODUÇÃO À LOGICA DE PROGRAMAÇÃO Eduardo Luiz Pareto RAV2 – RAV3 RAV2 – RAV3 if simples if composto ifs encadeados RAV2 – RAV3 Obs: !(nao) tem maior hierarquia, seguido do &&(and) e, depois, ||(ou) Obs: Todos têm a mesma hierarquia RAV2 – RAV3 switch() RAV2 – RAV3 for while do...while RAV2 – RAV3 while -Ideal quando o úmero de repetições for desconhecido, sendo o teste executado no início. -Uma vantagem é que o usuário pode decidir quando finaliza a repetição. -Pode simular a estrutura do for, mas, nesse caso, o usuário não decide quando parar e também a estrutura do…while, embora duplique o número de testes. float num; cout << "\nNumero positivo. Qualquer outro sai:"; cin >> num; while( num > 0) { //bloco cout << "\nNumero positivo. Qualquer outro sai:"; cin >> num; } RAV2 – RAV3 char resp; resp='S'; while(resp == 'S') { //bloco cout << "Pressione S para continuar: "; cin >> resp; resp=toupper(resp); } while -Ideal quando o úmero de repetições for desconhecido, sendo o teste executado no início. - Uma vantagem é que o usuário pode decidir quando finaliza a repetição. -Pode simular a estrutura do for, mas, nesse caso, o usuário não decide quando parar e também a estrutura do…while, embora duplique o número de testes. RAV2 – RAV3 int conta; conta = 1; while( conta <= 10 ) { //bloco conta++; // conta = conta +1; ou conta += 1; } while -Ideal quando o úmero de repetições for desconhecido, sendo o teste executado no início. - Uma vantagem é que o usuário pode decidir quando finaliza a repetição. -Pode simular a estrutura do for, mas, nesse caso, o usuário não decide quando parar e também a estrutura do…while, embora duplique o número de testes. RAV2 – RAV3 Uma Um comando cin, ou de atribuição, antes da estrutura while para entrar na repetição e um comando cin, ou de atribuição, antes de fechar a estrutura while, para repetir ou sair da repetição. RAV2 – RAV3 do…while -É uma estrutura de fácil construção e muito usada para programas com menus. -O teste acontece ao final, significando que executa o bloco pelo menos uma vez. - Assim como a estrutura while, é usada quando o número de repetições for desconhecido. -Pode simular a estrutura do for e a estrutura while, embora nessa última dobre o número de testes. int resp; do{ //Bloco com cout cout << "\n5- Sair: "; cin >> resp; //switch(){} }while( resp != 5 ); RAV2 – RAV3 do…while -É uma estrutura de fácil construção e muito usada para programas com menus. -O teste acontece ao final, significando que executa o bloco pelo menos uma vez. - Assim como a estrutura while, é usada quando o número de repetições for desconhecido. -Pode simular a estrutura do for e a estrutura while, embora nessa última dobre o número de testes. int conta=1; do{ //Bloco com cout onde existem algumas linhas e conta++; // conta = conta +1; ou conta += 1; }while( conta <= 10 ); RAV2 – RAV3 for -Ideal quando o número de repetições for conhecido durante a elaboração do programa ou quando puder ser fornecido durante a execução. - Controlada, na sintaxe padrão, por uma variável contadora. - Simula com facilidade as estruturas do while e do do...while. int conta; for( conta=1; conta <=10 ; conta ++) { //Bloco } RAV2 – RAV3 for -Ideal quando o número de repetições for conhecido durante a elaboração do programa ou quando puder ser fornecido durante a execução. - Controlada, na sintaxe padrão, por uma variável contadora. - Simula com facilidade as estruturas do while e do do...while. float num; for( ; ; ) { cout << "\nNumero positivo. Qualquer outro sai:"; cin >> num; if( num <= 0) break; //Bloco } RAV2 – RAV3 for -Ideal quando o número de repetições for conhecido durante a elaboração do programa ou quando puder ser fornecido durante a execução. - Controlada, na sintaxe padrão, por uma variável contadora. - Simula com facilidade as estruturas do while e do do...while. float num; for( ; ; ) { cout << "\nNumero positivo. Qualquer outro sai:"; cin >> num; //Bloco if( num <= 0) break; } RAV2 – RAV3 for(var= vi; var operadorR vf; var=var operadorA r) var += r / var -= r / var *= r / var /= r r = razão ou var++ / var -- for(c= 1; c <= 5; c=c + 1) for(c= 1; c <= 5; c++) for(c= 5; c >= 1; c=c - 1) for(c= 5; c >= 1; c- -) for(c= 2; c <= 20; c+= 2) for(c 64; c >= 2; c=c /2) for(c= 3; c <= 243; c*=3) for(c= 20; c >= 2; c-= 2) RAV2 – RAV3 #include <iostream> #include <cstdlib> using namespace std; int main() { for( int c= 5 ; c <= 50 ; c += 5) cout << c << " "; system("pause>NULL"); return 0; } 5 10 15 20 25 30 35 40 45 50 -------------------------------- Process exited with return value 0 Press any key to continue . . . Exibindo a série 5 : 10:...: 495 : 500. RAV2 – RAV3 Praticando RAV2 – RAV3 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 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) Vamos treinar – Onde está o erro? RAV2 – RAV3 Se o sexo for feminino e a idade maior ou igual a 18, ACEITA, caso contrário, RECUSADA char sexo='f'; int idade=17; if(sexo == 'f' || sexo == 'F' && idade >=18) -> Vamos treinar – Onde está o erro? RAV2 – RAV3 Se o sexo for feminino e a idade maior ou igual a 18, ACEITA, caso contrário, RECUSADA char sexo='f'; int idade=17; if(sexo == 'f' || sexo == 'F' && idade >=18) -> ACEITA Vamos treinar – Onde está o erro? RAV2 – RAV3 Se o sexo for feminino e a idade maior ou igual a 18, ACEITA, caso contrário, RECUSADA char sexo='f'; int idade=17; if(sexo == 'f' || sexo == 'F' && idade >=18) if( ( sexo == 'f' || sexo == 'F' ) && idade >=18) -> RECUSADA Vamos treinar – Onde está o erro? RAV2 – RAV3 O programa do maior de três números e suas variações. RAV2 – RAV3 #include <iostream> #include <cstdlib> using namespace std; int main() { double a,b,c; cout<<"\n1o numero: "; cin>>a; cout<<"\n2o numero: "; cin>>b; cout<<"\n3o numero: "; cin>>c; if( a > b && a > c ) cout<<a<<"\n"; else if( b > c ) cout<<b<<"\n"; else cout<<c<<"\n"; system("pause"); return 0; } Maior RAV2 – RAV3 cout << b << " "<< c; cout << a << " " << c; cout << a << " " << b; #include <iostream> #include <cstdlib> using namespace std; int main() { double a,b,c; cout<<"\n1o numero: "; cin>>a; cout<<"\n2o numero: "; cin>>b; cout<<"\n3o numero: "; cin>>c; if( a > b && a > c ) cout<<a<<"\n"; else if( b > c ) cout<<b<<"\n"; else cout<<c<<"\n"; system("pause"); return 0; } Dois menores RAV2 – RAV3 if( a < b && a < c ) else if( b < c) Menor #include <iostream> #include <cstdlib> using namespace std; int main() { double a,b,c; cout<<"\n1o numero: "; cin>>a; cout<<"\n2o numero: "; cin>>b; cout<<"\n3o numero: "; cin>>c; if( a > b && a > c ) cout<<a<<"\n"; else if(b > c ) cout<<b<<"\n"; else cout<<c<<"\n"; system("pause"); return 0; } RAV2 – RAV3 cout << b << " "<< c; cout << a << " " << c; cout << a << " " << b; Dois maiores #include <iostream> #include <cstdlib> using namespace std; int main() { double a,b,c; cout<<"\n1o numero: "; cin>>a; cout<<"\n2o numero: "; cin>>b; cout<<"\n3o numero: "; cin>>c; if( a < b && a < c ) cout<<a<<"\n"; else if( b < c ) cout<<b<<"\n"; else cout<<c<<"\n"; system("pause"); return 0; } RAV2 – RAV3 Critério da ESTACIO #include <iostream> #include <cstdlib> using namespace std; int main() { double a,b,c, m1,m2, media; cout<<"\n1o numero: "; cin>>a; cout<<"\n2o numero: "; cin>>b; cout<<"\n3o numero: "; cin>>c; if( a < b && a < c ) { m1 = b; m2 = c;} else if( b < c ) { m1 = a ; m2 = c; } else { m1 = a; m2 = b; } media = (m1 + m2 ) /2; if(m1 >= 4 && m2 >= 4 && media >= 6 ) cout <<"\nAPROVADO\n"; else cout <<"\nREPROVADO\n"; system("pause"); return 0; } RAV2 – RAV3 O programa que, ao se digitar uma das sete letras do Sistema Romano, exibe o valor correspondente no Sistema Decimal, usando swtich() . RAV2 – RAV3 #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 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 e´uma letra do Sistema Romano\n"; } cout<<"\n\n"; system("pause"); return 0; } RAV2 – RAV3 O programa que acumula valores de 10 depósitos e, ao final, exibe a soma de todos os depósitos. RAV2 – RAV3 #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 Observe o programa #include <iostream> #include <cstdlib> using namespace std; int main() { int C; for(C = 1; C <= 10; C++) cout << "*"; cout << "\n\n"; system("pause"); return 0; } RAV2 – RAV3 Observe o programa #include <iostream> #include <cstdlib> using namespace std; int main() { int C; for(C = 1; C <= 10; C++) cout << "*"; cout << "\n\n"; system("pause"); return 0; } RAV2 – RAV3 Vamos colocar um for dentro de um for #include <iostream> #include <cstdlib> using namespace std; int main() { int C, L; for(L = 1; L<=10; L++) { for(C = 1; C <= 10; C++) cout << "*"; cout << "\n"; } cout << "\n\n"; system("pause");return 0; } RAV2 – RAV3 Vamos colocar um for dentro de um for #include <iostream> #include <cstdlib> using namespace std; int main() { int C, L; for(L = 1; L<=10; L++) { for(C = 1; C <= 10; C++) cout << "*"; cout << "\n"; } cout << "\n\n"; system("pause");return 0; } RAV2 – RAV3 Vamos alterar o valor final do for interno #include <iostream> #include <cstdlib> using namespace std; int main() { int C, L; for(L = 1; L<=10; L++) { for(C = 1; C <= L ; C++) cout << "*"; cout << "\n"; } cout << "\n\n"; system("pause");return 0; } RAV2 – RAV3 Vamos alterar o valor final do for interno #include <iostream> #include <cstdlib> using namespace std; int main() { int C, L; for(L = 1; L<=10; L++) { for(C = 1; C <= L ; C++) cout << "*"; cout << "\n"; } cout << "\n\n"; system("pause");return 0; } RAV2 – RAV3 #include <iostream> #include <cstdlib>//Necessário em alguns Compiladores #include <clocale> //PARA ACENTUAR using namespace std; int main() { setlocale(LC_ALL, "Portuguese");//PARA ACENTUAR int x; long long num, fatorial; cout << "\nDigite número positivo. Qualquer outro sai: "; cin >> num; while( num > 0 ) { fatorial = 1; //inicializando o acumulador de produto for(x= 1; x <= num ; x++ ) //Pode ser de num até 1 fatorial *= x; cout << "\nFatorial de "<< num << " = " << fatorial<< endl; cout << "\nDigite número positivo. Qualquer outro sai: "; cin >> num; } system("pause"); return 0; } O programa do fatorial A estrutura do for dentro da estrutura while RAV2 – RAV3 #include <iostream> #include <cstdlib>//Necessário em alguns Compiladores #include <clocale> //PARA ACENTUAR using namespace std; int main() { setlocale(LC_ALL, "Portuguese");//PARA ACENTUAR int x; long long num, fatorial; cout << "\nDigite número positivo. Qualquer outro sai: "; cin >> num; while( num > 0 ) { fatorial = 1; //inicializando o acumulador de produto for(x= 1; x <= num ; x++ ) //Pode ser de num até 1 fatorial *= x; cout << "\nFatorial de "<< num << " = " << fatorial<< endl; cout << "\nDigite número positivo. Qualquer outro sai: "; cin >> num; } system("pause"); return 0; } O programa do fatorial A estrutura do for dentro da estrutura while RAV2 – RAV3 Acumulador Regras 1- Declarar a variável com o mesmo tipo do dado que irá receber. 2- Inicializar com elemento neutro da operação na maioria das vezes. Soma ou Subtração: 0 e Multiplicação e Divisão: 1 3- Incluir na repetição o comando que representa o acumulador. 4- Após a repetição,exibir , testar ou fazer algo que o inclua. Contar elementos de um conjunto ou somar( - * / ) elementos de um conjunto que atendam, ou não a uma condição. RAV2 – RAV3 Regras 1- float soma; 2- soma=0; 3- soma += nota; ou soma= soma + nota; 4- cout << soma; // cout << soma / 30; -> média Calcular a média da turma de ILP com 30 alunos. Acumulador RAV2 – RAV3 Regras 1- int conta; 2- conta=0; 3- conta ++; ou conta +=1; ou conta = conta +1; 4- cout << conta; ou (float) conta/ 40 * 100; -> percentual Contar as idades de 40 pessoas no intervalo 18 29 Acumulador RAV2 – RAV3 O programa que recebe idade de 50 pessoas e exibe, ao final, quantas têm idade maior ou igual a 60 anos. RAV2 – RAV3 #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 #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; if( n >= 0 ) cout<<"\nRaiz: "<< sqrt(n)<<endl; c += 2; } cout<<"\n\n"; system("pause"); return 0; } Observe o programa RAV2 – RAV3 #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;if( n >= 0 ) cout<<"\nRaiz: "<< sqrt(n)<<endl; c += 2; } cout<<"\n\n"; system("pause"); return 0; } Observe o programa Qual estrutura está sendo simulada pelo while? RAV2 – RAV3 for #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; if( n >= 0 ) cout<<"\nRaiz: "<< sqrt(n)<<endl; c += 2; } cout<<"\n\n"; system("pause"); return 0; } Observe o programa Qual estrutura está sendo simulada pelo while? RAV2 – RAV3 #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; if( n >= 0 ) cout<<"\nRaiz: "<< sqrt(n)<<endl; c += 2; } cout<<"\n\n"; system("pause"); return 0; } Observe o programa Qual estrutura está sendo simulada pelo while? Quantas vezes o bloco será repetido? for RAV2 – RAV3 #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; if( n >= 0 ) cout<<"\nRaiz: "<< sqrt(n)<<endl; c += 2; } cout<<"\n\n"; system("pause"); return 0; } Observe o programa Qual estrutura está sendo simulada pelo while? Quantas vezes o bloco será repetido? for 10 0 2 4 6 8 10 12 14 16 18 RAV2 – RAV3 O programa que conta os algarismos de um número. RAV2 – RAV3 #include <iostream> #include <cstdlib> using namespace std; int main() { int c = 0, num=319507 ; while( num > 0 ) { c++; num /= 10; } cout << c; system("pause>NULL"); return 0; } RAV2 – RAV3 Aprendemos a criar RAV2 – RAV3 cout<<"\nDigite idade: "; cin >>idade; while( idade < 0 || idade > 120 ) { cout<<"\nInvalida. Digite idade:"; cin>>idade; } Proteção para entrada de idades válidas RAV2 – RAV3 cout<<"\nDigite sexo (m ou f): "; cin >>sexo; sexo= tolower(sexo); while( sexo != 'm' && sexo != 'f' ) { cout<<"\nInvalido. Digite sexo (m ou f):"; cin>>sexo; sexo= tolower(sexo); } Proteção para sexo M ou F RAV2 – RAV3 Unidimensional Bidimensional 2 3 1 13 A4x1 2 3 1 13 A1x4 a11 a12 a13 ... a1n a21 a22 a23 ... a3n a31 a32 a33 ... a3n ... ... ... ... ... am1 am1 am2 ... amn Amxn ESTRUTURAS HOMOGÊNEAS RAV2 – RAV3 Operação – Multiplicar por um escalar Aplicação: Gerar os novos salários Salarios 2415 1890 1155 2100 Nsalarios 2300 1800 1100 2000 X 1.05 = RAV2 – RAV3 Operação – Somar duas matrizes Loja 25 38 120 13 40 50 150 20 Total + = 15 12 30 7 Estoque Aplicação: Controle de material RAV2 – RAV3 Operação: somar os elementos da matriz 4200 5800 3000 7000 Salarios Soma = 20000 Aplicação: Total da Folha de Pagamento RAV2 – RAV3 int float double char long long int ... DECLARANDO Matriz - unidimensional (vetor) tipo nomeMatriz[tamanho]; RAV2 – RAV3 1) Guardar 10 idades. 2) Duas notas e a média de 50 alunos. 3) Matrícula e CR de 60 alunos. 4) Sexo de 30 pessoas. 5) Nome de uma pessoa. DECLARANDO Matriz - unidimensional (vetor) RAV2 – RAV3 1) Guardar 10 idades. 2) Duas notas e a média de 50 alunos. 3) Matrícula e CR de 60 alunos. 4) Sexo de 30 pessoas. 5) Nome de uma pessoa. DECLARANDO Matriz - unidimensional (vetor) RAV2 – RAV3 Numérico ou vetor de char DECLARAÇÃO / ATRIBUIÇÃO int mat[]={9, 10, 10, 7, 8, 9, 9, 10, 6, 7, 8}; char sexo[]={'m' , 'f', 'f', 'f', 'f', 'm' ,'m' }; char frase[]="Linguagem C++"; RAV2 – RAV3 Vetor de tamanho 5 e do tipo inteiro de quatro bytes Armazenamento na Memória Principal RAV2 – RAV3 Armazenamento na Memória Principal RAV2 – RAV3 endereço-base + deslocamento * tamanho do tipo O nome de uma matriz corresponde ao primeiro endereço do conjunto de endereços da Memória Principal. Para localizarmos um elemento da matriz, usamos a fórmula abaixo. Armazenamento na Memória Principal RAV2 – RAV3 10000 endereço-base + deslocamento * tamanho do tipo endereço-base Armazenamento na Memória Principal RAV2 – RAV3 10000 endereço-base + 2 * 4 = 1008 10008 endereço-base + deslocamento * tamanho do tipo Armazenamento na Memória Principal RAV2 – RAV3 10000 10012 10016 10004 10008 Armazenamento na Memória Principal RAV2 – RAV3 Então, conclui-se que 0 significa que não existe deslocamento em relação ao endereço-base! RAV2 – RAV3 TRECHOS DE ENTRADA Numérico ou char de um caracter Uma palavra Mais de uma palavra for (var = 0 ; var < tamanho ; var ++ ) { cout << "\nMensagem: "; cin >> nomeVetor[ var] ; } cout<< "\nMensagem: "; cin >> nomeVetor; cout<< "\nMensagem: "; cin .getline( nomeVetor, tamanho); // para i tipo vetor char cout<< "\nMensagem: "; getline(cin, nomeVetor); // tipo o tipo string RAV2 – RAV3 Numérico ou char (Matriz Coluna) Numérico ou char (Matriz Linha) Vetor de char TRECHOS DE SAÍDA cout << "\nTÍTULO\n"; for (var = 0 ; var < tamanho ; var ++ ) cout << nomeMatriz [var] << "\n"; cout << "\nTÍTULO\n"; for (var = 0 ; var < tamanho ; var ++ ) cout << nomeMatriz [var] << "\t"; cout << nomeMatriz << "\n"; RAV2 – RAV3 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"; int idades[10] , x; Os três trechos da matriz linha RAV2 – RAV3 Os três trechos da matriz coluna 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"; int idades[10] , x; RAV2 – RAV3 for(x=0; x<TAM; x++) soma[x]= A[x] + B[x]; Gerando o vetor soma de dois vetores RAV2 – RAV3 for(x=0; x<TAM; x++) media[x]=(A[x] + B[x])/2; Gerando o vetor media de dois vetores for(x=0; x<TAM; x++) soma[x]= A[x] + B[x]; Gerando o vetor soma de dois vetores RAV2 – RAV3 soma=0; for(x=0; x<TAM; x++) soma += vet[x]; Trecho que soma todos os elementos de um vetor RAV2 – RAV3 Trecho que calcula a média todos os elementos de um vetor soma=0; for(x=0; x<TAM; x++) soma += vet[x]; media = soma/TAM; soma=0; for(x=0; x<TAM; x++) soma += vet[x]; Trecho que soma todos os elementos de um vetor RAV2 – RAV3 Trecho que exibe os números múltiplos de 6 de um vetor for(x=0; x<TAM; x++) if( vet[x] % 6 == 0) cout << vet[x] << endl; RAV2 – RAV3 Trecho que exibe total de números múltiplos de 6 de um vetor conta=0; for(x=0; x<TAM; x++) if( vet[x] % 6 == 0) conta ++; cout << conta << endl; Trecho que exibe os números múltiplos de 6 de um vetor for(x=0; x<TAM; x++) if( vet[x] % 6 == 0) cout << vet[x] << endl; RAV2 – RAV3 Programa que espelha uma string #include <iostream> #include <cstdlib> #include <cstring> using namespace std; int main ( ) { char frase[]="Linguagem C++"; cout<< endl; for(intx = strlen(frase) -1; x>=0; x--) cout << frase[x]; system("pause>NULL");return 0; }
Compartilhar