Buscar

Programação - Modularizarão II

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 19 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 19 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 19 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

DIM0436
28. Modularizacao 2
20141111
DIM0436 20141111 1 / 18
Outline
1 Vetores e modularização
2 Manipulação de texto
3 Exercícios
DIM0436 20141111 2 / 18
1 Vetores e modularização
2 Manipulação de texto
3 Exercícios
DIM0436 20141111 3 / 18
Vetores como parâmetros ?
Problemas
Em VisuAlg Portugol:
Vetores (e matrizes) não podem ser usados como parâmetros formais de
função
Vetores (e matrizes) não podem ser retornados como valores de função
Exemplo (Elementos proibidos)
1 procedimento f(v: vetor [1..10] de inteiro)
1 funcao f(i, j: inteiro) : vetor [1..8, 2..75] de real
DIM0436 20141111 4 / 18
Como fazer ?
Regras de escopo + variáveis globais
1 algoritmo "Preenchimento"
2 var v : vetor [1..10] de real
3 n : inteiro
4
5 funcao checked_size(): inteiro
6 var n : inteiro
7 inicio
8 repita
9 escreval("Entre com um inteiro: ")
10 leia(n)
11 ate (n >= 1) e (n <= 10)
12 retorne n
13 fimfuncao
14
15 procedimento fill(size: inteiro)
16 var i : inteiro
17 inicio
18 para i de 1 ate size faca
19 escreval("Valorda célula ", i, "? ")
20 leia(v[i])
21 fimpara
22 fimprocedimento
1 procedimento write(size: inteiro)
2 var i : inteiro
3 inicio
4 para i de 1 ate size faca
5 escreval(v[i])
6 fimpara
7 fimprocedimento
8
9 inicio
10 n <- checked_size()
11 fill(n)
12 write(n)
13 fimalgoritmo
DIM0436 20141111 5 / 18
Escrever a declaração duma rotina
Rotina
Toda função é uma rotina
Todo procedimento é uma rotina
1 Escolher um nome que indica claramente o que a rotina faz
2 Identificar os parâmetros que variam nas diferentes chamadas de rotina no
módulo principal. Dar um nome a cada um desses parâmetros formais.
3 Identificar o tipo adequado para cada um dos parâmetros formais.
4 Identificar se a rotina retorna um valor e, se sim, o tipo desse valor.
DIM0436 20141111 6 / 18
1 Vetores e modularização
2 Manipulação de texto
3 Exercícios
DIM0436 20141111 7 / 18
Funções da biblioteca
+ permite a concatenação de texto : “a” + “bc” + “de” → “abcde”
asc (s : caractere) retorna um inteiro com o código ASCII do primeiro
caractere da expressão.
carac (c : inteiro) retorna o caractere cujo código ASCII corresponde à
expressão.
caracpnum (c : caractere) retorna o inteiro ou real representado pela
expressão.
DIM0436 20141111 8 / 18
Funções da biblioteca (2)
compr (c : caractere) retorna um inteiro contendo o comprimento
(quantidade de caracteres) da expressão.
copia (c : caractere ; p, n : inteiro) retorna um valor do tipo caracter
contendo uma cópia parcial da expressão, a partir do caractere p, contendo n
caracteres. Os caracteres são numerados da esquerda para a direita,
começando de 1.
maiusc (c : caractere) retorna um valor caractere contendo a expressão em
maiúsculas.
minusc (c : caractere) retorna um valor caractere contendo a expressão em
minúsculas.
numpcarac (n : inteiro ou real) retorna um valor caractere contendo a
representação de n como uma cadeia de caracteres.
pos (subc, c : caractere) retorna um inteiro que indica a posição em que a
cadeia subc se encontra em c, ou zero se subc não estiver contida em c.
DIM0436 20141111 9 / 18
Resumo
1 Vetores e modularização
2 Manipulação de texto
3 Exercícios
DIM0436 20141111 10 / 18
Perguntas ?
http://dimap.ufrn.br/~richard/dim0320
DIM0436 20141111 11 / 18
1 Vetores e modularização
2 Manipulação de texto
3 Exercícios
DIM0436 20141111 12 / 18
Cadeia de caracteres (leitura)
1 funcao sub(s: caractere; i, j:inteiro):caractere
2 var mys: caractere
3 k: inteiro
4 inicio
5 mys <- ""
6 para k de i ate j faca
7 mys <- mys + car(s,k)
8 fimpara
9 retorne mys
10 fimfuncao
“a” + “bcde” + “fs” → “abcdef”
car(s,i) retorna o i-ésimo caractere de s como cadeia de caracteres
Assunto
O que faz essa função ?
Identificar problemas potenciais.
DIM0436 20141111 13 / 18
Declarações e implementações
Declarações
Escrever as declarações das funções abaixo
1 Uma função que calcula a velocidade média dum elemento dado o tempo de
percurso e a distância percorrida.
I1 funcao vmedia(distancia, tempo: real): real
1 Uma função que verifica se é possível construir um triângulo a partir de 3
segmentos de medição dados.
I1 funcao e_triangulo(s1, s2, s3: real): logico
2 Uma função que calcula o mdc de 2 inteiros.
I1 funcao mdc(m, n: inteiro): inteiro
3 Um procedimento que escreve na tela as iniciais duma pessoa cujo nome
completo foi dado.
I1 procedimento esc_iniciais(nome: caractere)
DIM0436 20141111 14 / 18
Declarações e implementações
Declarações
Escrever as declarações das funções abaixo
1 Uma função que calcula a velocidade média dum elemento dado o tempo de
percurso e a distância percorrida.
I1 funcao vmedia(distancia, tempo: real): real
1 Uma função que verifica se é possível construir um triângulo a partir de 3
segmentos de medição dados.
I1 funcao e_triangulo(s1, s2, s3: real): logico
2 Uma função que calcula o mdc de 2 inteiros.
I1 funcao mdc(m, n: inteiro): inteiro
3 Um procedimento que escreve na tela as iniciais duma pessoa cujo nome
completo foi dado.
I1 procedimento esc_iniciais(nome: caractere)
DIM0436 20141111 14 / 18
Implementações
Implementar as rotinas 1 e 3
Para 3, pode-se usar
I copia (c : caractere ; p, n : inteiro) : retorna um valor do tipo caractere
contendo uma cópia parcial da expressão, a partir do caractere p, contendo n
caracteres. Os caracteres são numerados da esquerda para a direita,
começando de 1.
I compr (c : caractere) : retorna um inteiro contendo o comprimento
(quantidade de caracteres) da expressão.
DIM0436 20141111 15 / 18
Sufixo
Um número b é dito ser sufixo de um número a se o número formado pelos
últimos dígitos de a são iguais a b. Assim:
a b
567890 890 → sufixo
1234 1234 → sufixo
2457 245 → não é sufixo
457 2457 → não é sufixo
Construa uma função sufixo que dados dois números inteiros a e b verifica se
b é um sufixo de a.
Utilizando a função do item anterior, escreva um algoritmo que leia dois
números inteiros a e b e verifica se o menor deles é subsequência do outro.
Exemplo:
a b
567890 678 → b é subsequência de a
1234 2212345 → a é subsequência de b
235 236 → um não é subsequência do outro
DIM0436 20141111 16 / 18
Maiusc
Assunto
Implementar a função maiusc (c: caractere) da biblioteca padrão.
É permitido usar qualquer função da biblioteca fora de maiusc mesmo.
Os códigos ASCII da =’A’-’Z’= vão de 65 a 90, e de =’a’-’z’= de 97 a 122.
DIM0436 20141111 17 / 18
Conversões (avaliação 2014.1)
Escreva um algoritmo com os módulos abaixo:
1 A função celsius retorna o equivalente em graus Celsius de uma
temperatura em graus Fahrenheit.
2 A função fahrenheit retorna o equivalente em graus Fahrenheit de uma
temperatura em graus Celsius.
3 Na função principal, use essas funções para escrever na tela tabelas dando os
equivalentes em graus Fahrenheit de todas as temperaturas (inteiras) em
graus Celsius entre 0 e 100 graus, e os equivalentes em graus Celsius de
todas as temperaturas (inteiras) entre 32 e 212 graus Fahrenheit.
A conversão entre graus Fahrenheit e graus Celsius é dada pela fórmula:
[ ◦F ] =
[ ◦C ] ∗ 9
5
+ 32
DIM0436 20141111 18 / 18
	Vetores e modularização
	Manipulação de texto
	Exercícios

Outros materiais