Saltar para o conteúdo

Introdução à programação/Exercícios

Origem: Wikilivros, livros abertos por um mundo aberto.
Este módulo tem a seguinte tarefa pendente: Reescrever os códigos abaixo para linguagem C ou pseudo-código.

Verdadeiro ou falso

[editar | editar código-fonte]

1 Não preciso de um outro programa depois de finalizar o meu código em C++. Basta rodá-lo diretamente na máquina.

Verdadeiro.
Falso.

2 O Assembly é uma linguagem muito acessível ao usuário final.

Verdadeiro.
Falso.

3 Os scripts são linguagens dinâmicas usadas em intervenções pequenas para não ter que usar o compilador.

Verdadeiro.
Falso.

4 Sempre preciso escrever um algoritmo antes de iniciar a escrita de um programa em uma linguagem.

Verdadeiro.
Falso.


Crie algoritmos

[editar | editar código-fonte]

1. Crie um algoritmo próximo ao de máquina para a seguinte frase:

"Se estiver no estado A tem que decifrar o código B e somar 2 ao resultado de B. 
Se não estiver no estado A passe para o estado C e pare."

2. Decifre para o português o seguinte algoritmo:

IF Livro 1
GOTO Page 251
SOMA 2 NA Page = VAR
SAÍDA VAR
ELSE Livro 2
GOTO Page 23
SUBTRAI 2 NA Page = VAR
SAÍDA VAR

Verdadeiro ou falso

[editar | editar código-fonte]

1 Uma instrução FOR é uma instrução básica.

Verdadeiro.
Falso.

2 É exclusivamente necessário incluir-se a instrução ELSE numa IF.

Verdadeiro.
Falso.

3 SWITCH é bom para loops.

Verdadeiro.
Falso.

4 Variáveis guardam dados na memória do computador e podem ser manipuladas.

Verdadeiro.
Falso.


Crie algoritmos

[editar | editar código-fonte]

1. Crie um algoritmo para esta situação da empresa "Pacheco-Car":

"O problema encontrado pelos nossos funcionários é que ao encomendar uma 
peça de automóvel, inserir a marca e requisitar o endereço, o programa não 
detecta se o registro termina em X ou em Y. Se terminar em Y não podemos 
encomendar diretamente. Temos que inserir o código de escape (que termina ou 
em 00 ou em 01 ou em 02) para o programa enviar a encomenda para os endereços 
A, B ou C, respectivamente.

2. Decifre o algoritmo apresentado abaixo:

Y = " polígono"
E = " não "
GET X
IF X=0
 MOSTRAR "Não posso aceitar o número!"
END-IF
ELSE
 SWITCH X
   CASE 1: "Eu sou" Y
   CASE 2: "Eu" E "sou" Y
   CASE 3: "Como podes aceitar" Y "aqui?"
 END-SWITCH
END-ELSE

Soluções dos exercícios

 

Exercícios de introdução

[editar | editar código-fonte]

1) Crie um programa que mostre na tela a frase "Olá Mundo!".

uses crt;
begin
    writeln(Olá Mundo!’);
end

2) Crie um programa que pede para o usuário digitar seu nome e, em seguida, escreve o nome na tela.

 uses crt;        
 var
   nome:string;
 begin
    writeln(Escreva seu nome: );
    readln(nome);
    writeln(Seu nome é: ,nome);
 end

3) Crie um programa que lê nome e idade e mostra na tela.

 uses crt;
 var
    nome:string;
    idade:integer;
 begin
    writeln(Escreva seu nome: );
    readln(nome);
    writeln(Escreva sua idade: );
    readln(idade);
    writeln(Seu nome é ,nome, e você tem ,idade, anos.);
 end

4) Crie um programa que lê nome, idade e altura e mostra na tela as informações.

 uses crt;
 var
    nome:string;
    idade:integer;
    altura:real;
 begin
    write(Escreva seu nome: );
    readln(nome);
    write(Escreva sua idade: );
    readln(idade);
    write(Entre com sua altura: );
    readln(altura);
    writeln(Seu nome é ,nome,, você tem ,idade, anos e ,altura:4:2,m de altura.);
 end

5) Crie um programa que lê o nome e duas notas de um aluno, e em seguida calcula a sua média.

Algoritmo:

  1. Ler o nome;
  2. Ler as duas notas;
  3. Calcular a media:
    1. Somar as duas notas;
    2. Dividir a soma por dois;
  4. Exibir a media;
 uses crt;
 var
    nome:string;
    n1,n2,m:real;
 begin
    writeln(Entre com o nome: );
    readln(nome);
    writeln(Entre com as duas notas: );
    readln(n1,n2);
    m:=(n1+n2)/2;
    writeln(A média é: ,m:4:2);
 end

6) Três massas m1, m2, m3 estão separadas por distâncias r12, r13 e r23, como mostra a figura:

Se G é a constante de gravitação universal, a força de coesão mantendo a massa das partículas juntas é dada pela formula:

Crie um programa para ler os valores de m1, m2, m3, r12, r13, r23; calcular e imprimir a força de coesão. Para massa em quilogramas e distância em metros, G = 6,67 × 10−11 N·m2/kg2. Assumir que todos os valores são reais.

 uses crt;
 const
    G=6.67E-11;
 var
    F,m1,m2,m3,r12,r13,r23:real;
 begin
    writeln(Entre com as três massas: );
    readln(m1,m2,m3);
    writeln(Entre com as três distâncias: );
    readln(r12,r13,r23);
    F:=G*((m1*m2/r12*r12)+(m1*m3/r13*r13)+(m2*m3/r23*r23));
    writeln(A força de coesão é: ,F:4:15, N.);
 end

