Jump to content

Search the Community

Showing results for tags 'pascal'.

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • Comunidade
    • Sugestões, Críticas ou Dúvidas relativas ao P@P
    • Acerca do P@P
  • Comunidade a Trabalhar
    • Apresentação de Projectos de Programação
    • Downloads
    • Revista PROGRAMAR
  • Desenvolvimento Geral
    • C
    • C++
    • Java
    • Pascal
    • Python
    • Bases de Dados
    • Dispositivos Móveis
    • Outras Linguagens
  • Desenvolvimento Orientado para Web
    • PHP
    • HTML
    • CSS
    • Javascript
    • Outras Linguagens de WebDevelopment
    • Desenvolvimento Web
  • Desenvolvimento .NET
    • C#
    • Visual Basic .NET
    • ASP.NET
    • WPF & SilverLight
  • Software e Sistemas Operativos
    • Software de Produtividade
    • Sistemas Operativos
    • Apresentação de Software
  • Informática
    • Interfaces Visuais
    • Computação Gráfica
    • Algoritmia e Lógica
    • Segurança e Redes
    • Hardware
    • Electrónica e Automação Industrial
    • Matemática
    • Software de Contabilidade e Finanças
    • Dúvidas e Discussão de Programação
  • Outras Áreas
    • Notícias de Tecnologia
    • Dúvidas Gerais
    • Discussão Geral
    • Eventos
    • Anúncios de Emprego
    • Tutoriais
    • Snippets / Armazém de Código
  • Arquivo Morto
    • Projectos Descontinuados
    • System Empires

Blogs

  • Blog dos Moderadores
  • Eventos
  • Notícias de Tecnologia
  • Blog do Staff
  • Revista PROGRAMAR
  • Projectos
  • Wiki

Categories

  • Revista PROGRAMAR
  • Tutoriais
  • Textos Académicos
  • Exercícios Académicos
    • Exercícios c/ Solução
    • Exercícios s/ Solução
  • Bibliotecas e Aplicações
  • Outros

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


Website


GitHub


LinkedIn


Twitter


