Ficha de Trabalho N.º6 Soluções Propostas

Documentos relacionados
Ficha de Trabalho N.º5 Soluções Propostas

Aula Anterior. Decomposição algorítmica (continuação)

1º Exame de INTRODUÇÃO À PROGRAMAÇÃO Licenciatura em Engenharia Mecânica 30 de Junho de º Semestre

Linguagem Pascal. Prof. Sérgio Rodrigues. É a descrição, de forma lógica, dos passos a serem executados no cumprimento de determinada tarefa;

Capítulo V : A Linguagem Pascal Um Tipo Estruturado de Dados: o array 18. Para limite de n até 2 (* passagens de 1 até (n-1) *)

Linguagem Pascal. Prof. Antonio Almeida de Barros Junior

Sequencial Estrutura de controlo mais simples. As instruções são executadas sequencialmente.

Aulas Anteriores. Detalhes da linguagem de programação

Linguagem Computacional. Estruturas de Controle: Estruturas de Repetição. Prof. Dr. Adriano Cansian Prof. Dr. Leandro Alves Neves

LISTA DE EXERCÍCIOS 15 ( Matrizes (7Cs))

Modularidade. Objetivos: Introduzir noções básicas de modularidade. Funções e procedimentos

Correção do 1º Exame de INTRODUÇÃO À PROGRAMAÇÃO Licenciatura em Engenharia Mecânica 30 de Junho de 2006, 2º Semestre

Programação de Computadores

Linguagem de programação: Pascal

Linguagem Pascal. Definição e Tipos de Dados. Professora Lara Popov Zambiasi Bazzi Oberderder. Linguagem PASCAL 1

Sumário. Ciência da Computação. Prof. Dr. Leandro Alves Neves. Aula 10. Algoritmos e Programação. Enquanto (Teste no início) Repeat (Teste no final)

Lista de Exercícios 06 Modularização (Procedimentos e Funções) Todos os algoritmos devem ser descritos em PORTUGOL e implementados em Pascal e Matlab.

EMGI Programação. Ficha 7 Resolução. Programação 1 Calcular a hipotenusa de um triângulo rectângulo, sabendo as medidas dos seus catetos:

CADERNO DE EXERCÍCIOS ALGORITMOS

LISTA 14 Gabarito. 1) Preparar um algoritmo para calcular a soma de 100 termos da seguinte série:

LISTA DE EXERCÍCIOS O que será escrito quando os algoritmos/trechos de algoritmos abaixo forem executados (fazer no papel)?

Elementos básicos das linguagens de programação

Resolução de exercícios da ficha de trabalho nº. 8 de VBA

Exercícios sobre o Capítulo III

2. Construa um algoritmo para determinar os números primos menores ou iguais a 1000.

Subprogramação. Subprogramação. Subprogramação. A subprogramação é uma ferramenta que contribui com a tarefa de programar:

LISTA DE EXERCÍCIOS: 1ª Unidade

Disciplina Programação Prof. Esp. Armando Hage. Programação em Turbo Pascal

Universidade Federal de Ouro Preto UFOP Instituto de Ciências Exatas e Biológicas ICEB Departamento de Computação DECOM

Desenho de algoritmos

Linguagem de Programação Pascal - Introdução

2.2.5 EXPRESSÕES - Regras para o cálculo de valores

UNISINOS - UNIVERSIDADE DO VALE DO RIO DOS SINOS CENTRO DE CIÊNCIAS EXATAS E TECNOLÓGICAS (C6/6) Curso: Informática

Módulo 3 Subprogramas

PROF. Menezes. program ex17; uses wincrt; var i, a, cont: integer;

Métodos de Programação I Ana Maria de Almeida

Introdução à Programação 2006/07. Algoritmos

Considere uma máquina que utiliza uma palavra de 10 bits. Suponha o seguinte padrão de bits:

Tutorial de Turbo Pascal

Algoritmos e Lógica de Programação. Prof. Marcos Antonio Estremoe. 1 - Faça um programa que imprima a frase: Bem Vindo à Engenharia Firb 2014.

Refinamentos sucessivos

