You are on page 1of 19

LTP I Instrutor HEngholm

Apostila de Algoritmos verso 0.8


Apostila de Algoritmos verso 0.8......................................................................................................1 Introduo..............................................................................................................................................2 Estrutura de um algoritmo......................................................................................................................2 Diagrama de atividades...........................................................................................................................2 Exerccios...............................................................................................................................................2 Cash dispenser....................................................................................................................................2 Comportamento esttico e dinmico......................................................................................................3 Comportamento dinmico......................................................................................................................3 Diagrama de transio de estado............................................................................................................3 Variveis.................................................................................................................................................4 Tipos de variveis...................................................................................................................................4 Tipos de dados.......................................................................................................................................4 Comando de atribuio...........................................................................................................................5 Operadores.............................................................................................................................................6 Operadores Relacional e Lgico.............................................................................................................7 Exerccios 1 : .....................................................................................................................................8 Comandos de E/S...................................................................................................................................8 Exerccios...........................................................................................................................................9 Laos de repetio..................................................................................................................................9 Estrutura de repetio FAA-ENQUANTO.........................................................................................9 Estrutura de repetio ENQUANTO...................................................................................................11 Estrutura de repetio DE-ENQUANTO-VARIAO-FAA...........................................................12 Exemplos de cdigos (algoritmos e cdigos em C++) e exerccios.....................................................15 1 Programa que solicita nmeros e permite a realizao de contas...............................................15 2 Programa que solicita dados de uma pessoa e os imprime na tela..............................................16 3 Programa que armazena nmeros em matriz..............................................................................16 Exemplos de cdigos em C++..............................................................................................................18 1 Programa que permite apenas a entrada de nmeros inteiros de no mximo 4 dgitos..............18 2 programa que solicita e verifica senha de usurio, permitindo 3 chances...................................18

LTP I Instrutor HEngholm

Introduo

Definio de Algoritmo Caminho para a soluo de um problema, podendo existir vrios. Forma de escrever aes para resoluo de problemas sem se preocupar com a linguagem de programao (pseudo-cdigo). Representa as aes a serem tomadas pela mquina de forma organizada e lgica Fases de um algoritmo: Definir o problema; Verificar formas de se resolver o problema; Definir o algoritmo; Selecionar a linguagem de programao e implementar o programa; Verificar se o problema foi resolvido a contento. Estrutura de um algoritmo Algoritmo consiste em um conjunto lgico e finito de aes (instrues) que resolvem um determinado problema com incio e fim.

Diagrama de atividades
Apresentar o Diagrama de atividades atravs dos algoritmos a seguir. Exerccios Solicitao de nome e idade Apresentao do Nome com a idade: Sr(a). Fulano, voc tem X anos de idade verificao da validade da idade digitada Solicitao do valor do dlar verificao da validade do valor digitado Apresentao de mensagem: Valor do dlar: R$ 3,54 Cash dispenser Cliente passa o carto, sistema verifica validade e pede a senha, dando 3 chances. Clculo de rea de figura trigonomtrica Algoritmo para clculo da rea de uma circunferncia Solicitao de uma opo de programa 1 rea de uma circunferncia (exemplo) 2 rea de um tringulo (exerccio) Para clculo solicitar arestas e raio verificao da validade dos dados digitados.

LTP I Instrutor HEngholm

Comportamento esttico e dinmico


Comportamento dinmico
Quando um objeto pode existir em vrios estados diferentes (Ciclo de vida). Diagrama de cerca para o objeto Lmpada: Desligada, Ligada, Queimada.

Diagrama de cerca para o objeto Carto de crdito (exerccio): Nulo, Ativo, Bloqueado, Encerrado, Arquivado Diagrama de cerca para o objeto Reserva: Nulo, Solicitada, Lista de espera, Confirmada, Utilizada, Cancelada, Arquivada. Diagrama de cerca para o objeto Avio (exerccio): Parado, Acelerando, Levantando vo, Voando, Desacelerando, Pousando, Parado Diagrama de transio de estado Estado: modo de comportamento do objeto. Transio: representa o movimento de um estado para outro. Condio: no caso de uma condio ser satisfeita, o objeto move-se para outro estado. Ao: operao executada por um objeto quando se move de um estado para outro.

