Algoritmos e Estruturas de Dados I – Modularização Profa. Mercedes Gonzales Márquez.

48
Algoritmos e Estruturas de Dados I – Modularização Profa. Mercedes Gonzales Márquez

Transcript of Algoritmos e Estruturas de Dados I – Modularização Profa. Mercedes Gonzales Márquez.

Page 1: Algoritmos e Estruturas de Dados I – Modularização Profa. Mercedes Gonzales Márquez.

Algoritmos e Estruturas de Dados I – Modularização

Profa. Mercedes Gonzales Márquez

Page 2: Algoritmos e Estruturas de Dados I – Modularização Profa. Mercedes Gonzales Márquez.

Modularização Sempre é possível dividir problemas grandes e

complicados em problemas menores e de solução mais simples. A decomposição de um problema é fator determinante para a redução da sua complexidade.

Um algoritmo que envolve um problema grande pode ser dividido em um algoritmo principal e em diversos subalgoritmos ou módulos (tantos quantos forem necessários ou convenientes).

Page 3: Algoritmos e Estruturas de Dados I – Modularização Profa. Mercedes Gonzales Márquez.

Modularização O algoritmo principal é aquele por onde começa a

execução, e chama, eventualmente, os demais subalgoritmos.

Subalgoritmo é um algoritmo que, geralmente, resolve um pequeno problema, e que está subordinado a um outro algoritmo que solicitará seu acionamento. É possível que um subalgoritmo chame outro subalgoritmo.

Page 4: Algoritmos e Estruturas de Dados I – Modularização Profa. Mercedes Gonzales Márquez.

Construindo sub-algoritmos

Critérios para orientar o processo de decomposição.

Dividir o problema em suas partes principais. Analisar a divisão obtida para garantir coerência. Se alguma parte ainda permanecer complexa, sub-

dividi-la mais. Analisar o resultado para garantir entendimento e

coerência.

Page 5: Algoritmos e Estruturas de Dados I – Modularização Profa. Mercedes Gonzales Márquez.

Vantagens da Modularização Dividir problemas grandes em vários problemas

menores, de baixa complexidade. Número pequeno de variáveis Poucos caminhos de controle (caminhos do início

ao fim)

Utilizar soluções gerais para classes de problemas ao invês de soluções específicas para problemas particulares. Reusabilidade Solucionar uma única vez o problema

Page 6: Algoritmos e Estruturas de Dados I – Modularização Profa. Mercedes Gonzales Márquez.

Vantagens da Modularização Permite delimitar o escopo (nivel de abrangência) de

variáveis. Variáveis locais.

Evita a repetição, dentro de um mesmo algoritmo, de uma sequência de ações em diferentes pontos.

Page 7: Algoritmos e Estruturas de Dados I – Modularização Profa. Mercedes Gonzales Márquez.

Variáveis globais e locais Todo módulo é constituído por um sequência de

comandos que operam sobre um conjunto de variáveis que podem ser globais ou locais.

Variáveis globais : Podem ser usadas em módulos internos a outro módulo do algoritmo onde foram declaradas.

Variáveis locais: Só podem ser usadas no módulo do algoritmo onde foram declaradas. Elas não possuem significado fora deste módulo.

Page 8: Algoritmos e Estruturas de Dados I – Modularização Profa. Mercedes Gonzales Márquez.

Variáveis globais e locais Uma variável local é criada (alocada na memória) no

momento em que o sub-algoritmo que a define é chamado

Uma variável local é liberada da memória no momento em que o sub-algoritmo que a define termina

Uma variável local somente existe (só pode ser utilizada) dentro do subalgoritmo que a define

Caso um mesmo identificador (nome de variável) seja declarado em sub-algoritmos distintos, esses identificadores são considerados distintos entre si (variáveis distintas)

O uso de variáveis locais minimiza a ocorrência de “efeitos colaterais” : o programador pode definir e utilizar as variáveis que desejar em um sub-algoritmo sem interferir com outros sub-algoritmos

Page 9: Algoritmos e Estruturas de Dados I – Modularização Profa. Mercedes Gonzales Márquez.

Tipos de sub-algoritmos Sintaxe de um algoritmo modularizado

Algoritmo <nome>Definição de tiposDeclaração de variáveis globaisDefinição de módulosInício

Conjunto de ações do algoritmo principal (incluidas as chamadas aos módulos)

Fim