ESCOLA SUPERIOR DE TECNOLOGIA DE TOMAR DEPARTAMENTO DE ENGENHARIA INFORMÁTICA 2006/2007

Universidade Federal de Uberlândia - UFU Faculdade de Computação - FACOM Lista de exercícios de programação em linguagem Python

Fundamentos de Programação Instituto Federal de Educação, Ciência e Tecnologia do Rio Grande do Norte 15 de maio de 2018.

UNISINOS - UNIVERSIDADE DO VALE DO RIO DOS SINOS CENTRO DE CIÊNCIAS EXATAS E TECNOLÓGICAS (C6/6) Curso: Informática

Representação de Algoritmos - Linguagens de Programação

Ficha 1 Noções de sequência e decisão em algoritmia

Universidade Federal de Uberlândia Faculdade de Computação. Estruturas de repetição

Teoria da Computação e Algoritmos. Introdução à Linguagem Pascal. ALGORITMO <Nome do algoritmo>; <definições>; INÍCIO <Comandos>; FIM.

11 ª Lista de Exercícios

VARIÁVEIS NUMÉRICAS : integer - Números inteiros entre e real - Números reais de 11 algarismos significativos.

Introdução à Programação em C

Programação. Folha Prática 5. Lab. 5. Departamento de Informática Universidade da Beira Interior Portugal. Copyright 2010 All rights reserved.

Procedimento. Função. Selecção Condicional - a instrução if-then-else. expressão if lógica then instrução else instrução

tipoveiculo = (bicicleta, motociclo, motorizada, automovel, autocomreb, camioneta, autocarro, camiao, reboque); veiculo : tipoveiculo;

Computação Eletrônica

APÊNDICE A - FUNDAMENTOS DA LINGUAGEM DE PROGRAMAÇÃO PASCAL.

Introdução à Programação em C (I)

Lógica e Linguagem de Programação Aula 04 - Estruturas de Repetição Repetição com Teste no Final - Repita Até - GABARITO Professor: Danilo Giacobo

p A modularização consiste num método utilizado para facilitar a construção de grandes programas;

Exercícios. Resposta: a) var valor: real; i: integer. b)

Introdução à Ciência da Computação

Linguagem e Técnicas em Programação. Gilson de Souza Carvalho

3. 1. Teste no Início do Ciclo (Repetição enquanto ):

Capítulo III : A Linguagem Pascal Estruturas de Controlo

1.a) Qual a diferença entre uma linguagem de programação de alto nível e uma linguagem de programação de baixo nível?

Introdução à Programação em C (I)

UNISINOS - UNIVERSIDADE DO VALE DO RIO DOS SINOS CENTRO DE CIÊNCIAS EXATAS E TECNOLÓGICAS (C6/6) Curso: Informática

TÉCNICO DE INFORMÁTICA - SISTEMAS

Transcrição:

Programação de Computadores Engenharia Electrotécnica 1º Ano - 1º Semestre Instituto Politécnico de Viseu Escola Superior de Tecnologia Ficha de Trabalho N.º6 Soluções Propostas 1 - Escreva o algoritmo de um procedimento que permita limpar o ecrã. Implemente o procedimento em linguagem Pascal e teste-o num pequeno programa para o efeito. program limpar(input,output); procedure limpa; for i:=1 to 50 do writeln; writeln('prima uma tecla para limpar o ecrã!'); readln; limpa; writeln('esta Frase foi escrita num ecrã limpo!'); 2 - Elabore o algoritmo de um procedimento que determine e apresente no monitor os n primeiros múltiplos de um número inteiro m (n e m devem ser parâmetros de entrada do procedimento). program p_multiplos(input,output); procedure multiplos(mult,n_mult:integer); for i:=1 to n_mult do writeln('o ',i,'º múltiplo é ',i*mult); var n,m: integer; write(' Introduza o valor de m: '); readln(m); write(' Quantos múltiplos quer calcular? '); readln(n); multiplos(m,n); 3 - Faça o algoritmo de um procedimento que, so dado como parâmetro de entrada um número inteiro, calcule e apresente no monitor todos os seus múltiplos inferiores a 100. Implemente o algoritmo em linguagem Pascal. program multiplos_inferiores(input,output); procedure multiplos100(num:integer); var mult:integer; writeln('os múltiplos de ',num,' inferiores a 100 são:'); mult:=num; while (mult<100) do writeln(mult); mult:=mult+num; var n: integer; write(' Introduza o valor de n: '); readln(n); multiplos100(n);

