+ Responder Tópico
  1. #1
    Suspenso
    Info Conteúdo e Citações Jogos Mensageiros
    Registro
    Apr 1999
    Mensagens
    954
    Verdinhas
    0

    Pra quem manja de programa em PASCAL.

    Quem manjar de PASCAL e tiver afim de praticar me ajudando fico muito feliz...

    Preciso dos seguintes programas:

    1. Encontre exemplos que demonstrem a utilização dos comandos auxiliares abaixo.
    a)- POS
    b)- COPY
    c)– INSERT
    d)- DELETE
    e)– LENGTH
    2. Sabendo que o Turbo Pascal possui apenas uma função capaz de converter caracteres minúsculos em maiúsculos (Upcase) e que esta função aceita apenas dados do tipo char e caracteres comuns (de ‘a’ até ‘z’), não podendo manipular os caracteres especiais e acentuados da língua portuguesa. Faça um programa que leia um caractere digitado pelo usuário, converta este caracter para maiúscula e exiba na tela o resultado.
    3. Faça um programa que leia dois números inteiros, o primeiro é o valor inicial de um contador, eo segundo é o valor final do contador (testar se o valor inicial fornecido é inferior ao valor final). Usando o comando While, escreva na tela uma contagem que comece no primeiro número lido, escreva os números seguintes colocando sempre apenas um número em cada nova linha da tela, e terminando a contagem quando chegar ao valor final indicado.
    4. Faça um programa usando o comando CASE (não use comandos IF!) que peça para o usuário informar o valor da pressão de uma caldeira, obtido à partir de um mostrador digital com três dígitos (valores entre 0.00 e 9.99). A pressão igual à 0.0 é a mais baixa possível, e a pressão igual à 9.99 é a mais alta, onde corremos risco de explosão. Se a caldeira estiver abaixo de 1/3 da pressão máxima, exibir a mensagem “Pressão Baixa”, de 1/3 à 2/3 da pressão máxima, exibir a mensagem “Pressão Média”, e acima de 2/3 da pressão máxima, exibir a mensagem “Perigo: Pressão Alta”.
    5. Ler o nome de um aluno e suas duas notas A e B, e após calcular a média ponderada entre estas notas (A tem peso 1 e B tem peso 2). Repetir este procedimento para uma turma composta por cinco alunos, usando o comando While. Exemplo de tela de saída:
    Entre com o nome do aluno: João da Silva
    Entre com o grau A: 5.0
    Entre com o grau B: 6.0
    O aluno João da Silva tem uma média: 5.66

    6. Baseado no programa anterior, faça um novo programa de maneira que possamos trabalhar com turmas compostas por um número variável de alunos. Após calcular e imprimir a média de um aluno, exibir uma mensagem perguntando ao usuário se existem mais alunos (resposta: sim / não). Se tiver mais alunos, continuar o procedimento de leitura das notas e o cálculo da média até que o usuário responda 'não'. Usar o comando While e gerar uma saída conforme o exemplo de tela de saída abaixo:
    Entre com o nome do aluno: João da Silva
    Entre com o grau A: 5.0
    Entre com o grau B: 6.0
    O aluno João da Silva tem uma média: 5.66
    Continuar (sim/não) ? sim

    7. Baseado no programa anterior, faça um novo programa de maneira a validar as notas fornecidas pelo usuário (notas devem ser valores positivos entre 0.0 e 10.0). Indicar ao usuário se a nota fornecida é inválida e pedir para fornecer uma nova nota, repetindo este processo até que o usuário informe uma nota correta. Usar um laço While na leitura das nota, e gerar uma saída conforme o exemplo de tela de saída abaixo:

    Entre com o nome do aluno: João da Silva
    Entre com o grau A: 15.3
    ERRO: Nota inválida! Digite novamente a nota.
    Entre com o grau A: 5.0
    Entre com o grau B: 6.0
    O aluno João da Silva tem uma média: 5.66
    Continuar (sim/não) ? não

    8. Faça um programa que obtenha e exiba na tela todos os números primos de 1 até 150. Os números
    primos são aqueles que só são divisíveis por 1 e por eles mesmos (exemplo: 1, 3, 5, 7, ...).

    9. Escrever um programa que calcule todos os números inteiros divisíveis por um certo valor indicado pelo usuário, e compreendidos em um intervalo também especificado pelo usuário. O usuário deve entrar com um primeiro valor correspondente ao divisor e após ele vai fornecer o valor inicial do intervalo, seguido do valor final deste intervalo. Usar o comando While. Exemplo de tela de saída:

    Entre com o valor do divisor: 3
    Início do intervalo: 17
    Final do intervalo: 29
    Números divisíveis por 3 no intervalo de 17 à 29:
    18 21 24 27

    10. Fazer um programa que calcule e imprima o fatorial de um número fornecido pelo usuário, usando o comando Repeat. Repetir a execução do programa tantas vezes quantas o usuário quiser. Lembre-se que o resultado do cálculo de um fatorial pode ser um número “grande” (Exemplo: Fatorial de 8 = 40320). Exemplo de tela de saída:

    Entre com um número: 5
    O fatorial de 5 é 120
    Outro número (sim/não) ? não


    11. Faça um programa que escreva na tela os números pares entre 0 e 50, usando um comando For-Do. Não utilize nenhum IF/THEN neste programa, apenas o comando For-Do.

    DESAFIO: (VALENDO PONTOS ADICIONAIS)
    12. Faça um programa que teste os reflexos do usuário de um computador. O programa deve inicialmente aguardar um certo tempo antes de começar uma contagem à partir de 1, sendo este tempo determinado de maneira aleatória. Ao terminar o tempo de espera inicial do programa, ele deve pedir para o usuário apertar uma tecla e começar imediatamente uma contagem à partir de 1, exibindo na tela os números a medida que for contando. Se o usuário pressionar uma tecla o programa deve terminar a contagem e exibir até onde ele conseguiu contar antes do usuário ter pressionado a tecla. Enquanto o usuário não apertar uma tecla o programa segue contando.

    Dicas: delay – Função do Pascal que permite esperar um certo tempo.
    random – Função do Pascal que permite escolher um número aleatório
    keypressed – Função do Pascal que permite saber se uma tecla foi pressionada ou não, sem no entanto ficar paralisado aguardando que uma tecla seja pressionada.


    Valeu muito grande pra quem puder me ajudar...

    Abraços

  2. # Publicidade
    Publicidade

  3. #2
    Membro
    Info Conteúdo e Citações Jogos Mensageiros
    Registro
    Jan 2002
    Mensagens
    22.631
    Verdinhas
    78

    Sem querer ser chato, fórum de edição e programação

  4. #3
    Membro
    Info Conteúdo e Citações Jogos Mensageiros
    Registro
    Feb 2002
    Mensagens
    50
    Verdinhas
    0

    Originalmente enviada por Saboya
    Sem querer ser chato, fórum de edição e programação
    affe que muleque chato

  5. #4
    ic3
    ic3 está offline
    Membro
    Info Conteúdo e Citações Jogos Mensageiros
    Registro
    Jul 2004
    Mensagens
    3.820
    Verdinhas
    29

    Vou te ajudar!

    Exercício 1: (exemplos retirados do help do turbo pascal 7, nao sei se pode, mas tá aí)

    Pos:
    Código:
    {Pos.PAS}
    {Sample code for the Pos function.}
    
    var S: String;
    begin
      S := '   123.5';
      { Convert spaces to zeroes }
      while Pos(' ', S) > 0 do
        S[Pos(' ', S)] := '0';
    end.
    Copy:
    Código:
    {Copy.PAS}
    
    {Sample code for the Copy function.}
    
    var S: String;
    begin
      S := 'ABCDEF';
      S := Copy(S, 2, 3); { 'BCD' }
    end.
    Insert:
    Código:
    {Insert.PAS}
    
    {Sample code for the Insert procedure.}
    
    var
      S: String;
    begin
      S := 'Honest Lincoln';
      Insert('Abe ', S, 8);  { 'Honest Abe Lincoln' }
    end.
    Delete:
    Código:
    {Delete.PAS}
    
    {Sample code for the Delete procedure.}
    
    { For Windows: }
    { uses WinCrt; }
    var
      s: string;
    begin
      s := 'Honest Abe Lincoln';
      Delete(s,8,4);
      Writeln(s); { 'Honest Lincoln' }
    end.
    Length:
    Código:
    {Length.PAS}
    
    {Sample code for the Length function.}
    
    { For Windows: }
    { uses WinCrt; }
    
    var
     S: String;
    begin
     Readln (S);
     Writeln('"', S, '"');
     Writeln('length = ', Length(S));
    end.
    Exercício 2:
    Código:
    program upcaseall;
    uses crt;
    var c:char;
    begin
      clrscr;
      write('Aperte alguma tecla para torná-la maiúscula: ');
      c:=upcase(readkey);
      case ord(c) of
        164:c:=chr(165);
        163:c:=chr(154);
        162:c:=chr(153);
      end;
      write(#10,#13,'Tecla em maiúscula: ',c);
      readkey;
    end.
    PS: Ficou meio incompleto, porque meu monitor tá meio porco e eu não consegui ver as letras direito. Consulta a tabela em http://www.asciitable.com/ e muda por ex... o 164 é ñ, o 165 é Ñ... por isso vc poe dentro do case: 164:c:=chr(165);

    Exercício 3:
    Código:
    program contador;
    uses crt;
    var
      n1,n2:integer;
    begin
      clrscr;
      write('Informe o valor inicial do contador: ');
      readln(n1);
      write('Informe o valor final do contador: ');
      readln(n2);
      while (n1 <= n2) do
      begin
        writeln(n1);
        inc(n1);
      end;
      readkey;
    end.
    Exercício 4:
    Código:
    program caldeira;
    uses crt;
    var
      pressao:real;
      pressint:integer;
    begin
      clrscr;
      write('Informe o valor da pressão da caldeira: ');
      readln(pressao);
      pressint:=round(pressao*100);
      case pressint of
        0..332:writeln('Pressão Baixa');
        333..666:writeln('Pressão Média');
        667..999:writeln('Perigo: Pressão Alta');
      end;
      readkey;
    end.
    Exercício 5:
    Código:
    program aluno;
    uses crt;
    var
      aluno:record
        nome:string;
        n1,n2,media:real;
      end;
      x:integer;
    begin
      clrscr;
      while (x < 5) do
      begin
        write('Entre com o nome do aluno: ');
        readln(aluno.nome);
        write('Entre com o grau A: ');
        readln(aluno.n1);
        write('Entre com o grau B: ');
        readln(aluno.n2);
        aluno.media:=(aluno.n1*(1/3))+(aluno.n2*(2/3));
        writeln('O aluno ',aluno.nome,' tem uma média: ',aluno.media:0:2,#10,#13);
        inc(x);
      end;
      readkey;
    end.
    Exercício 6:
    Código:
    program aluno2;
    uses crt;
    var
      aluno:record
        nome:string;
        n1,n2,media:real;
      end;
      x:integer;
      resp:string;
    begin
      clrscr;
      while (resp <> 'não') do
      begin
        resp:='';
        write('Entre com o nome do aluno: ');
        readln(aluno.nome);
        write('Entre com o grau A: ');
        readln(aluno.n1);
        write('Entre com o grau B: ');
        readln(aluno.n2);
        aluno.media:=(aluno.n1*(1/3))+(aluno.n2*(2/3));
        writeln('O aluno ',aluno.nome,' tem uma média: ',aluno.media:0:2,#10,#13);
        while (resp <> 'sim') and (resp <> 'não') do
        begin;
          write('Continuar (sim/não)? ');
          readln(resp);
        end;
      end;
    end.
    Exercício 7:
    Código:
    program aluno3;
    uses crt;
    var
      aluno:record
        nome:string;
        n1,n2,media:real;
      end;
      x:integer;
      resp:string;
      erro:boolean;
    begin
      clrscr;
      while (resp <> 'não') do
      begin
        resp:='';
        write('Entre com o nome do aluno: ');
        readln(aluno.nome);
        erro:=FALSE;
        aluno.n1:=-1;
        while (aluno.n1 > 10.0) or (aluno.n1 < 0.0) do
        begin
          if (erro = TRUE) then
            writeln('ERRO: Nota inválida! Digite novamente a nota.');
          write('Entre com o grau A: ');
          readln(aluno.n1);
          if (aluno.n1 > 10) or (aluno.n1 < 0) then
            erro:=TRUE;
        end;
        erro:=FALSE;
        aluno.n2:=-1;
        while (aluno.n2 > 10.0) or (aluno.n2 < 0.0) do
        begin
          if (erro = TRUE) then
            writeln('ERRO: Nota inválida! Digite novamente a nota.');
          write('Entre com o grau B: ');
          readln(aluno.n2);
          if (aluno.n2 > 10) or (aluno.n2 < 0) then
            erro:=TRUE;
        end;
        aluno.media:=(aluno.n1*(1/3))+(aluno.n2*(2/3));
        writeln('O aluno ',aluno.nome,' tem uma média: ',aluno.media:0:2,#10,#13);
        while (resp <> 'sim') and (resp <> 'não') do
        begin;
          write('Continuar (sim/não)? ');
          readln(resp);
        end;
      end;
    end.
    PS: Ficou meio porco a parte de repetir ali a condição (< 0 ou > 10), mas com sono do jeito que tou foi o único jeito que pensei. Amanhã eu vejo denovo. (Funciona.)

    Exercício 8:
    Código:
    program primo;
    uses crt;
    var
      ehprimo:boolean;
      x,y:integer;
    begin
      clrscr;
      for x:=2 to 150 do
      begin
        ehprimo:=TRUE;
        for y:=2 to x-1 do
          if x mod y = 0 then ehprimo:=FALSE;
        if ehprimo=TRUE then writeln(x);
      end;
      readkey;
    end.
    PS: Pode acontecer de não caberem todas as respostas na tela. Não foi pedido paginação no exercício, então não fiz. Aqui coube na tela, mas era uma tela de 50 linhas (as padrão são de 25).

    Exercício 9:
    Código:
    program divisor;
    uses crt;
    var
      divisor,inicio,fim:integer;
    begin
      clrscr;
      write('Entre com o valor do divisor: ');
      readln(divisor);
      write('Início do intervalo: ');
      readln(inicio);
      write('Final do intervalo: ');
      readln(fim);
      writeln('Números divisíveis por ',divisor,' no intervalo de ',inicio,' à ',fim,':');
      while (inicio <= fim) do
      begin
        if (inicio mod divisor = 0) then write(inicio,' ');
        inc(inicio);
      end;
      readkey;
    end.
    Exercício 10:
    Código:
    program fatorial;
    uses crt;
    var
      fat:longint;
      num,x:integer;
      resposta:string;
    begin
      clrscr;
      repeat
        write('Entre com um número: ');
        readln(num);
        if (num <> 0) and (num <> 1) then
        begin
          x:=num;
          fat:=1;
          repeat
            fat:=fat*x;
            dec(x);
          until (x = 1);
          writeln('O fatorial de ',num,' é ',fat);
        end
        else
          writeln('O fatorial de ',num,' é 1');
        write('Outro número (sim/não)? ');
        readln(resposta);
      until (resposta = 'não');
    end.
    Exercício 11:
    Código:
    program forpar;
    uses crt;
    var
      x:integer;
    begin
      clrscr;
      for x:=0 to 25 do
        writeln(x*2);
      readkey;
    end.
    PS: Pensei me lembrar da estrutura "for .. step .. do", mas olhei no help do TP7 e não achei, então acho que o melhor jeito é esse mesmo.

    Exercício 12 (e extra):
    Não entendi. Esperar um certo tempo, mas entre quanto? E o que seria a contagem para testar o reflexo do usuário? Me parece meio mal formulada...

  6. #5
    ic3
    ic3 está offline
    Membro
    Info Conteúdo e Citações Jogos Mensageiros
    Registro
    Jul 2004
    Mensagens
    3.820
    Verdinhas
    29

    Sobe pra mostrar que acabou.

  7. #6
    Membro Avatar de Taliban
    Info Conteúdo e Citações Jogos Mensageiros
    Registro
    Jun 2002
    Mensagens
    16.772
    Verdinhas
    54

    Se precisar de alguma coisa da um toque no meu icq/msn
    só num vo faze tudo seus exercicios que nem o cara ai fez!!

+ Responder Tópico Ir para o Fórum

Compartilhar

Permissões