Tipos de Sub-algoritmos: Funções (functions) � Procedimentos (procedures)

Page 10: Algoritmos e Estruturas de Dados I – Modularização Profa. Mercedes Gonzales Márquez.

Procedimentos Procedimento: Um conjunto de ações que não irá devolver

valores ao (sub)algoritmo chamador. Forma geral de um procedimento (sintaxe):

Procedimento <nome>(<parâmetros>)Declaração de variáveis locais do procedimento

InícioComandos do procedimento

Fim

Page 11: Algoritmos e Estruturas de Dados I – Modularização Profa. Mercedes Gonzales Márquez.

Procedimentos Chamada de um procedimento (sintaxe):

Nome_procedimento(argumentos) Quando o nome de um procedimento é

encontrado, ocorre um desvio no (sub)algoritmo para que os comandos do procedimento sejam executados. Ao término do subalgoritmo, a execução retornará ao ponto subsequente a da chamada do Procedimento.

Page 12: Algoritmos e Estruturas de Dados I – Modularização Profa. Mercedes Gonzales Márquez.

Procedimentos Juntando definição e chamada de um procedimento :

Algoritmo <nome_algoritmo> Definição de tipos

Declaração de variáveis globaisProcedimento <nome_procedimento>(<parâmetros>)Declaração de variáveis locais do procedimento Inicio

Comandos do procedimentoFim/* algoritmo principal*/Início

Comandos do algoritmo principalnome_procedimento(argumentos)Comandos do algoritmo principal

Fim

Page 13: Algoritmos e Estruturas de Dados I – Modularização Profa. Mercedes Gonzales Márquez.

Procedimentos – Exemplos simples Exemplo 1: Faça um algoritmo que dado um valor real

global x, chame um procedimento que calcula o quadrado de x.

Algoritmo <Quad>real: xProcedimento Quadrado()real: zInícioz ← x*xEscreva (“O quadrado do número é =“,z)FimInícioEscreva (“Digite um número: “)Leia ( x )Quadrado()Fim

Page 14: Algoritmos e Estruturas de Dados I – Modularização Profa. Mercedes Gonzales Márquez.

Procedimentos Exemplo 2 (muito simples com finalidade de explicar

a diferença entre variáveis locais e globais) : Faça um algoritmo que use um procedimento para ler o nome de uma pessoa e outro para mudá-lo.

Algoritmo <EscreveNome>literal: nomeProcedimento le_nome()Início

Leia (nome)FimProcedimento muda_nome()Início

escreva (“Vamos mudar o nome”)leia (nome)

FimInício

Le_nomeEscreva (nome)Muda_nomeEscreva (nome)

Fim

Page 15: Algoritmos e Estruturas de Dados I – Modularização Profa. Mercedes Gonzales Márquez.

Procedimentos Exemplo 3 (muito simples com finalidade de explicar a diferença

entre variáveis locais e globais) : Faça um algoritmo que use um procedimento para ler o nome de uma pessoa e outro para mudá-lo (use nome como var local)

Algoritmo <EscreveNome>literal: nomeProcedimento le_nome()Início

Leia (nome)FimProcedimento muda_nome()literal:nomeInício

escreva (“Vamos mudar o nome”)leia (nome)

FimInício

Le_nomeEscreva (nome)Muda_nomeEscreva (nome)

Fim

Page 16: Algoritmos e Estruturas de Dados I – Modularização Profa. Mercedes Gonzales Márquez.

Procedimentos No exemplo 3, a variável global nome e a variável

local nome representam posições de memória totalmente diferentes, logo, qualquer mudança no conteúdo da variável local, não afetará o conteúdo da variável global.

Page 17: Algoritmos e Estruturas de Dados I – Modularização Profa. Mercedes Gonzales Márquez.

Parâmetros Parâmetros são canais pelos quais se estabelece

uma comunicação bidirecional entre um subalgoritmo e o algoritmo chamador (algoritmo principal ou outro subalgoritmo). Os dados são passados pelo algoritmo chamador através de argumentos (parâmetros reais), e são recepcionados por meio de parâmetros formais.

Parâmetros Formais: São os nomes simbólicos introduzidos no cabeçalho dos subalgoritmos, usados na definição dos parâmetros do mesmo. Dentro de um subalgoritmo trabalha-se com estes nomes da mesma forma como se trabalha com variáveis locais ou globais.