Diagrama de transio de estado para o objeto Reserva

Nulo

Pedido de reserva Assento disponvel/Reduzir contagem de assentos


Confirmado Solicitado

Sem assentos disponveis


Lista de espera

Assento disponvel/Reduzir contagem de assentos

Partida do transportador/ Acrescentar passageiro

Partida do transportador/ Cancelar lista de espera

Utilizado

Pessoa cancelada/Aumentar contagem de assentos

Cancelado

Chegada do transportador/ Arquivo de vo

Arquivado

LTP I Instrutor HEngholm

Estrutura de um programa em C e C++


Abaixo apresentamos a estrutura de um programa em C++. Todo programa nesta linguagem deve ter definida a funo principal main pois atravs desta que o programa comea a ser executado. Sem esta funo o programa nem compilado. void main( ) { //Comeo //Declarao de variveis //PROGRAMA } //Fim Nestas linguagens o nome do programa dado na hora de gravar o arquivo fonte, ao contrrio de outras linguagens como o Pascal (Program teste).

Variveis
A informao existente no computador est armazenada em memria (RAM, HD, ...). Consideraremos no curso a RAM que pode ser vista como uma seqncia finita de caixas que armazenam algum tipo de informao (nmero, letra, palavra, ...). Fisicamente cada caixa ou posio possui um endereo para ser localizada (hexadecimal).

Endereo Fsico 3000: B712 2000: 12EC 3000: 0004

Informao Joo 12345 H

As linguagens de programao permitem-nos referir a estes endereos dando nome a eles. So as variveis de programao.

Endereo Fsico Nome nmero letra

Informao Joo 12345 H

O CONTEDO DAS VARIVEIS NO FIXO. Explicar nome de variveis (sempre comear com uma letra e ser diferente das palavras chave da linguagem CASE SENSITIVE). Tipos de variveis Considere a frmula matemtica abaixo.

V=
onde: -

4 3 R 3
Existem valores constantes; Valores a serem substitudos.

Tipos de dados
Em C e C++ temos

LTP I Instrutor HEngholm TIPO (bites) CHAR 8 INT 16 FLOAT 32 DOUBLE 64 VOID 0

Em Java temos o tipo de dado String. Para declarar, por exemplo, uma varivel do tipo string de 100 caracteres em C e C++ de nome nomeUsuario devemos fazer: char nomeUsuario[100];

Comando de atribuio
A finalidade de declararmos variveis em programas para armazenar dados nas mesmas. Uma das formas de se armazenar dados dentro das variveis de atribuio direta do valor desejado atravs do sinal de igual. Em outras situaes temos que utilizar funes como a strcpy que copia strings para variveis deste tipo. Abaixo temos alguns exemplos relacionados a atribuies de dados a variveis declaradas. //Programa Teste inicio nmero inteiro INTEIRO nmero inteiro OUTRO_INTEIRO caracter LETRA string NOME INTEIRO 10 OUTRO_INTEIRO INTEIRO + 200 LETRA A NOME Quele Souza fim //Programa Teste void main() { int numeroInteiro; //Contedo indefinido int outroNumeroInteiro; //declarao char letra; char nomeUsuario [100]; //reserva espao para //armazenamento de at 100 caracteres numeroInteiro = 10; //Contedo de numeroInteiro = 10 outroNumeroInteiro = numeroInteiro + 200; //contedo //de outroNumeroInteiro = 210 letra = A; Strcpy(nomeUsuario, Quele Souza); //falar do = do JAVA }

No caso de armazenar o nome Quele Souza no array nomeUsuario acima, cada letra ocupar um espao de memria que pode ser acessado atravs da utilizao de ndices no nome da varivel. O terminador nulo indica o fim da string e inserido automaticamente pelo sistema. nomeUsuario [0] nomeUsuario [1] Q u nomeUsuario [2] e ... ... nomeUsuario [11] /0 nomeUsuario [99]

1) Dar o tipo de cada uma das constantes a) 613 b) 613.0 c) -613 d) 613 e)Bem vindo ao sistema 2) Faa um ALGORITMO para atribuir a variveis as seguintes informaes: a) 613 b) 613.0 c) Senha invlida