4 - Elabore um procedimento que apresente no monitor todos os números pares entre dois números inteiros n e m (n<m). Os valores de n e m devem ser passados como parâmetros para o procedimento e no caso de (m<n) deve ser apresentada a mensagem Valores Inválidos!. program pares_entre_dois_numeros(input,output); procedure pares(n,m:integer); var par:integer; if (n>=m) then writeln('valores Inválidos!') if (n mod 2 = 0) then par:=n par:=n+1; writeln('os múmeros pares entre n e m são:'); while (par<m) do writeln(' ',par); par:=par+2; var n,m: integer; write(' Introduza o valor de n: '); readln(n); write(' Introduza o valor de m (m>',n,'): '); readln(m); pares(n,m); 5 - Analise o seguinte programa e verifique a diferença existente entre a passagem de parâmetros por valor e por referência. program exemplo(input,output); procedure proc1(x,y:integer); writeln(' x = ',x,' y = ',y); x:=100; y:=200; procedure proc2(var x,y:integer); writeln(' x = ',x,' y = ',y); x:=100; y:=200; var a,b: integer; a:=1; b:=2; proc1(a,b); writeln(' a = ',a,' b = ',b); proc2(a,b); writeln(' a = ',a,' b = ',b); 2/8

6 - Implemente um procedimento que permita trocar o valor de duas variáveis. Teste-o num pequeno programa para o efeito. program trocar_vars(input,output); procedure troca(var x,y:integer); var aux:integer; aux:=x; x:=y; y:=aux; var a,b: integer; write(' Qual o valor de a? '); readln(a); write(' Qual o valor de b? '); readln(b); writeln('os valores introduzidos for am a = ',a,' b = ',b); troca(a,b); writeln('os valores após a troca são a = ',a,' b = ',b); 7 - Escreva um procedimento que, so dados como parâmetros as medidas dos dois catetos de um triângulo rectângulo, calcule e mostre no monitor a medida da hipotenusa. program catetos_hipotenusa(input,output); procedure hipotenusa(c1,c2:real); var hip:real; hip:=sqrt(sqr(c1)+sqr(c2)); writeln(' A hipotenusa mede ',hip:6:3); var a,b: real; write(' Qual a medida do primeiro cateto?'); readln (a); write(' Qual a medida do segundo cateto?'); readln (b); hipotenusa(a,b); 8 - Escreva uma nova versão do procedimento anterior que calcule a medida da hipotenusa mas não a mostre no monitor. Em vez disso a medida da hipotenusa deve ser enviada para o exterior por forma a ser utilizada no exterior do procedimento. program procedimento_hipotenusa(input,output); procedure hipotenusa(c1,c2:real;var hip:real); hip:=sqrt(sqr(c1)+sqr(c2)); var a,b,c: real; write(' Qual a medida do primeiro cateto?'); readln (a); write(' Qual a medida do segundo cateto?'); readln (b); hipotenusa(a,b,c); writeln(' A hipotenusa mede ',c:6:3); 3/8