Parâmetros Reais (ou argumentos):São aqueles que substituem os parâmetros formais quando da chamada do subalgoritmo.

Page 18: Algoritmos e Estruturas de Dados I – Modularização Profa. Mercedes Gonzales Márquez.

Parâmetros Passagem de parâmetros Por valor ("by value")

O argumento da chamada (parâmetro real) é avaliado, gerando um valor que é copiado para a variável declarada na função (parâmetro formal)Qualquer alteração do parâmetro formal não é "transmitida" para o a variável do argumento

O argumento da chamada (parâmetro real) pode ser uma constante, uma variável ou uma expressão:

5, v1, v1+5-v2

Page 19: Algoritmos e Estruturas de Dados I – Modularização Profa. Mercedes Gonzales Márquez.

Parâmetros Exemplo:

Algoritmo <teste>Inteiro:xProcedimento porvalor(inteiro:a)Inicio

a ← 5FimInicio x ← 10

porvalor(x)escreva (x)

Fim

Page 20: Algoritmos e Estruturas de Dados I – Modularização Profa. Mercedes Gonzales Márquez.

Parâmetros por referência ("by reference") O argumento da chamada (parâmetro real) tem

que ser uma variável: v1, v2 ... A variável do argumento (parâmetro real) é

associada com a variável declarada no subalgoritmo (parâmetro formal) durante a execução do subalgoritmo.

Qualquer alteração da variável do subalgoritmo (parâmetro formal) acontece também na variável do argumento.

Page 21: Algoritmos e Estruturas de Dados I – Modularização Profa. Mercedes Gonzales Márquez.

Parâmetros Exemplo:

Algoritmo <teste>Inteiro:xProcedimento porreferencia(inteiro:&a)Inicio

A ← 5FimInicio x ← 10

porreferencia(&x)escreva (x)

Fim* Na nossa matéria, o símbolo & indicará a

passagem por referência, na definição do procedimento, e também na chamada do mesmo.

Page 22: Algoritmos e Estruturas de Dados I – Modularização Profa. Mercedes Gonzales Márquez.

Funções Função Um conjunto de ações cujo objetivo é

retornar ao ponto de sua chamada um valor, o qual será associado ao próprio nome que identifica a função. Por isso, as funções podem ser utilizadas em expressões como se fossem variáveis.

O conceito de funções é originário da idéia de função matemática, onde um valor é calculado a partir de outro(s) valor(es) fornecido(s) à função.

O comando retorne explicita qual é o valor a retornar.

Page 23: Algoritmos e Estruturas de Dados I – Modularização Profa. Mercedes Gonzales Márquez.

Funções Forma geral de uma função (sintaxe):

Função tipo <nome>(<parâmetros-formais>)Declaração de variáveis locais da funçãoInício

ComandosFimonde, tipo é o tipo do valor que será retornado,lista-de-parâmetros-formais é a lista das variáveis (com seus tipos) que recepcionam as variáveis fornecidas quando da chamada da função

Page 24: Algoritmos e Estruturas de Dados I – Modularização Profa. Mercedes Gonzales Márquez.

Funções Chamada de uma função (sintaxe):

nome(lista-de-parâmetros-reais) onde, lista-de-parâmetros-reais é a lista das variáveis que se corresponderão com os parâmetros formais durante a execução da função. Os parâmetros reais devem concordar em números, ordem e tipo com os parâmetros formais.

Exemplo:

Page 25: Algoritmos e Estruturas de Dados I – Modularização Profa. Mercedes Gonzales Márquez.

Funções Exemplo 1: Faça um algoritmo que dado um valor

real x, chame uma função que retorne o quadrado de x.Algoritmo <Quad>real: x, yFunção real quadrado(real:w)real: zInícioz ← w*wretorne (z)FimInício

Escreva (“Digite um número: “)Leia ( x )

y ← quadrado (x) Escreva (“ y = “ , y )

Fim

Page 26: Algoritmos e Estruturas de Dados I – Modularização Profa. Mercedes Gonzales Márquez.

Funções INSTRUÇÃO Retorne Comando usado apenas nas funções que tem o

efeito de parar a execução da função e enviar um valor para o algoritmo chamador. No corpo de instruções da função deve haver, pelo menos, uma instrução Retorne.

Sintaxe:Retorne ( <expressão> )

Exemplos: Retorne ( area )Retorne ( pi*r*r )

Page 27: Algoritmos e Estruturas de Dados I – Modularização Profa. Mercedes Gonzales Márquez.