LTP I Instrutor HEngholm 3) No seguinte PROGRAMA existe algum erro? Onde? ALGORITMO Teste VARIVEIS Inteiro idade caracter letra INICIO idade 23 idade 678 idade letra letra ABC letra A letra 2 FIM Declarao de Variveis As variveis devem ser sempre declaradas. Tipo Exemplos: int double char lista_de_variveis a, b, idade; x, y, z; nome, apelido;

Iniciando variveis em tempo de declarao As linguagens de programao C e C+ permitem armazenar dados nas variveis durante a declarao das mesmas. Exemplos: char ch = a; char nome[15] = my name; int I = 1, j = -100, inteiro = 0; double Pi = 3.14159;

Operadores
Temos em linguagens de programao os seguintes tipos de operadores: aritmticos, lgicos e relacionais. Abaixo temos exemplificados estes operadores. Operadores Aritmticos subtrao + adio * multiplicao / diviso % resto da diviso -decremento ++ incremento OBS: a = a + 1; a = a - 1; {x = 10; a = x++;} o mesmo que o mesmo que a++; a-- ;

a = 10 e depois x = 11

LTP I Instrutor HEngholm {x = 10; a = ++x;} Operadores Relacional e Lgico Relacionais > >= < <= == != && || ! maior maior ou igual menor menor ou igual igual diferente Lgicos And Or Not x = 11 e depois a = 11

Explicar que FALSE = 0 e TRUE = 1. a) Operador AND: TRUE AND TRUE TRUE AND FALSE FALSE AND TRUE FALSE AND FALSE b) Operador OR: TRUE OR TRUE TRUE OR FALSE FALSE OR TRUE FALSE OR FALSE c) Operador NOT: NOT TRUE NOT FALSE => FALSE => TRUE => => => => TRUE TRUE TRUE FALSE => => => => TRUE FALSE FALSE FALSE

Exemplos/Exerccios Verificar o resultados em termos de verdadeiro (true) ou falso (false) das expresses abaixo para X = 1 e Y = -3. X>5 X=1 y < 1000 y >= -10 y <= 5 x < 10 and y = -3 x < 10 and y < -3 x > 10 and y = -3 x > 10 and y < 0 x < 1 and y < 0 x <= 1 and y < 0 x > 10 or y = -3 x > 10 or y < -3 x >= 1 or y < -3 // // // // // // // // // // // // // // if if if if if if if if if if if if if if (x>5) (x==1) (y<1000) (y >= - 10) (y <= 5) (x < 10 && y == -3) (x < 10 && y < -3) (x > 10 && y == -3) (x > 10 && y < 0) (x < 1 && y < 0) (x <= 1 && y < 0) (x > 10 || y == -3) (x > -10 || y < -3) (x > -10 || y < -3) FALSE TRUE

TRUE FALSE FALSE

LTP I Instrutor HEngholm x > -10 or y < -3 Exerccios 1 : 1) indique qual o resultado ser obtido das seguintes expresses: a) 1 / 2 b) 1 % 2 c) 200 / 4 d) 5 % 2 + 3 e) 6 + 19-23 f) 3.0 * 5.0 +1 g) 1/4+2 h) 29.0 / 7+4 i) 3/6 - 7 2) Indique o resultado das seguintes expresses: a) 2 > 3 b) ( 6 < 8 ) OR ( 3 > 7 ) c) (2=1) AND (3*10 = 30) d) NOT ( 2 < 3 ) 3) Resolva a expresso das seguintes frmulas matemticas. // if (x > -10 || y < -3)

B C a) X = E D F A+

onde A= 2, B= 6, C = 3, D=4, E=8, F=4