7) Dados os comprimentos dos lados de um triângulo (lado1 e lado2), crie um programa para calcular a hipotenusa.

 uses crt;
 var
    L1,L2,H:real;
 begin
    writeln(Escreva o valor de um lado: );
    readln(L1);
    writeln(Escreva o valor do outro lado: );
    readln(L2);
    H:=sqrt(sqr(L1)+sqr(L2));
    writeln(O valor da hipotenusa é: ,H:2:2);
 end

8) Crie um programa que lê a duração de uma tarefa em segundos e transforma para hora, minuto e segundo.

 uses crt;     
 var           
    s,m,h:longint;
 begin
    writeln(Entre com o tempo em segundos: );
    readln(s);
    h:=(s)div(3600);
    m:=((s)mod(3600))div(60);
    s:=((s)mod(3600))mod(60);
    writeln(s, segundos é: ,h, hora(s) ,m, minutos e ,s, segundos);
 end

Exercícios de decisão

[editar | editar código-fonte]

1) Crie um programa que lê dois números inteiros distintos e diz qual desses dois números é o maior.

 uses crt;
 var
    a,b:longint;
 begin
    writeln(Entre com dois números inteiros distintos: );
    readln(a,b);
    if a>b then
        writeln(a,>,b)
    else
        writeln(b,>,a);
 end

2) Crie um programa que lê três números distintos e mostra o maior dos 3.

 uses crt;
 var
    a,b,c:longint;
 begin
    writeln(Escreva três números inteiros e distintos: );
    readln(a,b,c);
    if (a>b)and(a>c) then
        writeln(O maior número é ,a);
    if (b>c)and(b>a) then
        writeln(O maior número é ,b);
    if (c>a)and(c>b) then
        writeln(O maior número é ,c);
 end

3) Crie um programa que lê os coeficientes de uma equação do 2º grau e calcula suas raízes. O programa deve mostrar, quando possível, o valor das raízes calculadas e a classificação das raízes (imaginárias, única, distintas)

 uses crt;
 var
    a,b,c,d:real;
 begin         
    writeln(Toda equação do 2ª grau é do tipo: ax² + bx +c);
    writeln(Atribua valores a: a, b, c: );
    readln(a,b,c);
    d:=(sqr(b))-(4*a*c);
    if d<0 then
    begin
        writeln(Raízes Imaginárias);
        if d=0 then
        begin
            x1:=(-b)/(2*a);
            writeln(A raiz é única e é: x1);
        end;
        if d>0 then   
        begin 
            x1:=((-b)+sqrt(d))/(2*a);
            x2:=((-b)-sqrt(d))/(2*a);
            writeln(As raízes são distintas e são: ,x1, e ,x2);
        end;
    end;
 end

4) Dados 3 valores x, y e z, verificar se eles podem ser os comprimentos dos lados de um triângulo e, se forem, verificar se é um triângulo equilátero, isósceles ou escaleno.

 uses crt;
 var
    a,b,c:real;
 begin
    writeln(Entre com os 3 lados: );
    readln(a,b,c);
    if (a+b>c)and(a+c>b)and(b+c>a) then
    begin
        if (a=b)and(b=c) then
            writeln(Triângulo Equilátero)
        else
            if (a=b)or(a=c)or(b=c) then
                writeln(Triângulo Isósceles)
            else   
                writeln(Triângulo Escaleno);
    end
    else
        writeln(Este triângulo não existe!’);
 end

5) Crie um programa para verificar se o número é par.

 uses crt;     
 var          
    a:integer; 
 begin         
    writeln(Entre com um número inteiro: );
    readln(a);
    if ((a)mod(2)=0) then
        writeln(Par)
    else
        writeln(‘Ímpar);
 end

Exercícios de repetição

[editar | editar código-fonte]

1) Crie um programa que lê dois números inteiros e faz a multiplicação sem utilizar o operador de multiplicação *.

 uses crt;   
 var
    a,b,i,n:longint;
 begin   
    writeln('Entre com dois valores positivos: ');
    readln(a,b);
    if (a>0)and(b>0) then
    begin
        n:=0;
        i:=0; {Se i:=1, i<b}
        while (i<=b) do
        begin
            n:=a+n;
            i:=i+1;
        end;
        writeln(a,' x ',b,' = ',n);
    end
    else
        writeln('Valor(es) Incorreto(s)');
 end

2) Crie um programa que lê dois números inteiros e faz a multiplicação sem utilizar o operador *.

 uses crt;
 var
    a,b,i,n:longint;
 begin
    writeln('Entre com dois valores: ');
    readln(a,b);
    if (a>=0)and(b>=0) then
    begin
        n:=0;
        i:=1;
        repeat
            n:=n+a;
            i:=i+1;
        until i>b;
        writeln(a,' x ',b,' = ',n);
    end
    else
        writeln('Valor(es) Incorreto(s)!');
 end


Wikipedia
Wikipedia
A Wikipédia tem mais sobre este assunto:
Introdução à programação