FunçõesEx.2 - Faça uma função para determinar se um número inteiro é par ou não. Utilize esta função para calcular o total de números pares dentre um total de n números inteiros positivos.Algoritmo <Pares_Impares>inteiro: n,i,x,somaparFunção inteiro par(inteiro:w)Início

se (mod(w,2)=0) entãoretorne (1)

senãoretorne(0)

fim seFimInício

Leia (n)Para i de 1 até n repita

Leia ( x )somapar ← somapar+par(x)

Fim paraFim

Page 28: Algoritmos e Estruturas de Dados I – Modularização Profa. Mercedes Gonzales Márquez.

Funções Ex.3 - Faça uma função que verifique se um valor é perfeito

ou não. Um valor é dito perfeito quando ele é igual a soma dos seus divisores excetuando ele próprio (Ex. 6´é perfeito, 6=1+2+3, que são seu divisores). A função deve retornar um valor booleano.

Função logico perfeito (inteiro: num)inteiro:soma,iIníciosoma ←0para i de 1 até num/2 repita

se (mod(num,i)=0)soma←soma+i

fim sefim parase (soma=num)

retorne(1)senão

retorne(0)Fim

Page 29: Algoritmos e Estruturas de Dados I – Modularização Profa. Mercedes Gonzales Márquez.

FunçõesEx.4 - Faça uma função que recebe a idade de uma pessoa

em anos, meses e dias e retorna essa idade expressa em dias. Assume que os meses tem 30 dias.

Função inteiro idadedias(inteiro:anos, meses,dias)inteiro: diastIníciodiast←anos*365+meses*30+dias

retorne(diast)Fim

Page 30: Algoritmos e Estruturas de Dados I – Modularização Profa. Mercedes Gonzales Márquez.

Funções Ex.5 - Faça uma função para calcular o máximo divisor

comum (MDC) de dois numeros dados como parâmetros. Sabe-se que o MDC tem as seguintes propriedades :

1. MDC(x,y)=MDC(x-y,y), se x>y2. MDC(x,y)=MDC(y,x)3. MDC(x,x)=x

ExemplosMDC(24,8)=MDC(16,8)=MDC(8,8)=8

MDC(13,4)=MDC(9,4)=MDC(5,4)=MDC(1,4)=MDC(4,1)=MDC(3,1)=MDC(2,1)=MDC(1,1)=1

MDC(13,5)=MDC(8,5)=MDC(3,5)=MDC(5,3)=MDC(2,3)=MDC(3,2)=MDC(1,2)=MDC(2,1)=MDC(1,1)=1

Page 31: Algoritmos e Estruturas de Dados I – Modularização Profa. Mercedes Gonzales Márquez.

Funções

Função inteiro mdc (inteiro: x,y) Inicio

enquanto (x<>y)enquanto (x>y)

x ←x-yfim enquantoenquanto (y>x)

y ←y-xfim enquanto

fim enquantoretorne(x)

fim

Page 32: Algoritmos e Estruturas de Dados I – Modularização Profa. Mercedes Gonzales Márquez.

FunçõesEx.6 –Fazer uma função que transforme horas, minutos e segundos em segundos. Ex. 2 hr 40 min 10 seg -> 9610 segundos.Fazer um algoritmo que:•Leia um conjunto de dados de empregado contendo, o número de um empregado, a hora de início (horas, minutos e segundos) e hora de término de uma determinada tarefa. A entrada de dados finalizará quando o número do empregado for negativo;•Calcule, para cada empregado, a duração da tarefa que ele executou, num mesmo dia, utilizando o mõdulo anteriormente definido;•Escreva, para cada empregado, o seu número e a duração de sua tarefa em horas, minutos e segundos.

Page 33: Algoritmos e Estruturas de Dados I – Modularização Profa. Mercedes Gonzales Márquez.

FunçõesEx.7 - Escrever uma função que receba dois números inteiros positivos, e determine o produto dos mesmos, utilizando o seguinte método de multiplicação.Dividir, sucessivamente , o primeiro número por 2, até que se obtenha 1 como quociente;Paralelamente, dobrar, sucessivamente, o segundo número;Somar os números da segunda coluna que tenham um número ímpar na primeira coluna. O total obtido é o produto procurado.Exemplo:

• 9 x 6

9 6→ 6+4 122 241 48→48

------ 54