2 X 2 3 X ( X +1) X +1 + b) onde X = 2 2 X Y= X 2 4) No programa abaixo, indique o valor armazenado nas variveis aps a execuo de cada
instruo. void main() { int a, b=3, c; c++; a = c; a = a + 2*b + c; a--; a = 10; b = b * a; }

Comandos de E/S
Existem comandos que permitem ao computador se comunicar com o mundo exterior (teclado, vdeo, impressora, ...). Veremos os comandos LER e ESCREVER. Exemplo 1: Fazer um algoritmo para escrever no vdeo do PC a mensagem Alo mundo.

LTP I Instrutor HEngholm // programa escreveMsg INICIO ESCREVA Alo Mundo FIM Exemplo 2: Escrever um algoritmo para ler um valor numrico digitado no teclado pelo usurio e atribu-lo a uma varivel do tipo numrica. // programa leNumero INICIO Numero num LEIA num FIM Neste algoritmo foi declarada uma varivel de nome num do tipo numrico e em seguida lido de teclado o valor digitado. Exemplo 3: Fazer um algoritmo para solicitar e escrever no vdeo do PC o nome do usurio. // programa escreveMsg INICIO string NOME ESCREVA Digite seu nome LEIA NOME ESCREVA Boa noite Sr(a). + NOME FIM Neste algoritmo foi declarada uma varivel de nome NOME do tipo cadeia de caracteres, em seguida solicitado ao usurio digitar seu nome, depois armazenado a string digitada naquela varivel e, por fim, impressa a string digitada na tela concatenada string Boa noite. Exerccios 1) Faa um algoritmo para ler as seguintes informaes de uma pessoa: Nome, Idade e RG e mostrar no vdeo a frase: O Sr(a). FULANO possui X anos de idade e RG nmero XXX 2) Faa um algoritmo para ler a base e a altura de um tringulo. Em seguida, escreva a rea do mesmo. 3) Idem para um trapzio.

Laos de repetio

Os laos de repetio so extremamente importantes para permitir que implementemos softwares teis. Vamos apresentar 3 tipos de lao de repetio, do-while, while e lao for. Antes disto importante comentar que em alguns casos pode-se utilizar qualquer um deles para obter o mesmo resultado e em outros a utilizao de um tipo mais eficaz do que a utilizao dos outros. Estrutura de repetio FAA-ENQUANTO Este lao de repetio verifica a condio para repetio aps executar os comandos internos do lao de repetio. Deste modo, sempre ser executado o cdigo interno do lao pelo menos uma vez. Forma geral: INICIO FAA <comandos>

LTP I Instrutor HEngholm ENQUANTO <condio for verdadeira> FIM //Em C, C++ e Java do{ //Instrues do lao de repetio }while( condies ); //Comandos break e continue Exemplo 1: Imprime 10 vezes a frase na tela // programa escreveMsg 10 vezes INICIO numero CONTROLADOR = 1 FAA ESCREVA Boa noite CONTROLADOR CONTROLADOR + 1 ENQUANTO CONTROLADOR <= 10 FIM //Em C++ void main() { int m = 1; do { cout << Boa noite; m++; } while ( m<=10); } Exemplo 2: Calcula a rea de 5 circunferncias INICIO numero CONTROLADOR = 1 numero raio FAA ESCREVA Digite o raio da circunferncia LEIA raio ESCREVA rea da circunferncia: + 2*3.1415*raio*raio CONTROLADOR CONTROLADOR + 1 ENQUANTO CONTROLADOR <= 5 FIM void main() { double raio, area; int m=1; do { cout << Digite o raio da circunferncia:; cin >> raio; area = 3.14159 * raio * raio; cout<<rea da circunferncia:<<area; m++; } while ( m<=5); }

10

