17
Escola Secundária de Sá da Bandeira Aplicações Informáticas B Funções e subprogramas Unidade n.º 1: Introdução à Programação

Manual Funcoes e Subprogramas Final

  • Upload
    fortes

  • View
    234

  • Download
    2

Embed Size (px)

DESCRIPTION

hgjkh

Citation preview

  • 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