Anda di halaman 1dari 17

Escola Secundria de S da Bandeira

Aplicaes Informticas B

Unidade n. 1:
Introduo Programao

Funes e subprogramas

Aplicaes Informticas B
Unidade 1 Introduo Programao

ndice
1.

Introduo ao Tema ............................................................................................................. 2

2.

Objectivos de Aprendizagem ............................................................................................... 2

3.

mbito dos Contedos ........................................................................................................ 2

5.

Conceitos bsicos: Procedimentos e Funes; Variveis Globais e Locais ........................... 3


5.1 Estrutura de um programa Pascal com recurso a procedimentos e/ou Funes .............. 3
5.2 Execuo de um procedimento em Pascal..................................................................... 5
5.3 Execuo de uma funo em Pascal ............................................................................. 5
5.4 Definio de um procedimento em Pascal (Programa exemplo).................................... 6
5.5 Definio de uma funo em Pascal (Programa exemplo)............................................. 6
5.6 Definio de uma funo em C..................................................................................... 7

6.

Exerccios prticos: Funes e Procedimentos ..................................................................... 7

7.

Iterativo VS Recursivo ........................................................................................................ 9

8.

Construo de Bibliotecas (Unit) em Pascal ...................................................................... 10

9.

Lista de Funes da Linguagem Pascal.............................................................................. 12

10. Lista de Procedimentos da Linguagem Pascal.................................................................... 14

Pg. 1

Aplicaes Informticas B
Unidade 1 Introduo Programao

1. Introduo ao Tema
Este tema destina-se a dar aos alunos uma viso global da estruturao de programas.
Pretende-se que os alunos compreendam que a utilizao de subprogramas permite a
aplicao dos princpios da programao estruturada assim como a reutilizao de
cdigo escrito.
Neste tema os alunos devem conhecer as regras de declarao e utilizao de
subprogramas assim como controlar o ciclo de vida das variveis.
Os alunos devem tomar conscincia da independncia dos subprogramas relativamente
aos programas atravs do uso da parametrizao.
Estes conceitos visam encaminhar os alunos para solues mais eficientes e racionais e
promover a diviso de problemas em componentes simples como meio de soluo de
problemas complexos.

2. Objectivos de Aprendizagem
Adquirir a noo de subprograma;
Conhecer as regras de declarao de subprogramas;
Conhecer as regras de execuo de subprogramas;
Utilizar correctamente parmetros;
Distinguir os diferentes tipos de subprogramas;
Elaborar programas com recurso a subprogramas;
Conhecer as regras para a criao de bibliotecas de subprogramas;
Conhecer os mecanismos de utilizao de bibliotecas de subprogramas.

3. mbito dos Contedos


1. Conceitos Bsicos
2. Variveis
2.1. Globais e Locais
2.2. Passagem por Parmetros
3. Subprogramas
3.1. Estrutura do Subprograma
3.1.1. Procedimentos
3.1.2. Funes
3.2. Recursividade
4. Construo de Bibliotecas
Pg. 2

Aplicaes Informticas B
Unidade 1 Introduo Programao

4. Conceitos bsicos: Procedimentos e Funes; Variveis Globais e Locais


As funes (Pascal e C) e os procedimentos (Pascal) so rotinas ou subrotinas de um
programa com um objectivo bem definido. Permitem subdividir um problema em partes
e ao mesmo tempo permitem que o cdigo includo nas rotinas (procedimentos/funes)
seja reutilizvel no decorrer da execuo do programa evitando a repetio de cdigo,
optimizando assim o programa.
As rotinas (procedimentos/funes) podem recorrer/utilizar as variveis globais do
programa - variveis definidas no inicio do programa e/ou recorrer/utilizar variveis
locais variveis definidas no prprio procedimento ou funo (rotina). O recurso a
variveis locais optimiza o programa j que as variveis definidas como globais ou seja do
programa levam a que o sistema as mantenha activas durante a execuo do programa,
mesmo que j no sejam necessrias (desperdcio de recursos de memria RAM), ao
contrrio as variveis locais nascem com a chamada da rotina e morrem com a concluso
da rotina evitando o desperdcio de recursos de memria e consequentemente optimizam
o programa. Assim, podemos concluir que a utilizao de rotinas e variveis locais deve
ser uma prtica corrente para programar com qualidade.
Um programa estruturado com um conjunto de procedimentos e funes (rotinas)
permite que as rotinas (procedimentos/funes) partilhem/troquem informao
(contedos de variveis) entre si. Assim, as rotinas recebem e/ou produzem parmetros
(contedo das variveis) de acordo com as definies efectuadas para cada rotina.
Uma rotina (funo) pode ter parmetros de entrada ou de valor, de sada ( a prpria
funo) e de entrada e sada ou de referncia (em simultneo).
Uma rotina (procedimento) pode ter parmetros de entrada, e de entrada e sada (em
simultneo).
Nota: Um procedimento em Pascal no tem parmetro de sada exclusivamente.
5.1 Estrutura de um programa Pascal com recurso a procedimentos e/ou Funes
PROGRAM <Nome do programa>;
<definies Globais>

