ces-10 introduÇÃo À computaÇÃo capítulo x metodologia top-down com subprogramação

22
CES-10 INTRODUÇÃO À CES-10 INTRODUÇÃO À COMPUTAÇÃO COMPUTAÇÃO Capítulo X Capítulo X Metodologia Top-down com Metodologia Top-down com Subprogramação Subprogramação

Upload: internet

Post on 21-Apr-2015

112 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo X Metodologia Top-down com Subprogramação

CES-10 INTRODUÇÃO CES-10 INTRODUÇÃO À COMPUTAÇÃOÀ COMPUTAÇÃO

Capítulo XCapítulo X

Metodologia Top-down Metodologia Top-down com Subprogramaçãocom Subprogramação

Page 2: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo X Metodologia Top-down com Subprogramação

Capítulo X – Metodologia Capítulo X – Metodologia Top-down com Top-down com

SubprogramaçãoSubprogramação

10.1 – Considerações iniciais10.1 – Considerações iniciais

10.2 – Contagem da ocorrência de 10.2 – Contagem da ocorrência de palavras em um textopalavras em um texto

Page 3: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo X Metodologia Top-down com Subprogramação

10.1 – Considerações 10.1 – Considerações IniciaisIniciais

Recordando: a idéia básica da Recordando: a idéia básica da metodologiametodologia top-downtop-down é a é a decomposiçãodecomposição de uma tarefa de uma tarefa num conjunto de num conjunto de tarefas menorestarefas menores interligadas interligadas

Aquelas que ainda apresentarem certo grau de Aquelas que ainda apresentarem certo grau de complexidadecomplexidade também podem ser também podem ser decompostas da mesma maneiradecompostas da mesma maneira

Prossegue-se assim, até que se obtenha um Prossegue-se assim, até que se obtenha um conjunto de conjunto de tarefas triviaistarefas triviais interligadas interligadas

Page 4: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo X Metodologia Top-down com Subprogramação

Nessa idéia, cada Nessa idéia, cada tarefatarefa suficientemente suficientemente complexacomplexa pode ser realizada por um pode ser realizada por um subprogramasubprograma específico específico

O O comandoscomandos desse subprograma se desse subprograma se constituem na constituem na decomposiçãodecomposição da mesma em da mesma em tarefas menorestarefas menores interligadas interligadas

O O tópicotópico a seguir ilustra a utilização dessa a seguir ilustra a utilização dessa metodologia auxiliada por metodologia auxiliada por subprogramaçãosubprogramação no desenvolvimento de um programa para: no desenvolvimento de um programa para:

Contagem da Contagem da ocorrência de palavrasocorrência de palavras em em um textoum texto

Page 5: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo X Metodologia Top-down com Subprogramação

Capítulo X – Metodologia Capítulo X – Metodologia Top-down com Top-down com

SubprogramaçãoSubprogramação

10.1 – Considerações iniciais10.1 – Considerações iniciais

10.2 – Contagem da ocorrência de 10.2 – Contagem da ocorrência de palavras em um textopalavras em um texto

Page 6: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo X Metodologia Top-down com Subprogramação

10.2 – Contagem da 10.2 – Contagem da Ocorrência de Palavras em Ocorrência de Palavras em

um Textoum Texto

Desenvolvimento de um programa para:Desenvolvimento de um programa para:

Ler o Ler o textotexto de um de um arquivo arquivo

Contar o Contar o número de ocorrênciasnúmero de ocorrências de cada de cada palavrapalavra desse texto desse texto

Gerar uma Gerar uma tabelatabela com essas com essas palavras em palavras em ordem alfabéticaordem alfabética ao lado de seus respectivos ao lado de seus respectivos números de ocorrênciasnúmeros de ocorrências

Page 7: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo X Metodologia Top-down com Subprogramação

Exemplo: Exemplo: seja o seguinte texto no arquivo seja o seguinte texto no arquivo ctpalavras.datctpalavras.datvoce pode enganar algumas pessoas em todo o tempo e todas as pessoas em algum tempo mas nao pode enganar todas as pessoas em todo o tempoMontar a seguinte tabela:

Page 8: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo X Metodologia Top-down com Subprogramação

1ª Etapa:1ª Etapa:

ContarPalavras {ContarPalavras {

Abrir o arquivo Abrir o arquivo ctpalavr.dat ctpalavr.dat para leitura;para leitura;

Inicializar com zero palavras a tabela a ser montada;Inicializar com zero palavras a tabela a ser montada;

Ler a 1ª palavra do arquivo;Ler a 1ª palavra do arquivo;

Enquanto não se chegar ao final do arquivo {Enquanto não se chegar ao final do arquivo {

Procurar a palavra lida na tabela e sua posição;Procurar a palavra lida na tabela e sua posição;

Se ela já estiver na tabelaSe ela já estiver na tabela

Acrescentar ‘1’ ao seu número de Acrescentar ‘1’ ao seu número de ocorrências;ocorrências;

SenãoSenão

Inserir a palavra na posição em que deveria Inserir a palavra na posição em que deveria estar;estar;

Ler a próxima palavra do arquivo;Ler a próxima palavra do arquivo;

}}

Mostrar a tabela no vídeo;Mostrar a tabela no vídeo;

}}

Page 9: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo X Metodologia Top-down com Subprogramação

2ª Etapa:2ª Etapa:

ContarPalavras {ContarPalavras {

Abrir o arquivo ctpalavr.dat para leitura;Abrir o arquivo ctpalavr.dat para leitura;

Inicializar com zero palavras a tabela a ser montada;Inicializar com zero palavras a tabela a ser montada;

Ler a 1ª palavra do arquivo;Ler a 1ª palavra do arquivo;

Enquanto não se chegar ao final do arquivo {Enquanto não se chegar ao final do arquivo {

Procurar a palavra lida na tabela e sua posição;Procurar a palavra lida na tabela e sua posição;

Se ela já estiver na tabelaSe ela já estiver na tabela

Acrescentar ‘1’ ao seu número de Acrescentar ‘1’ ao seu número de ocorrências;ocorrências;

SenãoSenão

Inserir a palavra na posição em que deveria Inserir a palavra na posição em que deveria estar;estar;

Ler a próxima palavra do arquivo;Ler a próxima palavra do arquivo;

}}

Mostrar a tabela no vídeo;Mostrar a tabela no vídeo;

}}

Page 10: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo X Metodologia Top-down com Subprogramação

2ª Etapa:2ª Etapa:

ContarPalavras {ContarPalavras {

fl = open (“ctpalavras.dat”, “read”);fl = open (“ctpalavras.dat”, “read”);

Inicializar com zero palavras a tabela a ser montada;Inicializar com zero palavras a tabela a ser montada;

Ler a 1ª palavra do arquivo;Ler a 1ª palavra do arquivo;

Enquanto não se chegar ao final do arquivo {Enquanto não se chegar ao final do arquivo {

Procurar a palavra lida na tabela e sua posição;Procurar a palavra lida na tabela e sua posição;

Se ela já estiver na tabelaSe ela já estiver na tabela

Acrescentar ‘1’ ao seu número de Acrescentar ‘1’ ao seu número de ocorrências;ocorrências;

SenãoSenão

Inserir a palavra na posição em que deveria Inserir a palavra na posição em que deveria estar;estar;

Ler a próxima palavra do arquivo;Ler a próxima palavra do arquivo;

}}

Mostrar a tabela no vídeo;Mostrar a tabela no vídeo;

}}

file fl;

Page 11: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo X Metodologia Top-down com Subprogramação

2ª Etapa:2ª Etapa:

ContarPalavras {ContarPalavras {

fl = open (“ctpalavras.dat”, “read”);fl = open (“ctpalavras.dat”, “read”);

Inicializar com zero palavras a tabela a ser montada;Inicializar com zero palavras a tabela a ser montada;

Ler a 1ª palavra do arquivo;Ler a 1ª palavra do arquivo;

Enquanto não se chegar ao final do arquivo {Enquanto não se chegar ao final do arquivo {

Procurar a palavra lida na tabela e sua posição;Procurar a palavra lida na tabela e sua posição;

Se ela já estiver na tabelaSe ela já estiver na tabela

Acrescentar ‘1’ ao seu número de Acrescentar ‘1’ ao seu número de ocorrências;ocorrências;

SenãoSenão

Inserir a palavra na posição em que deveria Inserir a palavra na posição em que deveria estar;estar;

Ler a próxima palavra do arquivo;Ler a próxima palavra do arquivo;

}}

Mostrar a tabela no vídeo;Mostrar a tabela no vídeo;

}}

file fl;

Page 12: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo X Metodologia Top-down com Subprogramação

2ª Etapa:2ª Etapa:

ContarPalavras {ContarPalavras {

fl = open (“ctpalavras.dat”, “read”);fl = open (“ctpalavras.dat”, “read”);

ntab = 0;ntab = 0;

Ler a 1ª palavra do arquivo;Ler a 1ª palavra do arquivo;

Enquanto não se chegar ao final do arquivo {Enquanto não se chegar ao final do arquivo {

Procurar a palavra lida na tabela e sua posição;Procurar a palavra lida na tabela e sua posição;

Se ela já estiver na tabelaSe ela já estiver na tabela

Acrescentar ‘1’ ao seu número de Acrescentar ‘1’ ao seu número de ocorrências;ocorrências;

SenãoSenão

Inserir a palavra na posição em que deveria Inserir a palavra na posição em que deveria estar;estar;

Ler a próxima palavra do arquivo;Ler a próxima palavra do arquivo;

}}

Mostrar a tabela no vídeo;Mostrar a tabela no vídeo;

}}

file fl; int ntab;entr_tab tabela[100];

typedef char cadeia[31];struct entr_tab { cadeia nome; int n_ocorr;}

file fl;

Page 13: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo X Metodologia Top-down com Subprogramação

2ª Etapa:2ª Etapa:

ContarPalavras {ContarPalavras {

fl = open (“ctpalavras.dat”, “read”);fl = open (“ctpalavras.dat”, “read”);

ntab = 0;ntab = 0;

Ler a 1ª palavra do arquivo;Ler a 1ª palavra do arquivo;

Enquanto não se chegar ao final do arquivo {Enquanto não se chegar ao final do arquivo {

Procurar a palavra lida na tabela e sua posição;Procurar a palavra lida na tabela e sua posição;

Se ela já estiver na tabelaSe ela já estiver na tabela

Acrescentar ‘1’ ao seu número de Acrescentar ‘1’ ao seu número de ocorrências;ocorrências;

SenãoSenão

Inserir a palavra na posição em que deveria Inserir a palavra na posição em que deveria estar;estar;

Ler a próxima palavra do arquivo;Ler a próxima palavra do arquivo;

}}

Mostrar a tabela no vídeo;Mostrar a tabela no vídeo;

}}

file fl; int ntab;entr_tab tabela[100];

typedef char cadeia[31];struct entr_tab { cadeia nome; int n_ocorr;} Juntar as

3 linhas num só cabeçalho de while

Page 14: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo X Metodologia Top-down com Subprogramação

2ª Etapa:2ª Etapa:

ContarPalavras {ContarPalavras {

fl = open (“ctpalavras.dat”, “read”);fl = open (“ctpalavras.dat”, “read”);

ntab = 0;ntab = 0;

while (readfile (fl, palavra) == 1) {while (readfile (fl, palavra) == 1) {

Procurar a palavra lida na tabela e sua posição;Procurar a palavra lida na tabela e sua posição;

Se ela já estiver na tabelaSe ela já estiver na tabela

Acrescentar ‘1’ ao seu número de Acrescentar ‘1’ ao seu número de ocorrências;ocorrências;

SenãoSenão

Inserir a palavra na posição em que deveria Inserir a palavra na posição em que deveria estar;estar;

}}

Mostrar a tabela no vídeo;Mostrar a tabela no vídeo;

}}

file fl; int ntab;entr_tab tabela[100];

typedef char cadeia[31];struct entr_tab { cadeia nome; int n_ocorr;} Juntar as