Page 34: Algoritmos e Estruturas de Dados I – Modularização Profa. Mercedes Gonzales Márquez.

Funções

função inteiro produto(inteiro:x,y) inteiro:produto Início

produto ←0 Enquanto (x<>1) faça

Se (mod(x,2)=1) então produto←produto+y

Fim sex←div(x,2)y←y*2

Fim enquantoretorne(produto+y)

Fim

Page 35: Algoritmos e Estruturas de Dados I – Modularização Profa. Mercedes Gonzales Márquez.

Funções Ex.8 - Faça um algoritmo que leia n pontos no plano e

determine se os pontos estão dentro, fora ou sobre uma circunferência de raio R e centro em (h,k).

Page 36: Algoritmos e Estruturas de Dados I – Modularização Profa. Mercedes Gonzales Márquez.

Funções e ProcedimentosEx.9 - Foi realizada uma pesquisa de algumas características físicas de 50 habitantes de uma certa região. De cada habitante foram coletados os seguintes dados: sexo, cor dos olhos (azuis, verdes ou castanhos), cor dos cabelos (louros, pretos ou castanhos) e idade. Faça um procedimento que leia esses dados em um vetor de registro. O vetor de registro deve ser enviado por referência.

Procedimento leia (habitante:&dados[50])inteiro: iInício

Para i de 1 até 50 repitaleia(dados[i].sexo,dados[i].cor_olhos,dados[i].cor_cab)leia(dados[i].idade)

Fim paraFim

Nota: No algoritmo principal deve ser definido o tipo habitante.

Page 37: Algoritmos e Estruturas de Dados I – Modularização Profa. Mercedes Gonzales Márquez.

Funções e Procedimentos Faça um procedimento que receba o vetor de registro

definido no exercício anterior, por referëncia, e retorne também por referëncia: a maior idade entre os habitantes e a quantidade de individuos do sexo feminino cuja idade está entre 18 e 35 (inclusive) e que tenham olhos verdes e cabelos louros.Procedimento informacoes(habitante:&dados[50], inteiro:&maioridade,&soma)inteiro: iInício

soma←0maioridade ← 0Para i de 1 até 50 repita

se (dados[i].idade>maioridade)maioridade ← dados[i].idade

se (dados[i].sexo=“F” e dados[i].idade>=18 e dados[i].idade<=35 e dados[i].cor_olhos=“verdes” edados[i].cor_cab=“louros”)

soma ←soma+1fim se

Fim paraFim

Page 38: Algoritmos e Estruturas de Dados I – Modularização Profa. Mercedes Gonzales Márquez.

Funções e ProcedimentosEx.10. Determinar os números inteiros, menores que 50.000.000 que são capícuas. Capícuas são números que têm o mesmo valor se lidos da esquerda para a direita ou da direita para a esquerda. Exemplo: 44, 232, 1661, etc.Deverão ser escritos os seguintes algoritmos:•Um módulo principal•Uma função que calcule quantos algarismos tem um determinado número inteiro•Uma procedimento para separar um número em n algarismos•Uma procedimento para formar o número na ordem inversa

Page 39: Algoritmos e Estruturas de Dados I – Modularização Profa. Mercedes Gonzales Márquez.

Funções e ProcedimentosEx.11. Fazer uma função que, dado um número inteiro N, retorne a

soma dos divisores deste número, exceto ele prõprio. Fazer um algoritmo que, utilizando a função anterior, determine e escreva todos os pares de números amigos em um intervalo ´[A,B]. Os valores de A e B (A<B), inteiros maiores que zero , deverão ser lidos.

Dois números inteiros M e N são amigos se a soma dos divisores de M, excluindo M, é igual a N e a soma dos divisores de N, excluindo N, é igual a M.

Antes de se elaborar um algoritmo para este problema, algumas observações se fazem necessárias:

(1) Se um número inteiro X possui um divisor Y menor que sua raiz quadrada, o quociente da divisão de X por Y será maior que a raiz quadrada de X e será, também, um divisor de X. Exemplo: X=64 Y=4, X/Y=16>sqr(64) e é, também, divisor de 64.

(2) Se o número inteiro X possuir raiz quadrada exata, ela será naturalmente um divisor de X.

Page 40: Algoritmos e Estruturas de Dados I – Modularização Profa. Mercedes Gonzales Márquez.