LTP I Instrutor HEngholm Exemplo 3: Calcula a rea de circunferncias enquanto usurio responder que deseja continuar. INICIO caractere opcaoSelecionada numero raio FAA ESCREVA Digite o raio da circunferncia LEIA raio ESCREVA rea da circunferncia: + 2*3.1415*raio*raio ESCREVA Deseja executar novo clculo (s/n)? LEIA opcaoSelecionada ENQUANTO opcaoSelecionada = s' FIM void main() { double raio, area; char opcaoSelecionada; do { cout << Digite o raio da circunferncia:; cin >> raio; area = 3.15159 * raio * raio; cout<<rea da circunferncia:<<area; cout << Deseja executar novo clculo (s/n)?; cin >> opcaoSelecionada } while (opcaoSelecionada == s || opcaoSelecionada == S); } Exerccios 1) Faa um algoritmo para calcular N!. 2) Faa um algoritmo para: a) Ler um valor x qualquer b) Calcular Y = ( x+1)+(x+2)+(x+3)+(x+4)+(x+5)+(x+100). 3) Faa um algoritmo para somar os nmeros pares < 1000 e ao final imprimir o resultado. 4) Faa um algoritmo para ler um valor X e calcular Y = X+2X+3X+4X+5X++20X Estrutura de repetio ENQUANTO Este lao de repetio diferente do anterior devido ao fato de que antes de realizar os comandos internos do lao ele verifica se a condio do mesmo verdadeira. Deste modo, pode haver situaes em que nunca o cdigo do lao seja executado. Forma geral: INICIO ENQUANTO <condio for verdadeira> FAA <comandos> FIM //Em C, C++ e Java while (condies){ //Instrues do lao de repetio }

11

LTP I Instrutor HEngholm Estrutura de repetio DE-ENQUANTO-VARIAO-FAA Este lao de repetio permite estipularmos o intervalo de repetio e o incremento/decremento da varivel ou variveis de controle do mesmo. Forma geral: INICIO DE-ENQUANTO-VARIAO FAA <comandos> FIM //Em C, C++ e Java for ( m=0; m<10; m=m+2) { //Instrues do lao de repetio } //Neste lao a varivel m assume os valores (0, 2, 4, 6, 8) e, so executados os comandos inseridos dentro dos { }. Quando m for igual a 10 o lao de repetio interrompido. Exemplo 4: Utilize o lao for para escrever na tela 100 vezes a frase Hello world utilizando o lao for. INICIO Varivel inteira m DE m=1, enquanto m <= 10, m m + 1 FAA INICIO ESCREVA Hello world FIM FIM void main() { int m; for ( m = 1; m <= 10; m = m+1 ) { cout << Hello world ; } } Exemplo 5: Utilize o lao for para escrever na tela os nmeros mltiplos de 3 menores do que 100, em ordem decrescente, utilizando o lao for. INICIO Varivel inteira m DE m=99, enquanto m >= 3, m m - 3 FAA INICIO ESCREVA m FIM FIM void main() { int m; for ( m = 99; m >= 3; m = m-3 )

12

LTP I Instrutor HEngholm { cout << m; } }