Facebook

  1. Eu estou a fazer um menú e quando seleciono algo que não está inserido no escopo do programa gostava que informasse o utilizador e inserisse a opção de voltar atrás com uma label. Quando fiz isso sempre que executo o exercício escolhido aparece no final sempre a mensagem do exercício não válido. Se alguém me conseguisse ajudar, agradecia. Em anexo, vai o código em questão: Program MenuFicha4 ; label inicio; label inicioseccao1; label inicioseccao2; label inicioseccao3; label fim; label inicioex2_6; label fimex2_6; var seccao:integer; var labelseccao:char; var seccao1,seccao2,seccao3:string; var respseccao1,respseccao2,respseccao3:char; var a:real; var b:real; var c,d,e:real; var g,h,f,i:real; var j,k,l:real; var m,n,o:real; var p,q:real; var a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11:real; var b1:integer; var b2,b3:integer; var b4:integer; var b5,b6,b7:real; var b8,b9,b10:real; var c1,c2,c3:real; var c4:char; var c5,c6,c7,c8,c9,c10:real; var d1,d2,d3:real; var d4:integer; var d5,d6,d7,d8:real; var d9,d10:integer; var e1,e2:integer; var e3,e4,e5,e6:integer; var e7,e8,e9:integer; var t1, t2, t3, t4, t5, t6, t7, max, min: real; var fernando,fernando1,fernando2,fernando3:char; const pi = 3.1416; Begin textcolor(white); inicio: clrscr; textcolor(lightred); writeln('********************************************'); writeln('* *'); writeln('* Bem-Vindo ao menú da Ficha 4! *'); writeln('* *'); writeln('* Feito por: Tomé Almeida *'); writeln('* *'); writeln('********************************************'); writeln(); writeln(); textcolor(white); writeln('A ficha 4 está dividida em 3 secções:'); writeln(); writeln(); writeln('> Secção 1'); writeln(); writeln('> Secção 2'); writeln(); writeln('> Secção 3'); writeln(); writeln(); writeln('Insira a secção que deseja abrir'); write('> '); readln(seccao); clrscr; case seccao of 1: begin inicioseccao1: clrscr; writeln('Selecionou a secção 1!'); writeln(); writeln(); writeln(' 1.1 -> Área do quadrado '); writeln(' 1.2 -> Perímetro da cirncunferência '); writeln(' 1.3 -> Gasolina gasta '); writeln(' 1.4 -> Latas de tinta '); writeln(' 1.5 -> Hipotenusa do triângulo '); writeln(' 1.6 -> Tempo gasto '); writeln(' 1.7 -> Conversão para polegadas '); writeln(' 1.8 -> Conversão para Fahrenheit '); writeln(' 1.9 -> Forrar com a carpete '); writeln(' 1.10 -> Distância entre dois pontos '); writeln(); writeln(); writeln('Insira o exercício que deseja executar!'); write('> '); readln(seccao1); clrscr; if (seccao1='1.1')then begin writeln('Insira os lados do quadrado'); readln(a); clrscr; writeln('A área do quadrado é ',(a*a):0:2); readkey; end; if (seccao1='1.2')then begin writeln('Insira o raio da circunferência'); readln(b); clrscr; writeln('O perímetro da circunferência é ',(2*pi*b):0:2); readkey; end; if (seccao1='1.3')then begin writeln('Indica a distância percorrida em km e os litros de gasolina gastos'); readln(c,e); d:=c/e; clrscr; writeln('Fez uma média de ',d:0:1 ,' litros por kilómetro!'); readkey; end; if (seccao1='1.4')then begin writeln('Insira a altura e a largura da parede'); readln(f,g); h:=f*g; i:=h/3; clrscr; writeln('São necessárias ',i:0:1,' latas de tinta para cobrir toda a parede'); readkey; end; if (seccao1='1.5')then begin writeln('Indique os valores dos catetos'); readln(j,k); l:=sqrt((j*j)+(k*k)); writeln('A hipotenusa do triângulo é ',l:0:1); readkey; end; if (seccao1='1.6')then begin writeln('Indica a distância percorrida em km e o tempo gasto'); readln(m,n); o:=m/n; clrscr; writeln('Fez uma média de ',o:0:2 ,' minutos por kilómetro!'); readkey; end; if (seccao1='1.7')then begin writeln('Indique a medida em centímetros'); readln(q); p:=q/2.54; clrscr; writeln('A sua medida dá ',p:0:1, ' polegadas!'); readkey; end; if (seccao1='1.8')then begin writeln('Insira a temperatura em graus Celsius'); readln(a6); a7:=(9/5)*a6+32; clrscr; writeln('A temperatura inserida dá ',a7:0:1, ' graus Fahrenheit!'); readkey; end; if (seccao1='1.9')then begin writeln('Insira o comprimento e a largura da carpete'); readln(a8,a9); a10:=a8*a9; a11:=a10*35; clrscr; writeln('Vão ser necessários ',a11:0:1,' euros para forrar todo o piso com a carpete'); readkey; end; if(seccao1='1.10')then begin writeln('Insira o X e o Y do ponto P'); readln(a1,a2); clrscr; writeln('Insira o X e o Y do ponto Q'); readln(a3,a4); a5:=((a3-a1)*(a3-a1))+((a4-a2)*(a4-a2)); writeln('Os pontos estão a ',sqrt (a5):0:1, ' valores de distância'); readkey; end else writeln('Exercício não válido! Pretende escolher outro?'); readln(fernando1); if(fernando1='S') or (fernando1='s')then goto inicioseccao1 else clrscr; write('> Se pretender voltar ao menú principal prima '); begin textcolor(lightred); write('[1]'); textcolor(white); write('.'); end; writeln(); write('> Se pretender voltar a escolher um exercício da secção 1 prima '); begin textcolor(lightred); write('[2]'); textcolor(white); write('.'); end; writeln(); write('> Se pretender encerrar o programa prima '); textcolor(lightred); write('[3]'); textcolor(white); write('.'); writeln(); readln(respseccao1); if(respseccao1='1')then goto inicio; if(respseccao1='2')then goto inicioseccao1 else goto fim end; 2:begin inicioseccao2: clrscr; writeln('Selecionou a secção 2!'); writeln(); writeln(); writeln(' 2.1 -> Par ou Ímpar '); writeln(' 2.2 -> Maior e menor '); writeln(' 2.3 -> Permissão para a carta '); writeln(' 2.4 -> IMC '); writeln(' 2.5 -> Salário total '); writeln(' 2.6 -> Média do aluno '); writeln(' 2.7 -> Equação de raízes completas '); writeln(' 2.8 -> Classificação de triângulos '); writeln(); writeln(); writeln('Insira o exercício que deseja executar!'); write('> '); readln(seccao2); clrscr; if(seccao2='2.1')then begin writeln('Introduza um valor inteiro'); readln(b1); if ( b1 mod 2 = 0) then begin writeln('O valor introduzido ', b1,' é par') end else begin writeln('O valor introduzido ', b1,' é impar'); end; readkey; end; if(seccao2='2.2')then begin writeln('Introduza dois valores inteiros'); readln(b2,b3); if ( b2 > b3 ) then writeln('O maior valor é ', b2, ' e o menor valor é ', b3 ) else writeln('O maior valor é ', b3, ' e o menor valor é ', b2); readkey; end; if(seccao2='2.3')then begin writeln('Introduza uma idade e descubre se já podes ter carta de motorista'); read(b4); if ( b4 >= 18) then writeln('Tu já podes ter a carta!'); if ( b4 < 18) then writeln('Tu ainda não tens permissão para ter a carta.'); readkey; end; if(seccao2='2.4')then begin writeln ('Insira o seu peso(em kg) e altura(metros)'); readln(b5, b6); b7:= b5 / sqr(b6); writeln('Seu imc corresponde a ', b7:0:2); readkey; end; if(seccao2='2.5')then begin writeln('Introduza o total de horas trabalhadas.'); readln(b8); b9 := b8 * 14.50; if ( b9 >= 1200) then begin b10 := b9 - ( b9 * 0.15); writeln('O seu salário corresponde a ', b9:0:2 ,'; e após a redução de 15%, passou a ser ', b10:0:2); end else writeln('O seu salário total corresponde ? ', b9:0:2); readkey; end; if(seccao2='2.6')then begin inicioex2_6: clrscr; textcolor(white); writeln( 'Introduza duas notas.'); readln( c1 , c2 ); c3 := (c1 + c2)/2; if ( c1 < 0 ) or ( c1 > 20) or ( c2 < 0 ) or ( c2 > 20) then begin writeln('A nota introduzida não pode ser lida. Deseja recomeçar? S|N'); readln(c4); if ( c4 = 's') or ( c4 = 'S') then goto inicioex2_6; if ( c4 = 'n') or ( c4 = 'N') then goto fimex2_6; end else if ( c3 >= 7 ) then begin textcolor (lightblue); writeln('O aluno(a) está aprovado! A sua média correspondente é ', c3:0:1); end; if ( c3 < 3 ) then begin textcolor (red); writeln('O aluno(a) está reprovado. A sua média correspondente é ', c3:0:1); end; if ( c3 >= 3 ) and ( c3 <= 6 ) then begin textcolor (yellow); writeln('O aluno(a) está em recuperação. A sua média correspondente é ', c3:0:1); end; fimex2_6: readkey; end; if(seccao2='2.7')then begin writeln('Insira o valor de a,b e c.'); readln(c5, c6, c7); c8 := (sqr( c6 )) - ( 4 * c5 * c7 ); if (c8 > 0) then begin writeln('A equação tem duas raizes reais diferentes.'); c9 := ( -c6 + sqrt(c8))/2 * c5; c10 := ( -c6 - sqrt(c8))/2 * c5; writeln; writeln('A 1ª raiz é ', c9:0:2); writeln('A 2ª raiz é ', c10:0:2); end; if (c8 = 0) then begin writeln('A equação tem uma raíz dupla.'); c9:= ( -c6 + sqrt(c8))/2 * c5; writeln; writeln('A 1ª raiz é ', c9:0:2); end; if ( c8 < 0) then writeln('A equação tem duas raízes complexas.'); readkey; end; if(seccao2='2.8')then begin writeln('Introduz três valores'); readln(d1, d2, d3); if ( d1 > ( d2 + d3 )) or ( d2 > (d1 + d3)) or ( d3 > ( d1 + d2)) then begin writeln('Os valores introduzidos não formam um triângulo'); end else if ( d1 = d2 ) and ( d2 = d3 ) then begin writeln('O triângulo é equilátero'); end else if ( d1 = d2 ) or ( d1 = d3 ) or ( d2 = d3) then begin writeln('O triângulo é isósceles'); end else begin writeln('O triângulo é escaleno'); end; readkey; end else writeln('Exercício não válido! Pretende escolher outro?'); readln(fernando2); if(fernando2='S') or (fernando2='s')then goto inicioseccao2 else clrscr; write('> Se pretender voltar ao menú principal prima '); begin textcolor(lightred); write('[1]'); textcolor(white); write('.'); end; writeln(); write('> Se pretender voltar a escolher um exercício da secção 2 prima '); begin textcolor(lightred); write('[2]'); textcolor(white); write('.'); end; writeln(); write('> Se pretender encerrar o programa prima '); textcolor(lightred); write('[3]'); textcolor(white); write('.'); writeln(); readln(respseccao2); if(respseccao2='1')then goto inicio; if(respseccao2='2')then goto inicioseccao2 else goto fim end; 3:begin inicioseccao3: clrscr; writeln('Selecionou a secção 3!'); writeln(); writeln(); writeln(' 3.1 -> Média '); writeln(' 3.2 -> Soma de números naturais '); writeln(' 3.3 -> Quadrado ( mod <> 0 ) '); writeln(' 3.4 -> Pares e ímpares '); writeln(' 3.5 -> Fatorial '); writeln(' 3.6 -> Temperaturas '); writeln(); writeln(); writeln('Insira o exercício que deseja executar!'); write('> '); readln(seccao3); clrscr; if(seccao3='3.1')then begin d5 := 0; for d4 := 1 to 10 do begin writeln('Introduz um valor.'); readln(d6); d7 := d5 + d6; d8 := d7 /2; end; writeln('A média dos valores é ', d8:0:2); readkey; end; if(seccao3='3.2')then begin writeln('Introduz um valor inteiro.'); readln (d9); for d9 := d9 downto 1 do begin d10:= d10 + d9; end; delay(300); writeln('A soma dos primeiros números naturais corresponde a ', d10:0:0); readkey; end; if(seccao3='3.3')then begin writeln('Insira um número que deseja ver o quadrado'); readln(e1); for e2:=1 to e1 do begin if(e2 mod 2<>0)then writeln(e2); end; readkey; end; if(seccao3='3.4')then begin randomize; while ( e3 < 1000 ) do begin e4 := random(100); delay(10); writeln(e4); if ( e4 mod 2 = 0 ) then begin e5 := e5 + 1; end else begin e6 := e6 + 1; end; e3 := e3 + 1; end; delay(500); writeln; writeln('Foram inseridos ', e5, ' números pares.'); writeln('Foram inseridos ', e6, ' números impares.'); readkey; end; if(seccao3='3.5')then begin writeln('Introduz um valor'); readln(e7); e9:= 1; for e8:= e7 downto 1 do begin e9 := e9 * e8; end; writeln('O resultado do fatorial é ', e9:0:2); readkey; end; if(seccao3='3.6')then begin max := 0; min := 100; writeln('Introduza a temperatura de segunda-feira.'); readln( t1 ); clrscr; writeln('Introduza a temperatura de terça-feira.'); readln( t2 ); clrscr; writeln('Introduza a temperatura de quarta-feira.'); readln( t3 ); clrscr; writeln('Introduza a temperatura de quinta-feira.'); readln( t4 ); clrscr; writeln('Introduza a temperatura de sexta-feira.'); readln( t5 ); clrscr; writeln('Introduza a temperatura de sábado.'); readln( t6 ); clrscr; writeln('Introduza a temperatura de domingo.'); readln( t7 ); clrscr; if (t1>t2) and (t1>t3) and ( t1 > t4 ) and ( t1 > t5 ) and ( t1 > t6 ) and ( t1 > t7 ) then max:= t1 else min:= t1; if (t2>t1) and (t2>t3) and ( t2 > t4 ) and ( t2 > t5 ) and ( t2 > t6 ) and ( t2 > t7 ) then max:= t2 else min:= t2; if (t3>t1) and (t3>t2) and ( t3 > t4 ) and ( t3 > t5 ) and ( t3 > t6 ) and ( t3 > t7 ) then max:= t3 else min:= t3; if (t4>t1) and (t4>t2) and ( t4 > t3 ) and ( t4 > t5 ) and ( t4 > t6 ) and ( t4 > t7 ) then max:= t4 else min:= t4; if (t5>t1) and (t5>t2) and ( t5 > t3 ) and ( t5 > t4 ) and ( t5 > t6 ) and ( t5 > t7 ) then max:= t5 else min:= t5; if (t6>t1) and (t6>t2) and ( t6 > t3 ) and ( t6 > t4 ) and ( t6 > t5 ) and ( t3 > t7 ) then max:= t6 else min:= t6; if (t7>t1) and (t7>t2) and ( t7 > t3 ) and ( t7 > t4 ) and ( t7 > t5 ) and ( t7 > t6 ) then max:= t7 else min:= t7; writeln; writeln('A temperatura mais quente é ', max:0:1, 'ºC e a mais fria é ', min:0:1, 'ºC'); readkey; end else writeln('Exercício não válido! Pretende escolher outro?'); readln(fernando3); if(fernando3='S') or (fernando3='s')then goto inicioseccao3 else clrscr; write('> Se pretender voltar ao menú principal prima '); begin textcolor(lightred); write('[1]'); textcolor(white); write('.'); end; writeln(); write('> Se pretender voltar a escolher um exercício da secção 1 prima '); begin textcolor(lightred); write('[2]'); textcolor(white); write('.'); end; writeln(); write('> Se pretender encerrar o programa prima '); textcolor(lightred); write('[3]'); textcolor(white); write('.'); writeln(); readln(respseccao3); if(respseccao3='1')then goto inicio; if(respseccao3='2')then goto inicioseccao3 else goto fim end; else writeln('Opção não válida! Pretende voltar atrás?'); readln(fernando); if(fernando='S') or (fernando='s')then goto inicio else fim: clrscr; writeln('Prima novamente para encerrar!'); end; readkey; End.
  2. Eu estou a tentar fazer um menú para executar uns exercícios mas quando faço case está me a dar erro e não sei porque. Vou citar o código em questão. Dá erro onde inseri o comentário. Se alguém me conseguisse ajudar agradecia! Program MenuFicha4 ; label inicio; var seccao:integer; var labelseccao:char; var seccao1:real; var a:real; var b:real; var c,d,e:real; const pi = 3.1416; Begin textcolor(white); inicio: clrscr; writeln('********************************************'); writeln('* *'); writeln('* Seja bem-vindo ao menú da Ficha 4! *'); writeln('* *'); writeln('********************************************'); writeln(); writeln(); writeln(); writeln('A ficha 4 está dividida em 3 secções:'); writeln(); writeln(); writeln('-> Secção 1'); writeln(); writeln('-> Secção 2'); writeln(); writeln('-> Secção 3'); writeln(); writeln(); writeln('Insira a secção que deseja abrir'); readln(seccao); clrscr; case seccao of 1: writeln('Selecionou a secção 1!'); writeln(); writeln(); writeln(); writeln(' 1.1 -> Área do quadrado '); writeln(' 1.2 -> Perímetro da cirncunferência '); writeln(' 1.3 -> Gasolina gasta '); writeln(' 1.4 -> Latas de tinta '); writeln(' 1.5 -> Hipotenusa do triângulo '); writeln(' 1.6 -> Tempo gasto '); writeln(' 1.7 -> Conversão para polegadas '); writeln(' 1.8 -> Conversão para Fahrenheit '); writeln(' 1.9 -> Forrar com a carpete '); writeln(' 1.10 -> Distância entre dois pontos '); writeln(); writeln(); writeln('Insira o exercício que deseja executar!'); readln(seccao1); if(seccao1='1.1')then writeln('Insira os lados do quadrado'); readln(a); clrscr; writeln('A área do quadrado é ',(a*a):0:2); readkey; if(seccao1='1.2')then writeln('Insira o raio da circunferência'); readln(b); clrscr; writeln('O perímetro da circunferência é ',(2*pi*b):0:2); readkey; if(seccao1='1.3')then writeln('Indica a distância percorrida em km e os litros de gasolina gastos'); readln(c,e); d:=c/e; clrscr; writeln('Fez uma média de ',d:0:1 ,' litros por kilómetro!'); readkey; 2:writeln('2'); 3:writeln('3'); else writeln('A opção não é válida'); writeln(); writeln('Deseja voltar a escolher? S|N'); readln(labelseccao); if(labelseccao='S') or (labelseccao='s')then goto inicio else writeln('Prima qualquer tecla para encerrar!'); end; readkey; End.
  3. burns

    Pascalzim

    Eu criei um código mas ele esta com um erro no End. alguem me ajude a conseguir corrigir o programa? Program livroslojas ; var opcao:integer; var menu:real; var livro:integer; Begin repeat clrscr; writeln(' ---Menu--- '); writeln ('Escolhe o Genero de Leitura :'); writeln ('1- Aventura'); writeln ('2- Acao'); writeln ('3- Romance'); writeln ('4- Terror'); writeln ('5- Suspance'); writeln ('6- Fantasia'); writeln ('7- Manga'); readln(opcao); case (opcao) of 1: begin writeln ('Voce escolheu o Genero de Aventura'); writeln ('Recomendo o Livro O Artifice de Richard Sennett'); readln(livro); end; 2: begin writeln ('Voce escolheu o Genero de Acao'); writeln ('Recomendo o Livro O Hobitt Jonh Ronald Tolkien '); readln (livro); end; 3: begin writeln ('Voce Escolheu o Genero de Romance'); writeln ('Recomendo o Livro A Culpa e das estrelas de Jonh Green'); readln (livro); end; 4: begin writeln ('Voce Escolheu o Genero de Terror'); writeln ('Recomendo o Livro O Corvo de Edgar Allan Poe '); readln (livro); end; 5: begin writeln ('Voce Escolheu o Genero de Suspance'); writeln ('Recomendo o Livro YOU de Caroline Kepnes'); readln (livro); end; 6: begin writeln ('Voce Escolheu o Genero de Fantasia'); writeln ('Recomendo o Livro Harry Potter de J.K Rolling'); readln (livro); end; 7: begin writeln ('Voce Escolheu o Genero de Mang�'); writeln ('Recomendo o Livro One Piece de Eiichiro Oda'); readln (livro); end; else begin if(opcao=8) then begin writeln ('Voce Escolhe Sair , Adeus :)'); end else begin writeln (' Opcao Inv�lida'); end; if(opcao=8); End.
  4. Teresa Jorge

    Pascalzim

    Olá, estou a fazer um programa na escola ,para enviar de avaliação ao professor no entanto ele pede que fique igual ao dele quando executarmos o programa ( cores de letras, fundo, etc) mas nao estou a conseguir dar espaço, por exemplo aparece-me introduz um número, eu introduzo e logo na linha abaixo aparece o resultado do programa e no dele entre estas duas linhas está uma sem nada, alguém me pode ajudar, é que o programa está a funcionar bem e só necessito mesmo do comando para deixar o espaço entre linhas para enviar, obrigada!!
  5. O programa fornece uma séries de chaves em que uma delas é a chave certa do euromilhões Program Euromilhoes; Var Bola = array [1..6] of integer; Estrela = Array [1..2] of integer; begin For Bola[1]:= 1 to 46 do For Bola[2]:= Bola[1]+1 to 47 do For Bola[3]:= Bola[2]+1 to 48 do For Bola[4]:= Bola[3]+1 to 49 do For Bola[5]:= Bola[4]+1 to 50 do For Estrela[1]:= 1 to 11 do For Estrela[2]:= Estrela[1]+1 to 12 do begin For b:= 1 to 6 do Write(bola[b]," "); write(" - "); For e:= 1 to 2 do write(estrela[e]," "); writeln; end; end. 😁
  6. Caros, boa tarde. Tenho feito um relatório que inclui Códigos QR, utilizo o LazReport com frBarCode2d1 e frTNPDFExport1. O assunto é que o relatório na tela e se mando a imprimir diretamente fica todo "ok-ótimo", mas se envio o reporte para PDF não insere os códigos QR, o resto se fica todo bem. Alguma ideia ou dica??
  7. Opa pessoal, estou com um problema que quero que esse programa de arranjo em pascal apenas rode os arranjos de: 1234 ,sendo digitado 1 o 2 e assim sucessivamente, porém mesmo se eu digitar outro número eu quero que apenas o arranjo do 1234 seja feito e não outro. Alguém tem uma ideia de como fazer isso ? Virei e revirei o código e não consigo encontrar. program mistureba; type placa = array [1..4] of integer; expr = record texto : string; valor : real; end; a4expr = array [1..4] of expr; const MAXDIG = 4; var a4num : array [1..24] of placa; // a4num : array [1..24,1..4] of integer linha : integer; procedure mistura(input : placa; index : integer); // input tem a série de digitos da placa // index indica a posição que inicia o arranjo var output : placa; p, i : integer; begin if index=MAXDIG then begin // mostra / insere a sequencia que está em input //for i := 1 to MAXDIG do //write(input[i]); //writeln; a4num[linha] := input; linha := linha + 1; end else begin output := input; for p := index to MAXDIG do begin output[index] := input[p]; for i := index to p - 1 do output[i + 1] := input[i]; for i := p + 1 to MAXDIG do output[i] := input[i]; mistura(output,index + 1); end; end; end; var //a4num : placa; p, i : integer; begin linha := 1; for i := 1 to MAXDIG do readln(a4num[linha,i]); mistura(a4num[linha],1); // vou mostrar o conteúdo do mei conjunto de placas for linha := 1 to 24 do begin for i := 1 to MAXDIG do write(a4num[linha,i]); writeln; end; end.
  8. Boa Tarde, Trabalho no xe7, estou a tentar consumir o API do INE.PT, através "Rest Debugger". Ao executar dá sempre o erro: socket-error-10054-connection-reset-by-peer Segui o exemplo do manual do API Request URL:https://www.ine.pt/ine Parameters Resources: json_indicador/pindica.jsp?op=2&varcd={varcd_cod}&Dim1={dim1_cod}&Dim2={dim2_cod}&Dim3={dim3_cod}&lang={lang} Alguém que já tenha feito algo do género, que possa ajudar? Obrigada Sílvia
  9. Olá, precisava de ajuda de como poderia criar um sistema de Stock nesta maquina de bebidas que estou desenvolvendo ainda sou "novato" em pascal estou fazendo esta maquina de bebidas para aprender melhor como funciona a linguagem pascal. Ate agora ainda não tive nenhuma ideia de como posso adicionar um sistema de stock a esta maquina se alguém tiver alguma dica ou souber de alguma forma agradeço toda a ajuda. Program Maquinadevendas ; Var Bebida : Char; Var Valor : String; Var Dinheiro : Real; Var DinheiroNovo : Real; Var SomaDinheiro : Real; Var Continuar : String; var A,B,C,D,E,F,G,H,I,J,K,L : Char; Const Agua = 0.50; Const Sumo = 0.80; Const Cola = 1.20; Const Ucal = 1.00; Begin G := Chr(201); H := Chr(205); I := Chr(187); J := Chr(186); K := Chr(200); L := Chr(188); Writeln (' ',G,H,H,H,H,H,H,H,H,H,H,H,H,H,H,H,H,H,H,H,H,H,H,H,H,H,H,H,H,H,H,H,H,H,H,H,H,H,H,H,H,H,H,H,H,H,H,H,H,I); Writeln (' ',J,' ',' ',' ',' ',' ',' ',J); Writeln (' ',J,' ',J); Writeln (' ',J,' ',J); Writeln (' ',J,' ',J); Writeln (' ',K,H,H,H,H,H,H,H,H,H,H,H,H,H,H,H,H,H,H,H,H,H,H,H,H,H,H,H,H,H,H,H,H,H,H,H,H,H,H,H,H,H,H,H,H,H,H,H,H,L); Repeat DinheiroNovo := 0; SomaDinheiro := 0; Dinheiro := 0; Writeln('Opções'); Writeln ('1 - Agua:0.50$'); Writeln ('2 - Sumo:0.80$'); Writeln ('3 - Cola:1.20$'); Writeln ('4 - Ucal:1.00$'); Write('Escolha a sua Opção:'); Read (Bebida); Case Bebida of '1': begin Writeln('Voce escolheu Agua por favor intoduza 0.50$'); Readln(Dinheiro); if (Dinheiro = Agua) then Writeln('Desfrute da sua Agua.'); if (Dinheiro < Agua) then Begin SomaDinheiro := Dinheiro ; Repeat Writeln('O valor atrbuido é insufeciente '); Writeln(' Insira mais dinheiro'); Readln(Dinheironovo); SomaDinheiro := Dinheironovo + SomaDinheiro; Writeln('A quantia introduzida é', SomaDinheiro :8 :2) Until SomaDinheiro >= 0.50; end; if (SomaDinheiro > Agua) then Writeln('Desfrute da sua agua e aqui tem o seu troco',SomaDinheiro - Agua :8 :2); end ; '2': begin Writeln('Voce escolheu Sumo por favor intoduza 0.80$'); Readln(Dinheiro); if (Dinheiro = Sumo) then Writeln('Desfrute da sua Agua.'); if (Dinheiro < Sumo) then Begin SomaDinheiro := Dinheiro ; Repeat Writeln('O valor atrbuido é insufeciente '); Writeln(' Insira mais dinheiro'); Readln(Dinheironovo); SomaDinheiro := Dinheironovo + SomaDinheiro; Writeln('A quantia introduzida é', SomaDinheiro :8 :2) Until SomaDinheiro >= Sumo; end; if (SomaDinheiro > Sumo) then Writeln('Desfrute do seu Sumo e aqui tem o seu troco',SomaDinheiro - Sumo :8 :2); end ; '3': begin Writeln('Voce escolheu Cola por favor intoduza 1.20$'); Readln(Dinheiro); if (Dinheiro = Cola) then Writeln('Desfrute da sua Cola.'); if (Dinheiro < Cola) then Begin SomaDinheiro := Dinheiro ; Repeat Writeln('O valor atrbuido é insufeciente '); Writeln(' Insira mais dinheiro'); Readln(Dinheironovo); SomaDinheiro := Dinheironovo + SomaDinheiro; Writeln('A quantia introduzida é', SomaDinheiro :8 :2) Until SomaDinheiro >= Cola; end; if (SomaDinheiro > Cola) then Writeln('Desfrute do seu Sumo e aqui tem o seu troco',SomaDinheiro - Cola :8 :2); end ; '4': begin Writeln('Voce escolheu Ucal por favor intoduza 1.00$'); Readln(Dinheiro); if (Dinheiro = Ucal) then Writeln('Desfrute da sua Ucal.'); if (Dinheiro < Ucal) then Begin SomaDinheiro := Dinheiro ; Repeat Writeln('O valor atrbuido é insufeciente '); Writeln(' Insira mais dinheiro'); Readln(Dinheironovo); SomaDinheiro := Dinheironovo + SomaDinheiro; Writeln('A quantia introduzida é', SomaDinheiro :8 :2) Until SomaDinheiro >= Ucal; end; if (SomaDinheiro > Ucal) then Writeln('Desfrute do seu Sumo e aqui tem o seu troco',SomaDinheiro - Ucal :8 :2); end ; Else Writeln('Opção Invalida'); end; Repeat Writeln('Deseja Continuar S ou N?'); readln(Continuar); Until (Continuar = 'S') or (Continuar = 'N'); Until Continuar = ('N'); Writeln('Desfrute da sua bebida'); End.
  10. Ganha um clone moderno do ZX Spectrum com apenas algumas linhas de programa BASIC! Está aberto um concurso de programação ZX Spectrum com um desafio insólito para os programadores do ZX Spectrum mas banal para os programadores de Pascal: Programar em BASIC sem usar GOTOs! Se achas que BASIC é uma antiguidade indigna de sujares os dedos, podes ver aqui a prova em contrário: http://arcalusitana.fun/MuseuZX/Pascalated_BASIC Sim, com um conversor a velharia já fica mais simpática! Vamos lá, aproveita um fim-de-semana e mostra a esses programadores em vias de extinção o que vale um programador a sério! Quem estiver interessado, pode ler o regulamento aqui: http://arcalusitana.fun/MuseuZX/Pascalated_BASIC/Concurso2022.html O anúncio oficial está aqui na página do patrocinador: https://planetasinclair.blogspot.com/2022/02/concurso-basic-apascalado-2022-zx.html Boa sorte!
  11. ola Quero criar um aplicativo de tarefas Eu quero exibir a lista de tarefas na tela de bloqueio do Android você tem alguma idéia de como exibi-lo na tela de bloqueio e não na tela inicial
  12. Tenho a disciplina de projeto e eu decidi fazer um talho em pascalzim só que agora tou com um pquenho grande problema . A compra da primeira carne da certo mas da 2 , 3 , 4, 5 ... dão erradas o valor a pagar fica igual a 0. Ajuda por favor tenho de entregar o trabalho ate dia 10. O programa ainda não tá acabado mas eu queria pelo menos tratar disto. Programa: Program Pzim ; Var nov, nov2 , Vit , Kig , precocarne , vlrcompra , vlrpagar , vlrpago , din , troco:Real; Var crn :Integer; Var outra_compra : char; label inicio; label kg; label compra; label troco; label outracompra; Begin Repeat precocarne:=0; vlrpago:=0; troco:=0; inicio:Clrscr; Textcolor(Red); Writeln(' ___________________ ') ; Writeln(' | | ') ; Writeln(' | Seja bem-vindo ao | ') ; Writeln(' | Talho Rui & Comp. | ') ; Writeln(' |___________________| ') ; Writeln(); Writeln(); Writeln(' ______________ '); Writeln(' | | '); Writeln(' | 1- Novilho | '); Writeln(' | 2- Vitela | '); Writeln(' | 3- Porco | '); Writeln(); Writeln(); Write('Carne escolhida : '); Read (crn); clrscr; Case (crn) of 1:Begin clrscr; textcolor (green); Write('1'); textcolor(red); Writeln(' - Bife do Bazio - (12,98€/Kg) '); textcolor (green); Write('2'); textcolor (red); Writeln(' - Bife da Rabada - (11,50€/Kg) '); textcolor (green); Write('3'); Textcolor(red); Writeln(' - Bife da cernelha - (8,98€/Kg) '); textcolor (green); Write('4'); Textcolor(red); Writeln(' - Carne de Novilho - (7,98€/Kg) '); textcolor (green); Write('5'); textcolor (red); Writeln(' - Costelão - (6,99€/Kg) '); textcolor (green); Write('6'); textcolor (red); Writeln(' - Pagina seguinte '); textcolor (green); Write('0'); textcolor (red); Writeln(' - Voltar '); Read(nov); if (Nov=0) then goto inicio; if (Nov=1) then precocarne:=(12.98); goto kg; if (Nov=2) then precocarne:=(11.50); goto kg; if (Nov=3) then precocarne:=(8.98); goto kg; if (Nov=4) then precocarne:=(7.98); goto kg; if (Nov=5) then precocarne:=(6.99); goto kg; IF (Nov=6) then Clrscr; textcolor (green); Write('1'); textcolor (red); Writeln(' - Fígado de Novilho - (3,99€/Kg) ') ; textcolor (green); Write('2'); textcolor (red); Writeln(' - Língua de Novilho - (6,99€/Kg) ') ; textcolor (green); Write('3'); textcolor (red); Writeln(' - Mão de Novilho - (1,99€/Kg) ') ; textcolor (green); Write('4'); textcolor (red); Writeln(' - Picanha - (12,99€/Kg) '); textcolor (green); Write('5'); Textcolor (red); Writeln(' - Tripa de Novilho - (3,79€/Kg) '); textcolor (green); Write('0'); textcolor(red); Writeln(' - Voltar '); Read(nov2); if (nov2=0) then goto inicio; END; 2:bEGIN CLRSCR; textcolor(green); Write('1'); Textcolor(red); Writeln(' - Costela Mendinha - (7,98€/Kg) '); textcolor(green); Write('2'); textcolor(red); Writeln(' - Costelas de Vitela - (12,98/Kg) '); textcolor(green); Write('3'); textcolor(red); Writeln(' - Vitela Branca (Assar) - (12,48/Kg) '); Textcolor(green); Write('0'); Textcolor(red); Writeln(' - Voltar '); Read(Vit); If Vit=0 then goto Inicio End; 3:bEGIN CLRSCR; Textcolor(green); Write('1'); textcolor(red); Writeln(' - Bifanas Laminadas - (3,48€/Kg) '); Textcolor(green); Write('2'); Textcolor(red); Writeln(' - Chispe - (2,48€/Kg) '); Textcolor(green); Write('3'); textcolor(Red); Writeln(' - Costelas do Lombo - (3,48€/Kg) '); Textcolor(Green); Write('4'); Textcolor(red); Writeln(' - Entrecosto - (4,48€/Kg) '); End; End; Kg:CLRSCR; Writeln(''); Writeln(' Quantos Kg deseja ?'); Read (kig); goto compra; Compra:clrscr; vlrpago:=0; repeat clrscr; vlrcompra:=(Kig * (precocarne)); vlrpagar:=(vlrcompra- vlrpago); Writeln('Valor da compra : ',vlrcompra); Writeln('Valor a pagar : ',vlrpagar); Writeln('Valor pago : ',vlrpago); Writeln(); Writeln(' Insira o dinheiro! '); Read (din); Vlrpago:=vlrpago+din; until (vlrpago=vlrcompra) or (vlrpago>vlrcompra); goto troco; Troco:Clrscr; troco:=(vlrpago-vlrcompra); Writeln(' Troco : ',troco); Writeln(''); Writeln(' Obrigado pela sua compra '); goto outracompra; outracompra:Writeln(); Writeln(); Writeln('Deseja comprar mais alguma coisa?'); Read (outra_compra); Until (outra_compra='N') or (outra_compra='n') End.
  13. Boas, tenho um programa para fazer para um trabalho, e apenas não estou a conseguir efetuar um passo, cujo objetivo é clicar na tecla ESC e através deste clique, limpar todo o ecrã escrever algo através de: "write('...');". Se alguém me conseguisse ajudar seria brutal. Obrigado.
  14. Boa noite, Estou a desenvolver um sistema Indoor, no qual o vídeo precisa tocar várias horas por dia/semana. Entretanto quando uso o TMediaPlayer e o TMediaPlayerControl o sistema não consegue ficar mais que 2 horas funcionando. Essa é uma parte do código que utilizo para dar o Play. Eu fiz um Array de TMediaPlayer para armazenar as "mídias carregadas". Utilizo o pIndexList para percorrer todos os vídeos da lista. Podem notar que acabei fazendo um Array de TMediaPlayerControl para ficar criando e apagando (tentei com isso liberar memória dando um .Release). procedure TForm1.PlayVideo; begin inc(pIndexList); if (pIndexList > 9) then begin pIndexList := 0; end; Memo1.Lines.Clear; Memo1.Lines.Add('Índice: '+ pIndexList.ToString); if Assigned(pMediaPlayerControl[0]) then if pMediaPlayerControl[0].MediaPlayer.State = TMediaState.Playing then pMediaPlayerControl[0].MediaPlayer.Stop; pMediaPlayerControl[0].MediaPlayer := pMediaPlayer[pIndexList]; pMediaPlayerControl[0].MediaPlayer.Play; end; Alguém teria alguma solução para esse problema? Por que a aplicação fechar sem dar uma mensagem de erro? As vezes aparece um mensagem de que não pode abrir o vídeo.
  15. Boa tarde, Estou migrando um projeto Delphi 7 para XE, e o mesmo tem um TDataModule com um TSQLConnection que de uma hora para outra não aparece mais na propriedade "SQLConnection" dos TSQLQuery nos formulários. Se eu colocar "DM.Connection" manualmente no parâmetro "SQLConnection" do objeto TSQLQuery funciona perfeitamente, más ele não aparece como opção se eu clicar no combo. Em outros projetos continuam aparecendo normal, só neste projeto específico que não aparece, o combo fica vazio, parece que corrompeu algo. Alguém saberia me dizer como posso fazer para recuperar este link no projeto? Desde já, agradeço.
  16. Amigos, desenvolvi um aplicativo e necessito que este possa receber notificações push através do Firebase Cloud Messaging, segui todos os passos encontrados em pesquisas na web, hoje já consigo receber notificações no Android, porém no iOS apesar de compilar sem erros, resgatar o TOKEN e do Firebase retornar mensagem positiva quando uso este TOKEN para testes de envio, a notificação nunca chega. Alguém conhece um bom passo a passo que possa ajudar-me nessa empreitada?
  17. Olá, me ajudem aqui por favor!!! Preciso de um comando que faça a porcentagem de votos, o projeto seia assim, colocaria o voto da pessoa1 e depois da pessoa2, e assim calcular a porcentagem dos 2 e logo em seguida aparecer qual pessoa tem a porcentagem maior e a porcentagem logo do lado.
  18. Bom dia, sou novo em programação Lazarus, e estou iniciando um projeto para controle de estoque, ocorre que preciso usar um datamodule, o problema é que quando estou fazendo a ligação na fase de programação tudo ocorre muito bem, só quando faço a compilação, nesta fase surgi o seguinte erro " "unit UniDados not used in FormPrincipal” ", e no executável a conexão com o banco some, segue código abaixo, agradeço qualquer ajuda, obrigado: Form principal: < unit FormPrincipal; {$mode objfpc}{$H+} interface uses Classes, SysUtils, Forms, Controls, Graphics, Dialogs, DBCtrls, DBGrids; type { TForm1 } TForm1 = class(TForm) DBGrid1: TDBGrid; DBNavigator1: TDBNavigator; procedure teste(Sender: TObject); private public end; var Form1: TForm1; implementation {$R *.lfm} uses UniDados; { TForm1 } procedure TForm1.teste(Sender: TObject); begin // DataModule1.Create(self); end; end. > Form DataModule: < unit UniDados; {$mode objfpc}{$H+} interface uses Classes, SysUtils, ZConnection, ZDataset, DB; type { TDataModule1 } TDataModule1 = class(TDataModule) DataSource1: TDataSource; ZConnection1: TZConnection; ZQuery1: TZQuery; private public end; var DataModule1: TDataModule1; implementation {$R *.lfm} end. >
  19. Boa tarde a todos 🙂 Recentemente começamos a migrar as nossas apps (Android / iOS) do Delphi Rio 10.3.3 para a mais recente Delphi Sydney 10.4.2. Em android correu tudo bem, basicamente foi compilar e ficou feita a migração. No iOS, estou com bastantes problemas para conseguir que as notificações push funcionem, sendo que na versão anterior estava tudo a funcionar. Uma das novidades na versão 10.4.2 é, precisamente, o suporte para Firebase Push Notification para iOS. Segui os passos apresentados neste webinar https://blogs.embarcadero.com/pt/webinar-amanha-mao-na-massa-com-rad-studio-10-4-2/ (no video, começa no minuto 1:08:30), atualizei o mac para o mais Big Sur (vs 11.4), instalei a partir do GetIt Package Manager o Firebase SDK for iOS 6.28. Depois de configurar nas opções do projeto a opção "Framework search path" com o caminho para as pastas FirebaseAnalytics e FirebaseMessaging e colocar a opção -ObjC em "Options passed to de LD linker" estou a receber o seguinte erro: [DCC Error] E2597 ld: file not found: PromisesObjC [DCC Fatal Error] F2588 Linker error code: 1 ($00000001) Descarreguei o exemplo apresentado no webinar https://github.com/flrizzato/WEBINARS/tree/master/10.4.2-HandsOn e tenho exatamente o mesmo erro... Talvez esteja a faltar alguma configuração no delphi ou no mac (não sei se é necessário instalar alguma coisa).. Alguém tem ideia do que será? Agradeço qualquer ajuda, se não houver ajudas, pelo menos desabafei 😅
  20. Elabora um programa em pascal que peça ao utilizador uma frase com um max de 70 caracteres... faz com que o programa responda dizendo o numero de palavras introduzinas na frase sendo que não pode ultrapassar os 70 caracteres... Boa sorte... (PS: até agora fiz isto e professor já corrigiu e disse que estava certo desta forma); Program Contador_com_70_caracteres ; const ct= 70; type arr=array [1..ct] of char; var p: arr; n:integer; Procedure ler_caracteres (var frase:arr; var k:integer); Begin writeln ('introduza uma frase com um max de 70 caracteres'); k:=1; Repeat k:=k+1; read (frase [k]); until (k=70) or (frase[k] = '#'); End; Procedure analizar (frase:arr; j:integer; var palavras:integer); var i: integer; begin palavras:=0; for i:=1 to j do if (frase[i]=' ') and (frase[i-1] <> ' ') or ( frase[i] = '#') then palavras:=palavras+1; End; Procedure escrever (f:arr; h:integer); var i: integer; Begin For i:=1 to h do write (f[i]); writeln (' o numero de caracteres é ',h); end; Begin ler_caracteres(p,n); analizar(p,n,n); escrever(p,n); End.
  21. Olá, colegas Meu nome é Vlademiro, sou brasileiro, e estou entrando agora no fórum. Apesar de já ter mais de 30 anos de experiência com informática, considero-me um iniciante em Pascal. Acredito que anos de experiência dizem muito pouco sobre um profissional, por isso estou aqui na condição de aprendiz. Meu primeiro contato com o Pascal foi na escola técnica de programação, ainda nos anos 1990, mas acabei usando o que estava em alta naquela época, que era o Clipper 5, depois veio a web e fui para o ASP antigo, PHP, Oracle Forms, Perl e depois voltei para o xBase através do Harbour. Apesar de amante do software livre me vi atraído pelo Delphi por sua simplicidade e maturidade. Quando vi a versão community me empolguei. Vi também que o primo open-source do Delphi, o Lazarus, evoluiu muito desde a última vez que vi (sou curioso). Espero contribuir com vocês e aprender também. Como minha primeira contribuição eu criei um repositório git e vou alimentando com o que vou aprendendo de Delphi e Pascal em geral. Tem algumas coisas legais que descobri nos meus estudos. Inclusive talvez vá ajudar a algum profissional também, já que tem uma pasta de exemplos com alguns códigos de firedac somente console (sou do tempo do console, por isso só sinto que aprendi algo quando faço exemplos em console). Meu repósitório Espero que estejam todos bem a as suas famílias também. Até mais.
  22. Olá boa noite Eu preciso de fazer um projeto para a escola, mas não tenho ideias e queria perguntar se alguém teria alguma. É o meu primeiro ano de programação , por isso eu não sou um pro nisto, mas desenrasco me bem e não tenho problema em ir pesquisar algo que não saiba. Neste projeto nos somos avaliados entre outras coisas pela originalidade do programa e é obrigatório usar: Ciclos de repetição e decisão (aprendemos o while, until, case of, if, ...), vetores/matrizes, strings, funções e procedimentos. Alguém tem alguma ideia? Obrigado desde já!
  23. Estou com dúvidas de como resolver estes exercícios alguem me poderia ajudar? https://prnt.sc/106jxwd
  24. Estou a criar um Jogo em Pascalzim com matrizes. Foi me pedido para fazer a batalha naval singleplayer para a escola mas quero fazxer com que haja outro jogador. Como Posso Fazer isso? Aqui esta o codigo: { 24-02-2021} Program Batalha_Naval ; {Jogo da batalha naval single player contra o computador} {Campo de 10 por 10} type Matriz=array[1..10, 1..10] of char; var batalha:matriz; li,c,contaS:integer; opc:char; {----------------------------------------------------------------- objectivo: preencher o tabuleiro com submarios em posicoes aleatorias. parâmetros: matriz -------------------------------------------------------------------} Procedure PreencheBatalha(var Jogo:matriz); var linha,coluna,sub:integer; begin {gerador de números aleatórios} randomize(); {Põe todos os elemntos a Agua} For linha:= 1 to 10 do For coluna:= 1 to 10 do {A=agua} jogo[linha,coluna]:='A' ; {Poe dois submarinos} for sub:=1 to 2 do {Poe os submarinos em posicoes aleatorias} jogo[random(9)+1,random(9)+1]:='S';{S=submarino} end; {----------------------------------------------------------------- objectivo: mostrar no ecrã o tabuleiro parâmetros: matriz -------------------------------------------------------------------} Procedure mostranoecra(jogo: matriz); var linha,coluna:integer; begin {Ciclo para percorrer todos os elementos da matriz} for linha:=1 to 10 do begin for coluna:=1 to 10 do begin Write(jogo[linha,coluna]); write(' '); end; writeln; end; end; {----------------------------------------------------------------- objectivo: pedir as coordenadas para afundar os submarinos parâmetros: matriz -------------------------------------------------------------------} procedure JogarBatalha(Jogo:matriz); var linha,coluna:integer; begin writeln('insira a linha e coluna.'); write('Linha:'); readln(linha); writeln; write('coluna:'); readln(coluna); writeln(linha, coluna); if batalha[linha,coluna]='S' then begin writeln('afundou'); contaS:=contaS-1; end else writeln('agua'); end; {----------------------------------corpo-principal----------------------------} begin {Contador para parar quando se afundou todos os submarinos} contaS:=2; PreencheBatalha(batalha); {Mostra No ecrã o tabuleiro mostranoecra(batalha);} //repete enquanto houver submarinos repeat JogarBatalha(batalha) until(contaS=0); writeln('Parabens! Afundou todos os Submarinos!'); End.
  25. Program ping_pong ; const cantoCima = 2 ; cantoBaixo = 10 ; cantoEsquerda = 2 ; cantoDireita = 38 ; var bolaX, bolaY: integer; // posicao x, y da bola raquete1X, raquete1Y: integer; // posicao x, y da raquete 1 raquete2X, raquete2Y: integer; // posicao x, y da raquete 2 moveBolaDireita, moveBolaBaixo: boolean ; // controla direcao da bola pontos: integer; acabouJogo: boolean ; menu1:real; nome1, nome2:string; Procedure menuin; //Interface do Menu Begin clrscr; Writeln; Writeln; writeln(' ----------- '); Writeln(' 1-Jogar '); writeln(' ----------- '); writeln; Writeln; writeln(' ---------------- '); Writeln(' 2-como jogar '); writeln(' ---------------- '); Writeln; Writeln; writeln; writeln(' ---------- '); Writeln(' 3-Sair '); writeln(' ---------- '); Writeln; menu1:=4 End; //Ecrã Inicial Begin textcolor (Red); Writeln (' - - - --- -´~~~~ '); Writeln (' ,´ `, '); Writeln (' ( , '); Writeln (' ( ) '); Writeln (' { --- ) '); Writeln (' { / / ) _ _ _ _ _ _ _ _ _ _ _ _ '); Writeln (' | --- | | | '); Writeln (' | | | Ping Pong | '); Writeln (' | | |_ _ _ _ _ _ _ _ _ _ _ _| '); Writeln (' \ / '); Writeln (' \ / '); Writeln (' - - -´~~~~ - - -´~~~~ '); Writeln (' | | '); Writeln (' | | '); Writeln (' | | '); Writeln (' | | '); Writeln (' | | '); Writeln (' | | '); Writeln (' | | '); Writeln (' | | '); Writeln (' |_____| '); Textcolor (Black); Textbackground (White); Writeln(' ---------------------------------------------- '); Writeln(' | Insira o nome dos 2 jogadores para jogar | '); Writeln(' ---------------------------------------------- '); Textcolor (red ); Textbackground (Black); Readln(nome1); Readln(nome2); menuin; Repeat Readln(menu1); If menu1=1 then // Começa o jogo begin //---------------------------------------------------------------- // Desenha o campo do pong //---------------------------------------------------------------- procedure DesenhaCampo; begin textcolor(white); gotoxy(1,1); writeln(#201,#205,#205,#205,#205,#205,#205,#205,#205,#205,#205,#205,#205,#205,#205,#205,#205,#205,#205,#203,#205,#205,#205,#205,#205,#205,#205,#205,#205,#205,#205,#205,#205,#205,#205,#205,#205,#205,#187); writeln(#186,' ',#176,' ',#186); writeln(#186,' ',#176,' ',#186); writeln(#186,' ',#176,' ',#186); writeln(#186,' ',#176,' ',#186); writeln(#186,' ',#176,' ',#186); writeln(#186,' ',#176,' ',#186); writeln(#186,' ',#176,' ',#186); writeln(#186,' ',#176,' ',#186); writeln(#186,' ',#176,' ',#186); writeln(#200,#205,#205,#205,#205,#205,#205,#205,#205,#205,#205,#205,#205,#205,#205,#205,#205,#205,#205,#202,#205,#205,#205,#205,#205,#205,#205,#205,#205,#205,#205,#205,#205,#205,#205,#205,#205,#205,#188); writeln(''); writeln('------------------------'); writeln('Pascalzim PONG'); writeln('------------------------'); writeln('- Mateus Riva'); writeln('- Caio Augusto Faria'); writeln('- Denis Miura'); writeln('- Tobias Furtado'); writeln(''); writeln('Controles Jogador 1 => seta para cima, seta para baixo.'); writeln('Controles Jogador 2 => 8 para cima, 2 para baixo'); writeln(''); if(pontos <> 0) then writeln('Pontos: ', pontos); end; //---------------------------------------------------------------- // Move a bola pelo campo //---------------------------------------------------------------- procedure moveBola ; Begin // Move a bola na horizontal if (moveBolaDireita) then bolaX:= bolaX + 1 else bolaX:= bolaX - 1; // Move a bola na vertical if (moveBolaBaixo) then bolaY:= bolaY + 1 else bolaY:= bolaY - 1; // Se a bola bateu em cima ou embaixo do campo inverte sua direcao if (bolaY = cantoBaixo) or (bolaY = cantoCima) then moveBolaBaixo := not moveBolaBaixo ; // Desenha a bola na sua nova posicao gotoxy(bolaX,bolaY); write(#219); End ; //---------------------------------------------------------------- // Move as raquetes //---------------------------------------------------------------- procedure moveRaquetes ; var moveuRaquete : boolean ; Begin // Verifica se alguma raquete se moveu while keypressed do begin case readkey of // Seta para cima: move a raquete 1 para cima #72: if (raquete1Y > cantoCima+1) then raquete1Y:= raquete1Y - 1; // Seta para baixo: move a raquete 1 para baixo #80: if (raquete1Y < cantoBaixo) then raquete1Y:= raquete1Y + 1; // Numero 8: move a raquete 2 para cima '8': if (raquete2Y > cantoCima+1) then raquete2Y:= raquete2Y - 1; // Numero 2: move a raquete 2 para baixo '2': if (raquete2Y < cantoBaixo) then raquete2Y:= raquete2Y + 1; end; end ; // Desenha a raquete 1 textcolor (lightred); gotoxy(raquete1X,raquete1Y); write(#219); gotoxy(raquete1X,raquete1Y -1); write(#219); // Desenha a raquete 2 textcolor(lightblue); gotoxy(raquete2X,raquete2Y); write(#219); gotoxy(raquete2X,raquete2Y -1); write(#219) ; End; //---------------------------------------------------------------- // Verifica se a bola bateu em alguma raquete //---------------------------------------------------------------- procedure VerificaChoqueRaquete ; Begin // Se a bola bateu na raquete 1 joga ela para direita if (bolaX = raquete1X+1) then if (bolaY = raquete1Y) or (bolaY = raquete1Y-1) then begin moveBolaDireita := true ; pontos:= pontos + 1; end; // Se a bola bateu na raquete 2 joga ela para esquerda if (bolaX = raquete2X-1) then if (bolaY = raquete2Y) or (bolaY = raquete2Y-1) then begin moveBolaDireita := false ; pontos := pontos + 1; end; End; //---------------------------------------------------------------- // Inicia o jogo //---------------------------------------------------------------- procedure iniciaJogo ; Begin randomize; // Determina posicao inicial da bola bolaX:= 20; bolaY:= random(cantoBaixo-2) + 2; // Determina para que lado a começa a se mover moveBolaBaixo := true ; if(random(2) = 1) then moveBolaDireita := true else moveBolaDireita := false ; // Determina posicao inicial da raquete 1 raquete1X:= cantoEsquerda; raquete1Y:= (cantoCima+cantoBaixo) div 2 ; // Determina posicao inicial da raquete 2 raquete2X:= cantoDireita; raquete2Y:= (cantoCima+cantoBaixo) div 2 ; pontos := 0; // inicializacao do jogo acabouJogo := false ; clrscr; End; //---------------------------------------------------------------- // Fim do jogo: a bola passou por uma das raquetes //---------------------------------------------------------------- procedure VerificaFimJogo ; var resp : char ; Begin // Se a bola nao bateu no canto do tabuleiro sai do procedure if(bolaX <> cantoEsquerda-1) and (bolaX <> cantoDireita+1) then exit ; // Mostra qual jogador venceu o jogo textcolor(white); gotoxy(41,3); if (bolaX < cantoEsquerda) then writeln('Vencedor: Jogador 2') else writeln('Vencedor: Jogador 1'); // Pergunta se quer continuar jogando gotoxy(41,5); write('Digite <ENTER> para parar...'); gotoxy(41,7); write('Pressione outra tecla para jogar...'); resp := upcase(readkey); // Se a resposta é não, termina o programa if (resp= #13) then Begin acabouJogo := true ; exit ; End ; // Se a resposta é sim, reinicia o jogo iniciaJogo ; End ; //---------------------------------------------------------------- // Inicio do programa //---------------------------------------------------------------- Begin // Desenha o campo de jogo, de fundo verde textbackground(green); clrscr; DesenhaCampo; writeln('=> Pressione uma tecla para iniciar o jogo'); readkey ; // Roda o jogo iniciaJogo ; while not acabouJogo do begin delay(150); DesenhaCampo; moveBola ; moveRaquetes ; VerificaChoqueRaquete ; VerificaFimJogo ; end; End. End //Tela ao sair do Jogo Else if menu1=3 then Begin clrscr; Writeln; Textcolor (red); Writeln(' ---------------------------------------------- '); Writeln(' Obrigado por jogar! '); Writeln(' ---------------------------------------------- '); Writeln; Writeln; Writeln; Writeln; Textcolor (red); Writeln (' - - - --- -´~~~~ '); Writeln (' , ´ `, '); Writeln (' ( , '); Writeln (' ( ) '); Writeln (' { --- ) '); Writeln (' { / / ) '); Writeln (' | --- | '); Writeln (' | | '); Writeln (' \ / '); Writeln (' \ / '); Writeln (' - - -´~~~~ - - -´~~~~ '); Writeln (' | | '); Writeln (' | | '); Writeln (' | | '); Writeln (' | | '); Writeln (' | | '); Writeln (' | | '); Writeln (' | | '); Writeln (' | | '); Writeln (' |_____| '); Writeln; Writeln; Writeln; Writeln; Writeln; End //Instruções Else if menu1=2 then Begin clrscr; Textcolor (11); Writeln; Writeln(' Se é o jogador 1, mova a raquete com as setas do lado esquerdo e direito (<--- --->) '); Writeln(' Se é o jogador 2, mova a raquete com o "A" e o "D" '); Writeln(' O jogo vai até aos 10 pontos '); Writeln; Writeln(' Quem fizer mais pontos ganha! '); Writeln; Writeln; writeln; writeln(' ----------------------------- '); writeln(' | Boa Sorte e boas raquetadas!| '); writeln(' ----------------------------- '); Textcolor (red); Writeln('Pressione esc para voltar ao Menu'); Readkey; menuin; End Else Writeln('Opção inválida'); Until ((menu1=1) or (menu1=2) or (menu1=3)); //Fim do Programa End. Alguem que me ajude, pff!
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.