FunçõesAlgoritmo <amigos>inteiro: a,b,si,siamigoFunção inteiro soma_div(inteiro: n)inteiro:soma, iInício

soma ←1i ←2enquanto (i<sqr(n)) faça

se (mod(n,i)=0) entãosoma ←soma+ i + n/i

fim sei ←i+1

fim enquantose (i=sqr(n))

soma←soma+ifim seretorne(soma)

fim

Page 41: Algoritmos e Estruturas de Dados I – Modularização Profa. Mercedes Gonzales Márquez.

Funções

Inícioleia (a,b)para i de a até b repita

si ← soma_div(i)se (si>=a e si<=b e soma_div(si)=i)

escreva (i,si)fim se

fim sefim

Page 42: Algoritmos e Estruturas de Dados I – Modularização Profa. Mercedes Gonzales Márquez.

Funções e ProcedimentosEx.12. Segundo a conjectura de Goldbach, qualquer número par, maior que 2, pode ser escrito como a soma de dois números primos. Ex. 8=3+5, 16=11+5, 68=31+37, etc.Dado um conjunto de números inteiros positivos pares, fazer um algoritmo que calcule, para cada número, um par de números primos cuja soma seja igual ao próprio número. Adotar como flag um número negativo. Para verificar se um número é primo, fazer uma função que deverá retornar em uma variável lógica o valor verdadeiro, se o número for primo, e falso, em caso contrário.

Page 43: Algoritmos e Estruturas de Dados I – Modularização Profa. Mercedes Gonzales Márquez.

FunçõesAlgoritmo <conjectura>inteiro: I,parFunção logico primo(inteiro: n)inteiro:iInício

i ←2enquanto (i<=sqr(n)) faça

se (mod(n,i)=0) entãoretorne(0)

fim sei ←i+1

fim enquantoretorne(1)

fimInício

leia (par)enquanto (par>0) faça

Page 44: Algoritmos e Estruturas de Dados I – Modularização Profa. Mercedes Gonzales Márquez.

FunçõesInício

leia (par)enquanto (par>0) faça

para i de 1 até par repitase (primo(i) e primo (par-i)) então

escreva (i, par-i)i ←par

fim sefim paraleia (par)

fim enquantoFim

Page 45: Algoritmos e Estruturas de Dados I – Modularização Profa. Mercedes Gonzales Márquez.

Funções e ProcedimentosEx.13.Escreva um algoritmo que leia as medidas dos tres lados a, b e c de um paralelepípedo, calcule e escreva o valor da sua diagonal.

L=sqr(a2+b2) D=sqr(L2+c2)

a

bc D

L

Page 46: Algoritmos e Estruturas de Dados I – Modularização Profa. Mercedes Gonzales Márquez.

FunçõesAlgoritmo <paralelepipedo>double:a,b,c,d Função double hipotenusa(double: a,b)double: hipInício

hip ←sqr(a**2+b**2)retorne(hip)

fimInício

leia (a,b,c)d←hipotenusa(hipotenusa(a,b),c)escreva d

Fim

Page 47: Algoritmos e Estruturas de Dados I – Modularização Profa. Mercedes Gonzales Márquez.

Funções e ProcedimentosEx.14.Escreva um algoritmo que leia uma seqüência de 100 números e os armazene em um vetor. Depois deve ser lida uma subseqüência de 5 números. Desenvolva um módulo para verificar se a subseqüência aparece completa e na mesma ordem em algum ponto do vetor, caso ocorra informar a primeira posição do vetor onde a subseqüência ocorre.Exemplo:Seqüência de 100 números5 5 7 4 6 1 0 2 5 7 4 8 9 1 3 5 7 9 1 2 2 4 5 7 6 7 8 9 …Subseqüência5 7 4 8 9Resposta: Subseqüência ocorre a partir da posição 9

Page 48: Algoritmos e Estruturas de Dados I – Modularização Profa. Mercedes Gonzales Márquez.

Funções e Procedimentos

Função logico comparasubsequencia (inteiro: V[100],S[5], &pos) Inteiro: i,jInicio

Para i de 1 até 96 repitaj ←1Se (V1[i]=S[1]) então

Enquanto (j<=4 & V[i+j]=S[j+1]) façaj←j+1

Fim enquantoSe (j=5) então

pos ←iRetorne (1) /*se os elementos de S forem diferentes

faça i←i+j para buscar outra subsequencia*/Fim se

Fim seFim paraRetorne(0)

Fim