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.