Algoritmos e Estruturas de Dados I

Aula 11: Subprogramas

Problemas no desenvolvimento de programas grandes:

Solução:

Subprogramas: Exemplo

sqrt

Idéia:

Parâmetros

Consistem de:

Tipos de subprogramas:

Exemplo

program maioral;
var maiornota, nota1, nota2: integer;

function maior(x, y: integer): integer;
begin
  if x > y then maior := x;
           else maior := y;
end;

begin
  readln(nota1, nota2);
  maiornota := maior(nota1, nota2);
  writeln(maiornota);
end.

Potência

Procedimentos -- Subrotina

Exemplo: Cálculo da área e volume de uma esfera.

program raios_duplos;
var raio, area, volume: real;
procedure esfera(r: real;var a,v: real);
const pi = 3.141592;
begin
  a := 4 * pi * sqr(r);
  v := r * a / 3;
end;

begin
  readln(raio);
  esfera(raio, volume, area);
  writeln(raio, volume, area);
end.

Números Afrescalhados

Procedimento para escrever um número em formato especial:

program frescura;

procedure escreve(n: integer);
begin
  writeln('********');
  write('* ', n: 4, ' *');
  writeln('********');
end;

begin
  escreve(1999);
end;

Vetores como Parâmetros

{ Acha o maior valor em um vetor }
program acha_maior;
type vetor = array [1..50] of integer;
var nota: vetor;
    k, maiornota: integer;
function max(v:vetor;n:integer):integer;
var i, maior: integer;
begin
  maior := v[1];
  for i := 2 to n do
    if v[i] > maior then maior := v[i];
  max := maior;
end;
begin
  k := 0;
  while not eof do begin
    k := k + 1;
    readln(nota[k]);
  end;
  maiornota := max(nota, k);
  writeln(maiornota);
end.

Passagem de Parâmetros

Qual o resultado ?