Desafios Pascal
Lista de programas resolvidos em pascal. Exercícios resolvidos em pascal
List of programs solved in pascal. Exercises solved in pascal
Exercício | Enunciado | Solução | ||||||
---|---|---|---|---|---|---|---|---|
Desafio 1 |
1- Fluxograma + código - Elabora um algoritmo que verifique se um determinado número está dentro de um determinado intervalo de valores (10 a 15) 1.1- Fluxograma + código - Restruture o algoritmo para que o intervalo de valores seja introduzido pelo utilizador. 1.1.1. Fluxograma + código - Caso o utilizador digite um intervalo ex.(15...10), o programa deve ordenar os números em ordem crescente e verificar se o numero digitado está dentro do intervalo. |
Program IntervaloNumeros10e15; Var A, B, C, T: Integer; Begin Writeln ('Digite um intervalo de 2 números:'); Readln (B); Readln (C); If (B>C) then //Verifica se é necessário ordenar begin T:=B; B:=C; C:=T; //Ordena end; Writeln ('Digite mais um número para verificar se este se ecnontra nesse intervalo:'); Readln (A); If (A>=B) and (A<=C) Then Writeln (A, ' está entre ', (B), ' e ', (C),'!') Else Writeln (A, ' não está entre ', (B), ' e ', (C), '!'); End. |
||||||
Desafio 2 |
2- Fluxograma + código - Elabora um algoritmo compare 2 números e verifique qual deles é maior. 2.1. Fluxograma + código - Reestrutura o algoritmo para que verifique também se os números são iguais |
Program desafio2 ; var a, b: real; Begin writeln ('Digite o número A'); readln(a); writeln ('Digite o número B'); readln(b); if (a=b) then writeln ('Os números são iguais') else if (a>b) then writeln ('O número maior é o A = ', a) else writeln ('O número maior é o B = ', b) End. |
||||||
Desafio 3 |
3. Fluxograma + código - Elabora um algoritmo que verifique se um número introduzido pelo utilizador é positivo ou negativo. 3.1. Fluxograma + código - Restruture o algoritmo para 2 números. |
Program PositivoOuNegativo2 ; var A, B: real; Begin writeln('Digite os seus números para conferir se são positivos ou negativos'); readln(A); readln(B); if ((A>=0) and (B>=0)) then writeln('Os seus números são os dois positivos') else if ((A<0) and (B>=0)) or ((A>=0) and (B<0)) then writeln('Um dos seus números é positivo') else writeln('São os dois números negativos') End. |
||||||
Desafio 4 |
4- Fluxograma + código - Elabora um algoritmo que indique a nota qualitativa de um determinado aluno, tendo por base a nota quantitativa. O programa deve mostrar uma mensagem de "parabéns" no caso de o aluno ter sucesso ou "Tenta de novo" para o caso de insucesso. //M.insuf <19 //insuf entre 20 e 50 //suf entre 50 e 75 //bom entre 75 e 90 // M.BOM >90 NOTA: o programa pode/deve ter 2 variáveis 1 do tipo real e outra do tipo string (variável string guardará a mensagem a mostrar ao utilizador). 4.1- Fluxograma + código - Restruture o algoritmo para que alerte o utilizador no caso de o valor introduzido ser superior a 100 ou inferior a 0. 4.1.1. Fluxograma + código - Restruture o algoritmo para que, caso se verifique o 4.1. dê oportunidade ao utilizador de reintroduzir a nota. |
Program lesson4_Program1; Uses Crt; Label 1; { this is used with a goto statement } Var Sel: String; N : Real; Begin 1:Clrscr; GotoXy(4,3); Writeln('1.Digite a nota para ver a sua avaliação'); GotoXy(6,6); Write('Select: '); Readln(N); if (N>=0) and (N<20) then writeln('O aluno teve Muito Insuficiente, melhore para a próxima') else if (N>=20) and (N<50) then Writeln('O aluno teve Insuficiente, esteve quase') else if (N>=50) and (N<75)then writeln('O aluno teve Suficiente, foi por pouco') else if (N>=75) and (N<90) then writeln('O aluno teve Bom, muito bem') else if (N>=90) and (N<=100) then writeln('O aluno teve excelente, PARABÉNS') else Begin if (N<0) or (N>100) then writeln('Este valor é incorreto'); End; Writeln('Prima qualquer tecla para continuar...'); Readkey; Goto 1; End. |
||||||
Desafio 5 |
5- Fluxograma + código - Com recurso ao CASE elabore uma calculadora que permita efetuar as operações entre 2 números, operações de + - X e /. Consoante a opção do utilizador. 5.1- Fluxograma + código - Restruture o algoritmo para que, na divisão, alerte o utilizador no caso de b=0, indicando que não é possível dividir por 0. 5.1.1. Código - Restruture o algoritmo para que, permita ao utilizador continuar a fazer cálculos. O programa apenas termina se o utilizador escolher a opção sair. |
|
||||||
Desafio 6 |
6- Fluxograma + código - Com recurso aos ciclos de repetição elabore um algoritmo que permita calcular a tabuada de um número digitado pelo utilizador, o programa deve também perguntar o número de início e de fim da tabuada. (ex: Tabuada do 3 entre 5 e 21) 6.1. Fluxograma + código - Com recurso ao ciclo while. 6.2. Fluxograma + código - Com recurso ao ciclo Repeat. 6.3. Fluxograma + código - Com recurso ao ciclo For. |
|
||||||
Desafio 7 |
7- Fluxograma + código - Construa um programa que solicite ao utilizador um numero inteiro e identifique a quantidade de caracteres do número digitado. (Ciclo While, função trunc) 7.1. Fluxograma + código - Com recurso ao ciclo while. Construa um algoritmo que solicite ao utilizador o número de telemóvel. O programa deve verificar se o número tem 9 dígitos. 7.2. Fluxograma + código - Com recurso ao ciclo while. Construa um algoritmo que solicite ao utilizador o número de telemóvel. O programa deve verificar se o número tem 9 dígitos. Se o número não tiver 9 dígitos o programa deve parar por 3 segundos e de seguida volta a pedir o número ao utilizador. |
Program Pzim ;//Verifica número de telemóvel desafio 7 (7.2) uses crt; label return; var num, cont:integer; Begin return: clrscr; cont:=0; writeln('digite um numero de telefone'); readln(num); while (num<>0) do begin cont:=cont+1; num:=num div 10; writeln('Numero original sem o ultimo digito = ',num); num:=trunc(num); end; writeln('Total de dígitos do numero = ',cont); if cont <> 9 then begin writeln('O numero de telefone não é valido'); delay (3000); goto return; end else writeln('O numero de telefone validado com sucesso'); readln; End. |
||||||
Desafio facultativo 2 |
Construa um programa que leia um conjunto de dados contendo altura e sexo (MASCULINO ou FEMININO) de N pessoas e calcule e escreva: - a maior e a menor altura do grupo e de quem é esta altura ( Se HOMEM ou MULHER ) - a média de altura entre as mulheres - O número de homens e a diferença percentual entre estes e as mulheres |
program alturamf; uses CRT; var quant,cont,cont_m,cont_f:integer; sexo,sme_alt,sma_alt:string; alt,alt_maior,alt_menor,alt_media,soma_alt,dif:real; begin cont_m := 0; cont_f := 0; alt_menor := 10; alt_maior := 0; soma_alt := 0; writeln('Qual a quantidade de pessoas?'); readln(quant); while quant<1 do {obriga a quantidade de pessoas ser positiva} begin writeln('Quantidade inválida! Digite uma quantidade maior que 1!'); readln(quant); end; for cont:=1 to quant do begin writeln('Qual o sexo da ',cont,'o pessoa? masculino ou feminino'); readln(sexo); while (sexo<>'m') and (sexo<>'f') do begin writeln('Sexo inválido! Digite para masculino ou para feminino!'); readln(sexo); end; writeln('Qual a altura da ',cont,'o pessoa?'); readln(alt); while (alt<0) or (alt>5) do {obriga uma altura válida} begin {repete até a altura ser válida} writeln('Altura inválida! Digite uma altura entre 0 2 e 2 5!'); readln(alt); end; if alt begin alt_menor:=alt; {guarda a menor altura} sme_alt:=sexo; {guarda o sexo da menor altura} end; if alt>alt_maior then {testa a maior altura} begin alt_maior:=alt; {guarda a maior altura} sma_alt:=sexo; {guarda o sexo da maior altura} end; if sexo='m' then {testa se o sexo e m} cont_m:=cont_m+1 {conta a quantidade de homens} else begin cont_f := cont_f+1; {conta a quantidade de mulheres} soma_alt := soma_alt+alt; {soma a altura feminina} end; end ; clrscr; writeln('Resultado:'); write('A maior altura é: ',alt_maior:2:2,'m de um'); if sma_alt='m' then writeln(' homem') else writeln('a mulher'); writeln('A média de alturas entre as mulheres é :',soma_alt/cont_f:2:2); writeln('o número de homens é: ',cont_m:3); write('A diferença percentual entre homens e mulheres é: '); dif:=(cont_m/quant)*100-(cont_f/quant)*100; if dif>0 then write(dif:2:2,'% há mais homens') else write(abs(dif):2:2,'% há mais mulheres'); readkey; end. |
||||||
Desafio 8 |
8- Fluxograma - Construa os fluxogramas para os programas representados abaixo |
|
||||||
Desafio 9 |
9- Fluxograma + código - Construa um programa que solicite ao utilizador um número inteiro. Esse número inteiro deve estar entre 5 e 50. Se o utilizador digitar um número fora do intervalo o programa deve permitir ao utilizador voltar a inserir o número. (Ciclo Repeat) 9.1. Fluxograma + código - Altere o programa anterior tendo em conta o seguinte: Ex. Se no programa anterior (ponto 9) o utilizador digitou 6, então o programa deve, agora, dar oportunidade ao utilizador de digitar 6 números inteiros e verificar qual deles é o maior. (Ciclo For , Ciclo IF) |
program des9; // 19 linhas uses crt; var numero, maior : real; n, i : integer; begin repeat write('Quantos numeros vai introduzir? (5-50) '); readln(n); until (n>=5) and (n<=50); maior := 0; for i:=1 to n do begin write(i,'o numero: '); readln(numero); if (numero > maior) then maior := numero; end; writeln; writeln('O maior numero foi: ',maior:0:2); readln; end. |
||||||
Desafio 10 |
Desafio 10 - Fluxograma + código - Construa um programa que solicite ao utilizador as notas de 30 alunos e que calcule a respetiva média. (Ciclo For) Desafio 10.1 - Fluxograma + código – Altere o programa anterior para que indique as notas superiores à média. (Ciclo if) |
Program MediaNotasSup_2; var Nota : array [1 .. 5] of real; { vetor para as notas } Media, Soma: real; Aluno: integer; { variável de controlo da repetição } begin Soma := 0; { inicializa Soma } for Aluno := 1 to 5 do { para cada aluno } begin readln (Nota [Aluno]); { obtém a nota} Soma := Soma + Nota [Aluno]; { acumula a soma } end; Media := Soma / 5; writeln ('Media da turma: ', Media:5:1); for Aluno := 1 to 5 do { mostra as notas maiores que a média } if Nota [Aluno] > Media then writeln (Nota[Aluno]) end. |
||||||
Desafio 11 |
Desafio 11 - Fluxograma + código - Construa um programa que: {11.1. Preencher um vetor X de 20 posições por leitura, ou seja, o prog. Deve solicitar ao user os valores para preencher o vetor.} {11.2. Mostrar o vetor obtido } {11.3.output do menor elemento do vetor} {11.4. output do maior elemento, e sua posição} {11.5. output dos valores ímpares existem no vetor X } |
Program Pzim ; var I, posicao, totimpar, maior, menor: integer; X:array [1..20] of integer; begin {1. Preencher um vetor X de 20 posições por leitura.} for I:=1 to 20 do begin write('Digite um valor inteiro: '); readln(X[I]); end; {2. Mostrar o vetor obtido } for I:=1 to 20 do writeln('Posicao ',i,': ',X[I]); {3.Informar o menor elemento deste vetor} menor:=X[1]; for I:=1 to 20 do if X[I]< menor then menor:=X[I]; writeln('O menor elemento do vetor eh: ',menor); {4. Informar o valor do maior elemento, e sua posição} maior:=X[1]; for I:=1 to 20 do if X[I]>maior then begin maior:=X[I]; posicao:=I; end; writeln('O maior elemento do vetor eh: ',maior); writeln('e esta na posicao: ', posicao); {5. Informar quantos valores ímpares existem no vetor X } totimpar:=0; for I:=1 to 20 do if X[I] mod 2 <>0 then totimpar:=totimpar+1; writeln( 'o vetor X contem ',totimpar, ' valores impares'); readln; end. |
||||||
Desafio 12 For to do For downto do |
Desafio 12 - Fluxograma + código - Construa um programa que solicite ao utilizador n valores. Seguidamente o utilizador deve digitar os n valores que depois serão mostrados na ordem inversa. |
Pogram Pzim Var seq,n:integer; v:array [1..20] of integer; begin write('Digite o comprimento da sequencia (max. 20): '); readln(n); writeln('Digite uma sequencia com ',n,' numeros inteiros: '); {leitura da sequencia} for seq:= 1 to n do readln(v[seq]); {mostra na ordem inversa} for seq:= n downto 1 do write(v[seq],' '); readln; end. |
||||||
Desafio 13 Operações com conteúdo dos vetores |
Desafio 13 - Fluxograma + código - Construa um programa que permita ler 5 valores inteiros e armazenar nas posições iniciais de um vetor de 10 posições. Nas posições seguintes, armazenar sucessivamente o dobro da primeira posição, o triplo da segunda posição, etc. Mostrar os valores armazenados em cada posição do vetor |
Program Pzim ; var i:integer; N:array[1..10] of integer; begin for I:= 1 to 5 do begin{leitura dos 5 valores} write('digite um valor inteiro: '); readln(N[I]); end; for I:=1 to 5 do {preenche posicoes 6 a 10} N[I+5] := N[I]* (I+1); for I:=1 to 10 do {mostra todo o vetor} writeln('Valor armazenado na posicao ',I, ' = ',N[I]); readln; end. |
||||||
Desafio 14 Operações com conteúdo dos vetores |
Desafio 14 - Fluxograma + código - Construa um programa que: Preencha um vetor X de 10 posições inteiras por leitura. Preencha um vetor Y, também de 10 posições inteiras, por leitura. Preencha um vetor V1 com a soma de X e y, em cada posição. Preencha um vetor V2 com a diferença de X e Y, em cada posição |
Program Pzim ; //Desafio 14 var i:integer; x:array[1..10] of integer; y:array[1..10] of integer; v1:array[1..10] of integer; v2:array[1..10] of integer; begin for I:= 1 to 10 do {leitura dos 10 valores vetor x} begin write('digite o' ,I ,'º'); readln(x[I]); end; for I:= 1 to 10 do {leitura dos 10 valores vetor y} begin write('digite o ',I ,'º'); readln(y[I]); end; for I:=1 to 10 do {soma dos vetores x e y} begin v1[I] := x[I]+ y[I]; writeln(v1[I]) end; for I:=1 to 10 do {subtracao dos vetores x e y} begin v2[I] := x[I]- y[I]; writeln(v2[I]) end; readln; end. |
||||||
Desafio 15 Strings em vetores |
Desafio 15 - Fluxograma + código - Construa um programa que solicite ao utilizador 6 nomes para armazenar num vetor. Depois de inseridos os nomes o programa deve: -Colocar o conteúdo da primeira posição na última, o da segunda na penúltima, e assim sucessivamente. |
Program Pzim ; Var vet:array [1..6] of string; aux:string; i:integer; Begin {leitura dos nomes} for I:=1 to 6 do begin write('Digite o nome ',I,': '); readln(vet[I]); end; {alteração do vetor} for I:=1 to 3 do begin aux:= vet[I]; vet[I] := vet[7-I]; vet[7-I]:=aux; end; {mostra resultado} writeln('Nomes reordenados: '); for I:=1 to 6 do writeln(vet[I]); readln; End. |
||||||
Desafio 16 Ordenação em vetores |
Desafio 16 - Fluxograma + código - Construa um programa que solicite ao utilizador 10 valores inteiros, em seguida o programa deve ordenar por ordem crescente os valores introduzidos. |
program vetorordena; const TV = 5; {define TV como uma constante com valor 5} var I,J,aux:integer; X:array [1..TV] of integer; begin writeln('digite os valores do vetor X'); for I:=1 to TV do readln(X[I]); {classifica o vetor} for I:=1 to TV do for J:=1 to TV - 1 do if X[J]>X[J+1] then begin aux:=X[J]; X[J]:=X[J+1]; X[J+1]:=aux; end; {mostra o vetor ordenado} writeln('vetor classificado:'); for I:=1 to TV do write(X[I]:4); readln; end. |
||||||
Cell 3 | Cell 4 |
Special Skills
Web Design
Nullam id dolor id nibh ultricies vehicula ut id elit. Cras justo odio, dapibus ac facilisis in, egestas eget quam. Donec id elit non mi porta gravida at eget metus.
Interface Design
Nullam id dolor id nibh ultricies vehicula ut id elit. Cras justo odio, dapibus ac facilisis in, egestas eget quam. Donec id elit non mi porta gravida at eget metus.
Photography and Print
Nullam id dolor id nibh ultricies vehicula ut id elit. Cras justo odio, dapibus ac facilisis in, egestas eget quam. Donec id elit non mi porta gravida at eget metus.