{Declarao/Definio de Procedimentos e/ou Funes}

{ Declarao de um procedimento sem parmetros }


Pg. 3

Aplicaes Informticas B
Unidade 1 Introduo Programao
Procedure nomeprocedimento1;
{ Declarao de variveis locais ou seja do prprio procedimento }
Begin
<Comandos>;
End;

{ Declarao de um procedimento com parmetros de Entrada }


Procedure nomeprocedimento2 (a,b : Integer);
{ Declarao de variveis locais ou seja do prprio procedimento }
Begin
<Comandos>;
End;

{ Declarao de um procedimento com um parmetro de Entrada e Sada }


Procedure nomeprocedimento3 (Var a : Integer);
{ Declarao de variveis locais ou seja do prprio procedimento }
Begin
<Comandos>;
End;

{ Declarao de um procedimento com parmetros de Entrada e Sada }


Procedure nomeprocedimento3 (Var a : Integer; x,y : Real);
{ Declarao de variveis locais ou seja do prprio procedimento }
Begin
<Comandos>;
End;

{ Declarao de uma funo apenas com parmetro de Sada inteiro que a prpria
funo (nome da funo}
Function nomedafuncao : Integer ;
{ Declarao de variveis locais ou seja da prpria funo }
Begin
<Comandos>;
End;

Pg. 4

Aplicaes Informticas B
Unidade 1 Introduo Programao
{ Declarao de uma funo com parmetros de entrada e de Sada que a prpria
funo (nome da funo}
Function nomedafuncao(a,b : integer) : Integer ;
{ Declarao de variveis locais ou seja da prpria funo }
Begin
<Comandos>;
End;

{ Bloco principal do programa }


Begin
<Comandos>;
End.
Nota: Num programa a chamada das rotinas (Procedimento/Funo) para execuo
efectuada no bloco principal do programa ou atravs de uma rotina (Procedimento/Funo)
descrita/localizada no programa aps a descrio da rotina (Procedimento/Funo) que
chamada para execuo.

5.2 Execuo de um procedimento em Pascal


A execuo de um procedimento em Pascal efectuada atravs da chamada directa do
procedimento numa determinada linha do programa.
Exemplo:
Gotoxy(1,3);
Clrscr;
TextColor(0), etc.
5.3 Execuo de uma funo em Pascal
A execuo de uma funo em Pascal efectuada atravs da sua chamada de forma
indirecta numa determinada linha do programa atravs do recurso instruo Write,
Writeln, ou a uma estrutura de controlo (por exemplo a estrutura IF).
Exemplo:
Write(Multiplica(5,3));
Writeln(ABS(-2.3);
If Multiplica(a,b) > 0 Then

Pg. 5

Aplicaes Informticas B
Unidade 1 Introduo Programao
5.4 Definio de um procedimento em Pascal (Programa exemplo)

Programa Pascal n 14
Program Procedimentos1_Exerc14_M3;
Uses Crt;
Var y,x : Real;
Procedure Multiplica(a,b : real);
Begin
y := a * b;
End;
Procedure Divide(Var x: real;a,b : real);
Begin
x := a/b;
End;
Begin
Clrscr;
Multiplica(5,6);
Writeln('y = ',y:0:2);
Divide(x,5,6);
Writeln('x = ',x:0:2);
Writeln('Pressione qualquer tecla para terminar o programa ');
Repeat Until KeyPressed;
End.
5.5 Definio de uma funo em Pascal (Programa exemplo)
Programa Pascal n 15
Program Func1_Exerc15_M3;
Uses Crt;
Function Mult(a,b : real): Real;
Begin
Mult := a * b;
End;
Begin
Clrscr;
Writeln(Mult(5,6):0:2);
Writeln('Pressione qualquer tecla para terminar o programa ');
Repeat Until KeyPressed;
End.

Pg. 6

Aplicaes Informticas B
Unidade 1 Introduo Programao
5.6 Definio de uma funo em C
(Nota: na linguagem C as rotinas so declaradas como funes, no existe a
declarao de procedimento)
Programa C n 15
#include <stdio.h>
main()
{
float mult(float a, float b); // Declarao da funo mult
printf("%.2f",mult(5,6));
}
float mult(float a, float b) // definio da funo mult
{
return(a * b);
}
O uso da palavra-chave void em definies de funes, como um tipo de dado de
retorno indicando que a funo no devolve nenhum valor. As declaraes de funes
tambm podem incluir a palavra-chave void com a mesma finalidade.
Programa C n 15b
#include <stdio.h>
main()
{
void mult(float a, float b);
mult(5,6);
}
void mult(float a, float b)
{
float y;
y = a * b;
printf("%.2f",y);
return;
}

// Declarao da funo mult

// definio da funo mult

5. Exerccios prticos: Funes e Procedimentos


Exerccio n16
Elabore uma funo factorial para o clculo de um determinado nmero factorial.

Pg. 7

Aplicaes Informticas B
Unidade 1 Introduo Programao
Programa Pascal n16
Program FuncFact_Exerc16_M3;
Uses Crt;
Var x : integer;

{ Funo Iterativa para o clculo de um numero factorial n! }


Function Fact(n : integer): Real;
Var y : Real;
i : integer; { ateno limitao do tipo de dado Integer }
Begin
y := 1;
For i := 1 to n do
y := y * i;
fact := y; {Transferncia do valor calculado para o parmetro de sada da funo}
End;
Begin
Clrscr;
Write('n! = ');
Readln(x);
Writeln(x,'! = ',Fact(x):0:0);
Writeln('Pressione qualquer tecla para terminar o programa ');
Repeat Until KeyPressed;
End.

Programa C n16
#include <stdio.h>
main()
{
int valor;
float fact(int n); // Declarao da funo fact
printf("n! = ");
scanf("%d",&valor);
printf("\n%d",valor);
printf("! = %.0f",fact(valor));
}
float fact(int n) // definio da funo fact
{
float y;
int i;
y = 1;
for (i=1;i<=n;++i)
y = y * i;
return(y);
}
Pg. 8

Aplicaes Informticas B
Unidade 1 Introduo Programao

Programa Pascal n16b


Program FuncFact_Exerc16b_M3;
Uses Crt;
Var x : integer;

{ Funo Recursiva para o clculo de um numero factorial n! }


Function Fact(n : integer): Real;
Var y : Real;
i : integer; { ateno limitao do tipo de dado Integer }
Begin
If n = 1
Then Fact := 1
Else Fact := n * Fact(n-1);
End;
Begin
Clrscr;
Write('n! = ');
Readln(x);
Writeln(x,'! = ',Fact(x):0:0);
Writeln('Pressione qualquer tecla para terminar o programa ');
Repeat Until KeyPressed;
End.

6. Iterativo VS Recursivo
O mtodo iterativo recorre iterao sobre os valores sucessivos do clculo. Assim, tendo
em conta o exemplo do clculo do factorial de 3 (3!) = 3 * 2 * 1.
O mtodo recursivo implica que a rotina se chame a si prpria (recorrente) at efectuar o
clculo. Tendo em conta o exemplo do factorial de 3 (3!):

Pilha de recorrncia do exemplo 3!


3! = 3 * 2! (Chamada da funo para calcular 2!)
2! = 2 * 1! (Chamada da funo para calcular 1!)

2 = 6 (Resultado)
1=2

1! = 1

Pg. 9

Aplicaes Informticas B
Unidade 1 Introduo Programao
Funo Iterativa
{ Funo iterativa para o clculo de um
numero factorial n! }
Function Fact(n : integer): Real;
Var y : Real;
i : integer;
Begin
y := 1;
For i := 1 to n do
y := y * i;
fact := y;
End;

Funo Recursiva
{ Funo recursiva para o clculo de um
numero factorial n! }
Function Fact(n : integer): Real;
Var y : Real;
i : integer;
Begin
If n = 1
Then Fact := 1
Else Fact := n * Fact(n-1);
End;

7. Construo de Bibliotecas (Unit) em Pascal


A utilizao de subprogramas permite a aplicao dos princpios da programao
estruturada e a reutilizao de cdigo escrito.
Sempre que elaboramos/implementamos uma rotina (procedimento/funo) num
determinado programa existe a hiptese de necessitarmos de a reutilizar/implementar
essa rotina (procedimento/funo) num outro programa. Para evitar repetio desse cdigo
(rotina ou conjunto de rotinas) devemos incorporar esse tipo de rotinas (procedimentos ou
funes) numa biblioteca. Para utilizar as rotinas incorporadas numa biblioteca num
programa declaramos a biblioteca na declarativa USES do programa Pascal.
As bibliotecas em pascal so elaboradas/implementadas como se fossem um programa
pascal com duas seces: a interface onde so declaradas as rotinas (procedimentos e/ou
funes), neste exemplo foram definidas duas rotinas o procedimento janela e a funo
multiplica; a implementation onde so implementadas as rotinas declaras na seco
interface.
A Biblioteca no dever ser executada, depois de implementada dever ser compilada
para ser gerada a biblioteca (TPU). Neste exemplo depois de compilada para disco com
sucesso ser criada a biblioteca unid1.tpu a partir do programa unid1.pas.

Exemplo:
Biblioteca unid1.pas - Programa Pascal n17a
unit unid1;
{------------------------------------------------------------------------------}
interface

Pg. 10

Aplicaes Informticas B
Unidade 1 Introduo Programao
uses crt;
procedure Janela(a,b,c,d:integer;c1,c2,c3,c4,c5,c6 :char);
Function Multiplica(a,b : Real) : Real;
{------------------------------------------------------------------------------}
implementation
{------------------------------------------------------------------------------}
procedure janela(a,b,c,d:integer;c1,c2,c3,c4,c5,c6 :char);
var linha,coluna:integer;
begin
gotoxy(a,b);
write(c1);
gotoxy(a,d);
write(c2);
gotoxy(c,b);
write(c3);
gotoxy(c,d);
write(c4);
for linha := b + 1 to d - 1 do
begin
gotoxy(a,linha);
write(c5);
gotoxy(c,linha);
write(c5);
end;
for coluna := a + 1 to c - 1 do
begin
gotoxy(coluna,b);
write(c6);
gotoxy(coluna,d);
write(c6);
end;
end;
{------------------------------------------------------------------------------}
Function Multiplica(a,b : Real) : Real;
Begin
Multiplica := a * b;
End;
{------------------------------------------------------------------------------}
end.

A biblioteca (Unid1.TPU) e consequentemente todas as rotinas nela implementadas podem


ser utilizadas em qualquer programa pascal desde que:
1. Seja declarada a sua utilizao (Uses Unid1);
2. Seja disponibilizado o ficheiro Unid1.tpu na directoria do respectivo programa pascal.

Pg. 11

Aplicaes Informticas B
Unidade 1 Introduo Programao
Exemplo:
Programa Pascal n17b Utilizao da biblioteca Unid.tpu
Program Bibliotecas_Exerc17_M3;
Uses Crt, Unid1;
Var y : Real;

Begin
Clrscr;
Janela(1,1,50,20,'','','','','','');
Writeln;
Writeln(Multiplica(5,6):0:2);
y := Multiplica(10.5,10);
Writeln(y:0:2);
Writeln('Pressione qualquer tecla para terminar o programa ');
Repeat Until KeyPressed;
End.

8. Lista de Funes da Linguagem Pascal


Abs

Addr

ArcTan

Char

Concat

Copy

Cos

CSeg

DiskFree

DiskSize

DosExitCode

DosVersion
Pg. 12

Aplicaes Informticas B
Unidade 1 Introduo Programao
DSeg

EnvCount

EnvStr

Eof

Eoln

Exp

FExpand

FilePos

FileSize

Frac

FSearch

GetBkColor

GetColor

GetDefaultPalette

GetDriverName

GetEnv

GetGraphMode

GetMaxColor

GetMaxMode

GetMaxX

GetMaxY

GetModeName

GetPaletteSize

GetPixel

GetX

GetY

GraphErrorMsg

GraphResult

Hi

ImageSize

InstallUserDriver

InstallUserFont

Int

IOResult

KeyPressed

Length

Ln

Lo

MaxAvail

MemAvail

Odd

Ofs

Ord

OvrGetBuf

OvrGetRetry

ParamCount

ParamStr

Pi

Pos

Pred

Ptr

Random

ReadKey

RegisterBGIDriver

RegisterBGIFont

Round

SeekEof

SeekEoln

Seg

Sin

SizeOf

SPtr

Pg. 13

Aplicaes Informticas B
Unidade 1 Introduo Programao
Sqr

Sqrt

SSeg

Succ

Swap

TextHeight

TextWidth

Trunc

TypeOf

UpCase

WhereX

WhereY

Nota: a utilizao de uma funo requer um estudo prvio da sua aco, da necessidade ou
no de declarar a biblioteca que a suporta, etc. Portanto para alm das funes definidas
pelo programador existem as funes pr-definidas da Linguagem Pascal.

9. Lista de Procedimentos da Linguagem Pascal


Append

Arc

Assign

AssignCrt

Bar

Bar3D

BlockRead

BlockWrite

ChDir

Circle

ClearDevice

ClearViewPort

Close

CloseGraph

ClrEol

ClrScr

Dec

Delay

Delete

DelLine

DetectGraph

Dispose

DrawPoly

Ellipse

Erase

Exec

Exit

FillChar

FillEllipse

FillPoly

FindFirst

FindNext

FloodFill

Flush

FreeMem

FSplit

GetArcCoords

GetAspectRatio

GetDate

GetCBreak
Pg. 14

Aplicaes Informticas B
Unidade 1 Introduo Programao
GetDir

GetFAttr

GetFillPattern

GetFillSettings

GetFTime

GetImage

GetIntVec

GetLineSettings

GetMem

GetModeRange

GetPalette

GetTextSettings

GetTime

GetVerify

GetViewSettings

GoToXY

Halt

HighVideo

Inc

InitGraph

Insert

InsLine

Intr

Keep

Line

LineRel

LineTo

LowVideo

Mark

MkDir

Move

MoveRel

MoveTo

MsDos

New

NormVideo

NoSound

OutText

OutTextXY

OvrClearBuf

OvrInit

OvrInitEMS

OvrSetBuf

PackTime

PieSlice

PutImage

PutPixel

Randomize

Read

ReadLn

Rectangle

Release

Rename

Reset

RestoreCrtMode

Rewrite

RmDir

RunError

Sector

Seek

SetActivePage

SetAllPalette

Pg. 15

Aplicaes Informticas B
Unidade 1 Introduo Programao
SetAspectRatio

SetBkColor

SetCBreak

SetColor

SetDate

SetFAttr

SetFillPattern

SetFillStyle

SetFTime

SetGraphBufSize

SetGraphMode

SetIntVec

SetLineStyle
SetRGBPalette

SetPalette
SetTextBuf

SetTextJustify

SetTextStyle

SetTime

SetUserCharSize

SetVerify

SetViewPort

SetVisualPage

SetWriteMode

Sound

Str

SwapVectors

TextBackground

TextColor

TextMode

Truncate

UnpackTime

Val

Window

Write

WriteLn

Nota: a utilizao de um procedimento requer um estudo prvio da sua aco, da necessidade


ou no de declarar a biblioteca que o suporta, etc. Portanto para alm dos procedimentos definidos
pelo programador existem os procedimentos pr-definidos da Linguagem Pascal.

Pg. 16

Anda mungkin juga menyukai