9 - Use uma função para fazer o cálculo do exercício anterior. Compare as duas soluções para o problema. program funcao_hipotenusa(input,output); function hipotenusa(c1,c2:real):real; var hip:real; hip:=sqrt(sqr(c1)+sqr(c2)); hipotenusa:=hip; var a,b: real; write(' Qual a medida do primeiro cateto?'); readln (a); write(' Qual a medida do segundo cateto?'); readln (b); writeln(' A hipotenusa mede ',hipotenusa(a,b):6:3); 10 - Elabore um programa em Pascal que determine o quadrado de um número inteiro n. O número n deve ser pedido ao utilizador através de uma função e o seu quadrado deve ser calculado através de outra função. program quadrado_inteiro(input,output); function leitura:integer; var x:integer; write('introduza um numero: '); readln(x); leitura:=x; function quadrado(x:integer):integer; quadrado:=x*x; var a,qa: integer; a:=leitura(); qa:=quadrado(a); writeln(' O quadrado de ',a,' é ',qa); 11 - Escreva um programa em Pascal que permita a conversão de temperaturas em graus Centígrados para graus Fahrenheit e vice versa. Para tal deverá escrever dois procedimentos, um para realizar a conversão para Celsius e outro para realizar a conversão para Fahreneit. Cada um destes procedimentos deverá receber como parâmetro o valor da temperatura a converter e mostrar no monitor a temperatura convertida (C = 5(F 32)/9; F = (9C/5)+32). program converter_escalas(input,output); procedure Conv_CF(tC:real); var tf:real; tf:=9*tc/5+32; writeln(tc:2:1,'ºc correspondem a ',tf:2:1,'ºf'); procedure Conv_FC(tF:real); var tc:real; tc:=5*(tf-32)/9; writeln(tf:2:1,'ºf correspondem a ',tc:2:1,'ºc'); var conv: integer; t1:real; writeln(' Conversões de temperaturas:'); writeln(' Celius -> Fahreneit ---> 1'); writeln(' Fahreneit -> Celius ---> 2'); 4/8

write(' Qual a conversão que prete? '); readln(conv); write(' Qual o valor da temperatura a converter? '); readln(t1); if (conv=1) then Conv_CF(t1) Conv_FC(t1); 12 - Use funções para efectuar as conversões de temperaturas do exercício anterior. program funcoes_converter(input,output); function Conv_CF(tC:real):real; Conv_CF:=9*tC/5+32; function Conv_FC(tF:real):real; Conv_FC:=5*(tF-32)/9; var conv: integer; t1,t2:real; writeln(' Conversões de temperaturas:'); writeln(' Celius -> Fahreneit ---> 1'); writeln(' Fahreneit -> Celius ---> 2'); write(' Qual a conversão que prete? '); readln(conv); write(' Qual o valor da temperatura a converter? '); readln(t1); if (conv=1) then t2:=conv_cf(t1); writeln(t1:2:1,'ºc correspondem a ',t2:2:1,'ºf'); t2:=conv_fc(t1); writeln(t1:2:1,'ºc correspondem a ',t2:2:1,'ºf'); 13 - Escreva um programa em Pascal que utilize uma função chamada multiplo que receba dois valores inteiros e devolva true se um dos valores é múltiplo do outro. Por exemplo: multiplo(2, 4) = true multiplo(4, 2) = true multiplo(3, 2) = false program funcao_multiplo(input,output); function multiplo(a,b:integer):boolean; if ((a mod b = 0) OR (b mod a = 0)) then multiplo:=true multiplo:=false; var mult: boolean; x,y:integer; 5/8

x:=2; y:=4; if (multiplo(x,y)) then writeln(x,' e ',y,' são multiplos') writeln(x,' e ',y,' não são multiplos'); x:=4; y:=2; if (multiplo(x,y)) then writeln(x,' e ',y,' são multiplos') writeln(x,' e ',y,' não são multiplos'); x:=3; y:=2; if (multiplo(x,y)) then writeln(x,' e ',y,' são multiplos') writeln(x,' e ',y,' não são multiplos'); 14 - Implemente uma função chamada factorial que calcule n! (factorial de n em que n é um inteiro positivo). O valor de n deve ser um parâmetro da função e o valor calculado deve ser enviado para o exterior. 15 - Escreva um programa em Pascal que inclua uma função chamada potencia que permita calcular x n (x real, n inteiro positivo). 16 - Considere a função f(x). Escreva um programa que utilize funções Pascal para calcular o valor de f(x) para um x e n dados pelo utilizador. Sugestão: utilize as funções factorial e potencia dos exercícios14 e 15). f n x i ( x) = f ( x) = i= 1 i! 17 - Faça o cálculo da função anterior usando uma única função por forma a que o resultado seja obtido mais eficientemente. 18 - Elabore um subprograma que, considerando um vector com N inteiros, determine a soma dos elementos de ordem par P (N deve ser parâmetro do subprograma e o inteiro P deve ser enviado para o exterior do subprograma). program somavaloresarray; {Determina a soma dos elementos de ordem par de um vector com 12 elementos} uses crt; const maximo=50; type vector=array [1..maximo] of integer; function somapares(vec:vector;num:integer):integer; var i,soma:integer; soma := 0; for i := 1 to num do if (i mod 2 = 0) then soma := soma + vec[i]; somapares:=soma; var i, N,P: integer; t: vector; clrscr; write('quantos elementos tem o array? '); readln(n); for i := 1 to N do write(' Introduza o ',i,'º elemento do vector: '); readln(t[i]) 6/8 n i x i i= 1 2 P:=somapares(t,N); writeln(' A soma dos elementos de ordem par é ',P); writeln;