3 linhas num só cabeçalho de while

file fl; int ntab;entr_tab tabela[100];cadeia palavra;

Page 15: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo X Metodologia Top-down com Subprogramação

2ª Etapa:2ª Etapa:

ContarPalavras {ContarPalavras {

fl = open (“ctpalavras.dat”, “read”);fl = open (“ctpalavras.dat”, “read”);

ntab = 0;ntab = 0;

while (readfile (fl, palavra) == 1) {while (readfile (fl, palavra) == 1) {

Procurar a palavra lida na tabela e sua posição;Procurar a palavra lida na tabela e sua posição;

Se ela já estiver na tabelaSe ela já estiver na tabela

Acrescentar ‘1’ ao seu número de Acrescentar ‘1’ ao seu número de ocorrências;ocorrências;

SenãoSenão

Inserir a palavra na posição em que deveria Inserir a palavra na posição em que deveria estar;estar;

}}

Mostrar a tabela no vídeo;Mostrar a tabela no vídeo;

}}

typedef char cadeia[31];struct entr_tab { cadeia nome; int n_ocorr;}

file fl; int ntab;entr_tab tabela[100];cadeia palavra;

Page 16: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo X Metodologia Top-down com Subprogramação

2ª Etapa:2ª Etapa:

ContarPalavras {ContarPalavras {

fl = open (“ctpalavras.dat”, “read”);fl = open (“ctpalavras.dat”, “read”);

ntab = 0;ntab = 0;

while (readfile (fl, palavra) == 1) {while (readfile (fl, palavra) == 1) {

posic = Posicao (palavra);posic = Posicao (palavra);

Se ela já estiver na tabelaSe ela já estiver na tabela

Acrescentar ‘1’ ao seu número de ocorrências;Acrescentar ‘1’ ao seu número de ocorrências;

SenãoSenão

Inserir a palavra na posição em que deveria estar;Inserir a palavra na posição em que deveria estar;

}}

Mostrar a tabela no vídeo;Mostrar a tabela no vídeo;

}}

typedef char cadeia[31];struct entr_tab { cadeia nome; int n_ocorr;}

file fl; int ntab;entr_tab tabela[100];cadeia palavra;

file fl; int ntab, posic;entr_tab tabela[100];cadeia palavra;

Posicao retorna o índice onde palavra está ou deveria estar na tabela

>0 se estiver e <0 se não

Page 17: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo X Metodologia Top-down com Subprogramação

2ª Etapa:2ª Etapa:

ContarPalavras {ContarPalavras {

fl = open (“ctpalavras.dat”, “read”);fl = open (“ctpalavras.dat”, “read”);

ntab = 0;ntab = 0;

while (readfile (fl, palavra) == 1) {while (readfile (fl, palavra) == 1) {

posic = Posicao (palavra);posic = Posicao (palavra);

Se ela já estiver na tabelaSe ela já estiver na tabela

Acrescentar ‘1’ ao seu número de ocorrências;Acrescentar ‘1’ ao seu número de ocorrências;

SenãoSenão

Inserir a palavra na posição em que deveria estar;Inserir a palavra na posição em que deveria estar;

}}

Mostrar a tabela no vídeo;Mostrar a tabela no vídeo;

}}

typedef char cadeia[31];struct entr_tab { cadeia nome; int n_ocorr;}

file fl; int ntab, posic;entr_tab tabela[100];cadeia palavra;

Page 18: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo X Metodologia Top-down com Subprogramação

2ª Etapa:2ª Etapa:

ContarPalavras {ContarPalavras {

fl = open (“ctpalavras.dat”, “read”);fl = open (“ctpalavras.dat”, “read”);

ntab = 0;ntab = 0;

while (readfile (fl, palavra) == 1) {while (readfile (fl, palavra) == 1) {

posic = Posicao (palavra);posic = Posicao (palavra);

if (posic > 0)if (posic > 0)

tabela[posic].n_ocorr++;tabela[posic].n_ocorr++;

elseelse

Inserir (palavra, -posic);Inserir (palavra, -posic);

}}

Mostrar a tabela no vídeo;Mostrar a tabela no vídeo;

}}

