Академический Документы
Профессиональный Документы
Культура Документы
Aplicaes Informticas B
Unidade n. 1:
Introduo Programao
Funes e subprogramas
Aplicaes Informticas B
Unidade 1 Introduo Programao
ndice
1.
2.
3.
5.
6.
7.
8.
9.
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.
Aplicaes Informticas B
Unidade 1 Introduo Programao
Aplicaes Informticas B
Unidade 1 Introduo Programao
Procedure nomeprocedimento1;
{ 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;
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;
}
Pg. 7
Aplicaes Informticas B
Unidade 1 Introduo Programao
Programa Pascal n16
Program FuncFact_Exerc16_M3;
Uses Crt;
Var x : integer;
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
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!):
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;
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.
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.
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.
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
Pg. 16