Exerccios Tente utilizar os laos for e do-while para fazer os mesmos exerccios. Faa um algoritmo e o programa em C++ para apresentar a soma dos nmeros entre 1 e 1000. Faa um algoritmo e o programa em C++ para somar os nmeros pares < 1000 e ao final imprimir o resultado. Faa um algoritmo e o programa em C++ para calcular a rea de quantos retngulos o usurio desejar, perguntando ao final se o usurio deseja executar novo clculo (resposta = s'). DESAFIO: Sistema para verificar senha informada. O usurio ter no mximo 3 chances para digitar a senha correta no sistema. Deste modo o programa ter que solicitar e verificar a senha correta, respeitando as mensagens abaixo. Mensagens apresentadas pelo programa: Senha invlida, digite novamente apresentar quando o usurio errou a senha mas ainda no tenha errado 3 vezes. Senha correta apresentar quando usurio digitar a senha vlida Por gentileza, procure sua agncia apresentar quando o usurio errar sua senha pela terceira vez. OBS: em C++ podemos utilizar a funo strcmp (de string compare) para verificar se duas strings so iguais. Quando forem, esta funo retorna 0 (zero), exemplo: if ( strcmp(senhaDigitada, senha) == 0 ) cout << Senha vlida: Para utilizar esta funo necessrio incluir o arquivo cabealho string.h

13

LTP I Instrutor HEngholm Exerccios

Programa que solicita o nmero de vezes que o usurio deseja ver a frase Hello Word impressa na tela, imprimindo em seguida. Programa de clculo de rea de circunferncia que solicita o raio da mesma, apresentando a rea em seguida e perguntando se usurio deseja executar novo clculo. Programa de clculo de rea de retngulo que solicita a base e a altura do mesmo, apresentando a rea em seguida e perguntando se usurio deseja executar novo clculo. Idem para o trapzio (base maior, base menor e altura). idem para a transformao de graus Celsius para Kelvin (Kelvin = Celsius * 273). OBS: Para a implementao destes algoritmos necessria a utilizao de laos de repetio, while, do-while ou for. Procure implementar utilizando os 3 tipos para aprender a utiliz-los.

14

LTP I Instrutor HEngholm Exemplos de cdigos (algoritmos e cdigos em C++) e exerccios 1 Programa que solicita nmeros e permite a realizao de contas O programa solicita dois nmeros e oferece ao usurio as seguintes opes: 1 Soma 2 - Subtrao apresentado em seguida o resultado da operao. // Algoritmo possvel INICIO NUMERO REAL X e Y NUMERO INTEIRO OPCAO ESCREVA Digite o valor de X LEIA X ESCREVA Digite o valor de Y LEIA Y ESCREVA Digite a opo de clculo 1 Soma ou 2 Subtrao LEIA OPCAO SE OPCAO = 1 IMPRIMA X + Y SENAO SE OPCAO = 2 IMPRIMA X Y SENAO IMPRIMA Opo invlida FIM Programa em C++ para o algoritmo acima void main() { double X, Y; int opcao; cout << Digite o valor de X; cin >> X; cout << Digite o valor de Y; cin >> Y; cout << Digite a opo de clculo 1 Soma ou 2 Subtrao if ( opcao == 1 ) cout << X + Y; else if ( opcao == 2 ) cout << X - Y; else cout << Opo invlida; } Exerccios relacionados a este exemplo altere o algoritmo para oferecer ao usurios mais duas opes, 3 multiplicao e 4 diviso; aps terminar o item anterior, implemente a parte do algoritmo que verifica para a opo de diviso o valor de Y. Por no existir diviso por zero, o algoritmo no dever execut-la quando Y=0. Neste caso, fornecer ao usurio a mensagem No existe diviso por zero!; implemente no algoritmo lao de repetio que permita ao usurio executar quantos clculos desejar;

15

LTP I Instrutor HEngholm faa algoritmo semelhante para clculo de rea de retngulo (opo 1) e circunferncia (opo 2). 2 Programa que solicita dados de uma pessoa e os imprime na tela

O programa abaixo, solicita o Nome e a idade do usurio e imprime na tela


// Algoritmo possvel INICIO

STRING nome NUMERO INTEIRO idade IMPRIMA Digite seu nome: LEIA nome IMPRIMA Digite sua idade: LEIA idade IMPRIMA Sr(a). + nome + , voc tem + idade + anos de idade FIM
Programa em C++ para o algoritmo acima void main() {

char nome[100]; //armazena espao de memria para 100 caracteres - matriz de //caracteres int idade; cout << \ngite seu nome:; cin >> nome; cout << \ngite sua idade:; cin >> idade; cout << \n(a). << nome << , voc tem << idade << anos de idade; }
Exerccios relacionados a este exemplo altere o algoritmo para solicitar e imprimir tambm o RG. Para isto, declare outra matriz de caracteres com tamanho 20; implemente a consistncia na entrada da idade. O programa s deve permitir idades maiores do que zero e menores do que 100. Para isto, coloque o cdigo de solicitao da idade dentro de um lao de repetio. 3 Programa que armazena nmeros em matriz O programa abaixo armazena 10 numeros digitados e realiza operaes matemticas com eles. void main() { double numeros[10];//coloque o nmero desejado de nmeros reais double somaDosNumeros, somaNumerosImpares, mediaDosNumeros, numeroExtra; int m; //Utilizado para controle do lao de repetio //lao para solicitar e armazenar os 10 nmeros for( m = 0; m < 10; m ++) { cout<<\nDigite o << m + 1 << nmero:; cin >> numeros[m]; }

16

LTP I Instrutor HEngholm //a partir deste momento, voc ter armazenado na matriz os 10 nmeros e poder //fazer o que precisar //Como exemplos, vamos calcular a soma, a mdia dos nmeros e a soma dos //nmeros mpares for( m = 0; m < 10; m ++) { //Somando na soma dos nmeros somaDosNumeros = somaDosNumeros + numeros[m]; //Somando caso o nmero seja mpar if( numeros[m] % 2 != 0) //Quando o resto da diviso for 0 o nmero par somaNumerosImpares = somaNumerosImpares + numeros[m]; } mediaDosNumeros = somaDosNumeros / 10; cout<<Soma dos nmeros digitados:<< somaDosNumeros; cout<<Soma dos nmeros mpares digitados:<< somaNumerosImpares ; cout<<Mdia dos nmeros digitados:<< mediaDosNumeros; //Na verdade, a mdia no precisava ter sido armazenada em varivel para //imprimir. Veja: cout<<Mdia dos nmeros digitados:<< somaDosNumeros / 10; } Exerccios relacionados a este exemplo altere o algoritmo para apresentar a soma dos nmeros pares; crie outro tipo de resultado com os nmeros armazenados.

17

LTP I Instrutor HEngholm Exemplos de cdigos em C++ 1 Programa que permite apenas a entrada de nmeros inteiros de no mximo 4 dgitos. #include <iostream.h> #include <conio.h> #include <math.h> void main() { char numero[5], c; int contador = 0; //utilizado para indexar a matriz numero cout<<Digite um nmero inteiro de no mximo 4 dgitos:; for(; contador < 4; ){ //lao realizado enquanto no tiverem sido digitados //quatro dgitos ou usurio tiver teclado Enter c=getch(); //armazena tecla pressionada em c if(c=='\r') //quando o usurio pressionar Enter, a entrada encerrada break; //quebra o lao for else if( c>='0' && c<='9') { //quando c armazenar nmero numero[contador] = c; //insere nmero na posio atual do vetor contador++; cout<<c; } } numero[contador]='\0'; if(contador > 0) { //insere o terminador nulo na ltima posio //do vetor //incrementa de 1 o valor do contador //imprime na tela o valor digitado

//quando contador for > 0, porque usurio //digitou pelo menos 1 nmero. //contador = 0 porque usurio teclou Enter //sem digitar nmero algum cout << Nmero digitado:<< numero; cout << \nNumero dividido por 10:<<= atof(numero)/10; } else cout << No foi digitado nmero algum!; } //fim da funo main 2 programa que solicita e verifica senha de usurio, permitindo 3 chances #include<iostream.h> #include<conio.h> #include<string.h> void main() { int i, numeroTentativas = 0; char senha[6]; clrscr(); cout<<"Programa de verificacao de senha.\nVoce tera 3 chances!\n\n\n"; //Laco que permite e chances ao usuario for( ; numeroTentativas < 3 ;) { numeroTentativas++; //incrementa o numero da tentativa

18

LTP I Instrutor HEngholm cout<<"\nDigite a senha:"; //Entrada dos caracteres da senha, imprimindo asterisco na tela for(i=0;i<5;i++) { senha[i]=getch(); cout<<"*"; } senha[5]='\0'; /* terminador nulo para a string */ if(strcmp(senha, "HELIO")) //A senha, deveria estar armazenada em um banco de dados e criptrografada, sendo recuperada em tempo de execucao cout<<"\nSenha invalida"; else { cout<<"\nSenha valida"; break; //quebra o laco, pois usuario acertou a senha } } if( numeroTentativas == 3 ) cout<<"\n\n\n\nACESSO AO SISTEMA NEGADO!"; else cout<<"\n\n\n\nBEM VINDO AO SISTEMA!"; getch(); }

19

You might also like