typedef char cadeia[31];struct entr_tab { cadeia nome; int n_ocorr;}

file fl; int ntab, posic;entr_tab tabela[100];cadeia palavra;

Inserir coloca a palavra na tabela mantendo a ordem alfabética

Page 19: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo X Metodologia Top-down com Subprogramação

2ª Etapa:2ª Etapa:

ContarPalavras {ContarPalavras {

fl = open (“ctpalavras.dat”, “read”);fl = open (“ctpalavras.dat”, “read”);

ntab = 0;ntab = 0;

while (readfile (fl, palavra) == 1) {while (readfile (fl, palavra) == 1) {

posic = Posicao (palavra);posic = Posicao (palavra);

if (posic > 0)if (posic > 0)

tabela[posic].n_ocorr++;tabela[posic].n_ocorr++;

elseelse

Inserir (palavra, -posic);Inserir (palavra, -posic);

}}

Mostrar a tabela no vídeo;Mostrar a tabela no vídeo;

}}

typedef char cadeia[31];struct entr_tab { cadeia nome; int n_ocorr;}

file fl; int ntab, posic;entr_tab tabela[100];cadeia palavra;

Page 20: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo X Metodologia Top-down com Subprogramação

2ª Etapa:2ª Etapa:

ContarPalavras {ContarPalavras {

fl = open (“ctpalavras.dat”, “read”);fl = open (“ctpalavras.dat”, “read”);

ntab = 0;ntab = 0;

while (readfile (fl, palavra) == 1) {while (readfile (fl, palavra) == 1) {

posic = Posicao (palavra);posic = Posicao (palavra);

if (posic > 0)if (posic > 0)

tabela[posic].n_ocorr++;tabela[posic].n_ocorr++;

elseelse

Inserir (palavra, -posic);Inserir (palavra, -posic);

}}

ExibirTabela ();ExibirTabela ();

}}

typedef char cadeia[31];struct entr_tab { cadeia nome; int n_ocorr;}

file fl; int ntab, posic;entr_tab tabela[100];cadeia palavra;

Page 21: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo X Metodologia Top-down com Subprogramação

3ª Etapa:3ª Etapa: Desenvolvimento das funções Desenvolvimento das funções Posicao, Inserir e ExibirTabelaPosicao, Inserir e ExibirTabela

Função Posicao: Função Posicao: utiliza utiliza procura bináriaprocura binária pois pois a tabela está ordenadaa tabela está ordenada

Função Inserir: Função Inserir: desloca as palavras para desloca as palavras para baixo e insere a nova palavra em sua posição, baixo e insere a nova palavra em sua posição, mantendo a ordem alfabéticamantendo a ordem alfabética

Função ExibirTabela: Função ExibirTabela: escreve no vídeo a escreve no vídeo a tabela das palavras em formato de tabelatabela das palavras em formato de tabela

As variáveis As variáveis flfl,, tabela tabela e e ntabntab serão serão globaisglobais

Page 22: CES-10 INTRODUÇÃO À COMPUTAÇÃO Capítulo X Metodologia Top-down com Subprogramação

3ª Etapa:3ª Etapa:int Posição (cadeia palavra) { int inf, sup, med, posic; logic achou; achou = FALSE; inf = 1; sup = ntab; while (! achou && sup >= inf) { med = (inf + sup) / 2; if (palavra == tabela[med].nome) achou = TRUE; else if (palavra < tabela[med].nome) sup = med – 1; else inf = med + 1; } if (achou) posic = med; else posic = - inf; return posic;}

ExibirTabela () { int i; write (“Palavra”, “|”, “Num. de ocorr”); write (“\n”, “--------------------------------------------------”); for (i = 1; i <= ntab; i++) write (“\n”, tabela[i].nome, “|”, tabela[i].n_ocorr);}

Inserir (cadeia palavra, int posic) { int i; ntab++; for (i = ntab; i > posic; i--) tabela[i] = tabela[i-1]; tabela[posic].nome = palavra; tabela[posic].n_ocorr = 1;}

Ver o programa completo no livro-texto