19 - Implemente um subprograma em Pascal que, dado um array conto N valores reais desordenados, determine o valor máximo, o valor mínimo e as respectivas posições. Estes 4 valores devem ser devolvidos ao programa principal que os mostrará no monitor. Faça um programa para testar o subprograma. program MAX_MIN; {Determina o valor máximo, o valor mínimo e as respectivas posições num vector com n elementos reais} uses crt; const tamanho=50; type vector=array [1..tamanho] of real; procedure MaxMin(vec:vector;num:integer; var max,min:real; var pmax,pmin:integer); max:=vec[1]; min:=vec[1]; pmax:=1; pmin:=1; for i := 1 to num do if (vec[i]>max) then max:=vec[i]; pmax:=i; if (vec[i]<min) then min:=vec[i]; pmin:=i; var i,n,posmax,posmin: integer; maximo,minimo:real; t: vector; clrscr; write('quantos elementos tem o array? '); readln(n); for i := 1 to N do write(' Introduza o ',i,'º elemento do vector: '); readln(t[i]) MaxMin(t,N,maximo,minimo,posmax,posmin); writeln(' O máximo do vector é o elemento ',maximo:2:2,' e ocorre na posição ',posmax); writeln(' O mínimo do vector é o elemento ',minimo:2:2,' e ocorre na posição ',posmin); writeln; 20 - Considere o exercício anterior mas faça a leitura dos elementos do vector através de um subprograma. Os valores máximo e mínimo e as respectivas posições deverão ser determinados pelo subprograma devolvido no exercício anterior. program MAX_MIN; { Determina o valor máximo, o valor mínimo e as respectivas posições num vector com n elementos reais} uses crt; const tamanho=50; type vector=array [1..tamanho] of real; 7/8

procedure levec(var vec:vector;num:integer); for i := 1 to num do write(' Introduza o ',i,'º elemento do vector: '); readln(vec[i]) procedure MaxMin(vec:vector;num:integer; var max,min:real; var pmax,pmin:integer); max:=vec[1]; min:=vec[1]; pmax:=1; pmin:=1; for i := 1 to num do if (vec[i]>max) then max:=vec[i]; pmax:=i; if (vec[i]<min) then min:=vec[i]; pmin:=i; var N,posmax,posmin: integer; maximo,minimo:real; t: vector; clrscr; write('quantos elementos tem o array? '); readln(n); levec(t,n); MaxMin(t,N,maximo,minimo,posmax,posmin); write(' O máximo do vector é o elemento ',maximo:2:2); writeln(' e ocorre na posição ',posmax); write(' O mínimo do vector é o elemento ',minimo:2:2); writeln(' e ocorre na posição ',posmin); writeln; 21 - Aumente a funcionalidade do programa anterior implementando funções adicionais que permitam executar as seguintes tarefas: - Determine a média dos elementos do vector. - Determine quantos elementos do vector são superiores à média e quantos são inferiores. - Duplique para outra variável os valores lidos. 22 - Implemente um programa em Pascal que faça a leitura das notas de uma turma de IP e, com base nelas, calcule: - A média - As notas mínima e máxima - O número de positivas e negativas Use subprogramas para tornar o seu código mais estruturado. 8/8