Manual Funcoes e Subprogramas Final
description
Transcript of Manual Funcoes e Subprogramas Final
-
Escola Secundria de S da Bandeira
Aplicaes Informticas B
Funes e subprogramas
Unidade n. 1:
Introduo Programao
-
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 ;
{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
;
End;
{ Declarao de um procedimento com parmetros de Entrada }
Procedure nomeprocedimento2 (a,b : Integer);
{ Declarao de variveis locais ou seja do prprio procedimento }
Begin
;
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
;
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
;
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
;
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
;
End;
{ Bloco principal do programa }
Begin
;
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 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 main() { void mult(float a, float b); // Declarao da funo mult mult(5,6); } void mult(float a, float b) // definio da funo mult { float y; y = a * b; printf("%.2f",y); return; }
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 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
-
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 = 6 (Resultado)
2! = 2 * 1! (Chamada da funo para calcular 1!) 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! }
Funo Recursiva { Funo recursiva 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;
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 SetPalette
SetRGBPalette 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