16629-Apostila - Algoritmos Estruturados

Embed Size (px)

Citation preview

  • Algoritmos Estruturados 1 Todos os direitos reservados IFAM/CMDI Prof Prazeres

    Comando (ou instruo) Conceito de Algoritmo Definio de Algoritmo Funo de um Algoritmo Algoritmo completo Comentrios Palavra-chave (reservada) Refinamento Refinamentos sucessivos (refinamento de um refinamento) Constantes Tipos de constantes Varivel Tipos de variveis Varivel simples Tipos de variveis simples Declarao de varivel simples Comando de atribuio Comando de entrada Comando de sada Estrutura de um algoritmo Operadores aritmticos Expresses aritmticas Funes Operadores relacionais Proposio Operadores lgicos (conectivos) Operador (conectivo) lgico e () Operador (conectivo) lgico ou () Estruturas de controle Estrutura de controle seqencial Estrutura de controle condicional Estrutura de controle de repetio Estrutura de controle de repetio - Para Estrutura de controle de repetio Enquanto Estrutura de controle de repetio Repita Estrutura de Dados Varivel Composta Varivel Composta Homogneas Varivel Composta Homognea Unidimensional Varivel Composta Homognea Multidimensional Varivel Composta Heterognea ( Registro ) Registro Campo de um Registro Varivel Composta Heterogneas Unidimensional Varivel Composta de variveis Heterogneas Multidimensional Arquivos Organizao de Arquivos Tipos de Organizao Abertura de Arquivo Fechamento de Arquivos Organizao Seqencial Comando de Entrada (Organizao Seqencial ) Comando de Sada (Organizao Seqencial ) Organizao Direta Comando de Entrada Comando de Sada (Organizao Direta) Programao Estruturada Modularizao Mdulo Descrio Estrutural da Modularizao Diagrama Hierrquico Modularizao Objetos Globais Objetos Locais Exemplos de Objetos Globais ou Locais Comunicao entre mdulos Benefcios proporcionados pela diviso do algoritmo em mdulos: Ferramentas para a Modularizao Sub-rotina Funo Passagem de Parmetros Passagem de Parmetros - Por Valor Passagem de Parmetros Por Resultado

    Resumo: Algoritmos(conceito, definio, estrutura, algoritmo completo, lgica) Comando(instruo) Refinamento/Refinamento sucessivo Variveis simples Operardores aritmticos, relacionais e lgicos Estruturas de controle Variveis compostas homogneas(uni e multdimensionais) Variveis compostas heterogneas(registros) (unidimensionais e multidimensionais) Arq(s) (organizao) Seqencial/Direto Funo / Subrotina Variveis locais e globais Programao estruturada Modularizao

  • Algoritmos Estruturados 2 Todos os direitos reservados IFAM/CMDI Prof Prazeres

    Comando (ou instruo) a descrio de uma ao a ser executada em um dado momento.

    Exemplos: Selecione o tipo de papel a ser utilizado Selecione as tintas utilizadas Selecione o pincel adequado Reproduza o modelo utilizado

    Conceito de Algoritmo Um conjunto de comandos, que a partir de um estado inicial, aps um perodo de tempo finito, produz um estado final previsvel e bem definido.

    Definio de Algoritmo a descrio de um conjunto de comandos que, obedecidos resultam numa sucesso finita de aes.

    Funo de um Algoritmo Geralmente destina-se a resolver um problema. Fixa um padro de comportamento a ser seguido. Uma norma de execuo a ser trilhada, para se atingir, como resultado final, a soluo de um problema.

    Sintaxe (pseudo-cdigo) Incio | Comando (ou instruo) 1 | Comando (ou instruo) 2 | . . . | Comando (ou instruo) n Fim

    Exemplo: Faa um algoritmo para a troca de uma lmpada queimada. Incio | Pegar a escada | Colocar a escada embaixo da lmpada | Subir na escada | Trocar a lmpada | Descer a escada | Guardar a escada Fim

    Algoritmo completo Um algoritmo considerado completo se os seus comandos forem do entendimento dos seus destinatrios. Uma vez completo, pode-se reescrever o algoritmo, inserindo os refinamentos nas posies dos comandos que foram refinados e usando estes como comentrios. A medida que o algoritmo passa a ser maior e mais complexo, esta viso global torna-se menos clara e, neste caso, um algoritmo apresentado com os refinamentos sucessivos separados oferece uma melhor abordagem para quem precisar entend-lo.

    Comentrios Os comentrios no so considerados comandos. Proporcionam clareza ao algoritmo facilitando seu entendimento. Podem ser colocados em qualquer ponto do algoritmo.

    Sintaxe (pseudo-cdigo): { comentrio }

    Exemplo: Incio | Trocar lmpada { da sala } Fim

    Palavra-chave (reservada) Tem significado prprio independente do algoritmo em que esteja inserida. No podem ser usadas como identificadores.

  • Algoritmos Estruturados 3 Todos os direitos reservados IFAM/CMDI Prof Prazeres

    Sintaxe (pseudo-cdigo): So escritas em letras minsculas e sublinhadas. Exemplos: Declare , Se , ento , Ler ( ), etc

  • Algoritmos Estruturados 4 Todos os direitos reservados IFAM/CMDI Prof Prazeres

    Refinamento So formados por comandos, que determinam as aes a serem executadas seqencialmente.

    Sintaxe (pseudo-cdigo) Incio | Comando 1 | Comando 2 { Comando refinado } | . . . | Comando n Fim

    Ref Comando 2 { Refinamento } | Comando 2.1 | Comando 2.2 | . . . | Comando 2.n Fim-Ref

    Exemplo: Faa um algoritmo que oriente um rob na troca de uma lmpada queimada. Incio | Posicione a escada sob a lmpada queimada { Comando refinado } | Troque a lmpada { Comando a ser refinado } Fim

    Ref Posicione a escada sob a luminria { Refinamento do comando} | Pegue a escada | Identifique o local da lmpada queimada | Carregue a escada at o local identificado Fim-Ref

    Refinamentos sucessivos (refinamento de um refinamento) Se um comando de um refinamento for um tanto vago, ele poder, por sua vez, ser desdobrado em novos comandos, produzindo um refinamento de um refinamento, e assim sucessivamente.

    Ref Troque a lmpada {Refinamento } | Suba na escada | Retire a lmpada queimada | Desa da escada | Pegue a lmpada boa | Suba na escada | Coloque a lmpada boa | Desa da escada Fim-Ref

    Sintaxe (pseudo-cdigo) Incio | Comando 1 | Comando 2 { Comando a ser refinado } | . . . | Comando n Fim

    Ref Comando 2 { Refinamento } | Comando 2a | Comando 2b { Refinamento } | . . . | Comando 2n Fim-Ref

  • Algoritmos Estruturados 5 Todos os direitos reservados IFAM/CMDI Prof Prazeres

    Ref Comando 2b { Refinamento } | Comando 2b1 { Refinamento } | Comando 2b2 | . . . | Subcomando 2bn Fim-Ref

    Exemplo: Considerando o algoritmo para a trocar de uma lmpada Ref Pegue a escada | Verifique em que local est a escada | Caminhe at o local | Carregue a escada Fim-Ref

    Constantes Uma constante um determinado valor fixo que no se modifica ao longo do tempo, durante a execuo de um algoritmo.

    Tipos de constantes Numrica assume valor numrico. Lgica assume valor lgico. Literal seqncia de caracteres.

    Varivel Corresponde a uma ou mais posies de memria referenciadas por um nome, cujo contedo pode variar ao longo do tempo durante a execuo de um algoritmo.

    Tipos de variveis Simples Compostas

    Varivel simples Corresponde a uma posio de memria referenciada por um nome na qual s podem ser armazenados valores de um mesmo tipo.

    Tipos de variveis simples Numrica assume valor numrico Ex. 010 21,13 Lgica assume valor lgico (falso ou verdadeiro) Ex. falso verdadeiro Literal seqncia de caracteres ( Fulano de Tal) Ex. palavra a Beltrano de Tal

    Declarao de varivel simples Comando que aloca um endereo de memria e associa a este endereo um nome (identificador da varivel) que ser utilizado durante a execuo do algoritmo.

    Sintaxe (pseudo-cdigo) Declarao Declare < identificador da varivel > tipo { Comentrio sobre a varivel } Declare tipo { Comentrio sobre a varivel }

    Declare Comando que aloca a posio na memria para armazenar um determinado tipo de varivel. identificador da varivel Nome da varivel. Escrito em letras maisculas

    lista de identificadores de variveis Nome das variveis do tipo especificado. Escritos em letras maisculas e separados por vrgula.

    tipo Tipo da Varivel Simples (literal, numrico ou lgico). Contedo da varivel

    Exemplos: Declare NOTA numrica { armazena a nota de um aluno } Declare CDIGO numrica { armazena o cdigo de um componente } Declare TESTE, SIM lgica { armazenam valores lgicos } Declare END1, END2 literal { armazenam endereos }

  • Algoritmos Estruturados 6 Todos os direitos reservados IFAM/CMDI Prof Prazeres

    Comando de atribuio Comando utilizado para atribuir valor uma varivel. Deve haver compatibilidade entre o valor a ser atribudo e o tipo da varivel.

    Sintaxe (pseudo-cdigo) Atribuio varivel expresso

    varivel Varivel que receber o que lhe for atribudo

    expresso Expresso que pode ser uma varivel, constante ou expresso aritmtica, lgica ou literal e ser atribudo varivel

    Exemplos:

    Declare NOTA1, NOTA2 numrica { Notas do aluno } Declare CDIGO numrica { Cdigo da disciplina } Declare SIT lgica { situao } Declare NOME, RUA literal {Dados do aluno } NOTA1 10 NOTA2 5 CDIGO 1234 SIT Falso NOME Fulano de Tal RUA Da Felicidade

    Comando de entrada Comando utilizado para obter dados via unidades de entrada. Dados que sero processados pelo algoritmo.

    Sintaxe (pseudo-cdigo) Ler (,, . . . , ) Ler ()

    Exemplos: Faa um algoritmo que leia os seguintes dados de um aluno: nome, matrcula, curso e turma. Incio | Declarao das variveis | Ler dados Fim

    Ref Declarao da variveis | Declare NOME, CURSO literal | Declare MATRIC, TURMA numrico Fim-Ref

    Ref Ler dados | Ler (NOME, MATRIC, CURSO, TURMA) Fim-Ref

    Comando de sada Comando utilizado para enviar dados para o monitor.

    Sintaxe ( pseudo-cdigo )

    Escrever (< identificador da varivel 1 >, . . . , ) Escrever ()

    Sada formatada Comando utilizado para enviar dados para o monitor com sada formatadaa.

    Sintaxe ( pseudo-cdigo ) Escrever (mensagem , ,mensagem, , ... ) Escrever (mensagem,)

  • Algoritmos Estruturados 7 Todos os direitos reservados IFAM/CMDI Prof Prazeres

    Exemplos: Declare NOTA1, NOTA2 , COD numrica { Notas do aluno / Cdigo disciplina } Declare SIT lgica { Situao } Declare NOME literal {Dados do aluno } NOTA1 10,0 NOTA2 8,0 COD 555 SIT verdadeiro Escrever ( Notas: , NOTA1, -- , NOTA2 ) { Escrever notas do aluno } Escrever ( Cdigo: , CDIGO ) { Escrever Cdigo de Disciplina } Escrever (Nome: ,NOME) { Mostrar nome do aluno}

    Exerccio resolvido: 1)FUA que leia o nome e 3 notas de um aluno e mostre-os. Inico | Declarao das variveis | Ler dados | Mostrar dados Fim

    Ref Ler dados | Ler (NOME, N1,N2,N3) Fim-Ref

    Estrutura de um algoritmo A formao de um algoritmo segue o padro abaixo especificado.

    Sintaxe (pseudo-cdigo) Inicio | { rea de Declarao de Variveis } | . . . | { Corpo do Algoritmo } | comando 1 | comando 2 | . . . Fim

    Exemplo: Declare NOTA1, NOTA2 numrica { Notas do aluno } Declare SIT lgica { Situao } Declare NOME, RUA literal {Dados do aluno } Escrever ( Notas: , NOTA1, NOTA2 ) { Escrever notas do aluno } Escrever (Nome: ,NOME) { Mostrar nome do aluno} Escrever ( Rua: , RUA )

    Operadores aritmticos Expresses aritmticas A expresso aritmtica aquela cujos operadores so aritmticos e cujos operandos so constantes e/ou variveis do tipo numrico.

    Operadores aritmtico (sintaxe) Descrio + Adio - Subtrao * Multiplicao / Diviso

    ** Potenciao Radiciao

    Prioridade das operaes Nas expresses aritmticas, as operaes guardam entre si uma relao de prioridade, tal como na Matemtica.

    Ref Declarao das variveis | Declare NOME literal | Declare N1, N2, N3 numrico Fim-Ref

    Ref Mostrar dados | Escrever (NOME, N1, N2, N3) Fim-Ref

  • Algoritmos Estruturados 8 Todos os direitos reservados IFAM/CMDI Prof Prazeres

    Prioridade Operao 1 Potenciao, radiciao 2 Multiplicao, Diviso 3 Adio, Subtrao

    Exemplos: Declare X, Y, S, M numrico X 10 Y 20 S (X*Y) + (Y*3)/(X*2) M S * 0,02

    Funes Utilizadas nas expresses aritmticas. Escritas com letras maisculas. permitido o uso de todas as funes trigonomtricas, etc.

    Tipos de Funes Significado LOG (EA) Logartmo na base 10 de EA LN (EA) Logartmo neperiano de EA EXP (EA) N e(base dos log neperianos) elevado a EA TRUNC (EA) Parte inteira de um n fracionrio ARREDONDA (EA) Arredonda um n fracionrio em inteiro QUOCIENTE (Eax,EAy) Quociente inteiro EAx / EAY RESTO (EAx,EAy) Resto da diviso EAx/Eay

    ABS (EA) Valor absoluto de EA

    Exemplo: 1) FUA que leia um nmero do teclado, calcule e mostre seu logaritmo na base 10.

    Exerccio resolvido: 1) FUA que mostre o resto da diviso por 2 de um dos nmeros lido.

    Operadores relacionais

    Obs: EA = expresso aritmtica.

    Ref Declare variveis | Declare N, R numrico Fim-Ref

    Ref Leia n | Leia (N) Fim-Ref

    Ref Calcule e mostre resto | R resto ( N / 2 ) | Escrever (R)| Fim-Ref

    Incio | Declare variveis | Leia n | Calcule e mostre resto Fim

    Ref Declare variveis | Declare N, LOG10 numrico Fim-Ref

    Ref Leia n | Leia (N) Fim-Ref

    Ref Calcule e mostre o log | LOG10 LOG(N) | Escrever (LOG10) Fim-Ref

    Incio | Declare variveis | Leia n | Calcule e mostre o log Fim

  • Algoritmos Estruturados 9 Todos os direitos reservados IFAM/CMDI Prof Prazeres

    Uma relao uma comparao realizada entre dois valores de mesmo tipo bsico. O resultado obtido de uma relao sempre um valor lgico. Os operadores lgicos indicam a comparao a ser realizada entre os termos da relao.

    Operadores relacionais (sintaxe) Descrio = Igual Diferente Menor ou igual Maior ou igual > Maior que < Menor que

    Exemplos: A B NOME = JOO B2 + 4X + C < 9 X = 1000

    Proposio Considera-se como sendo: uma varivel, uma relao ou uma expresso lgica composta.

    Operadores lgicos (conectivos) A lgebra das proposies define trs (03) conectivos usados na formao de novas proposies a partir de outras j conhecidas. Estes conectivos so os operadores nas expresses lgicas, a saber: Pode-se ter mais de um operador lgico na mesma expresso.

    Operadores ( Conectivos ) Smbolo Proposio Resultante E Conjuno

    Ou Disjuno No Negao

    Operador (conectivo) lgico e () Duas proposies combinadas pelo conectivo e () formam uma nova proposio chamada conjuno. A conjuno de duas proposies verdadeira se e somente se ambas proposies so verdadeiras.

    Sintaxe (pseudo-cdigo): p e q - L-se p e q - Representa a conjuno das proposies p e q

    Tabela Verdade Obs: V = verdadeiro / F = falso P q p e q (p q) F F F F V F V F F V V V

    Exemplo: (r p) b { ( r e p) e b }

    Operador (conectivo) lgico ou () Duas proposies combinadas pelo conectivo ou ( ) formam uma nova proposio chamada disjuno. A disjuno de duas proposies verdadeira se e somente se pelo menos uma delas for verdadeira.

    Sintaxe (pseudo-cdigo) p ou q - L-se p ou q - Representa a disjuno das proposies p ou q

    Tabela Verdade Obs: V = verdadeiro / F = falso p Q p ou q (p v q) F F F F V V V F V V V V

  • Algoritmos Estruturados 10 Todos os direitos reservados IFAM/CMDI Prof Prazeres

    Exemplo: (r ou p) ou b

    Operador (conectivo) lgico no ( ) Dada uma proposio utilizando-se o conectivo no ( ) forma-se uma nova proposio chamada negao. A negao de uma proposio gera uma proposio inversa chamada negao.

    Sintaxe (pseudo-cdigo) no p - L-se no p - Representa a negao da proposio

    Tabela Verdade p no p ( p ) V F F V

    Estruturas de controle Comandos que controlam o fluxo de um grupo de comandos durante a execuo do algoritmo.

    Tipos: - Seqencial - Condicional - Repetio:

    Enquanto Para Repita

    Estrutura de controle seqencial a estrutura segundo a qual os comandos devem ser executados um aps o outro na mesma ordem em que aparecem escritos. Os comando so executados em uma seqncia linear.

    Sintaxe ( pseudo-cdigo) C1 C2 ...

    Exemplo: Incio | Adicionar farinha de trigo | Adicionar margarina | Adicionar 3 gemas de ovo | Bater na batedeira Fim

    Exerccio resolvido: 1) Faa um algoritmo que leia duas notas de um aluno, calcule e mostre a mdia das notas. Incio | Declare NOTA1, NOTA2 numrica { Notas do aluno } | Declare MDIA numrica { Mdia do aluno } | Ler (NOTA1, NOTA2) { Ler notas do teclado } | MDIA ( NOTA1 + NOTA2 ) / 2 { Calcular a mdia do aluno } | Escrever ( Mdia do Aluno: , MDIA ) { Escrever Mdia do aluno } Fim

    Estrutura de controle condicional Comando que determina se um comando ou grupo de comandos sero executados caso a condio(teste) seja verdadeira.

    Tipos de estrutura condicional: Simples e Composta

    Obs: V = verdadeiro / F = falso

    Exemplos: p falso v no p {ento p valer falso }

  • Algoritmos Estruturados 11 Todos os direitos reservados IFAM/CMDI Prof Prazeres

    Sintaxe ( pseudo-cdigo )

    Simples Composto

    Se < condio > Se < condio > | ento | ento | comando 1 | comando 1 | comando n | comando n fim-se | seno | comando 1 | comando n fim-se

    < condio > qualquer expresso cujo resultado seja falso(F) ou verdadeiro(V), isto , do tipo lgico.

    Exemplos: Se < estiver chovendo> | ento { est chovendo } | Levarei uma capa ao sair | seno { no est chovendo } | Levarei um chapu Fim-Se

    Exerccio resolvido: 1) Faa um algoritmo que mostre a mdia e a situao de um aluno(AP ou REP) a partir da mdia de duas notas que devem ser lidas do teclado.

    Estrutura de controle condicional - Aninhadas possvel utilizar estrutura de controle condicional dentro de outra estrutura de controle condicional.

    Ref Declarao das variveis | Declare N1, N2 numrica { Notas do aluno } | Declare MD numrica { Mdia do aluno } Fim-Ref

    Ref Calcular e mostrar a mdia | MD ( N1 + N2 ) / 2 { Calcular a mdia do aluno } | Escrever (MED) Fim-Ref

    Ref Determinar e mostrar a situao do aluno | Se ( MED 6,0 ) | | ento { MED >= 6 ... verdade } | | Escrever ( AP ) | | Seno { MED >= 6 ... falsa } | | Escrever (REP) | Fim-Se Fim-Ref

    Incio | Declarao das variveis | Ler notas | Calcular e mostra a mdia | Determinar e mostrar a situao do aluno Fim

    Ref Ler notas | Leia (N1, N2) Fim-Ref

  • Algoritmos Estruturados 12 Todos os direitos reservados IFAM/CMDI Prof Prazeres

    Se ( estiver chovendo ) | ento { est chovendo } | Se ( encontrar uma capa ) | | ento {encontrei a capa } | | Levarei a capa ao sair | | seno {no encontrei a capa} | | Levarei o guarda-chuva | Fim-Se | seno { no est chovendo } | Levarei um chapu Fim-Se

    Estrutura de controle de repetio Comando que determina se um ou mais comandos devem ser executados um determinado nmero de vezes at que uma condio seja ou no satisfeita.

    Sintaxe (pseudo-cdigo) Teste no Incio Teste no Meio Teste no Fim

    Repita | Se < condio > | | ento interrompa | Fim-Se | Comando | Fim-Repita

    Repita | Comando | | Se < condio > | | ento interrompa | Fim-Se | Comando | Fim-Repita

    Repita | Comando | | Se < condio > | | ento interrompa | Fim-Se Fim-Repita

    Exemplo: Ref Bata a massa na batedeira | Repita | | Adicione 500gr farinha de trigo | | Bata por 10 segundos na batedeira | | Se consistncia lhe agrada | | | ento interrompa | | Fim-Se | Fim-Repita Fim-Ref

    Estrutura de controle de repetio - Para Comando que especifica que um ou mais comandos devem ser executados seqencialmente devem ser executados um determinado nmero fixo de vezes. Para isso, utiliza uma varivel de controle com valor de inicial e final determinados assim como uma condio de incremento ou decremento (passo).

    Sintaxe (pseudo-cdigo) Para V de i at m passo p faa | C1 | C2 | . . . | C3 Fim-Para

    V Varivel de controle do nmero de vezes que o bloco de comandos sero executados i Valor inicial da varivel de controle

    m Valor final da varivel de controle p Valor do passo (incremento ou decremento) da varivel de controle

  • Algoritmos Estruturados 13 Todos os direitos reservados IFAM/CMDI Prof Prazeres

    Exemplo: Incio | Pegar 3 ovos na geladeira. | { varivel de controle = CONT, Valor inicial da varivel de controle = 1} | {Valor final da varivel de controle = 3 } | Para CONT de 1 at 3 passo 1 faa | Quebrar um ovo e colocar seu contedo na frigideira | Fim-Para | Adicionar sal a gosto Fim

    Exerccios resolvidos:

    Faa um algoritmo que leia e mostre 100 n(s) lidos. Incio | Declarao das variveis | Para CONT de 1 at 1000 passo +1 faa | | Ler e mostra n | Fim-Para Fim

    Ref Declarao das variveis | Declare CONT, NUM numrico {CONT ... contador / NUM ... n lido} Fim-Ref

    Ref Ler e mostrar n | Ler (NUM) | Escrever (NUM) Fim-Ref

    2) Faa um algoritmo que mostre a maior mdia dos 30 alunos de uma turma. Para cada aluno so lidas duas notas.

    Ref Mostre a maior mdia | Para CONT de 1 at 30 passo +1 faa | | Leia 2 n(s) | | Calcule a mdia | | Trata a mdia | Fim Para | Mostrar a maior mdia Fim-Ref

    Ref Leia 2 n(s) | Leia (N1,N2) Fim-Ref

    Ref Calcule mdia | MED (N1 + N2) / 2 Fim-Ref

    Ref Mostrar a maior mdia | Escrever (MED) Fim-Ref

    Ref Trata a mdia | Se (MED > MAIOR) | | ento | | MAIOR MED | Fim-Se Fim-Ref

    Ref Inicializao das variveis | MAIOR 0 Fim-Ref

    Ref Declarao das variveis | Declare CONT numrico {contador} | Declare N1, N2 numrico {notas lidas} | Declare MED numrico {mdia} | Declare MAIOR numrico {maior mdia} Fim-Ref

    Incio | Declarao das variveis | Inicializao das variveis | Mostre a maior mdia Fim

  • Algoritmos Estruturados 14 Todos os direitos reservados IFAM/CMDI Prof Prazeres

    3) Idem considerando o algoritmo anterior para a menor mdia tambm.

    4) Faa um algoritmo que mostre em ordem decrescente todos os nmeros pares entre 10 e 0 inclusive. Incio | Declarao das variveis | Para CONT de 10 at 0 passo -2 faa | | Escrever (CONT) | Fim-Para Fim

    Ref Declarao das variveis | Declare CONT numrico {CONT ... contador} Fim-Ref

    Estrutura de controle de repetio Enquanto - Enq Comando que controla a execuo seqencial de um ou mais comandos (bloco de comandos) enquanto um determinada condio for verdadeira (V). Isto , quanto a condio se tornar falsa (F) ser interrompida a execuo do grupo de comandos.

    Ref Mostre a maior mdia | Para CONT de 1 at 30 passo +1 faa | | Leia 2 n(s) | | Calcule a mdia | | Trata a mdia | Fim Para | Mostrar a maior mdia Fim-Ref

    Ref Leia 2 n(s) | Leia (N1,N2) Fim-Ref

    Ref Calcule mdia | MED (N1 + N2) / 2 Fim-Ref

    Ref Mostrar a maior mdia | Escrever (MED) Fim-Ref

    Ref Trata a mdia | Se (MED MAIOR) e (MED MENOR) | | ento | | Se (MED > MAIOR) | | | ento | | | MAIOR MED | | | seno | | | Se (MED < MEMOR) | | | | ento | | | | MENOR MED | | | Fim-Se | | Fim-Se | Fim-Se Fim-Ref

    Ref Inicializao das variveis | MAIOR 0 | MENOR 1000 Fim-Ref

    Ref Declarao das variveis | Declare CONT numrico {contador} | Declare N1, N2 numrico {notas lidas} | Declare MED numrico {mdia} | Declare MAIOR numrico {maior mdia} | Declare MENOR numrico {menor mdia} Fim-Ref

    Incio | Declarao das variveis | Inicializao das variveis | Mostre a maior mdia Fim

  • Algoritmos Estruturados 15 Todos os direitos reservados IFAM/CMDI Prof Prazeres

    Sintaxe (pseudo-cdigo) Enq < condio > Faa | Comando 1 | Comando 2 | . . . | Comando 3 Fim-Enq

    Exemplo: Medir temperatura da mistura Enq ( temperatura da mistura < 48 ) Faa | Abra vlvula de gs N 34 | Aumente 1 na temperatura dos aquecedores | Medir temperatura da mistura Fim-Enq

    Exerccio resolvido: 1) Faa um algoritmo que mostre os 10 primeiros nmeros inteiros. Incio | { rea de Declarao das variveis utilizadas no algoritmo }| | Declare CONT numrica { Notas do aluno } | { Corpo do Algoritmo } | CONT 1 | Enq CONT 10 Faa | | Escrever ( CONT ) { Mostra o valor do contador } | | CONT CONT + 1 { Incrementa contador } | Fim-Enq Fim

    Estrutura de controle de repetio Repita Comando que controla a execuo seqencial de um ou mais comandos (bloco de comandos) at que um determinada condio se torne verdadeira(V). Isto , enquanto a condio for falsa(F) o bloco de comandos ser executado repetidamente. Observe que o grupo de comandos controlado ser executado pelo menos uma vez durante a execuo do algoritmo.

    Sintaxe (pseudo-cdigo) Repita | C1 | C2 | . . . | C3 at que < condio >

    Exemplo: Incio | Repita | | Adicione meia saca de cimento | | Adicione um balde de gua | at que ( consistncia ideal do concreto ) Fim

    Exerccio resolvido: 1) Faa um algoritmo que mostre os 10 primeiros nmeros inteiros. Incio | Declare CONT numrica { Notas do aluno } | CONT 1 { Inicializao das variveis } | Repita | | Escrever ( CONT ) { Mostra o valor do contador } | | CONT CONT + 1 { Incrementa contador } | at que ( CONT 10 ) Fim

  • Algoritmos Estruturados 16 Todos os direitos reservados IFAM/CMDI Prof Prazeres

    2) FUA que construa um menu com as seguintes opes: (1) Somar, (2) Subtrair, (0) Fim. Incio | Declare OP numrica { Opo} | Repita | | Escrever ( 1 Somar ) | | Escrever ( 2 Subtrair ) | | Escrever ( 0 Fim do programa ) | | Ler (OP) | at que ( OP =1 ou OP = 2 ou OP=0 ) Fim

    Estrutura de Dados Conjunto de dados agrupados segundo um critrio e referenciados por um nome nico.

    Varivel Composta Corresponde a um conjunto de variveis simples referenciadas por um mesmo identificador.

    Tipos de variveis compostas Homognea Unidimensional

    Multidimensional

    Heterognea Unidimensional Multidimensional

    Varivel Composta Homogneas Corresponde a um conjunto de variveis simples de mesmo tipo, referenciadas por um mesmo identificador e um ou mais ndices.

    Exemplo: NOTA [ n ], onde n um nmero inteiro ou uma varivel numrica contendo um valor inteiro.

    Varivel Composta Homognea Unidimensional Corresponde a um conjunto de variveis simples de mesmo tipo, referenciadas por um mesmo identificador e por apenas um ndice.

    Sintaxe (pseudo-cdigo) - Declarao Declare < Identificador da varivel > [ Li : Ls ] tipo Declare < Lista de identificadores da varivel > [ Li : Ls ] tipo

    Sintaxe (pseudo-cdigo) - Atribuio < Identificador da varivel > [ ndice ] . . . . . . . . . . . . . . . . . . {Comando de atribuio}

    Identificador da varivel Nome da varivel. Escrito em letra maiscula.

    Lista de identificadores da varivel

    Nomes das variveis do tipo especificado escritos em letras maisculas e separados por vrgulas.

    Li o limite inferior (ndice) do intervalo de variao dos ndices Ls o limite superior (ndice) do intervalo de variao dos ndices

    ndice Coordenada que especifica a localizao do campo(posico) acessada. Declare Comando que cria uma varivel do tipo especificado

    tipo o tipo dos componentes da varivel (numrico, literal ou lgico)

    Exemplos: Declare ALUNO[ 1:100 ] literal {estrutura de dados constituda por 100 elementos do tipo } {literal, endereveis por ndices que podem variar e 1 a 100} Declare COD [ 1 : 15 ] , POS [ 1 : 20 ] numrico

    ALUNO [ 1 ] Fulano de Tal {referncia a um elemento } ALUNO [ 56 ] ALUNO [ 1 ] COD [10 ] 100 POS [ 2 ] COD [ 15 ]

    Exerccio Resolvido:

  • Algoritmos Estruturados 17 Todos os direitos reservados IFAM/CMDI Prof Prazeres

    1) Faa um algoritmo que cadastre 100 cdigos de produtos lidos do teclado. Incio | Declare CONT, CAD [ 1 : 100 ] numrico | Para CONT de 1 at 100 passo 1 faa | | Ler ( COD ) | | CAD [ CONT ] COD | Fim-Para Fim

    Varivel Composta Homognea Multidimensional Corresponde a um conjunto de variveis simples de mesmo tipo, referenciadas por um mesmo identificador, referenciadas por mais de um ndice.

    Sintaxe (pseudo-cdigo) Declarao Declare < Identificador da varivel > [ Li1 : Ls1, Li2 : Ls2, . . . , Lin : Lsn ] tipo Declare < lista de identificadores DE VARIVEIS > [ Li1 : Ls1, Li2 : Ls2, . . . , Lin : Lsn ] tipo

    Sintaxe (pseudo-cdigo) Atribuio [ Li1, Li2, . . . , Lin ] ............ { comando de atribuio }

    Identificador da varivel Nome da varivel. Escrito em letra maiscula. Lista de identificadores

    da varivel Nomes das variveis do tipo especificado. Escritos em letra maiscula e separados por vrgula.

    Li1 : Ls1, . . . , Lin : Lsn So os limites dos intervalos de variao dos ndices da varivel, onde cada para de limites est associado a um ndice

    Lix Limite inferior (ndice) do intervalo de variao do ndice x Lsx Limite superior (ndice) do intervalo de variao do ndice x

    ndice Coordenada que especifica a localizao do campo (posio) acessada tipo o tipo dos componentes da varivel (numrico, literal ou lgico)

    Declare Comando que cria uma varivel do tipo especificado

    Exemplos: Declare POS[1: 5 , 1: 100] numrico { Estrutura homognea multidimensional formada por 5 linhas e 100 colunas} Declare MAT1 [ 1 : 2 , 1: 5 ], MAT2 [ 1 : 10 , 1 : 50 ] numrico POS [ 1 , 100 ] 20 { exemplos de referncia a um elemento} MAT1 [ 2 , 3 ] POS [ 1 , 100 ] MAT 2 [ 9 , 45 ] POS [ 4 , 50 ]

    Exerccios resolvido: 1) Faa um algoritmo que localize um nmero lido do teclado em uma matriz de nmeros inteiros de 3 linhas e 20 colunas. Incio | Declare M[ 1 : 3 , 1 : 20 ], NUM, LIN, COL numrico | Ler ( NUM ) | Para LIN de 1 at 3 passo 1 faa | | Para COL de 1 at 20 passo 1 faa | | | Se NUM = M [ LIN, COL ] | | | | ento | | | | Escrever ( Localizado na Linha:, LIN, Coluna: , COL); | | | Fim-Se | | Fim-Para | Fim-Para Fim

    Varivel Composta Heterognea ( Registro ) Corresponde a um conjunto de variveis simples de diferentes tipos, referenciadas por um mesmo identificador.

    Registro uma varivel composta heterognea formada por variveis simples logicamente relacionadas.

    Campo de um Registro cada varivel simples que compe o registro.

  • Algoritmos Estruturados 18 Todos os direitos reservados IFAM/CMDI Prof Prazeres

    Sintaxe (pseudo-cdigo) Declarao

    Declare < identificador do registro > registro ( < lista de campos > ) ou Declare < lista de identificadores de registros > registro ( < lista de campos > )

    Sintaxe (pseudo-cdigo) - Atribuio

    < identificador de registro > . < identificador de campo > . . . . . . . . . . . . . . { comando de atribuio } Identificador de registro Nome do registro. Escrito em letra maiscula.

    Lista de identificadores de registros

    Nomes de registros declarados do tipo especificado. Escritos em letras maisculas e separados por vrgula.

    Lista de campos Descrio dos campos(variveis) que compem o registro. Identificador de campos Campo referenciado. Escrito em letra maiscula.

    registro Palavra chave que identifica uma estrutura heterognea. Declare Comando que cria uma varivel do tipo especificado

    Exemplo - Declarao {Obs: o registro abaixo contm outro registro} Declare CAD registro ( NOME, SEXO literal, FONE numrico, END registro ) Declare END registro ( RUA literal, NMERO, CEP numrico)

    Exemplo - Referncia ao Campo CAD . NOME Fulano de Tal CAD . FONE 234-4567 CAD. END . RUA Rua Sem Sada CAD . END . NMERO 234

    Varivel Composta Heterogneas Unidimensional Corresponde a um conjunto de variveis compostas heterogneas, referenciadas por um mesmo identificador e por apenas um ndice.

    Sintaxe (pseudo-cdigo) Declarao { Ser criado um registro e a estrutura de dados } Declare < Identificador da varivel > [ li : ls ] < identificador do registro > ou Declare < Lista de identificadores de variveis > [ li : ls ] < identificador do registro > Declare < identificador do registro> registro ( lista de campos )

    Sintaxe (pseudo-cdigo) Atribuio < Identificador da varivel > [ ndice ] . < identificador do registor > . ....

    Identificador da varivel Nome do varivel. Escrito em letra maiscula. Lista de identificadores da

    varivel Nomes das variveis do tipo especificado. Escritos em letras maisculas e separados por vrgula.

    li : ls Limite inferior(li1) : Limite superior(ls1 ) Identificador do registro Nome do registro, que dependendo da declarao feita, pode ser omitido. Escrito em letra maiscula.

    ndice Coordenada que especifica a localizao(posio) de um registro. Lista de campos Descrio dos campos que compem o registro. Escritos em letras maisculas.

    Identificador do campo Nome do campo, cuja referncia ao contedo est sendo feita. Escrito em letras maiscula.

    Declare Comando que cria uma varivel do tipo especificado. Registro Palavra chave utilizada para reservar um registro.

    Exemplo de Declarao { criou-se um registro REG e a estrutura de dados FICHA } Declare FICHA [ 1 : 200 ] REG1 Declare REG1 registro (NOME, END literal, NMERO, CEP, MENSALIDADE numrico)

    Exemplo de Referncia a um elemento { utilizou-se o registro REG1 de forma independente} REG1. NOME Fulano de Tal

  • Algoritmos Estruturados 19 Todos os direitos reservados IFAM/CMDI Prof Prazeres

    FICHA [ 100 ] . REG1 . NOME REG1. NOME FICHA [ 100 ] . REG1 . NOME Cicrano de Tal FICHA [ 100 ] . REG1 . MENSALIDADE 500 FICHA [ 155 ] . REG1 . MENSALIDADE FICHA [ 100 ] . REG1 . MENSALIDADE

    Varivel Composta de variveis Heterogneas Multidimensional Corresponde a um conjunto de variveis compostas heterogneas, referenciadas por um mesmo identificador e por dois ou mais ndice.

    Sintaxe (pseudo-cdigo) - Declarao { Ser criado um registro e a estrutura de dados } Declare [ li1 : ls1, li2 : ls2, . . . , lin : lsn ] < identificador do registro> ou Declare < Lista de identificadores da varivel > [ li1 : ls1, li2 : ls2, . . . , lin : lsn ] Declare registro ( lista de campos )

    Sintaxe (pseudo-cdigo) - Referncia a um elemento < Identificador da varivel > [ i1, i2, ... , in ] . < identificador do registro > . < identificador do campo >

    Identificador da varivel Nome da estrutura

    Lista de identificadores da varivel Nomes das variveis do tipo especificado. Escritos em letra maiscula e separados por vrgula.

    li1 : ls1, li2 : ls2, . . . , lin : lsn Limite inferior(li1) : Limite superior(ls1 ) I1, i2, ... , in Coordenadas que especificam a localizao(posio) de um registro.

    Identificador do registro Nome do registro, que dependendo da declarao feita, pode ser omitido. Escrito em letra maiscula.

    Identificador do campo Nome do campo, cuja referncia ao contedo est sendo feita. Escrito em letra maiscula.

    Declare Comando que cria uma varivel do tipo especificado registro Palavra chave utilizada para reservar um registro.

    Exemplo de Declarao { criou-se um registro REG e a estrutura de dados FICHA } Declare FICHA [ 1 : 200, 1:300 ] REG1 Declare REG1 registro (NOME, END literal, NMERO, CEP, MENSALIDADE numrico)

    Exemplo de Referncia a um elemento { utilizou-se o registro REG1 de forma independente} REG1. NOME Fulano de Tal FICHA [ 100 ,200] . REG1 . NOME REG1. NOME FICHA [ 100 ,150] . REG1 . NOME Cicrano de Tal FICHA [ 100 ,200] . REG1 . MENSALIDADE 500 FICHA [ 100 ,200] . REG1 . MENSALIDADE FICHA [ 100 ,200] . REG1 . MENSALIDADE + 1000 FICHA [ 10,10] . REG1 . MENSALIDADE FICHA [ 100,200 ] . REG1 . MENSALIDADE

    Arquivos Conjunto (coleo) de dados armazenados em um dispositivo de memria secundria tornando-o, independente de qualquer algoritmo. Operaes realizadas em um arquivo: abertura (do arq.), leitura/gravao (de dados), fechamento (do arq.). Para acessar um dado em um arquivo necessrio realizar uma operao de leitura no arquivo. Para que o algoritmo insira algum dado no arquivo necessrio realizar uma operao de gravao em um arquivo.

    Exemplo(s): Arquivo contendo dados (registros) referentes ao cadastro de matrcula dos alunos de uma turma. Cada registro contm os seguintes campos: Matrcula, Nome, Endereo e Telefone.

    Matrcula Nome Endereo Telefone 123 Fulano de Tal Rua do Comrcio 123-4567 12333 Cicrano de Tel Av Repblica 234-4566 10 Deltrano de Tal Rua Nova 222-3456

    1234 Beltrano de Tal Rua Feliz 233-9876

  • Algoritmos Estruturados 20 Todos os direitos reservados IFAM/CMDI Prof Prazeres

    Organizao de Arquivos A disposio dos registros no arquivo pode favorecer determinadas operaes em detrimento de outras. O conhecimento das possibilidades de organizao dos registros nos arquivos permite ao programador escolher aquela que seja mais adequada soluo do seu problema em termos de eficcia e eficincia.

    Tipos de Organizao Seqncia Neste tipo de organizao os registros so acessados em ordem seqencial. Direta Neste tipo de organizao o acesso ao registro feito em ordem aleatria em funo de uma chave. O sistema se encarrega do procedimento de localizao da chave.

    Declarao de Arquivo Comando que cria um arquivo no tipo de organizao desejada e com o registro que ser utilizado como acesso.

    Sintaxe (pseudo-cdigo) - Declarao

    Declare < identificador do arquivo > arquivo de ou Declare arquivo de

    Declare Comando que cria o arquivo solicitado Identificador do

    arquivo Nome do arquivo a ser criado. Deve ser escrito em letras maisculas. Escrito em letra maiscula.

    Lista de identificadores de arquivos Nomes de arquivos do tipo especificado. Escritos em letras maisculas e separados por vrgula.

    arquivo Palavra-chave Organizao Tipo de organizao do arquivo, que pode ser seqencial ou direta

    Identificador do registro Nome do registro utilizado para acessar ao arquivo. Escrito em letra maiscula.

    Exemplo Declare CADASTRO arquivo seqencial de REG Declare REG registro (NOME, RUA, BAIRRO, CIDADE literal, NMERO numrico) Arquivo CADASTRO NOME RUA BAIRRO CIDADE NMERO Fulano Nova Feliz Nova Cidade 123 Registro

    Abertura de Arquivo Comando que abre um ou mais arquivos no tipo de utilizao desejada. Todos os arquivos utilizados no algoritmo devem ser abertos antes de sua utilizao.

    Sintaxe (pseudo-cdigo) Abertura Abra ( < identificador do arquivo > ) < tipo de utilizao >

    Abra ( < lista de identificadores de arquivos > ) < tipo de utilizao >

    Abra Comando que abre o arquivo Identificador do arquivo Nome do arquivo a ser aberto. Escrito em letra maiscula.

    Lista de identificadores de arquivos

    Nomes dos arquivos que sero abertos no tipo de utilizao especificado. Escritas em letra maiscula e separados por vrgula.

    tipo de utilizao Especifica se o arquivo ser usado somente para leitura, somente para escrita ou ambos, simultaneamente.

    Exemplos Abrir ( CADASTRO,VENDAS, COMPRAS ) leitura {Arquivos abertos para leitura} Abrir ( DIRIO ) escrita {Arquivo aberto para escrita} Abrir ( DADOS ) escrita / leitura {Arquivo aberto para escrita e leitura}

    Fechamento de Arquivos Comando utilizado fechar um ou mais arquivos.

  • Algoritmos Estruturados 21 Todos os direitos reservados IFAM/CMDI Prof Prazeres

    No final do algoritmo, ou quando houver necessidade, todos os arquivos utilizados devem ser fechados

  • Algoritmos Estruturados 22 Todos os direitos reservados IFAM/CMDI Prof Prazeres

    Sintaxe (pseudo-cdigo) Fechamento

    Fechar ( ) ou Fechar ( )

    Feche Comando que fecha o(s) arquivo(s) Identificador de arquivo Nome do arquivo que ser fechado. Escrito em letra maiscula.

    Lista de identificadores Nomes dos arquivos declarados referenciados pelos algoritmos. Os nomes devem ser separados por vrgula. Escritos em letra maiscula e separados por vrgula.

    Exemplo: Fechar ( ALUNOS ) Fechar ( CADASTRO,VENDAS, COMPRAS )

    Organizao Seqencial Os registro so armazenados contigamente, isto , um aps o outro. O acesso aos registros do arquivo, tanto na leitura quanto na escrita(gravao), so feito seqencialmente.

    Comando de Entrada (Organizao Seqencial )

    Sintaxe (pseudo-cdigo) Ler ( . )

    Ler Palavra reservada Nome do arquivo Nome do arquivo de onde os dados sero lidos Nome do registro Nome do registro utilizado para armazenar, os dados lidos do arquivo

    Exemplos Declare CAD1 arquivo seqencial de REG Declare REG registro (NOME, RUA, BAIRRO, CIDADE literal, NMERO numrico) Abra ( CAD1 ) leitura Ler ( CAD1 . REG ) { Leia do arquivo e armazene em REG } Escrever (REG) { Escreva na Tela } Feche ( CAD1 )

    Comando de Sada (Organizao Seqencial )

    Sintaxe (pseudo-cdigo) Escrever .

    Nome do arquivo Nome do arquivo aonde os dados sero gravados.

    Nome do registro Nome do registro utilizado para armazenar os dados que sero gravados no arquivo especificado.

    Exemplos: Declare CAD2 arquivo seqencial de REG Declare REG registro (NOME, RUA, BAIRRO, CIDADE literal, NMERO numrico) Abrir ( CAD2 ) escrita Ler ( REG ) { Leia do teclado } Escrever ( CAD2 . REG ) {Escreva(grave) REG no arquivo } Feche ( CAD2 )

  • Algoritmos Estruturados 23 Todos os direitos reservados IFAM/CMDI Prof Prazeres

    Organizao Direta Ao contrrio da organizao seqencial, para se ter acesso a um registro de um registro de um arquivo direto, no necessrio pesquisar-se pelo registro, pois este pode ser obtido diretamente. Isto possvel porque a posio do registro no espao fsico do arquivo e univocamente determinada a partir de um dos campos do registro, escolhido no momento da criao do arquivo direto como chave.

    Comando de Entrada

    Sintaxe (pseudo-cdigo) Ler item [ chave ] . Se < nome do arquivo >. INV | ento { chave invlida no encontrada } | Escrever ( Chave invlida ) | seno { chave vlida encontrada } | { tratar dado lido } }

    Ler Comando que procura no arquivo a chave especificada e caso encontre transfere o contedo do arquivo para o registro especificado

    nome do arquivo Nome do arquivo de onde os dados sero lidos. Letras maisculas nome do registro Nome do registro utilizado para armazenar, os dados lidos do arquivo. Letras maisculas

    Item Especifica que o campo a seguir o campo chave utilizado pelo arquivo Chave o identificador de uma varivel ou informao utilizada como chave

    Exemplo: Declare CAD1 arquivo direto de REG Declare REG registro ( NOME, RUA, BAIRRO, CIDADE literal, NMERO numrico) Abra ( CAD1 ) leitura Ler item [ Fulano de Tal ] CAD1 . REG {chave o campo NOME} Se CAD1 . INV | ento { chave invlida no encontrada } | Escrever ( Chave invlida ) | seno { chave vlida encontrada } | Escrever ( REG. NOME, REG.RUA, REG.BAIRRO, REG.CIDADE, REG.NMERO) { tratar dado lido } } Feche ( CAD1 )

    Comando de Sada (Organizao Direta)

    Sintaxe (pseudo-cdigo)

    Cadastrar

    Abra () ler Ler item [chave] . Se < nome do arquivo >. INV | ento { chave invlida no existe } | Feche () | Abra () escrever | ler ( . ) { ler(teclado) dados a serem gravados no arquivo } | Escrever item [ chave ] . {gravar dados} | seno { chave vlida existe } | Escrever (Chave j existe ) } Feche ()

  • Algoritmos Estruturados 24 Todos os direitos reservados IFAM/CMDI Prof Prazeres

    Consultar

    Abra () ler Ler item [chave] . Se < nome do arquivo >. INV | ento { chave invlida no existe } | Escrever (Chave no existe ) | seno { chave vlida existe } | Escrever (.) }

    Modificar

    Abra () ler Ler item [chave] . Se < nome do arquivo >. INV | ento { chave invlida no existe } | Escrever (Chave no existe ) { no pode ser modificado}

    | seno { chave vlida existe } | Ler (.) | Escrever item [chave] . } Feche ()

    Escrever Comando que procura no arquivo uma chave especificado: caso encontre escreve no arquivo nesta posio o contedo do registro especificado e caso contrrio escreve no arquivo a chave especificada e a informao referente que conste no registro especificado.

    nome do arquivo Nome do arquivo onde os dados sero gravados. nome do registro Nome do registro utilizado para armazenar, os dados que sero escritos no arquivo.

    Chave o identificador de uma varivel ou informao que deve ser localizada no arquivo no campo definido como chave.

    Exemplo: Declare ARQ1 arquivo direto de REG Declare R1 registro (COD, QUANT, PU, VALOR numrico) Abra ( ARQ1 ) leitura Ler (R1.COD) { Leia do Teclado } Abra (ARQ1) ler Ler item [chave] . Se < ARQ1 >. INV | ento { chave invlida no existe } | Escrever (COD no cadastrado. Isto , chave no existe ) | seno { chave vlida existe } | Escrever (ARQ1.COD, ARQ1.QUANT, ARQ1.PU, ARQ1.VALOR) } Feche (ARQ1)

  • Algoritmos Estruturados 25 Todos os direitos reservados IFAM/CMDI Prof Prazeres

    Programao Estruturada A programao estruturada hoje o resultado de uma srie de estudos e propostas de disciplinas e metodologias para o desenvolvimento de software. Conceitos associados como tcnica de refinamentos sucessivos e modularizao de programas integram o ferramental para a elaborao de programas visando, principalmente, os aspectos de confiabilidade, legibilidade, manutenibilidade e flexibilidade. Quando se desenvolve um algoritmo atravs de refinamentos sucessivos, faz-se uma opo pela diviso do algoritmo; este procedimento conduz modularizao da soluo do problema.

    Modularizao Quando se desenvolve um algoritmo atravs de refinamentos sucessivos, faz-se uma opo pela diviso do algoritmo; este procedimento conduz modularizao da soluo do problema.

    Mdulo um grupo de comandos, constituindo um trecho de algoritmo, com uma funo bem definida e o mais independente possvel em relao ao resto do algoritmo.

    Exemplo: Incio | Leia os dados do funcionrio do teclado | Determine o salrio | Mostre o salrio Fim

    Ref Determine o salrio | Ative o mdulo Clculo das vantagens | Ative o mdulo Clculo das dedues | SALRIOLIQUIDO VANTAGENS DEDUES Fim-Ref

    Mdulo Clculo das vantagens | SALRIOBRUTO NHORAS X SALRIOHORA | SALRIOFAMLIA NFILHOS X VALORFILHO | VANTAGENS SALRIOBRUTO + SALRIOFAMLIA Fim Mdulo

    Mdulo Clculo das dedues | INPS SALARIOBRUTO X 0,08 | IRPF SALARIOBRUTO X TAXA | DEDUES INPS + IRPF Fim Mdulo

    Descrio Estrutural da Modularizao A descrio estrutural da modularizao pode ser feita atravs do diagrama hierrquico, como a seguir:

    Diagrama Hierrquico Uma sub-rotina ou uma funo pode conter outras sub-rotinas e funes aninhadas, como pode ser visto no diagrama hierrquico a seguir:

    Mdulo Principal

    Mdulo Vantagens Mdulo Dedues

  • Algoritmos Estruturados 26 Todos os direitos reservados IFAM/CMDI Prof Prazeres

    Modularizao do Diagrama Hierrquico

    Incio (MP) | Sub-rotina S1 | | | | Sub-rotina S3 | | | | | Fim S3 | | | | Funo F3 { F3 conhecida apenas em S1 } | | | | | Fim F3 | | | Fim S1 | | Sub-rotina S2 { S2 conhecida em todo o algoritmo e pode ser ativada dentro de S1 } | | | Fim S2 | | Funo F1 | | | Fim F1 | | Funo F2 | | Sub-rotina S4 | | | | | Fim S4 | | | | Funo F4 | | | | | Fim F4 | Fim F2 Fim

    Modularizao Os mdulos de um programa devem ter um tamanho limitado para simplificarem seu entendimento. Cada mdulo pode definir suas prprias estruturas de dados. Todo mdulo constitudo por uma seqncia de comandos que operam sobre um conjunto de objetos, que podem ser globais ou locais. Cada mdulo, implementado deve conter sua prpria documentao e pode ser verificado como independentemente. Isto torna eficiente o trabalho de equipes de programao, j que um algoritmo pode ser dividido entre vrios programadores que podem implementar, testar e catalogar suas respectivas partes, separadamente. A diviso de um algoritmo em mdulos, alm de facilitar a sua elaborao, permite uma melhor documentao e verificao de sua correo. Sub-rotinas e funes so mdulos hierarquicamente subordinados a um algoritmo, chamado de mdulo principal.

    MP

    S1

    S3 F3

    S2 F1 F2

    S4 F4

  • Algoritmos Estruturados 27 Todos os direitos reservados IFAM/CMDI Prof Prazeres

    Objetos Globais Objetos globais so entidades que podem ser usadas em mdulos internos a outro mdulo do algoritmo onde foram declaradas. Objetos globais, declarados em mdulos mais externos ou mesmo nvel do mdulo principal, podem ser tambm utilizados em mdulos mais internos. Um mdulo pode usar objetos globais ou locais em relao a ele. Porm, no pode usar objetos declarados em mdulos que no o abrangem.

    Objetos Locais Objetos locais so entidades que s podem ser usadas no mdulo do algoritmo onde foram declaradas. Estes objetos no possuem qualquer significado fora deste mdulo.

    Exemplos de Objetos Globais ou Locais Variveis, arquivos, outros mdulos, etc.

    Comunicao entre mdulos A comunicao entre mdulos dever ser feita atravs de vnculos, utilizando-se objetos globais ou transferncia de parmetros.

    Benefcios proporcionados pela diviso do algoritmo em mdulos: a) a independncia do mdulo permite uma manuteno mais simples e evita efeitos colaterais em outros pontos do

    algoritmo; b) a elaborao do mdulo pode ser feita independentemente e em poca diferente do restante do algoritmo; c) testes e correes dos mdulos podem ser feitos em separado; d) um mdulo independente pode ser utilizado em outros algoritmos que requeiram o mesmo processamento por ele

    executado.

    Ferramentas para a Modularizao

    Sub-rotinas Funes

    As sub-rotinas e as funes so mdulos de programao que servem basicamente a trs objetivos: a) evitar que uma certa seqncia de comandos necessria em vrios locais de um algoritmo tenha que ser escrita

    repetidamente nestes locais; b) dividir e estruturar um algoritmo em partes fechadas e logicamente coerentes; (c) aumentar a legibilidade de um

    algoritmo;

    Sub-rotina

    Declarao de uma sub-rotina A sub-rotina criada atravs da sua declarao. A declarao de uma sub-rotina constituda de um cabealho e de um corpo.

    Cabealho de uma sub-rotina O cabealho contm o seu nome e a lista de parmetros formais.

    Corpo de uma sub-rotina O corpo contm declaraes de objetos locais e os comandos da sub-rotina.

    Classificao dos Parmetros de uma Sub-rotina a) de entrada: so aqueles que tm seus valores estabelecidos fora da sub-rotina e no podem ser modificados dentro da sub-

    rotina; b) de sada: so aqueles que tm seus valores estabelecidos dentro da sub-rotina; c) de entrada-sada: so aqueles que tm seus valores estabelecidos fora da sub-rotina, mas podem ter seus valores alterados

    dentro dela.

    Sintaxe (pseudo-cdigo) Declarao de uma sub-rotina

    Sub-rotina < identificador > (lista de parmetros formais) {Cabealho} Declaraes dos objetos locais Sub-rotina {Corpo} Comandos da sub-rotina Fim-Sub-rotina

  • Algoritmos Estruturados 28 Todos os direitos reservados IFAM/CMDI Prof Prazeres

    Sub-rotina Comando que cria uma sub-rotina Identificador Nome da Sub-rotina lista de parmetros formais

    Lista de objetos que sero substitudos por outros objetos(parmetros atuais), fornecidos quando da chamada da sub-rotina.

    Chamada de uma Sub-rotina feita com uma referncia a seu nome e a indicao dos parmetros atuais no local do algoritmo onde a sub-rotina deve ser ativada, ou seja, onde sua execuo deve ser iniciada. Cada vez que a sub-rotina for ativada, os comandos dentro dela so executados tendo em vista os valores contidos nos parmetros atuais e, em seguida, a seqncia do algoritmo retorna ao comando imediatamente seguinte ao da ativao.

    Sintaxe (pseudo-cdigo) chamada de uma sub-rotina ( lista de parmetros atuais )

    Exemplo Declarao e Chamada de uma sub-rotina Dados trs valores distintos lidos do teclado, calcule a soma dos trs valores e mostre na tela.

    Incio | sub-rotina SOMA ( A , B, C, S ) {Passagem de parmetros por Referncia - entrada-sada} | | declare A, B, C, S numrico | | S A + B + C | Fim-sub-rotina | Declare M, N numrico | { Corpo } | Ler ( M, N , L) | SOMA( M, N, L, TOTAL ) | Escrever (TOTAL) Fim Funo As funes, embora bastante semelhante s sub-rotinas, tm a caracterstica especial de retornar ao algoritmo que as chamou um valor associado ao nome da funo. Esta caracterstica permite uma analogia com o conceito de funo da Matemtica.

    Declarao de uma funo A funo criada atravs da sua declarao. A declarao de uma funo constituda de um cabealho e de um corpo.

    Cabealho de uma funo O cabealho contm o seu nome e a lista de parmetros formais.

    Corpo de uma funo O corpo contm declaraes de objetos locais e os comandos da sub-rotina.

    Sintaxe (pseudo-cdigo) Declarao de uma funo

    Funo < tipo > ( lista de parmetros formais ) | Declarao dos objetos locais funo | Comandos da funo Fim Funo

    Funo Comando que cria uma funo Tipo Tipo de valor que ser retornado

    Identificador Nome dado a funo Lista de parmetros

    formais Lista dos objetos que sero substitudos por outros objetos, fornecidos quando da chamada da funo.

    Chamada de uma funo feita com uma referncia a seu nome e a indicao dos parmetros atuais em uma expresso. O fluxo de controle desviado para a funo, no momento em que ela ativada. Ao terminar a execuo dos comandos da funo, o fluxo de controle retorna ao comando seguinte quele aonde ela foi ativada.

  • Algoritmos Estruturados 29 Todos os direitos reservados IFAM/CMDI Prof Prazeres

    Sintaxe (pseudo-cdigo) Chamada de uma funo

    < identificador da funo > ( lista de parmetros atuais )

    Lista de parmetros atuais

    Lista de objetos que substituiro os parmetros formais durante a execuo da funo. Os parmetros atuais devem concordar em nmero, ordem e tipo com os parmetros formais.

    Exemplo - Declarao e Chamada de uma funo Faa um algoritmo que leia as medidas dos trs lados a, b e c de um paraleleppedo, calcule e escreva o valor de sua diagonal.

    Incio | {Declarao de Sub-rotinas, Funes e Variveis} | funo numrico HIPOTENUSA ( A , B ) {Declarao de funo} | | declare A, B numrico | | HIPOTENUSA SQRT( A2 + B2 ) | Fim-funo | Declare A, B, C, D numrico | Ler ( A, B, C ) | D HIPOTENUSA ( HIPOTENUSA ( A, B ) , C ) { chamada da funo } | Escrever ( D ) Fim

    Passagem de Parmetros Passagem ou transferncia de parmetros associa os atuais aos parmetros formais.

    Tipos de Passagem de Parmetros Por Valor Por Resultado Por Referncia

    Passagem de Parmetros - Por Valor O valor do parmetro atual copiado no parmetro formal, na chamada da sub-rotina. As alteraes feitas nos parmetros formais dentro da sub-rotina no se refletem nos parmetros atuais. O parmetro considerado de entrada.

    Passagem de Parmetros Por Resultado As alteraes feitas nos parmetros formais dentro da sub-rotina, refletem-se nos parmetros atuais. O valor do parmetro formal copia para o parmetro atual, ao retornar da sub-rotina. O parmetro considerado de sada. Passagem de Parmetros Por referncia A toda alterao feita dento da sub-rotina num parmetro formal corresponde a mesma alterao feita no seu parmetro atual associado. O parmetro considerado de entrada-sada. OBS: Utilizaremos a passagem de parmetros por referncia , por atender a todas as necessidades.