e-Tec Brasil/CEMF/Unimontes
Escola Técnica Aberta do Brasil
Informática
Algoritmos
Marilée Patta
Daniel Carli Colares e Silva
Ministério da
Educação
e-Tec Brasil/CEMF/Unimontes
Escola Técnica Aberta do Brasil
Informática
Algorítimos
Marilée Patta
Daniel Carli Colares e Silva
Montes Claros - MG
2011
Presidência da República Federativa do Brasil
Ministério da Educação
Secretaria de Educação a Distância
Ministro da Educação
Fernando Haddad
Secretário de Educação a Distância
Carlos Eduardo Bielschowsky
Coordenadora Geral do e-Tec Brasil
Iracy de Almeida Gallo Ritzmann
Governador do Estado de Minas Gerais
Antônio Augusto Junho Anastasia
Secretário de Estado de Ciência, Tecnologia
e Ensino Superior
Alberto Duque Portugal
Coordenadores de Cursos:
Coordenador do Curso Técnico em Agronegócio
Augusto Guilherme Dias
Coordenador do Curso Técnico em Comércio
Carlos Alberto Meira
Coordenador do Curso Técnico em Meio
Ambiente
Edna Helenice Almeida
Coordenador do Curso Técnico em Informática
Frederico Bida de Oliveira
Coordenador do Curso Técnico em
Vigilância em Saúde
Simária de Jesus Soares
Reitor
João dos Reis Canela
Coordenador do Curso Técnico em Gestão
em Saúde
Zaida Ângela Marinho de Paiva Crispim
Vice-Reitora
Maria Ivete Soares de Almeida
ALGORITMOS
e-Tec Brasil/CEMF/Unimontes
Pró-Reitora de Ensino
Anete Marília Pereira
Elaboração
Marilée Patta
Daniel Carli Colares e Silva
Diretor de Documentação e Informações
Huagner Cardoso da Silva
Coordenador do Ensino Profissionalizante
Edson Crisóstomo dos Santos
Diretor do Centro de Educação Profissonal e
Tecnólogica - CEPT
Juventino Ruas de Abreu Júnior
Projeto Gráfico
e-Tec/MEC
Supervisão
Wendell Brito Mineiro
Diagramação
Hugo Daniel Duarte Silva
Marcos Aurélio de Almeda e Maia
Diretor do Centro de Educação à Distância
- CEAD
Jânio Marques Dias
Impressão
Gráfica RB Digital
Coordenadora do e-Tec Brasil/Unimontes
Rita Tavares de Mello
Designer Instrucional
Angélica de Souza Coimbra Franco
Kátia Vanelli Leonardo Guedes Oliveira
Coordenadora Adjunta do e-Tec Brasil/
CEMF/Unimontes
Eliana Soares Barbosa Santos
Revisão
Maria Ieda Almeida Muniz
Patrícia Goulart Tondineli
Rita de Cássia Silva Dionísio
AULA 1
Alfabetizaçãoe-Tec
DigitalBrasil/CEMF/
Apresentação
Unimontes
Prezado estudante,
Bem-vindo ao e-Tec Brasil/Unimontes!
Você faz parte de uma rede nacional pública de ensino, a Escola
Técnica Aberta do Brasil, instituída pelo Decreto nº 6.301, de 12 de dezembro 2007, com o objetivo de democratizar o acesso ao ensino técnico público,
na modalidade a distância. O programa é resultado de uma parceria entre
o Ministério da Educação, por meio das Secretarias de Educação a Distancia
(SEED) e de Educação Profissional e Tecnológica (SETEC), as universidades e
escola técnicas estaduais e federais.
A educação a distância no nosso país, de dimensões continentais e
grande diversidade regional e cultural, longe de distanciar, aproxima as pessoas ao garantir acesso à educação de qualidade, e promover o fortalecimento da formação de jovens moradores de regiões distantes, geograficamente
ou economicamente, dos grandes centros.
O e-Tec Brasil/Unimontes leva os cursos técnicos a locais distantes
das instituições de ensino e para a periferia das grandes cidades, incentivando os jovens a concluir o ensino médio. Os cursos são ofertados pelas
instituições públicas de ensino e o atendimento ao estudante é realizado em
escolas-polo integrantes das redes públicas municipais e estaduais.
O Ministério da Educação, as instituições públicas de ensino técnico, seus servidores técnicos e professores acreditam que uma educação
profissional qualificada – integradora do ensino médio e educação técnica,
– não só é capaz de promover o cidadão com capacidades para produzir, mas
também com autonomia diante das diferentes dimensões da realidade: cultural, social, familiar, esportiva, política e ética.
Nós acreditamos em você!
Desejamos sucesso na sua formação profissional!
Ministério da Educação
Janeiro de 2010
Algoritmos
5
e-Tec Brasil/CEMF/Unimontes
AULA 1
Alfabetização Digital
Indicação de ícones
Os ícones são elementos gráficos utilizados para ampliar as formas
de linguagem e facilitar a organização e a leitura hipertextual.
Atenção: indica pontos de maior relevância no texto.
Saiba mais: oferece novas informações que enriquecem o assunto ou
“curiosidades” e notícias recentes relacionadas ao tema estudado.
Glossário: indica a definição de um termo, palavra ou expressão utilizada
no texto.
Mídias integradas: possibilita que os estudantes desenvolvam atividades
empregando diferentes mídias: vídeos, filmes, jornais, ambiente AVEA e
outras.
Atividades de aprendizagem: apresenta atividades em diferentes níveis
de aprendizagem para que o estudante possa realizá-las e conferir o seu
domínio do tema estudado.
Algoritmos
7
e-Tec Brasil/CEMF/Unimontes
AULA 1
Alfabetização Digital
Sumário
Palavra dos professores conteudistas........................................ 11
Projeto instrucional............................................................ 13
Aula 1 - Construção do conceito de lógica e de algoritmos............. 15
1.1 Conceitos básicos.................................................... 15
Resumo.................................................................... 23
Atividades de aprendizagem............................................ 23
Aula 2 - Tipos de dados, variáveis, expressões matemáticas, sintaxes
e semânticas.................................................................... 25
2.1 Tipos de dados....................................................... 25
2.2 Variáveis.............................................................. 27
2.3 Expressões, operadores e funções................................ 31
2.4 Expressões lógicas................................................... 36
2.5 Prioridade na execução das expressões.......................... 37
Resumo.................................................................... 37
Atividades de aprendizagem............................................ 38
Aula 3 - Pseudolinguagem..................................................... 39
3.1 Pseudocódigo......................................................... 39
3.2 Endentação........................................................... 40
3.3 Declaração de variáveis em pseudocódigo....................... 40
3.4 Atribuição de valores às variáveis................................. 41
3.5 Entrada de dados.................................................... 41
3.6 Saída de dados....................................................... 42
Resumo.................................................................... 43
Atividades de aprendizagem............................................ 44
Aula 4 - Comandos sequenciais............................................... 45
4.1 Comando sequenciais................................................ 45
Resumo.................................................................... 52
Atividades de aprendizagem............................................ 53
Aula 5 - Comandos condicionais.............................................. 55
5.1 Condição Simples e condição composta........................... 55
5.2 Condição simples: conectivo condicional se... então........... 57
5.3 Condição composta: conectivo condicional se... então senão.58
5.4 Estrutura condicional - Caso....................................... 62
Resumo.................................................................... 71
Atividades de aprendizagem............................................ 71
Aula 6 - Estruturas de repetição............................................. 73
6.1 Iteração............................................................... 73
6.2 Estrutura de repetição condicional com teste no início.......... 74
6.3 Comandos repetitivos condicionais com teste no final............ 78
Algoritmos
9
e-Tec Brasil/CEMF/Unimontes
6.4 Comandos repetitivos condicionais com contadores............ 81
Resumo.................................................................... 86
Atividades de aprendizagem............................................ 87
Aula 7 - Variáveis homogêneas – Vetores e Matrizes...................... 89
7.1 Vetores................................................................. 89
7.2 Matrizes............................................................... 93
Resumo.................................................................... 96
Atividades de aprendizagem............................................ 96
Aula 8 - Ordenação e pesquisa de dados................................... 101
8.1 Ordenação de Dados................................................ 101
8.2 Pesquisa de Dados.................................................. 103
Resumo...................................................................106
Atividades de aprendizagem...........................................106
Aula 9 - Variáveis heterogêneas – Registros ...............................109
9.1 Registros..............................................................109
Resumo .................................................................. 112
Atividades de aprendizagem........................................... 113
Aula 10 - Arquivos............................................................. 115
10.1 Operações Básicas................................................. 115
10.2 Organização de arquivos.......................................... 115
Resumo .................................................................. 118
Atividades de aprendizagem........................................... 118
Aula 11 - Modularização: procedimentos e funções...................... 119
11.1 Modularização...................................................... 119
11.2 Variaveis locais e Globais......................................... 120
11.3 Parâmetros......................................................... 121
11.4 Procedimentos..................................................... 122
11.5 Função............................................................... 124
Resumo................................................................... 127
Atividades de aprendizagem........................................... 127
Referências..................................................................... 131
Currículo do professor conteudista......................................... 132
e-Tec Brasil/CEMF/Unimontes
10
Informática
AULA 1
Alfabetização Digital
Palavra dos professores conteudistas
Amigo(a) estudante,
A disciplina “Algoritmos” do curso “Técnico em Informática” propõe
ao indivíduo, o desenvolvimento de competências e habilidades para a resolução de problemas nas diversas atividades da área de Informática e, como
objetivo principal, auxilia o aluno a aplicar o pensamento lógico-matemático
nas atividades de programação de computadores.
Assim, ao desenvolver cada unidade de ensino, podemos perceber
a importância do conteúdo estudado, não só para a disciplina de Algoritmo,
mas para as demais disciplinas do curso.
Deem devida atenção à teoria aqui estudada e resolvam os exercícios de cada unidade.
Caro aluno, Algoritmo é uma disciplina desafiadora que instiga e
encanta quando se obtém o entendimento dos recursos que podem ser utilizados para a resolução dos problemas computacionais.
Reforça-se aqui a ideia de que, só se aprende algoritmos resolvendo
muitos exercícios.
Bom trabalho e aproveitem seu tempo!
Algoritmos
Marilée Patta
Daniel Carli C e Silva
11
e-Tec Brasil/CEMF/Unimontes
AULA 1
Alfabetização Digital
Projeto instrucional
Disciplina: Algoritmos (carga horária: 120 horas).
Ementa: Lógica. Variáveis e tipos de dados. Pseudolinguagem. Sequência simples. Estrutura Condicional (simples e composta). Estrutura de
repetição. Variáveis homogêneas. Variáveis heterogêneas. Registros. Procedimentos. Funções.
OBJETIVOS DE APRENDIZAGEM
MATERIAIS
CARGA
HORÁRIA
1. Construção
do conceito
de lógica e de
algoritmo
- Entender o pensamento lógico e perceber
a sua aplicação nos problemas cotidianos;
- Aplicar a lógica para produzir detalhamento de comandos computacionais.
-
5h
2. Tipos de Dados, Variáveis,
Expressões
Matemáticas,
sintaxes e semanticas
- Conhecer o conceito de variáveis e quais
são os tipos de dados básicos;
- Definir e compreender o uso de variáveis;
- Aplicar o uso de expressões e operadores;
- Compreender, identificar e aplicar a sintaxe e a semântica.
-
10 h
3. Pseudolinguagem
Conhecer a pseudolinguagem utilizada na
construção de algoritmos para ser aplicada
em qualquer linguagem de programação.
-
5h
4. Comandos
Sequenciais
Entender a estruração sequencial dos comandos escritos na pseudolinguagem.
-
5h
5. Comandos
Condicionais
Compreender e aplicar as possibilidades de
testes condicionais simples e compostos.
-
5h
6.Comandos
de repetições Iterações
Compreender e aplicar as possibilidades
de produzir laços de comandos repetitivos.
-
20 h
- Utilizar variáveis que podem armazenar
vários conteúdos ao mesmo tempo na memória;
- Utilizar índices para acesso aos dados das
variáveis.
-
20 h
Utilizar variáveis que podem armazenar
persistentemente tipos distintos de dados.
-
20 h
Dividir o algoritmo em módulos, funções e
procedimentos.
-
20 h
AULA
7. Variáveis
homogêneas:
vetores e matrizes
8. Variáveis
Heterogêneas:
Registros e
arquivos
9. Procedimentos e Funções
Algoritmos
13
e-Tec Brasil/CEMF/Unimontes
AULA 1
Alfabetização
Digital do conceito de lóAula
1 - Construção
gica e de algoritmos
Objetivos
- Entender o pensamento lógico e perceber a aplicação do mesmo
nos problemas cotidianos;
- Aplicar a lógica para produzir detalhamento de comandos computacionais.
1.1 Conceitos básicos
O estudo se inicia abordando alguns conceitos que são fundamentais para sua formação como Técnico em Informática. Vamos apresentar a
Lógica, o Algoritmo, os Dados e a Informação, os Dados de Entrada e Saída,
para mostrar a você o princípio do funcionamento do Processamento de Dados que utiliza a Lógica de Programação.
Você vai perceber que os problemas que utilizamos nesta unidade
são encontrados em seu cotidiano. Tal fato pode colaborar para iniciarmos
um processo de raciocínio. Assim, vamos procurar identificar o problema e
os componentes necessários para sua resolução.
1.1.1 Lógica
Toda vez que você vai resolver um determinado problema, usa o
pensamento lógico de forma intuitiva. Por exemplo, quando vai atravessar a
rua, o que você pensa?
Um modelo de pensamento lógico pode ser: se vier carro do lado
direito ou do lado esquerdo, então espero os carros passarem. Ainda assim,
volta a conferir se a rua está mesmo liberada em ambos os lados para que
ande, de forma segura, até o outro lado da rua e suba no passeio. Se não for
assim, continua esperando, até que as condições para atravessar a rua sejam
propícias.
Talvez você pense: “isso é lógico” !!!
Assim, podemos formular os seguintes passos:
Se vem carro do lado direito e do lado esquerdo da rua,
então espero.
Senão, atravesso.
Algoritmos
15
Mas o que você tem
que perceber é que
esse pensamento possui
várias inferências nas
quais você se informa
com as visões possíveis
para detectar se pode
tomar a decisão e,
portanto, executar a
ação.
e-Tec Brasil/CEMF/Unimontes
Em geral, as pessoas dizem: “isso é lógico, é lógico que tenho conhecimento”, ou ainda, “é lógico que isso não daria certo”.
Mas o que é lógica, afinal? Você pode responder?
Um sistema lógico é um
conjunto de axiomas
e regras de inferência
que visam representar
formalmente o
raciocínio válido,
dedutivo ou indutivo.
O pensamento
dedutivo se caracteriza
por apresentar
conclusões que devem,
necessariamente, ser
verdadeiras caso todas
as premissas sejam
verdadeiras. Já o
pensamento indutivo
significa partir de
premissas particulares
na busca de uma lei
geral, universal. Vamos
mostrar um exemplo de
pensamento dedutivo
e outro de pensamento
indutivo.
Podemos então concluir
que a Lógica é a
ciência das formas do
pensamento. A Lógica
estuda a correção
do raciocínio, visto
que ele é a forma
mais complexa do
pensamento. Podemos
dizer que a Lógica visa à
ordem da razão, isto é,
a razão pode funcionar
desordenadamente e a
lógica estuda e ensina
a colocar ordem no
pensamento.
Bem, vamos mostrar a origem da palavra lógica. Ela vem do grego
clássico - λογική - logos, que significa palavra, pensamento, ideia, argumento, relato, razão lógica ou princípio lógico. A Lógica foi criada pelo filósofo
grego Aristóteles no século IV a.C. para estudar o pensamento humano e
distinguir interferências e argumentos certos e errados.
A Lógica é uma ciência de índole matemática, fortemente ligada à
Filosofia. É também a designação para o estudo de sistemas prescritivos de
raciocínio, ou seja, sistemas que definem como se “deveria” realmente pensar para não errar, usando a razão, dedutivamente e indutivamente.
Todo homem morre
João é homem
Portanto, João morre
O ferro conduz eletricidade
O ferro é metal
O ouro conduz eletricidade
O ouro é metal
O cobre conduz eletricidade
O cobre é metal
Logo: os metais conduzem eletricidade.
Observamos que a indução pode trazer resultados falsos. Veja o
exemplo abaixo:
O cavalo, o burro e a mula são quadrúpedes.
O cavalo, o burro e a mula são mamíferos.
Logo: Todos os mamíferos são quadrúpedes.
Muito bem! Agora que você já sabe o que é lógica e a aplicação
da mesma nos problemas cotidianos, vamos refletir: qual a relação entre a lógica e o algoritmo?
1.1.2 Algoritmos
Você já ouviu falar de algoritmos??? Não!!! Você usa algoritmos todos os dias!
Pense bem! Como fazer para fritar um ovo?
Passo 1) Vá até a geladeira
Passo 2) Se a porta estiver fechada, então abra
Passo 3) Pegue o ovo
e-Tec Brasil/CEMF/Unimontes
16
Informática
Passo 4) Feche a geladeira
Passo 5) Pegue a frigideira
Passo 6) Pegue o óleo
Passo 7) Pegue o sal
Passo 8) Coloque a frigideira no fogão e ascenda o fogo
Passo 9) Coloque o óleo e o sal na frigideira
Passo 10) Espere esquentar
Passo 11) Quebre o ovo batendo-o na beira da frigideira e coloque
dentro da mesma
Passo 12) Espere tostar o ovo por baixo
Passo 13) Vire o ovo
Passo 14) Tire o ovo da frigideira e coloque num prato (prato????)
Você pegou o prato?? Onde estava???
Passo 15) Desligue o fogo
........
Agora é com você!!! Relacione os passos detalhados para se obter um ovo frito.
Assim, pode-se entender que algoritmo é um conjunto de ações
detalhadas, devidamente pensadas de forma lógica, visando obter um resultado final.
A prática do desenvolvimento do algoritmo resulta no aprimoramento do raciocínio lógico, que indica, logicamente, como cada tarefa é
realmente executada, passo a passo.
Mas, qual seria a relação existente entre algoritmos e a lógica de
programação?
Nós usamos a lógica para a construção dos passos finitos que são
designados a resolver um determinado problema. Assim, para construir algoritmos temos que pensar de forma lógica.
Dê exemplos de algoritmos que você utiliza para resolver seus
problemas.
E pra que serve a lógica de programação ??? Vamos responder mais
adiante a essa questão.
Você já ouviu falar de automação? Você se lembra o que é automação?
Vivemos num mundo em que automação se torna presente na nossa
vida. Quando necessitamos realizar uma transferência bancária, da nossa
casa, podemos usar um computador com acesso à internet, e entrar no site
do banco, e realizar a transferência de valores de uma conta para outra. Assim, podemos perceber que todas as transações bancárias, como depósitos,
verificação de saldos e extratos, aplicação financeira, etc., são frutos do
processo de automação bancária.
Algoritmos
17
Farrer et al. (1999)
mostram que Algoritmo
é a descrição de um
conjunto de comandos
que, obedecidos,
resultam numa sucessão
finita de ações.
Para SALIBA (1993),
Automação é um
processo em que uma
tarefa deixa de ser
desempenhada pelo
homem e passa a ser
realizada por máquinas,
não importando se estas
máquinas são mecânicas
ou eletrônicas
O objetivo maior da
automação é que o
resultado de uma tarefa
possa ser conhecido
ou obtido várias vezes
no mesmo intervalo de
tempo e com a mesma
qualidade.
e-Tec Brasil/CEMF/Unimontes
Você percebe a automação em outras atividades? Vamos refletir
como as áreas abaixo relacionadas se inserem na automação:
1) Medicina
2) Educação
3) Governo
4) Comércio
5) Indústrias
6) Polícia
7) Hospitais
8) etc...
Faça uma pesquisa
e descubra em quais
cursos a disciplina de
algoritmos é ministrada.
Divulgue no AVEA.
Assim, para que a automação seja possível, devemos entender o
que é processamento de dados
1.1.3 Processamento de dados
Toda vez que nos referimos ao um determinado tipo de processamento de dados, estamos também falando de algoritmos e de estruturas de
dados.
Há processamento de dados quando, por exemplo, necessitamos
calcular a média da turma obtida na disciplina de algoritmos.
Mas, pra você, o que significa processamento de dados?
Assim, para se obter
a saída diferente da
entrada, devemos
submeter os dados
a um processo de
transformação.
Lembre-se, todo
processamento
transforma os dados.
O processamento de dados constitui-se basicamente de três etapas:
entrada de dados, processamento e saída.
EntradaprocessamentoSaída
Vamos relembrar o exemplo do cálculo da média descrito anteriormente. Quais seriam os dados de entrada? Quais seriam os dados de saída?
Assim, se a turma tem 100 alunos que possuem notas, as notas dos
100 alunos seriam a entrada de dados.
Observe o trecho do algoritmo que trata da entrada de dados:
......
Ler nota.aluno1
Ler nota.aluno2
Ler nota.aluno 3
.....,
Ler nota. aluno 100
Observe o trecho do algoritmo que trata do processamento:
Soma = soma + nota.alunoxx
e-Tec Brasil/CEMF/Unimontes
18
Informática
Observe o trecho do algoritmo que trata da saída de dados
Imprima (“A Média da turma é =”, soma/ 100)
Assim, a lógica de programação é aplicada para submeter os dados
a ações que os transformam de dados de entrada, para dados de saída.
Nos processos diversos de automação, quando se utiliza computadores e sistemas computacionais para auxiliar ou desenvolver determinadas
tarefas, o que se pretende é produzir informação suficiente aos usuários
para as suas tomadas de decisão.
Assim, podemos dizer que o dado é a matéria-prima da informação,
ou seja, a informação é composta de um conjunto organizado de dados. O dado
puro e simples não carrega obrigatoriamente nenhum caráter informativo. Porém, aquele dado com caráter informativo pode se confundir com a informação.
Com base em suas reflexões, cremos que já é possível você descrever alguns exemplos de dados e de informação.
1.1.4 Lógica de programação
A lógica de programação é composta de instruções as quais os dados serão submetidos.
Mas, o que significa instrução?
As atividades pertinentes á programação de computadores, quando
nos é dado um problema, o primeiro passo é entender o que se quer produzir, o que se quer obter. Assim, devemos pensar nos dados que necessitamos
trabalhar para se definir a sequência de instruções para transformar os dados de entrada em dados de saída e assim obter a solução do problema.
Quando os dados de
saída trouxeram algum
significado ao receptor,
mudando seu estado
de conhecimento e
dando a ele condições
de decidir, então, o
que se produziu foi
informação.
A palavra informação
vem do latim informatio, onis,
(“delinear, conceber
ideia”) que deve
atribuir “dar forma
útil”, significado ao(s)
dado(s).
Instrução pode ser
considerada um
conjunto de regras
ou normas definidas
para a realização
de uma tarefa. Em
informática, instrução
é a informação que
indica a um computador
uma ação elementar a
executar.
Agora, para que você exercite seus conhecimentos sobre lógica
de programação, vamos lhe propor um desafio.
Você conhece o Jogo da Torre de Hanói?
Nesse jogo, teremos três hastes que chamaremos de haste origem,
haste destino e haste temporária e 3 discos de tamanhos diferentes posicionados inicialmente na haste origem. Os discos estão dispostos na ordem de
tamanho, de forma que o maior disco fique embaixo, em seguida, o segundo
maior, e assim por diante. O objetivo deste jogo é movimentar os discos
da haste origem para a haste destino, utilizando a haste temporária como
auxiliar. Nenhum disco pode ser colocado sobre um disco menor.
Bem, uma possível resposta seria:
Mova o disco 1 da haste O para a haste D.
Mova o disco 2 da haste O para a haste T.
Mova o disco 1 da haste D para a haste T.
Algoritmos
19
e-Tec Brasil/CEMF/Unimontes
Mova
Mova
Mova
Mova
Faça uma pesquisa
sobre o algoritmo torre
de Hanói quando o
mesmo utiliza 5 hastes
para a troca de discos.
Troque idéias com seus
colegas no AVEA.
o
o
o
o
disco
disco
disco
disco
3
1
2
1
da
da
da
da
haste
haste
haste
haste
O para a haste D.
T para a haste O.
T para a haste D.
O para a haste D.
Resolvido o problema da torre de Hanói, vamos verificar alguns
exemplos de instrução
Faça A = B;
Faça B = C;
Faça D = 0;
Faça F = ((A * B) ** D) / C
Imprima (F);
A = 1;
B = 1:
C = 1;
D = 0;
F = ((1*1)**0)/1
F=1
A = 2;
B = 2;
C = 2;
D = 0;
F = ((2*2)**0)/2
F = 1/2
X1 = (-B+( (SQRT(B**2) – (4*A*C))/2*A
X2 = (-B-( (SQRT(B**2) – (4*A*C))/2*A
Imprima (X1,X2)
INÍCIO
Ando até a porta;
Se a porta está fechada então abro a porta
Senão saio e fecho
Fim se;
Se alunos fora da sala então aguardo a entrada dos alunos em sala
Início os trabalhos
Fim.
Vamos agora analisar um algoritmo genérico escrito em uma pseudolinguagem (a pseudolinguagem ou pseudocódigo será estudado na unidade 3):
e-Tec Brasil/CEMF/Unimontes
20
Informática
INÍCIO
LEIA (o problema proposto);
ENQUANTO não houver entendimento FAÇA
LEIA (o problema proposto);
FIM ENQUANTO;
Desenvolver raciocínio;
ENQUANTO raciocínio não finalizado FAÇA
Desenvolver raciocínio;
FIM ENQUANTO;
Testar a solução implementada;
ENQUANTO não fim de teste FAÇA
Teste a solução proposta;
FIM ENQUANTO;
SE a solução estiver correta
ENTÃO mostra a solução;
SENÃO mostra relatórios de erros;
FIM SE;
FIM.
1.1.5 Descrição narrativa
Você sabe o que é descrição narrativa?
Quando nos deparamos com a necessidade de automação de qualquer atividade, devemos buscar entender o problema analisando-o detalhadamente. Por meio desta análise, é possível identificar alguns dos passos
que devem ser seguidos e respeitados para que seja possível a resolução
da situação-problema. Esses passos compõem dados de estudo do problema
e servirá como base para a construção da Descrição Narrativa de como o
problema deve ser resolvido.
Em geral, os usuários passam, de forma oral ou escrita, às necessidades de suas atividades.
Não conseguir identificar aquilo que se pede (problema), o que se
espera obter (dados de saída), o que será necessário para o processamento
(dados de entrada) e a maneira de processar esses componentes dificulta
muito ou mesmo inviabiliza o processo de resolução.
Portanto, aproveitamos para destacar a importância do exercício
diário da leitura, seja no contexto escolar, seja no profissional, seja no lar.
Mediante o hábito da leitura, firmamos ainda mais a compreensão ou interpretação do que lemos e essas competências são fundamentais para todas as
áreas do conhecimento, não somente quando tratamos da Língua Portuguesa, como equivocadamente pensam muitos estudantes.
Algoritmos
21
Pode-se perceber
que um dos maiores
desafios enfrentados,
para a construção
de algoritmos, é a
interpretação de
textos. Geralmente não
se conseguem textos
objetivos de forma a
elucidar o problema
em questão. Há
também redundâncias,
controvérsias, falta de
conhecimento sobre
o assunto, e demais
problemas existentes
no processo de
comunicação.
e-Tec Brasil/CEMF/Unimontes
Nos casos descritos, a seguir, nos próximos tópicos, por exemplo,
você precisará interpretar o texto para identificar os elementos necessários
à sua resolução. Portanto, exercite a leitura e verá como isso poderá ajudá-lo
não somente em informática, mas em todas as áreas do conhecimento, ok?
Na descrição narrativa, podemos observar três tipos de resoluções
de problemas: sequencial, condicional e repetitiva.
Vamos pensar num exemplo bastante simples.
Para ilustrar a resolução sequencial de problemas, inicialmente vamos pensar numa criança atravessando a rua em companhia de seu pai:
1. pai pega a mão da criança
2. pai caminha com a criança até o outro lado da rua
Para ilustrar a resolução condicional, agora vamos pensar numa
criança atravessando uma rua em companhia de seu pai, considerando a
possibilidade de estar no colo:
1. Se a criança é de colo então
a. pai pega a criança no colo
b. pai caminha com a criança no colo até o outro lado da rua
1. senão
a. pai pega dá a mão para a criança
b. pai caminha com a criança até o outro lado da rua
Por fim, para ilustrar a resolução repetitiva de problema, vamos
pensar num grupo de crianças atravessando a rua em companhia de um responsável, considerando a possibilidade de estar no colo:
1. Enquanto ainda existir criança para atravessar a rua
2. Se a criança é de colo então
c. pai pega a criança no colo
d. pai caminha com a criança no colo até o outro lado da rua
3. senão
a. pai pega dá a mão para a criança
b. pai caminha com a criança até o outro lado da rua
4. pai volta para o outro lado da rua.
e-Tec Brasil/CEMF/Unimontes
22
Informática
Resumo
Chegamos ao final desta unidade, em que você teve a oportunidade
de identificar o que é Lógica e a sua importância para se aprender algoritmo.
Você estudou o conceito de algoritmo e automação. Pôde verificar o que
é dado e informação, e a relação entre esses dois conceitos, enfatizando
os dados de entrada e de saída. Percebeu como é importante entender o
problema em geral e seus componentes. Assim, pode compreender o que
é Processamento de Dados e em que a lógica de programação influencia no
mesmo. Além disso, pôde entender o que é instrução e como as instruções
podem ser organizadas: sequencial, condicional e repetitiva.
Você deve ter percebido, pelo estudo desta unidade, que falamos
um pouco sobre os conceitos básicos que envolvem as técnicas de programação. São noções que precisam ser compreendidas de modo significativo
para uma futura compreensão de toda a lógica envolvida nos processos de
programação na área da Informática.
Bem, agora que você já teve contato com as primeiras conceituações, podemos dar um passo adiante!
Realmente, esperamos que nossa conversa nesta unidade tenha fornecido a você os subsídios mínimos para continuidade do trabalho! Mas, se
ainda restam dúvidas, leia esta unidade quantas vezes julgar necessário.
Lembre-se sempre de que você é capaz! Vamos para a unidade II!
Atividades de aprendizagem
1) Como vimos na primeira unidade, a lógica vem da Filosofia e é considerada a base para a construção de algoritmos e assim propor soluções para
problemas computacionais. Mostre como a Filosofia auxilia na aplicação da
lógica de programação.
2) O que você pode construir usando a lógica de programação?
3) Como a lógica influencia na automação de processos?
4) Cite 5 atividades automatizadas que você tem contato.
5) Quais as atividades que compõem o processamento de dados? Crie um
exemplo que retrate tais passos.
Algoritmos
23
e-Tec Brasil/CEMF/Unimontes
6) Faça uma distinção entre dado e informação.
7) As instruções são componentes da lógica de programação. O que você
entende por instrução?
8) Como a descrição narrativa influencia no processo de construção de algoritmos?
9) Quais problemas podem ser encontrados na descrição narrativa?
10) Faça um resumo dos itens estudados na unidade 1.
e-Tec Brasil/CEMF/Unimontes
24
Informática
AULA 1
AulaAlfabetização
2 - Tipos deDigital
dados, variáveis, expressões matemáticas, sintaxes e semânticas
Na unidade anterior, mostramos a você os conceitos básicos para
o ingresso ao processo de resolução de problemas enfatizando o raciocínio
lógico.
Para ingressar nas atividades de desenvolvimento de algoritmos
com o uso de pseudocódigo, nesta unidade, você terá contato com conceitos
de tipos de dados, variáveis e expressões matemáticas.
Assim, por meio do estudo desta unidade, esperamos que você seja
capaz de:
• Compreender o que são e quais são os tipos de dados básicos;
• Definir e compreender o uso de variáveis;
• Conhecer a definição e o correto uso de expressões e operadores;
• Compreender, identificar e aplicar sintaxe e semântica.
2.1 Tipos de dados
Quando falamos em tipos de dados, estamos também falando de
conceito de domínio. Tal conceito está ligado à limitação do conjunto de
valores que um determinado dado pode conter.
Quando vamos programar em uma linguagem de programação, a
mesma já tem seus próprios tipos de dados, ou seja, a delimitação de valores
que processa.
Devemos observar que o tipo de dado está relacionado ao tipo de
informação que nela estão contidos. Lembramos que a classificação aqui
estudada não se aplica a nenhuma linguagem de programação
específica, pois a ideia é mostrar, de forma sintetizada, os padrões
utilizados na maioria das linguagens.
2.1.1 Dados numéricos
Os dados numéricos são divididos, basicamente, em dois grandes
conjuntos: inteiros e reais.
Números inteiros são aqueles que não possuem componentes decimais ou fracionários, podendo ser positivos ou negativos.
Esse é fácil! Quer ver alguns exemplos? Vamos lá!
Algoritmos
25
e-Tec Brasil/CEMF/Unimontes
144 é um número inteiro positivo
0 é um número inteiro
- 4 é um número inteiro negativo
Os dados de tipo Real são aqueles que podem possuir componentes
decimais ou fracionários, podendo também ser positivos ou negativos.
Vamos pensar.... Bem, agora vejamos...
Podemos citar como exemplos de dados de tipo real:
144.01 é um número real positivo com duas casas decimais
180. é um número real positivo com zero (nenhuma) casa decimal
- 16.9 é um número real negativo com uma casa decimal
0.0 é um número real com uma casa decimal
0. é um número real com zero (nenhuma) casa decimal.
É importante observar
que há uma diferença
entre 0, que é um dado
do tipo inteiro, e 0. ou
0.0, que são dados do
tipo real. Portanto, a
simples existência do
ponto decimal serve
para diferenciar um
dado numérico do tipo
inteiro de um tipo real.
Você sabe dizer alguns exemplos relativos ao tipo de dados numérico?
Podemos citar, por exemplo:
Matricula do aluno
Salário
Quantidade de material em estoque
Número de filhos
Média da turma
Etc...
Agora é com você!!!
Em frente de cada exemplo citado, classifique como inteiro ou real.
2.1.2 Dados literais
Você já ouviu falar em dado literal, caractere ou string?
O tipo de dados literal é constituído por uma sequência de caracteres com letras, dígitos e/ou símbolos especiais. Esse tipo de dado é também
muitas vezes chamado de alfanumérico, cadeia de caracteres ou, ainda,
String.
Usualmente, os dados literais são representados nos algoritmos pela
coleção de caracteres, delimitada em seu início e término com o caractere
aspas (“).
É comum, em algumas linguagens, a diferenciação entre a representação de um único dado literal, que é chamado de caractere (por exem-
e-Tec Brasil/CEMF/Unimontes
26
Informática
plo: ‘M’) com o uso de aspas simples e um conjunto de caracteres, chamado
de String (por exemplo: “Oi, estou no e-tec Brasil”) com o uso de aspas
duplas.
Você sabia que na Linguagem C e Java há essa diferença?
O dado do tipo literal possui um comprimento dado pelo número de
caracteres nele contido. Veja os exemplos:
1)”QUEM ?” - Literal de comprimento 6
2)”QUEM ?” - Literal de comprimento 5
3)” “ - Literal de comprimento 1
4)”[email protected]” - - Literal de comprimento 15
5)”4+5-1=” - Literal de comprimento 6
6) “1” - Literal de comprimento 1
Não se confunda ao
analisar os exemplos
5 e 6. Se o conteúdo
estiver entre aspas num
dado do tipo literal,
então, não importa se é
composto de números,
letras, caracteres
especiais. É um dado do
tipo literal.
Podemos citar, por exemplo:
Nome do aluno
Endereço
Nome do produto
Descrição do produto
Etc...
Você sabe dizer alguns
exemplos relativos ao
tipo de dados literal?
2.1.3 Dados lógicos
Nos dados lógicos, cada dado pode ser representado apenas por
dois valores: verdadeiro ou falso.
É bom lembrar que o dado do tipo lógico serve como dado de controle, um sinalizador para que o algoritmo execute ou não um conjunto de
instruções.
Você sabe dizer alguns exemplos relativos ao tipo de dados do tipo
Ele é chamado
por alguns de tipo
booleano, devido à
contribuição do filósofo
e matemático inglês
George Boole na área
da lógica matemática.
logico?
Impresso – s/n
Processado – s/n
Encontrado – s/n
2.2 Variáveis
Uma variável é um local na memória RAM (Randomic Access Memory) do computador, um endereço que armazena um conteúdo do tipo
numérico, literal ou lógico para o processamento dos dados.
Por que se chama variável?
Algoritmos
27
Faça uma pesquisa
e descubra se existe
relação matemática
entre os conceitos
dos tipos de dados
numéricos e dê a sua
opinião. Discuta com
seus colegas no AVEA.
e-Tec Brasil/CEMF/Unimontes
A cada novo processamento submetido, os valores de conteúdos
dos espaços de memórias sofrem alterações. A cada novo processamento, o
espaço de memória alocado para o armazenamento de variáveis, passa a ter
um novo conteúdo.
Uma vez definidos o nome e o tipo de uma variável, não podemos
alterá-los no decorrer de um algoritmo. Por outro lado, o conteúdo da variável é um objeto de constante modificação no decorrer do programa, de
acordo com o seu fluxo de execução.
Para facilitar a programação, é permitido que se atribua nome a
esse endereço e esse nome é definido como variável.
Assim, podemos criar as variáveis com os seus conteúdos como a
seguir:
A = 2;
B = A;
A = A + B;
C = D * F;
Contador = Contador + 1;
Num = 0;
Para atribuir valores a uma variável, usaremos o símbolo de atribuição ← ou := ou =, como mostram o exemplos a seguir. Nos três primeiros
casos, a variável A recebe o conteúdo da variável B. Nos quarto e quinto
exemplos, a variável B recebe o resultado da expressão matemática.
1) A ← B;
2) A = B;
3) A := B;
4) B ← C * 2 + 1;
5) B = C * 2 + 1;
Quando formos dar nome às variáveis, faz-se necessário seguirmos
algumas regras:
• O primeiro caractere é uma letra;
• Se houver mais de um caractere, só poderemos usar: letra ou
algarismo;
• Nomes de variáveis escritas com letras maiúsculas serão diferentes de letras minúsculas;
• Nenhuma palavra reservada à ferramenta (linguagem de
• programação) poderá ser usada como nome de uma variável;
• Procure dar nomes representativos para a variável. Lembre-se
de que ao ler seu nome, é importante saber o que ela contém.
É bom ressaltar que o algoritmo tem uma estrutura bem definida,
como a seguir:
e-Tec Brasil/CEMF/Unimontes
28
Informática
Início
Declaração de variáveis
Inicialização de variáveis
Procedimento lógico
Entradas
Processamento
Exibição dos resultados
Fim
Você pode perceber que as variáveis são definidas no início, pois
isso permite a alocação (reserva) de uma área na memória (endereço) para a
variável. Outro objetivo da declaração de variáveis é que, após a declaração,
o algoritmo sabe os tipos de operação que cada variável pode realizar. Algumas operações só podem ser realizadas com variáveis do tipo inteiro. Outras
só podem ser realizadas com variáveis dos tipos inteiro ou real, e outras só
com variáveis de caractere, entre outras que serão vistas.
2..2.1 Declaração de variáveis
As variáveis e estruturas de dados a serem utilizadas para o processamento de um determinado problema devem ser definidas no algoritmo.
Essa definição implica em alocar um espaço de memória específico para
processar o conteúdo de cada variável. Uma declaração de uma variável corresponderá a criação de locais na memória rotulada com o nome da variável,
sendo esse o identificador do local criado na memória e marcada com o tipo
de valores que pode conter.
O levantamento e o estudo do problema fornecem uma visão inicial
de quais variáveis serão necessárias para o desenvolvimento do algoritmo.
Muitas vezes, no decorrer do desenvolvimento do algoritmo, faz-se necessária, a criação e definição de algumas variáveis, além daquelas definidas no
seu início, quando no entendimento do problema. Toda variável primitiva
deve ser definida, conforme sintaxe abaixo:
Tipo: V1, V2,...,Vn;
Vejamos o exemplo a seguir:
Inteiro : x1; (valores inteiros)
Real: a,b; (Valores (reais)
Caractere: nome; (caracteres ou string)
Lógico: verdadeiro (falso ou verdadeiro)
Para declarar as variáveis que serão utilizadas no processamento, devemos saber claramente, qual é o objetivo do algoritmo que estamos
construindo, interpretando o problema em questão.
Algoritmos
29
e-Tec Brasil/CEMF/Unimontes
Assim, devemos retirar das especificações, quais dados serão produzidos, quais são as entradas necessárias e quais são as variáveis temporárias utilizadas para auxiliar o processamento.
Que tal observarmos alguns exemplos para tornar ainda mais clara
essa ideia? Vamos lá...
Problema 1
Faça um algoritmo que escreva o valor total da compra composta
de produtos com código, quantidade e preço de oito produtos.
Inteiro: código;
Real: quantidade, preço, valor total;
Caractere: nome.produto;
Problema 2
Faça um algoritmo que apure o valor da multa, caso o cliente faça
o pagamento em atraso.
Real: valor.conta, taxa.multa, valor.multa, valor.total;
Problema 3
Um motorista percorre uma rota em km. Ao chegar ao seu destino,
a empresa deseja saber a quantidade de metros percorridos na viagem.
Real: km, Metros;
Você pode observar que a identificação de variáveis e de seus tipos
é, na maioria das vezes, um trabalho muito fácil, pois basta identificá-los no
enunciado. O que ocorre também com grande frequência é a identificação de
algumas variáveis necessárias apenas durante a resolução do algoritmo, mas isso
não é problema. Ao perceber a necessidade de tais variáveis, elas devem ser
inseridas à lista já existente, relacionando-as ao seu tipo respectivo.
Assim, ao utilizarmos a pseudolinguagem Portugol, temos 4 tipos
primitivos de variáveis. São eles:
Faça uma pesquisa
para investigar se há
algum software que
faça o mapeamento
de variáveis em tempo
de execução de um
processo algorítmico.
Inseria os resultados
no AVEA e discuta com
seus colegas.
Inteiro – qualquer número inteiro negativo, nulo ou positivo.
Ex: 2 , 5, -4, 0;
Real – qualquer número real negativo, nulo ou positivo.
Ex: -5, 30.5, 0, 40;
Caractere – qualquer conjunto de caracteres alfanuméricos.
Ex: “João”, “xyz”, “manga”, “a122”;
Lógico – conjunto de valores falso ou verdadeiro. Ex: sim ou não,
1 ou 0.
e-Tec Brasil/CEMF/Unimontes
30
Informática
2.3 Expressões, operadores e funções
Para que possamos realizar os cálculos matemáticos, devemos construir as expressões matemáticas ou fórmulas. Em cada expressão, o conjunto
de variáveis e constantes numéricas se relaciona por meio de operadores,
que, ao ser processada, resulta em um valor.
Para entendermos como as expressões são montadas e executadas,
devemos ter alguns conceitos.
Que tal buscarmos o entendimento em relação aos Operadores?
Nas expressões, os operadores atuam sobre os operandos para produzir resultado.
Veja um exemplo bem simples:
10 – 2 = 8
10 e 2 são operandos
- é um operador
Veja como os operadores podem ser classificados:
1) binários: operações matemáticas simples nas quais o operador
envolve dois algarismos. Veja o exemplo:
24 - 22
04 + 01
2) unários: o operador somente se encarrega de informar se o número é positivo ou negativo. Veja o exemplo:
-48
-1,1418
2.3.1 Expressões aritméticas
Somente é permitido o uso de operadores aritméticos e de variáveis
numéricas em expressões deste tipo. Além disso, os operadores têm uma
ordem de execução, como mostra o quadro 1.
QUADRO 1
Operadores aritméticos
Operador
Tipo
Operação
Prioridade
Exemplo
+
Unário
Mantém sinal
1
-(-2) = 2
-
Unário
Inverte sinal
1
+2=2
** ou ^
Binário
Exponenciação
2
4**2 = 16
*
Binário
Multiplicação
3
4*2= 8
/
Binário
Divisão
3
4/2 = 2
+
Binário
Soma
4
4+4=8
-
Binário
Subtração
4
6 - 8 = -2
Fonte: Adaptado de Farrer, Harry, eT AL (1999, pg.33)
Algoritmos
31
e-Tec Brasil/CEMF/Unimontes
Mas, preste atenção !!!
A prioridade entre operadores define a ordem em que eles devem
ser avaliados dentro de uma mesma expressão.
Quando há dois ou mais operadores de mesma prioridade em uma
expressão, a execução se dá da esquerda para a direita.
Todas as operações
internas aos parênteses
são primeiramente
executadas. Depois
é obedecida a ordem
de prioridade dos
operadores aritméticos.
Observe as expressões abaixo:
1) A * B * C / (D*E*F)
(A*B*C)/(D*E*F)
2) A*B/C*D/E*F(((A*B)/(C*D)/E)*F
3) A**B**C(A**B)**C
4) A/B/C/D((A/B)/C)/D
5) X> Y ou Q
(A>Y) ou Q
6) A+B < C
(A+B) < C
Vamos atribuir valores ás variáveis: A= 2, B= 4, C= 2, D=8, E = 4, F = 2.
Vamos substituir as variáveis pelos seus respectivos valores tanto na
primeira como na segunda expressão, segundo o exemplo apresentado em 1,
como mostra o quadro 2.
QUADRO 2
Exemplo de prioridade de execução
Prioridade de Execução
A * B * C / (D*E*F)
Resultado
(D*E*F)
64
A*B*C
16
16/64
0.25
Prioridade de Execução
(A*B*C)/(D*E*F)
Resultado
(A*B*C)
16
(D*E*F)
64
16/64
2.25
Fonte: Própria.
Podemos observar que no exemplo estudado anteriormente, não
houve alteração nos resultados.
Bem, vamos continuar nossa analise.
Vamos substituir as variáveis pelos seus respectivos valores (A= 2,
B= 4, C= 2, D=8, E = 4, F = 2) tanto na primeira como na segunda expressão,
segundo o exemplo apresentado em 2, como mostra o quadro 3.
e-Tec Brasil/CEMF/Unimontes
32
Informática
QUADRO 3
Exemplo de prioridade de execução
Prioridade de Execução
A*B/C*D/E*F
Resultado
A*B
8
8/C
4
4*D
32
32/E
8
8*F
16
Prioridade de Execução
(((A*B)/(C*D)/E)*F
Resultado
(A*B)
8
(C*D)
16
8/16
0.5
0.5/E
0.125
0.125*F
0.25
Fonte: Própria.
Agora é com você !!
As expressões acima se diferenciam em função dos parênteses inseridos em seus termos. Atribua valores diferentes dos anteriormente apresentados às variáveis da primeira e da segunda coluna e verifique o que
acontece com os resultados.
Veja bem. Em função
dos parênteses
inseridos na segunda
expressão do exemplo,
os resultados foram
drasticamente
alterados.
2.3.2 Operadores lógicos
Além dos operadores aritméticos, também dispomos dos operadores lógicos para elaborar as nossas expressões. O quadro 4 mostra os operadores lógicos.
QUADRO 4
Operadores lógicos
Operador
Descrição
Tipo
Prioridade
Ou ou v
Disjunção
Binário
3
E ou ^
Conjunção
Binário
2
Não ou
Negação
Unário
1
Fonte: Adaptado de Farrer, Harry, eT AL (1999, pg.36).
Algoritmos
33
e-Tec Brasil/CEMF/Unimontes
2.3.3 Operadores relacionais
Veja bem! Para criarmos nossas expressões condicionais, devemos utilizar os operadores relacionais como mostra o quadro 5.
QUADRO 5
Operadores relacionais
Operador
Descrição
=
Igual
# <>
Diferente
> GT
Maior
< LT
Menor
>= GE
Maior ou igual
<= LE
Menor ou igual
Fonte: Forbellone, Andre Luiz Villar (2005, P 21).
Vamos agora passar a você alguns exemplos de operadores relacionais, como mostra o quadro 6.
QUADRO 6
Exemplos de operadores relacionais
Exemplo
Valor
Questionamento
Resultado
A<>B
A= 3 e B = 4
A é diferente de B?
verdadeiro
A<>B
A= 3 e B = 3
A é diferente de B?
Falso
X=1
X=2
X = 1?
falso
X=1
X=1
X = 1?
verdadeiro
7>6
7 > 6?
verdadeiro
6<8
6 < 9?
verdadeiro
1<=y
Y=1
1 é menor ou igual a y?
verdadeiro
1<=y
Y=2
1 é menor ou igual a y?
verdadeiro
1<=y
Y=0
1 é menor ou igual a y?
falso
4 >= w
W=4
4 é maior ou igual a W?
verdadeiro
4 >= w
W=3
4 é maior ou igual a W?
verdadeiro
4 >= w
W=5
4 é maior ou igual a W?
falso
Fonte: Forbellone, Andre Luiz Villar (2005, P 21).
e-Tec Brasil/CEMF/Unimontes
34
Informática
2.3.4 Funções
Função nada mais é do que um algoritmo já desenvolvido que pode ser
utilizado como parte de outro algoritmo. Assim, podemos utilizar as seguintes
funções, como mostra o quadro 7.
QUADRO 7
Funções
Operador
Descrição
Raiz (x) ou SQRT (x)
Raiz quadrada de x
Sen (x)
Seno de x
Cós (x)
Cosseno de x
Tg (x)
Tangente de x
Arctg(x)
Arco tangente de x
Abs(x) ou sinal (x)
Valor absoluto de x
Int (x)
Parte inteira de x
Mod (A,B)
Resto da divisão de a por B
Div (A,B)
Quociente da divisão de A por B
Exp(x)
Expoente de x
Random(x)
Calcula valor randômico entre 0 e x
Fonte: Adaptado de Farrer, Harry, eT AL (1999, pg.33).
Para um melhor entendimento, vamos utilizar as funções e buscar
identificar seus resultados. Vamos supor que temos duas variáveis x e y, com
valores 5 e 2 respectivamente. Ao aplicar às funções, qual seria o valor de saída?
A = sen (x)
B = Cós (y)
C = Arctg (y+x)
D = Abs (x)
E = int(5,34)
F = Mod (x,y)
G = Div (x,y)
Agora é com você.
Pense em outros valores
para as variáveis e as
substitua para obter os
resultados das funções,
como fizemos juntos na
atividade anterior.
Veja o que aconteceu:
A = sen (5)
B = Cós (2)
C = Arctg (7)
D = Abs (5)
E = int(5,34)
F = Mod (5,2) = 1
G = Div (5,2) = 2
Algoritmos
35
e-Tec Brasil/CEMF/Unimontes
2.4 Expressões lógicas
As proposições
transmitem
pensamentos, isto
é, afirmam fatos ou
exprimem juízos que
formamos a respeito de
determinados entes.
As proposições vistas
no exemplo anterior
são ditas simples ou
atômicas, pois não
contêm nenhuma
outra proposição como
parte integrante de si
mesma. Há somente
a ocorrência de uma
informação sendo
repassada.
Chama-se proposição
composta ou
proposição molecular
aquela formada pela
combinação de duas ou
mais proposições
As expressões lógicas são aquelas cujo resultado da avaliação é um
valor do tipo lógico podendo ser Verdadeiro ou Falso. Para descrever as expressões lógicas, devemos usar os operadores lógicos estudados na seção 2.3.2.
Para tratar expressões lógicas, vamos recorrer à lógica matemática,
na qual a proposição é vista como todo o conjunto de palavras ou símbolos
que exprimem um pensamento de sentido completo.
Podemos citar como exemplo de proposição:
a) A Lua é um satélite da terra.
b) Recife é a capital de Pernambuco.
c) 2 é 8.
3
A lógica matemática (assim como a que veremos para algoritmos)
adota como regras fundamentais do pensamento os dois seguintes princípios:
a) Princípio da não contradição: uma proposição não pode ser
verdadeira e falsa ao mesmo tempo;
b) Princípio do terceiro excluído: toda a proposição ou é verdadeira ou é falsa, isto é, verifica-se sempre um destes casos, e nunca um
terceiro.
Os exemplos a seguir mostram a você a proposição composta ou
molecular:
a) Carlos é careca e Pedro é estudante.
b) Carlos é careca ou Pedro é estudante.
c) Se Carlos é careca, então é infeliz.
Quando pensamos, efetuamos, muitas vezes, certas operações sobre proposições, chamadas operações lógicas, quais sejam:
a) Negação
Chamamos negação de uma proposição p, a proposição representada por não p, cujo valor lógico é a verdade quando p é falsa, e a
falsidade quando p é verdadeira. Assim não p tem o valor lógico oposto
daquele de p;
b) Conjunção
Chamamos conjunção de duas proposições p e q a proposição representada por p E q, cujo valor lógico é verdade quando as proposições p
e q são ambas verdadeiras, e falsa nos demais casos;
c) Disjunção
Chama-se disjunção de duas proposições p e q a proposição representada por p OU q cujo valor lógico é a verdade quando ao menos uma
das proposições p e q é verdadeira, e a falsidade quando as proposições p e
q são ambas falsas.
Os operadores lógicos também são chamados de operadores booleanos
e-Tec Brasil/CEMF/Unimontes
36
Informática
Suponha duas perguntas feitas a quatro pessoas que se candidataram a uma entrevista de emprego de programador. As respostas às perguntas
serão Sim ou Não. Suponha também que só será chamado para a entrevista
o candidato que responder Sim às duas perguntas, como mostra a tabela
verdade constante no Quadro 8.
QUADRO 8
Tabela verdade caso entrevista
Candidato
Conhece
linguagem C?
Conhece l
inguagem Pascal?
Candidato Aprovado para entrevista
Patrícia
Sim
Sim
Sim
Joelmo
Sim
Não
Não
Valdir
Não
Sim
Não
Santos
Não
não
Não
Fonte: Adaptado de Forbellone, Andre Luiz Villar (2005, P 21) .
Nesse caso, somente a candidata Patrícia será chamada para a entrevista.
2.5 Prioridade na execução das expressões
Depois de conhecer os recursos quanto aos operadores aritméticos,
lógicos, relacionais e funções, você deve conhecer a prioridade na execução
das expressões:
1 – parênteses e funções
2 – expressões aritméticas: +- unários,**, */, + - (binários)
3 – Comparação: <,<=, =, >, >=, #
4 – não
5–e
6 – ou
Sintaxe e Semântica
Para finalizar o estudo desta unidade, vamos estudar os aspectos da
sintaxe e da semântica.
Portanto, a linguagem utilizada para a lógica de programação possui sintaxe e semântica, ou seja, regras para formação dos comandos e o
significado delas quando no momento de execução dos mesmos.
Resumo
Para o embasamento do aprendizado de algoritmos, o conteúdo estudado é de grande relevância. Foram aqui apresentados conceitos e exemplos de tipos de dados possíveis de uso em nossos pseudocódigos, conceitos
Algoritmos
37
SINTAXE: São regras
gramaticais de
formação de sentenças/
asserções válidas
ou gramaticalmente
corretas;
SEMÂNTICA: É
a associação das
asserções ao significado,
permitindo sua
interpretação.
A sintaxe de uma
linguagem expressa
regras que devem ser
obedecidas para atingir
determinado resultado,
fazendo uso dela. E a
semântica representa
o conteúdo das
palavras da linguagem,
permitindo assim uma
interpretação correta
do texto escrito com
determinada linguagem.
e-Tec Brasil/CEMF/Unimontes
e regras para uso de variáveis, além de uma introdução sobre expressões e
operações. Na parte de expressões lógicas, você pode verificar uma pequena
demonstração sobre suas operações.
Todos esses conceitos serão utilizados nas próximas unidades. Daí a
relevância de uma releitura, caso ainda restem dúvidas.
Encerramos esta unidade por aqui, esperando, é claro, que esses
conceitos e exemplos tenham ajudado a você a compreender ainda mais as
etapas da programação.
Mas ainda temos um longo caminho. Vamos em frente!
Atividades de aprendizagem
1) Qual é o conceito de domínio de dado?
2) Liste e explique os tipos de dados que podem ser usados na pseudolinguagem.
3) Um supermercado trabalha com o controle de vendas de seus produtos.
Para tal, é necessário armazenar dados como o código do produto, descrição, unidade, preço unitário de venda. Relacione os dados aos seus tipos.
4) Os dados do tipo lógico podem conter apenas dois valores: verdadeiro ou
falso. Pense numa aplicação que deve conter um dado do tipo lógico.
5) Qual o conceito de variável?
6) O tipo e o nome da variável não podem ser alterados quando o algoritmo
entrar em execução. Justifique.
7) Relacione as regras de composição de nome de variáveis.
8) Faça uma distinção entre operadores aritméticos, lógicos e relacionais.
9) Quais os recursos podem ser utilizados para se criar uma expressão lógica?
10) Qual a ordem de prioridade de execução de comandos em uma expressão
computacional?
e-Tec Brasil/CEMF/Unimontes
38
Informática
AULA 1
Alfabetização Digital
Aula 3 - Pseudolinguagem
Para facilitar o desenvolvimento do raciocínio lógico e a aplicação
da lógica de programação em qualquer linguagem de programação, vai ser
introduzida, na pseudolinguagem, uma linguagem de programação hipotética, muito usada em todo o mundo.
Para você, é importante, pois utiliza o idioma nativo, no nosso caso
a Língua Portuguesa, e algumas regras sintáticas.
Por meio de exemplos, você terá contato com a representação
de algoritmos recorrendo a pseudocódigos. Abordaremos também os pseudocódigos com estruturas condicionais e faremos breve comentário sobre
funções.
possa:
Assim, esperamos que, ao final da leitura desta unidade, você
-
Conhecer e entender pseudocódigos;
Compreender a importância da endentação;
Saber atribuir valores iniciais as variáveis;
Saber utilizar as instruções Leia e Escreva.
3.1 Pseudocódigo
Você sabe o que é pseudocódigo?
O pseudocódigo é a escrita, por meio de regra predefinida, dos
passos a serem seguidos para a resolução de um problema. É o resultado
da análise e resolução de um problema exposto em um enunciado. Para
transformar o algoritmo em uma linguagem de programação, basta ter
o conhecimento do vocabulário e regras sintáticas da linguagem/idioma
desejado.
3.1.1 Estrutura básica de um pseudocódigo
Para Saliba (1993),
pseudocódigo é
uma forma para
representação de
algoritmos rica em
detalhes, como a
definição dos tipos
das variáveis usadas
no algoritmo. Por
assemelhar-se
bastante à forma em
que programas são
escritos, encontra
muita aceitação.
Para construção do pseudocódigo, trazemos palavras do nosso idioma que representarão comportamentos e ações que deverão ser assumidos
pelo algoritmo. A essas palavras, dá-se o nome de Palavras Reservadas à
Linguagem, ou seja, você NÃO pode utilizar tais palavras para outros fins
senão àquele que ela representa.
Começaremos agora, pouco a pouco, a conhecer essas palavras. Para
isso, veja no quadro 9 a estrutura básica que um pseudocódigo deve ter.
Algoritmos
39
e-Tec Brasil/CEMF/Unimontes
QUADRO 9
Estrutura básica do pseudocódigo
As palavras reservadas
estão em negrito e
o texto em itálico
deverá ser preenchido
pelo programador,
desconsiderando
os sinais < >. Não
se assuste, é muito
simples.
Estrutura básica para um pseudocódigo
Algoritmo <nome>
Variáveis
<lista>
início
<bloco de instruções>
fim.
Algoritmo – É o início de um novo programa. Seu nome é fornecido pelo programador e deve representar o seu objetivo.
Variáveis – Todas as variáveis utilizadas no programa devem ser definidas de
acordo com o seu respectivo tipo.
Início - O processamento do programa é iniciado. O bloco de instruções se refere
aos comandos que darão resolução ao problema.
Fim – O fim do programa deve ser informado, assim como foi informado o início.
Fonte: Adaptado de Farrer, Harry, eT AL (1999, pg.45).
A seguir, você observará um algoritmo, retratando as estruturas
básicas do pseudocódigo:
Algoritmo E-tecBrasil
Variáveis
Início
Escreva “Hei, você participa do E-tec Brasil”
Fim
3.2 Endentação
A endentação é um
recuo que se atribui
aos comandos
subordinados.
Com o seu uso,
fica fácil detectar
quais instruções são
internas a outras.
Para formatar o programa e dar uma visão de quais comandos estão
sob coordenação de quais outros, usa-se a endentação, tendo como finalidades principais:
- melhorar a legibilidade;
- facilitar a manutenção;
- facilitar a identificação do erro lógico durante a execução.
Observe que no pseudocódigo anterior, a instrução Escreva está endentada e, visivelmente, nota-se que ela está sob o controle de Início e Fim.
3.3 Declaração de variáveis em pseudocódigo
Você já estudou
tipos de variáveis e
composição de nomes
na unidade 2.
A declaração das variáveis a serem manipuladas no algoritmo deve
estar entre as palavras reservadas Variáveis e Início. Toda variável utilizada
deve ter um nome e um tipo.
e-Tec Brasil/CEMF/Unimontes
40
Informática
O exemplo, a seguir, mostra a declaração de variáveis utilizando-se
pseudocódigo.
Algoritmo <nome>
Variáveis
A: inteiro;
B: Real;
C: caractere;
D: lógico;
início
<bloco de instruções>
fim.
3.4 Atribuição de valores às variáveis
A atribuição de valores iniciais às variáveis se dá quando precisamos
armazenar algum valor para ser usado inicialmente em nosso algoritmo, seja
para efetuar operações aritméticas ou para compor a informação para o
usuário. Além disso, no corpo do algoritmo as variáveis devem receber novos
valores para oferecerem o resultado necessário.
O exemplo a seguir mostra a inicialização de variáveis utilizando-se
pseudocódigo.
Algoritmo <nome>
Variáveis
A: inteiro;
B: Real;
C: caractere;
D: lógico;
Início
A ← 1;
B ← 0;
C ← “Orozimbo”;
D ← falso;
<bloco de instruções>
Fim.
Com base na
inicialização das
variáveis do exemplo
anterior e considerando
os tipos utilizados
no exemplo, defina
outros valores para tais
variáveis.
3.5 Entrada de dados
Uma operação de entrada de dados se refere a qualquer valor que
seja informado e que seja armazenado na memória com o uso das variáveis.
Tal valor pode ser digitado pelo usuário ou lido de dispositivos de
armazenamento de dados como, por exemplo, um arquivo no disco rígido.
No que diz respeito ao comando de Entrada de dados, faz-se necessário que seja estabelecida uma convenção. Tal comando aqui será definido
como Leia.
Algoritmos
41
Veja bem!
Um valor literal não
pode ser armazenado
em uma variável
numérica, porém um
valor numérico pode ser
armazenado em uma
variável literal, mas
esse será tratado como
literal.
e-Tec Brasil/CEMF/Unimontes
Quando for possível,
você pode usar somente
uma instrução Leia
para receber o valor de
várias variáveis.
Para introduzir cada valor às variáveis definidas no algoritmo, você
pode usar uma instrução Leia para cada uma.
Veja o exemplo de um algoritmo que possui a entrada de dados
de várias variáveis com várias instruções Leia.
Algoritmo entrada
Variáveis
Nome: Caractere;
Salario: Real;
idade: inteiro;
Início
Escreva “Digite seu nome”;
Leia nome;
Escreva “Digite seu Salário”;
Leia Salário;
Escreva “Digite sua idade”;
Leia idade;
Escreva “Olá ”,nome,” você ganha “, salário, “por mês e tem
“, idade, “anos”
Fim.
Veja agora o exemplo de um algoritmo que tem instruções de
entrada de dados, uma instrução LEIA recebendo várias variáveis:
Algoritmo exemploleia
Variáveis
Nome: Caractere;
Salario: Real;
idade: inteiro;
Início
Escreva “Digite seu nome, seu salário e sua idade”;
Leia nome, salário, idade;
Escreva “Olá”,nome,” você ganha “, salário, “por mês e tem
“, idade, “anos”
Fim.
3.6 Saída de dados
Uma operação de saída de dados se refere a qualquer valor exibido
ou retornado ao usuário. Esse valor pode ser uma mensagem de orientação,
o resultado de uma expressão, um valor constante ou uma variável existente
na variável.
e-Tec Brasil/CEMF/Unimontes
42
Informática
Quando representamos um algoritmo por meio de pseudocódigos,
várias palavras de nosso idioma podem ser utilizadas, tais como Escreva,
Imprima, Informe, Mostre ou Exiba. Aqui você vai usar a palavra Escreva.
Veja o exemplo de um algoritmo que tem várias instruções de saída
de dados:
Algoritmo saída
Variáveis
idade: inteiro;
Início
Idade ← 25;
Escreva “Sou aluno do E-tec Brasil”;
Escreva ”Eu tenho “, idade, “anos”
Fim.
Veja o exemplo de um algoritmo que tem a mesma saída em uma
só instrução:
Algoritmo saída
Variáveis
idade: inteiro;
É interessante saber
que, quando desejarmos
exibir ao usuário uma
frase, esta deve estar
entre aspas (estas aspas
podem ser a simples
ou as duplas, mas
usaremos as duplas).
Se quisermos exibir
um valor numérico
constante, basta
informá-lo após a
instrução. Se o que
desejarmos exibir ao
usuário for o conteúdo
de uma variável, basta
informarmos tal variável
após a instrução
Escreva.
Início
Idade ← 25;
Escreva “Sou aluno do E-tec Brasil e tenho “, idade, “ de idade”)”;
Fim.
Resumo
A unidade estudada apresenta a estrutura básica para se desenvolver algoritmos. Apresentamos a você a estrutura básica do pseudocódigo
identificando a forma de declarar variáveis e também de inicializar as mesmas. Além disso, as instruções de entrada e de saída de dados foram também
ilustradas.
Devemos informar a você que tratamos aqui somente da estrutura
básica da construção de pseudocódigo. Vamos estudar, nas unidades seguintes, os comandos sequenciais, os comandos condicionais, os comandos repetitivos, além de apresentarmos, mais adiante, as estruturas homogêneas e
heterogêneas de dados, com suas respectivas formas de manipulação.
Algoritmos
43
e-Tec Brasil/CEMF/Unimontes
Atividades de aprendizagem
1) O que você entende como pseudocódigo?
2) O que se entende por palavras reservadas da linguagem?
3) Explique cada componente da estrutura básica de um pseudocódigo,
Algoritmo <nome>
Variáveis
<lista>
início
<bloco de instruções>
fim.
4) Qual a importância da endentação no processo de criação de algoritmos?
5) Por que razão é necessário atribuir valores iniciais às variáveis?
6) Para que serve a Instrução Leia? Existe algum sinônimo para tal instrução?
7) Para que serve a instrução Escreva? Existe algum sinônimo para tal instrução?
8) Com quais valores devem ser inicializadas duas variáveis: a primeira que
receberá uma soma e a segunda que receberá o resultado de multiplicação?
9) Qual deve ser o tamanho máximo da lista de variáveis e do bloco de comandos?
10) Quais são as regras necessárias para construir um pseudocódigo?
e-Tec Brasil/CEMF/Unimontes
44
Informática
AULA 1
Alfabetização Digital
Aula 4 - Comandos sequenciais
Para o aprendizado de desenvolvimento de algoritmos, faz-se necessário o estudo dos conceitos e das instruções primitivas estudados nas
unidades anteriores. Além disso, a unidade que trata dos comandos sequenciais vem agregar conhecimento para a resolução e representação de algoritmos em sua forma de pseudocódigos.
Assim, por meio do estudo desta unidade, esperamos que você seja
capaz de:
• Compreender a estrutura dos comando sequencias;
• Identificar o uso dos comandos seqüenciais em outras estruturas
de comandos.
4.1 Comando sequenciais
Assim, para elucidar o uso de comandos sequenciais, vamos detalhar a situação de pagamentos de funcionários de uma empresa.
Sobre o salário bruto de um funcionário, são descontados 8% de
INSS, 10% de IR (imposto de renda) e sobre o restante 0,5% referente à filiação sindical. Para cada dependente (filhos), o funcionário ganha R$ 50,00.
Ao ser fornecido o valor do salário bruto do funcionário e a quantidade de
dependentes, calcule:
a) O total dos descontos
b) Total de acréscimo
c) Salário líquido.
São blocos de comandos
dispostos um após o
outro, sem nenhum
desvio ou repetição
Para resolver o problema anteriormente proposto, vamos mostrar a
você o seguinte algoritmo:
Algoritmo CalculoDeFolha
Variáveis
SalarioBruto, INSS, IR, FS, TotalDeDescontos, TotalDeAcrescimos,
SalarioLiquido : Real;
Dependentes : Inteiro;
Início
Escreva “Informe o Salário Bruto”;
Leia SalarioBruto;
Escreva “Informe a Quantidade de Dependentes”;
Leia Dependentes;
Algoritmos
45
e-Tec Brasil/CEMF/Unimontes
INSS ← SalarioBruto*0.08;
IR ßSalarioBruto * 0.10;
FS ← (SalarioBruto – (INSS+IR)) * 0.005;
TotalDeDescontos ← INSS + IR + FS;
TotalDeAcrescimos ← (Dependentes * 50);
SalarioLiquido ← SalarioBruto – TotalDeDescontos + TotalDeAcrescimos;
Escreva “O Total de Descontos é : “, TotalDeDescontos;
Escreva “O Total de Acréscimos é : “, TotalDeAcrescimos;
Escreva “O Salário Líquido é : “, SalarioLiquido;
Fim.
Bem, vamos analisar como proceder para desenvolver o algoritmo.
Devemos analisar detalhadamente o problema em questão. Bem,
como fazer isso?
Vamos refletir!!!
Será que você consegue
identificar todas as
variáveis necessárias ao
processamento durante
a extração de requisitos
do texto?
Durante a resolução
podem surgir alguns
problemas. Quando
isso ocorrer, emerge a
necessidade de criar
e inicializar outras
variáveis
Atenção a esta próxima
etapa.
Devemos ler e reler o enunciado para identificar quais são as variáveis de saída, quais são as de entrada e quais são as variáveis auxiliares ao
processamento.
Em seguida, você deve pensar nas instruções ou comandos que são
necessários para transformar os dados de entrada nas saídas desejadas.
Observe, a seguir, o que será fornecido ao algoritmo para que realize o processamento desejado.
Sobre o salário bruto de um funcionário, são descontados 8% de
INSS, 10% de IR (imposto de renda) e sobre o restante 0,5% referente à filiação sindical. Para cada dependente (filhos), o funcionário ganha R$ 50,00.
Ao ser fornecido o valor do salário bruto do funcionário e a quantidade
de dependentes, calcule:
Observe o seguinte trecho do algoritmo, a seguir:
Algoritmo CalculoDeFolha
Variáveis
SalarioBruto, INSS, IR, FS, TotalDeDescontos, TotalDeAcrescimos, SalarioLiquido : Real;
Dependentes : Inteiro;
Início
Escreva “Informe o Salário Bruto”;
Leia SalarioBruto;
Escreva “Informe a Quantidade de Dependentes”;
Leia Dependentes;
...
Fim
Veja você!!
As declarações das variáveis são relativas às variáveis de entrada
de dados.
e-Tec Brasil/CEMF/Unimontes
46
Informática
Observe que vamos identificar a declaração do que é informado ao
usuário, ou seja, aquilo que deve ser resolvido pelo algoritmo, o problema:
..., calcule:
a) O Total dos Descontos
b) Total de Acréscimo
c) Salário Líquido
Assim, observe o algoritmo:
Algoritmo CalculoDeFolha
Variáveis
SalarioBruto, INSS, IR, FS, TotalDeDescontos, TotalDeAcrescimos, SalarioLiquido : Real;
Dependentes : Inteiro;
Início
...
Escreva “O Total de Descontos é : “, TotalDeDescontos;
Escreva “O Total de Acréscimos é : “, TotalDeAcrescimos;
Escreva “O Salário Líquido é : “, SalarioLiquido;
Fim.
Note agora a existência de variáveis que não são nem de entrada
nem de saída. Podemos caracterizá-las como variáveis auxiliares, pois elas
realmente auxiliam a resolução do problema.
Vejamos o seguinte exemplo:
Algoritmo CalculoDeFolha
Variáveis
SalarioBruto, INSS, IR, FS, TotalDeDescontos, TotalDeAcrescimos, SalarioLiquido : Real;
Dependentes : Inteiro;
Início
...
INSS ← SalarioBruto*0.08;
IR ← SalarioBruto * 0.10;
FS ← (SalarioBruto – (INSS+IR)) * 0.005;
TotalDeDescontos ← INSS + IR + FS;
TotalDeAcrescimos ← (Dependentes * 50);
SalarioLiquido ← SalarioBruto – TotalDeDescontos + TotalDeAcrescimos;
...
Fim
As variáveis auxiliares,
como o próprio nome
propõe, devem ser
criadas para auxiliar
o armazenamento de
dados. Elas podem
variáveis contadoras,
para troca de dados,
para copia, etc.
No caso específico desse problema, estas variáveis são desnecessárias, pois o resultado pode ser obtido diretamente, mediante operações
matemáticas. Vejamos como poderia ficar esta resolução.
Algoritmos
47
e-Tec Brasil/CEMF/Unimontes
Agora, vamos analisar o próximo exemplo:
Algoritmo CalculoDeFolha
Variáveis
SalarioBruto, TotalDeDescontos, TotalDeAcrescimos, SalarioLiquido : Real;
Dependentes : Inteiro;
Início
...
TotalDeDescontos ← (SalarioBruto * 0.08) + (SalarioBruto * 0.10);
TotalDeDescontos ← (SalarioBruto – TotalDeDescontos) * 0.005;
...
Fim.
...
Observe!
Para a implementação, optou-se por duas linhas para o cálculo do
desconto, pois a Filiação Sindical é sobre o Salário Bruto já descontado o INSS
e IR. É bom deixar claro que, matematicamente, daria para incluir tudo isso
em uma única linha, porém poderia ficar “poluída”, dificultando a compreensão da referida linha de operação.
Além disso, é importante documentar as funcionalidades do algoritmo, para facilitar o entendimento e, principalmente, a manutenção.
Podemos pensar em outra resolução para o mesmo problema??
Sim! Outra forma de resolução é sem o uso das variáveis de saída.
Reflita!
O uso excessivo
de variáveis é
benéfico auxiliando
na manutenção das
funcionalidades
específicas. Porém,
com o decorrer do
aprendizado, podemos
otimizar o desempenho
e os recursos utilizados.
Assim, veja o algoritmo:
Algoritmo CalculoDeFolha
Variáveis
SalarioBruto : Real;
Dependentes : Inteiro;
Início
...
Escreva “O Total de Descontos é : “, (SalarioBruto * 0.08) +
(SalarioBruto * 0.10) + ((SalarioBruto – ((SalarioBruto * 0.08) + (SalarioBruto *
0.10))) * 0.05;
Escreva “O Total de Acréscimos é : “, (Dependentes * 50);
Escreva “O Salário Líquido é : “, SalarioBruto – ((SalarioBruto
* 0.08) +(SalarioBruto * 0.10) + ((SalarioBruto – ((SalarioBruto * 0.08) + (SalarioBruto * 0.10))) * 0.05) + (Dependentes * 50);
Fim
...
e-Tec Brasil/CEMF/Unimontes
48
Informática
Note a expressão acima. Há casos em que isso não é recomendado,
tampouco deverá ser feito, pois, em uma necessidade de alteração, dificultará a compreensão.
Agora é com você!!
Desenvolva um programa que receba o salário-base de um funcionário, calcule e mostre o salário a receber, sabendo-se que esse funcionário
tem gratificação de 5% sobre o saláriobase e paga imposto de 7% sobre o
salário-base.
Algoritmo CalculoDeFolha
Variáveis
SalarioBase, SalarioLiquido : Real;
Início
Escreva “Informe o Salário Base”;
Leia SalarioBase;
SalarioLiquido ← SalarioBase + (SalarioBase * 0.05) –
(SalarioBase * 0.07);
Escreva “O Salário Líquido é : “,SalarioLiquido;
Fim
O problema a ser solucionado nesse enunciado é relativamente
simples. Será informado pelo usuário um valor qualquer (SalarioBase) e
sobre esse valor deverão ser aplicados dois percentuais: um como crédito
(gratificação) ao valor informado, e outro como débito (imposto). Ou seja, o
primeiro valor aumentará o valor inicial, e o segundo diminuirá. Os valores a
serem aplicados estão explícitos no enunciado, devendo apenas ser aplicados
em uma fórmula/expressão.
Perceba que, nesse pseudocódigo, foram utilizadas apenas as variáveis necessárias: a de entrada (SalarioBase) e a de saída (SalarioLiquido).
Poderia optar-se por um desenvolvimento mais detalhado e fazer uso de
variáveis auxiliares, mas não seria nada otimizado e muito menos útil nesse
caso. Caso se opte por esse uso, a resolução seria à semelhança do mostrado
a seguir.
Algoritmo CalculoDeFolha
Variáveis
SalarioBase, SalarioLiquido, Credito, Debito : Real;
Início
...
Credito ← (SalarioBase * 0.05);
Debito ← (SalarioBase * 0.07);
SalarioLiquido SalarioBase + Credito – Debito;
...
Fim.
Algoritmos
49
e-Tec Brasil/CEMF/Unimontes
Observe que, como foram informados os valores em percentual a
serem descontados, esses puderam ser aplicados diretamente na fórmula,
sem necessidade de aplicar a regra de três.
Podemos observar, no exemplo trabalhado anteriormente, que todos os blocos de comandos usados foram sequenciais. Isso aconteceu por se
tratar da resolução dos cálculos somente de um empregado. Além disso, a
empresa não optou por nenhuma regra diferente para calcular os valores em
função dos dados dos empregados.
Para melhor compreensão dos comandos sequenciais, mostraremos alguns exemplos, a seguir.
Exemplos
1) Faça um algoritmo para imprimir “Olá todos”
Algoritmo mensagem
{ OBJETIVO: IMPRIMIR MENSAGEM DE SAUDACAO
DATA CRIACAO: 18/10/2010 }
Início
Escreva(“Olá a todos!”);
Fim.
2) Faça um algoritmo para mostrar a adição de dois números
Algoritmo soma
{OBJETIVO: IMPRIMIR A ADICAO DE DOIS NUMEROS
Autor: nome
DATA CRIACAO: 18/10/2010}
inteiro: num1, num2;
início
Escreva(“Digite o primeiro número.”);
leia(num1);
Escreva(“Digite o segundo número.”);
leia(num2);
Escreva(“A adição dos números é: ”, num1 + num2);
fim.
3) Faça um algoritmo para mostrar saudação
Algoritmo saudação
{OBJETIVO: IMPRIMIR MENSAGEM DE SAUDACAO A ALGUM NOME
AUTOR: nome
DATA CRIACAO: 18/10/2010}
caractere: nome;
Início
imprima(“Digite um nome.”);
leia(nome);
imprima(“Olá ”, nome, “!”);
Fim.
e-Tec Brasil/CEMF/Unimontes
50
Informática
4) Faça um algoritmo para converter horas em minutos
Algoritmo minutos
{OBJETIVO: CONVERTER QTDE DE HORAS EM MINUTOS
AUTOR: nome
DATA CRIACAO: 18/10/2010 }
inteiro: horas, minutos, total;
Início
Escreva (“Digite uma quantidade de horas.”);
Leia(horas);
Escreva(“Digite uma quantidade de minutos.”);
Leia(minutos);
total = horas * 60;
total = total + minutos;
Escreva(“A quantidade de minutos é: ”, total);
Fim.
5) Faça um algoritmo para converter radianos em graus
Algoritmo radianos
{OBJETIVO: CONVERTER RADIANOS EM GRAUS, MINUTOS E
SEGUNDOS
AUTOR:nome
DATA CRIACAO: 18/10/2010 }
real: radianos;
inteiro: graus, minutos, segundos;
Início
Escreva (“Digite uma quantidade de radianos.”);
Leia (radianos);
graus = int(radianos * 180);
minutos = int((radianos * 180 - graus) * 60);
segundos = int((((radianos * 180 - graus) * 60) - minutos) * 60);
Escreva (“A quantidade de radianos é: ”, graus, “ graus, ”,
minutos, “ minutos e ”, segundos, “ segundos.”);
Fim.
6) Faça um algoritmo para converter temperatura
Algoritmo temperatura
{OBJETIVO: CONVERTER TEMPERATURA EM GRAUS CELSIUS
PARA FAHRENHEIT
AUTOR: nome
DATA CRIACAO: 18/10/2010 }
real: cel;
Início
Escreva(“Digite a temperatura em graus Celsius.”);
Leia(cel);
Escreva(“A temperatura em Farenheit é: ”, 32 + 1.8 * cel);
Fim.
Algoritmos
51
e-Tec Brasil/CEMF/Unimontes
7) Faça um algoritmo para calcular a hipotenusa de um triangulo
Algoritmo hpotenusa
{OBJETIVO: CALCULAR A HIPOTENUSA DE UM TRIANGULO
AUTOR: nome
DATA CRIACAO: 18/10/2010 }
real: lado1, lado2;
início
Escreva(“Digite o valor do primeiro lado do triângulo.”);
Leia(lado1);
Escreva(“Digite o valor do segundo lado do triângulo.”);
Leia(lado2);
Escreva(“O valor da hipotenusa é: ”, sqrt(lado1 ^ 2 + lado2 ^ 2))
Fim.
8) Faça um algoritmo para calcular gasto de combustível
Algoritmo gasto
{OBJETIVO: CALCULAR OS GASTOS DE COMBUSTIVEL DE UM
AUTOMOVEL
AUTOR: nome
DATA CRIACAO: 18/10/2010 }
Crie um exemplo de
algoritmo que utiliza
comandos seqüenciais
e utilize o AVEA para
compartilhar a idéia
com seus colegas.
real: preco, litros, distancia;
Início
Escreva(“Digite o preço do litro combustível.”);
Leia(preco);
Escreva(“Digite a quantidade de litro(s) gasto(s).”);
Leia(litros);
Escreva(“Digite a distância percorrida em Km.”);
Leia(distancia);
Escreva(“O valor gasto em $/Km é: ”, preco * litros / distancia);
Escreva(“O valor gasto em lt/100Km é: ”, litros * 100 / distancia)
Fim.
Resumo
Na unidade estudada, você pôde perceber as sequências simples
de comandos. Você deve compreender que tal disposição de comandos é
de simples elaboração, uma vez que segue uma sequência de operações. As
sequências simples, em geral, são mescladas com as sequências condicionais
e com os comandos de repetição para solucionar problemas mais complexos.
e-Tec Brasil/CEMF/Unimontes
52
Informática
Atividades de aprendizagem
1) Qual a estrutura dos blocos de comandos você pode usar na sequência
simples?
2) Faça um algoritmo para calcular a raiz quadrada de um número n.
3) Faça um algoritmo para calcular o seno de um número n.
4) Faça um algoritmo para calcular o resto da divisão de um número n por m.
5) Faça um algoritmo para calcular o quociente da divisão de um número n
por m.
6) Faça um algoritmo para calcular a média aritmética de 2 números informados pelo usuário.
7) Faça um algoritmo para calcular a multiplicação de 3 números informados
pelo usuário.
8) Faça um algoritmo para extrair e exibir a parte inteira e a parte decimal
de um número.
9) Faça um algoritmo para transformar um numero negativo em positivo.
10) Faça um algoritmo para mostrar 3 números informados pelo usuário na
ordem invertida da entrada. Por exemplo, se o usuário informou 1, 2 e 3,
mostre 3,2,1.
Algoritmos
53
e-Tec Brasil/CEMF/Unimontes
AULA 1
Alfabetização Digital
Aula 5 - Comandos condicionais
Condições são comparações realizadas entre componentes de comparação, sendo esses, variáveis, expressões matemáticas, campos de uma
determinada estrutura de dados. Tais comparações possuem respostas verdadeiras ou falsas. As condições podem ser simples ou compostas.
Assim, por meio do estudo desta unidade, esperamos que você seja
capaz de:
- Compreender a estrutura dos comandos condicionais;
- Aplicar o uso do comando se simples e composto;
- Aplicar o uso o comando caso.
5.1 Condição Simples e condição composta
A condição simples somente trabalha com uma opção de resposta,
verdadeira ou falsa, possuindo, dentro da estruturação do comando condicional, somente uma alternativa de processamento.
A condição composta trabalha com as duas opções de resposta,
verdadeira e falsa, tendo alternativa de processamento tanto para a saída de
verdade da condição quanto da saída de falso, na estruturação do comando
condicional.
Assim, para estruturar as condições, simples e composta, mostram-se as possibilidades:
Se condição (verdadeira) então
Grupo de comandos
Fim se.
Vejamos o trecho do algoritmo:
...
Se a = 1 então
B = 0;
C = A;
Fim se;
...
Quando o valor de a for igual a 1, B recebe zeros e C recebe 1.
Quando o valor de a for diferente de 1, o controle de execução sai
para a próxima instrução após o Fim se,
Algoritmos
55
e-Tec Brasil/CEMF/Unimontes
Se não condição (falsa) então
Grupo de comandos
Fim se.
Vejamos o trecho do algoritmo:
...
Se não a = 1 então
B = 0;
C = A;
Fim se;
Quando o valor de a for diferente de 1, B recebe zeros e C recebe 1.
Quando o valor de a for igual a 1, o controle de execução sai para a
próxima instrução após o Fim se,
Se condição (verdadeira) então
Grupo de comandos
Senão (falsa)
Grupo de comandos
Fim se
Devemos observar
que pode haver
aninhamentos
condicionais. Quando
se tem várias condições
que dependem da
resposta anterior,
devemos estruturar
uma instrução SE
interna a outra. Não
há numero máximo
de aninhamentos de
instrução SE.
Vejamos o trecho do algoritmo:
...
Se a = 1 então
B = 0;
C = A;
Senão
B = 2;
C = B;
Fim se
Quando o valor de a for igual a 1, B recebe zeros e C recebe 1 e o
controle de execução sai para a próxima instrução após o Fim se,
Quando o valor de a for diferente de 1, B = 2 e C = B e o controle de
execução sai para a próxima instrução após o Fim se,
Com o uso de
aninhamentos, devemos
tomar cuidado para não
perdermos o controle da
lógica do processo.
e-Tec Brasil/CEMF/Unimontes
O exemplo, a seguir, mostra mais essa possibilidade:
Se condição (verdadeira) então
Grupo de comandos
Se condição (verdadeira) então
Grupo de comandos
Senão
Grupo de comandos
Fim se
Senão (falsa)
Grupo de comandos
Fim se
56
Informática
5.2 Condição simples: conectivo condicional
se... então
A condição simples trabalha somente com uma saída definida no
comando, conforme vimos anteriormente.
Por exemplo:
Se saia é clara então coloque avental;
....
Então é resultado de uma condição verdadeira. No caso do exemplo
acima, se a condição for falsa, segue a sequência do algoritmo.
Para elucidar o comando condicional, no exemplo, a seguir,
você vai conhecer um algoritmo que busca o menor valor existente em
um conjunto.
Algoritmo menorvalor
variaveis
Inteiro: valor, menor;
início
valor = 0;
menor = 0;
LEIA (valor);
menor = valor;
ENQUANTO valor <> -1 FAÇA
SE valor < menor ENTÃO menor = valor
LER (VALOR);
FIM ENQUANTO;
Escreva (MENOR);
Fim
Você deve observar que no algoritmo anterior há uma condição com
uma só saída:
Se Valor < menor então menor:=valor
Assim, a variável “Menor” recebe o conteúdo de “valor” se a condição “valor < menor” for verdadeira.
Caso esta condição seja falsa, o algoritmo passa para a próxima
instrução.
Vamos pensar mais um pouco...
Até agora trabalhamos com a lógica direta. Vamos ver um exemplo
de lógica reversa. Seja o trecho do algoritmo:
Algoritmos
57
e-Tec Brasil/CEMF/Unimontes
....
Se A > B senão
A:= B;
Fim se;
Há estudantes e
profissionais que se
identificam com esse
tipo de lógica. Teste
a sua habilidade. Se
para você, for mais
complicado, então use a
lógica direta.
Quando A for maior que B, o algoritmo executa a instrução que
se encontra após o fim se, e caso contrário, quando A não for maior que
B, ou seja, A é igual ou menor que B, o algoritmo executa a instrução que
se encontra dentro do bloco associado ao senão, estruturado no comando
condicional.
5.3 Condição composta: conectivo condicional
se... então senão
Como estudado anteriormente, a condição composta apresenta
tanto a saída de verdadeiro quanto a de falso. Utilizando-se a condição simples ou a composta, você pode usar o aninhamento de condições.
Veja um algoritmo que trata condição composta e de aninhamento
de condições:
Algoritmo faixa
Variaveis
Inteiro: numero;
Início
Leia numero;
Se numero < =15 e numero > 10 então
Escreva (“Número entre 11 e 15”);
Senão
Se numero <= 10 e número > 5 então
Escreva(“Número entre 5 e 10);
Senão
Se numero < = 5 então
Escreva (”numero menor ou igual a 5”)
Fim se
Fim se
Senão
Escreva (“Número maior que 15”)
Fim se;
Agora é com você!
Faça um algoritmo que leia dois valores numéricos e inteiros e efetue a soma destes valores. Caso o valor encontrado na soma:
- seja maior ou igual a 10, este valor deverá ser somado de 5;
- não seja maior ou igual a 10, este valor deverá ser subtraído de 5.
- exiba o valor final.
e-Tec Brasil/CEMF/Unimontes
58
Informática
Algoritmo Soma
Variáveis
A, B, Soma : Inteiro;
Início
Escreva “Informe o primeiro valor”;
Leia A;
Escreva “Informe o segundo valor”;
Leia B;
Soma (A + B);
Se (Soma >= 10) então
Soma = Soma + 5;
Senão
Soma = Soma – 5;
Fim Se
Escreva “O resultado de toda a operação é “, Soma;
Fim
Para você treinar mais um pouco, vamos desenvolver outra atividade.
Dados três números inteiros distintos (assume-se que o serão),
faça um algoritmo que escreva o maior número digitado.
Algoritmo MaiorNumero
Variáveis
A, B, C : Inteiro;
Início
Escreva “Informe o primeiro número”;
Leia A;
Escreva “Informe o segundo número”;
Leia B;
Escreva “Informe o terceiro número”;
Leia C;
Se (A > B) então
Se (A > C) então
Escreva “O maior número é “, A;
Senão
Escreva “O maior número é “, C;
Fim Se
Senão
Se (B > C) então
Escreva “O maior número é “, B;
Senão
Escreva “O maior número é “, C;
Fim Se;
Fim Se;
Fim.
Algoritmos
59
e-Tec Brasil/CEMF/Unimontes
Vamos supor alguns valores para as variáveis A, B e C para realizarmos testes no algoritmo anterior.
A=3B=2eC=4
O quadro 10 mostra as instruções executadas com os dados atribuídos.
QUADRO 10
Execução do algoritmo maior
instrução
Resultado condição
A é maior que B?
verdade
A é maior que C?
Falso
Resultado usuário
Maior numero é C
FIm
Fonte: Própria.
A=1B=3eC=0
O quadro 11 mostra as instruções executadas com os dados atribuídos.
QUADRO 11
Execução do algoritmo maior
instrução
Resultado condição
A é maior que B?
Falso
B é maior que C?
verdade
Resultado usuário
Maior úmero é B
Fonte: Própria.
A = 10 B = 3 e C = 0
O quadro 12 mostra as instruções executadas com os dados atribuídos.
Quadro 12
Execução do algoritmo maior
Lembre-se de que a
sequência de comandos
depende de valores
variáveis.
instrução
Resultado condição
A é maior que B?
verdade
A é maior que C?
verdade
Resultado usuário
Maior úmero é A
Fonte: Própria.
Sempre que temos um problema em que a solução depende de
comparação ou avaliação, quer sejam fornecidas diretamente pelo usuário,
quer seja ela o resultado de uma operação, devemos aplicar instrução condicional para a sua solução.
e-Tec Brasil/CEMF/Unimontes
60
Informática
Como pode ser constatado no enunciado acima, serão fornecidos
três números, que não se sabe quais são. A cada vez, podem ser números
diferentes e talvez, em uma destas execuções, o primeiro número fornecido
possa ser o maior, mas em outra não. Em outra situação, o terceiro número
poderá ser o maior. A solução deve trabalhar todas as hipóteses.
Temos então as situações seguintes que devem ser avaliadas a cada
execução.
1. Quando o valor em A for maior que B, garante que também é maior
que C? Lógico que não, pois ainda não nos cabe uma dedução. Porém, se C for
maior que A, está claro que C é maior que B também. Então A é o maior número.
2. Caso ocorra de A ser menor que B, existe garantia de que B é
maior que C? Também não. Porém, se C for maior que B, seguramente C é o
maior número, senão B o será.
Veja este trecho do algoritmo, a seguir:
...
Se (A > B) então
Se (A > C) então
Escreva “O maior número é “, A;
Senão
Escreva “O maior número é “, C;
Fim Se
Senão
Se (B > C) então
Escreva “O maior número é “, B;
Senão
Escreva “O maior número é “, C;
Fim Se;
Fim Se;
Fim.
Outra situação é que há casos em que várias contradições podem ocorrer e, além disso, mais de uma condição pode ser avaliada ao mesmo tempo.
Veja o trecho do algoritmo.
...
Se (A > B) E (A > C) então
Escreva “O maior número é “, A;
Senão Se (A < B) E (B > C) então
Escreva “O maior número é “, B;
Senão
Escreva “O maior número é “, C;
Fim Se;
Fim se;
Fim
...
...
Algoritmos
61
e-Tec Brasil/CEMF/Unimontes
Observe agora que a expressão que é operada por E, só será verdadeira se todas retornarem verdadeiro.
5.4 Estrutura condicional - Caso
Importante!
Esta estrutura não foi
tratada ainda. Muita
atenção às explicações
que seguem sobre
sua estrutura básica,
assim como sobre o
detalhamento de suas
especificidades.
Nos exemplos anteriores sobre estrutura condicional, tratou-se da
estrutura Se... então ...Senão Se...Fim Se. Porém, esta não é a única. Existe
outra estrutura que trabalha com múltiplas escolhas, que veremos a seguir.
Veja os componentes da estrutura condicional – caso
Escolha (expressão)
Caso <rótulo 1>: <Bloco de comandos>
Caso <rótulo 2>: <Bloco de comandos>
Caso <rótulo n>: <Bloco de comandos>
Senão
<Bloco de comandos>
Fim Escolha
Algumas considerações para essa nova estrutura devem ser vistas:
• A expressão é avaliada, e o valor será comparado com um dos rótulos.
• A opção senão é opcional.
• O rótulo será aqui definido como uma constante caractere ou uma
• constante numérica inteira, embora em algumas linguagens possam
• ser usadas constantes literais.
• A estrutura é muito usada em algoritmos com menus, tornandoos mais claros do que quando usamos a condição Se aninhada.
Vamos fazer a seguinte atividade:
Escrever um algoritmo que leia um peso na Terra e o número de um
planeta, e exiba o valor de seu peso nesse planeta. A relação de planetas é
dada, conforme o quadro 13, a seguir, juntamente com o valor das gravidades relativas à Terra:
QUADRO 13
Gravidade dos planetas
Gravidade dos planetas
Gravidade relativa
Planeta
1
0.37
Mercúrio
2
0.88
Vênus
3
0.38
Marte
4
2.64
Júpiter
5
1.15
Saturno
6
1.17
Urano
Fonte: Própria.
e-Tec Brasil/CEMF/Unimontes
62
Informática
Para calcular o peso no planeta utilize a fórmula:
PesoNoPlaneta = pesonaterra/100*Gravidade
Veja o algoritmo
Algoritmo PesoPlaneta
Variáveis
Opcao : Inteiro;
Peso : Real;
Início
Escreva “Planetas que podem ser analisados”;
Escreva “1-Mercúrio”;
Escreva “2-Vênus”;
Escreva “3-Marte”;
Escreva “4-Júpiter”;
Escreva “5-Saturno”;
Escreva “6-Urano”;
Leia Opcao;
Escreva “Informe seu peso atual”;
Leia Peso;
Escolha (Opcao);
Caso 1 :
Escreva “Seu peso no planeta Mercúrio é : “, (Peso/10)*0.37;
Caso 2 :
Escreva “Seu peso no planeta Vênus é : “, (Peso/10)*0.88;
Caso 3 :
Escreva “Seu peso no planeta Marte é : “, (Peso/10)*0.38;
Caso 4 :
Escreva “Seu peso no planeta Júpiter é : “, (Peso/10)*2.64;
Caso 5 :
Escreva “Seu peso no planeta Saturno é : “, (Peso/10)*1.15;
Caso 6 :
Escreva “Seu peso no planeta Urano é : “, (Peso/10)*1.17;
Senão
Escreva “A opção “, Opcao, “ não pode ser avaliada”;
Fim Escolha
Fim.
Será exibido ao usuário um menu com as opções que ele pode escolher e que serão processadas pelo pseudocódigo. Nesse caso, as opções
se referem a nomes de planetas associados a um número, como se fosse um
cardápio de um restaurante, pois, na realidade, a ideia de um menu é realmente essa. Veja no quadro, a seguir, essa situação.
Algoritmos
63
e-Tec Brasil/CEMF/Unimontes
...
Escreva “Planetas que podem ser analisados”;
Escreva “1-Mercúrio”;
Escreva “2-Vênus”;
Escreva “3-Marte”;
Escreva “4-Júpiter”;
Escreva “5-Saturno”;
Escreva “6-Urano”;
Leia Opcao;
É preciso, após a escolha do usuário, verificar qual foi esta escolha.
Poderíamos, sem problema algum, fazer uso da estrutura Se, mas
para esse tipo de situação a estrutura Escolha é a mais indicada. Quando
fazemos uso dessa estrutura, temos que informar a qual variável serão feitos
os testes e, a cada caso, informarmos o valor que está sendo comparado (que
deve existir na variável da Escolha). Veja o trecho do algoritmo, a seguir:
Escolha (Opcao);
Caso 1 :
Escreva “Seu peso no planeta Mercúrio é : “, (Peso/10)*0.37;
Caso 2 :
Escreva “Seu peso no planeta Vênus é : “, (Peso/10)*0.88;
Caso 3 :
Escreva “Seu peso no planeta Marte é : “, (Peso/10)*0.38;
Caso 4 :
Escreva “Seu peso no planeta Júpiter é : “, (Peso/10)*2.64;
Caso 5 :
Escreva “Seu peso no planeta Saturno é : “, (Peso/10)*1.15;
Caso 6 :
Escreva “Seu peso no planeta Urano é : “, (Peso/10)*1.17;
Senão
Escreva “A opção “, opcao, “ não pode ser avaliada”;
Fim Escolha
...
...
Agora é com você! Estude alguns exemplos
1) Faça um algoritmo para converter minutos em dias, horas e minutos
Algoritmo munitosemdia
E MINUTOS
e-Tec Brasil/CEMF/Unimontes
64
{OBJETIVO: CONVERTER QTDE DE MINUTOS EM DIAS, HORAS
AUTOR: nome
Informática
DATA CRIACAO: 18/10/2010 }
variaveis
inteiro: dias, horas, minutos;
Início
dias = 0;
horas = 0;
Escreva(“Digite uma quantidade de minutos.”);
leia(minutos);
se minutos >= 1440 entao
dias = div(minutos, 1440);
minutos = mod(minutos, 1440);
Fim se;
se minutos >= 60 entao
horas = div(minutos, 60);
minutos = mod(minutos, 60);
Fim se;
Escreva(“A quantidade de minutos é: ”, dias, “ dias, ”, horas,
“ horas e ”, minutos, “ minutos.”);
Fim.
2) Faça um algoritmo para simular o lançamento de uma moeda
Algoritmo moeda
{OBJETIVO: SIMULAR O LANCAMENTO DE UMA MOEDA
AUTOR: nome
DATA CRIACAO: 18/10/2010}
Variáveis
real: num;
Início
num = random(2);
Se (num) = 0 entao
Escreva(“O lançamento resultou em CARA.”)
senao
Escreva(“O lançamento resultou em COROA.”);
Fim se;
Fim.
A função Random(2) retorna um numero randômico entre zero e dois
3) Faça um algoritmo para simular o lançamento de um dado
Algoritmo
{OBJETIVO: SIMILAR O LANCAMENTO DE UM DADO
AUTOR: nome
DATA CRIACAO: 18/10/2010}
Algoritmos
65
e-Tec Brasil/CEMF/Unimontes
Variáveis
real: num;
Início
num = random(6);
se int(num) + 1 = 1 entao
Escreva(“O lançamento resultou no número 1.”)
senao
se int(num) + 1 = 2 entao
Escreva(“O lançamento resultou no número 2.”)
senao
se int(num) + 1 = 3 entao
Escreva (“O lançamento resultou no
número 3.”)
senao
se int(num) + 1 = 4 entao
Escreva(“O lançamento resultou
no número 4.”)
senao
se int(num) + 1 = 5 entao
Escreva(“O lançamento
resultou no número 5.”)
senao
Escreva (“O lançamento
resultou no número 6.”);
Fim se;
Fim se;
Fim se;
Fim se;
Fim se;
Fim.
4) Faça um algoritmo que mostre o maior número entre dois.
Algoritmo maior
{OBJETIVO: INDICAR O MAIOR NUMERO ENTRE DOIS
AUTOR: nome
DATA CRIACAO: 18/10/2010 }
Variaveis
inteiro: num1, num2;
Início
Escreva (“Digite o primeiro número.”);
L= Leia(num1);
Escreva (“Digite o segundo número.”);
Leia (num2);
se num1 > num2 entao
Escreva (“O maior número é: ”, num1)
e-Tec Brasil/CEMF/Unimontes
66
Informática
senao
Escreva (“O maior número é: ”, num2);
Fim se;
Fim.
5) Faça um algoritmo que mostre o maior número entre três.
Algoritmo maior3
{OBJETIVO: INDICAR O MAIOR NUMERO ENTRE TRES
AUTOR: nome
DATA CRIACAO: 18/10/2010}
Variaveis
inteiro: num1, num2, num3;
Início
Escreva(“Digite o primeiro número.”);
leia(num1);
Escreva(“Digite o segundo número.”);
leia(num2);
Escreva(“Digite o terceiro número.”);
leia(num3);
se (num1 > num2) e (num1 > num3) entao
Escreva(“O maior número é: ”, num1)
senao
se num2 > num3 entao
Escreva(“O maior número é: ”, num2)
senao
Escreva(“O maior número é: ”, num3);
Fim se;
Fim se;
Fim.
6) Faça um algoritmo para mostrar 3 números em ordem decrescente
Algoritmo decresce
{OBJETIVO: APRESENTAR TRES NUMEROS EM ORDEM CRESCENTE
AUTOR: nome
DATA CRIACAO: 18/10/2010}
Variáveis
inteiro: num1, num2, num3;
Início
Escreva(“Digite o primeiro número.”);
Leia(num1);
Escreva (“Digite o segundo número.”);
Algoritmos
67
e-Tec Brasil/CEMF/Unimontes
Leia(num2);
Escreva (“Digite o terceiro número.”);
Leia(num3);
Se (num1 < num2) e (num1 < num3) entao
se num2 < num3 entao
Escreva (“A ordem crescente é: ”, num1, “, ”,
num2, “ e ”, num3)
senao
Escreva (“A ordem crescente é: ”, num1, “, ”,
num3, “ e ”, num2);
fim se;
senao
se num2 < num3 entao
se num1 < num3 entao
Escreva (“A ordem crescente é: ”, num2, “, ”, num1, “ e ”, num3)
senao
Escreva (“A ordem crescente é: ”, num2, “, ”, num3, “ e ”, num1);
fim se;
senao
se num1 < num2 entao
Escreva (“A ordem crescente é: ”, num3, “, ”, num1, “ e ”, num2)
senao
Escreva (“A ordem crescente é: ”, num3, “, ”, num2, “ e ”, num1);
Fim se;
Fim se;
Fim se;
Fim.
7) Faça um algoritmo que calcule a divisão de dois números.
Algoritmo divisão
{OBJETIVO: CALCULAR A DIVISAO DE DOIS NUMEROS
AUTOR: nome
DATA CRIACAO: 01/09/2005}
Variaveis
real: num1, num2;
início
Escreva(“Digite o numerador.”);
leia(num1);
Escreva (“Digite o denominador.”);
leia(num2);
e-Tec Brasil/CEMF/Unimontes
68
Informática
se num2 <> 0 então
Escreva (“O resultado da divisão é: ”, num1 / num2)
senão
Escreva (“Não foi possível calcular porque o denominador
informado foi zero.”);
Fim se;
Fim.
8) Faça um algoritmo para calcular o valor da potencia de um número.
Algoritmo potencia
{OBJETIVO: CALCULAR O VALOR DE UMA POTENCIA
AUTOR: nome
DATA CRIACAO: 18/10/2010}
Variáveis
real: base, expoente;
Início
Escreva(“Digite o valor da base.”);
leia(base);
Escreva (“Digite o valor do expoente.”);
leia(expoente);
se base <> 0 entao
Escreva (“O resultado da potência é: ”, exp(expoente
* ln(base)))
senao
Escreva (“Não foi possível calcular porque a base
informada foi zero.”);
Fim se;
Fim.
9) Faça um algoritmo para classificar a nota de um aluno.
Algoritmo classifica
{OBJETIVO: CLASSIFICAR A NOTA DE UM ALUNO
AUTOR: nome
DATA CRIACAO: 18/10/2010}
Variaveis
real: nota;
Início
Escreva(“Digite a nota do aluno entre 0 e 20.”);
leia(nota);
se (nota >= 0) e (nota <= 5) entao
Escreva(“O aluno foi classificado como MAU.”)
senao
se (nota > 5) e (nota <= 10) entao
Algoritmos
69
e-Tec Brasil/CEMF/Unimontes
Escreva(“O aluno foi classificado como
MEDÍOCRE.”)
senao
se (nota > 10) e (nota <= 14) entao
Escreva (“O aluno foi classificado
como SUFICIENTE.”)
senao
se (nota > 14) e (nota <= 18) entao
Escreva(“O aluno foi classificado
como BOM.”)
senao
se (nota > 18) e (nota <= 20) entao
Escreva(“O aluno foi
classificado como
MUITO BOM.”)
senao
Escreva (“A nota está
fora dos padrões
estabelecidos.”);
Fim se;
Fim se;
Fim se;
Fim se;
Fim se;
Fim.
10) Faça um algoritmo para efetuar operações matemáticas.
Algoritmo operações
{OBJETIVO: EFETUAR AS OPERACOES MATEMATICAS
AUTOR: nome
DATA CRIACAO: 18/10/2010}
Variáveis
real: num1, num2;
caracter: operacao;
Início
Escreva(“Digite o primeiro número.”);
leia(num1);
Escreva(“Digite o segundo número.”);
leia(num2);
Escreva(“Digite a operação (+)adicao ou (-)subtração ou (*)
multiplicação ou (/)divisão que deseja realizar.”);
leia(operacao);
se operacao = “+” entao
Escreva(“O resultado da adição é: ”, num1 + num2)
senao
e-Tec Brasil/CEMF/Unimontes
70
Informática
se operacao = “-” entao
Escreva(“O resultado da subtração é: ”, num1
- num2)
senao
se operacao = “*” entao
Escreva(“O resultado da multiplicação
`
é: ”, num1 * num2)
senao
se operacao = “/” entao
se num2 <> 0 entao
Escreva(“O resultado da
divisão é: ”, num1 / num2)
senao
Escreva(“Não foi possível
calcular porque o
denominador informado
foi zero.”);
Fim se;
Fim se;
Fim se;
Fim se;
Fim se;
Fim.
Crie um exemplo de
algoritmo que utiliza
comandos condicionais
simples e compostos
pensando nas suas
atividades do seu dia-adia. Além disso, tente
elaborar um problema
que utiliza o recurso
condicional Caso.
Utilize o AVEA para
compartilhar a idéia
com seus colegas.
Resumo
Na unidade estudada, você verificou a aplicação das sequências
condicionais simples e compostas, além do aninhamento de condições.
Você pode perceber, internos aos comandos condicionais, blocos
de comandos sequenciais para formar o procedimento lógico de solução do
problema. Além disso, foi apresentada a estrutura condicional do tipo Caso,
que mostra outra forma de lidar com condições no pseudocódigo.
Atividades de aprendizagem
1)Elabore um Algoritmo que, dadas três temperaturas obtidas de uma cidade
ao longo do dia, indique qual a máxima e qual a mínima.
2)Numa empresa, os funcionários são pagos a R$25,00/hora. Pretende-se um
algoritmo que, a partir da leitura do número de horas de trabalho de um empregado em cada um dos 5 dias da semana, e tendo em conta os descontos
de 11% INSS e 10% de IRPF, calcule os vencimentos bruto e líquido do funcionário, bem como os respectivos descontos.
Algoritmos
71
e-Tec Brasil/CEMF/Unimontes
3)Dada uma sequência de 4 números, elabore um Algoritmo que calcule a média
dos valores positivos (ou nulos), ou seja, ignorando os valores negativos.
4) Elabore um Algoritmo que, dado um número, indique se ele é divisível por
3 ou não.
5)Elabore um Algoritmo que dados dois números, indique se algum deles é
múltiplo do outro.
6)Elabore um Algoritmo que calcule o vencimento de um funcionário, sabendo que este é calculado, adicionando-se ao vencimento base informado, as
seguintes parcelas:
• 1% por cada ano de idade superior a 25 anos.
• 3% por cada ano de casa.
• 5% por cada filho ou outro dependente.
7)Elabore um algoritmo que, dado um valor em real, indique quantas moedas
de 100, 50, 10, 5 e 1, serão necessárias para perfazer essa quantia (com o
mínimo de moedas possível).
8)Elabore um Algoritmo que dada a nota de um aluno, entre 0.0 e 20.0, indique se está Aprovado (nota ³ 9.5), Reprovado (nota < 7.5), ou Exame (7.5 ³
nota > 9.5); valide os casos fora de limites.
9)Elabore um Algoritmo que receba quatro números e que os apresente por
ordem decrescente.
10) Faça um algoritmo que leia 3 notas de um aluno e calcule a sua média
final. Considerar que a média é ponderada e que o peso das notas é: 2,3 e
5, respectivamente.
e-Tec Brasil/CEMF/Unimontes
72
Informática
AULA 1
Alfabetização Digital
Aula 6 - Estruturas de repetição
Nesta unidade, vamos passar com maior intensidade às especificidades dos pseudocódigos com estruturas de repetição.
A estrutura de repetição é caracterizada pela necessidade de executar um conjunto de instruções mais de uma vez.
Quando se necessita de várias entradas de dados, pode-se inserir
uma instrução Leia interna à estrutura de repetição.
Esperamos, assim, que ao final desta unidade você seja capaz de:
- Conhecer as estruturas de repetição existentes;
- Identificar a correta estrutura de repetição para ser usada em um
problema.
6.1 Iteração
Para você entender a estrutura de repetição, vamos agora introduzir o conceito de iteração.
Ícone glossário
A iteração é a execução repetida de um bloco de comandos ou
instruções, possuindo esse bloco de comandos, uma condição para o seu
abandono. São também conhecidas por Repetições, Laços de comandos,
Loops ou Ciclos.
Vamos pensar no caso de descascas batatas. Se tivéssemos 13 batatas para descascar:
Traz cestas com batatas
Traz panela do armário
Descasca uma batata
...13 vezes
descasca uma batata
devolve cesta à dispensa
Você sabe o que é Flag?
Flag, sinal, bandeira
é um sinal que o
programador define
quando o comando
de repetição for
interrompido. No caso
do algoritmo acima, o
flag é quando n for igual
a zero.
Assim, se o primeiro
número lido for igual a
zero, nenhum número
será elevado ao
quadrado.
Se tivéssemos 24 batatas:
Traz cestas com batatas
Traz panela do armário
Descasca uma batata
...24 vezes
descasca uma batata
devolve cesta à dispensa
Algoritmos
73
e-Tec Brasil/CEMF/Unimontes
A estrutura de repetição
também garante que
um processo repetitivo
será feito sempre da
mesma forma, não
importando se ele
ocorrerá uma, dez, cem
ou mil vezes.
A construção de algoritmos para atender as duas necessidades tem
que ter um mesmo padrão de comportamento. Pode-se, aqui, usar mecanismos para gerar iterações no algoritmo.
Assim, uma estrutura de repetição permite ao programador especificar
que uma ação será repetida enquanto alguma condição permanecer verdadeira.
Existe uma subdivisão para a estrutura de repetição:
- Condicional, com teste no início;
- Condicional, com teste no final;
- Contada.
Vejamos cada uma dessas estruturas.
6.2 Estrutura de repetição condicional com teste
no início
A repetição condicional em pseudocódigos ocorrerá de duas formas: o teste condicional (pergunta) feito antes (início) de a estrutura de
comandos ocorrer ou ao final (após) da estrutura de comandos.
A estrutura de repetição “Enquanto” testa a condição no início do
bloco de comandos repetitivos.
Enquanto <condição> faça
...
...
Bloco de Comandos
...
Fim Enquanto
O bloco de comandos será executado se a condição definida no início do Enquanto for verdadeira. O bloco de comandos é executado n vezes,
enquanto a condição for verdadeira. Cada vez que o bloco de comandos é
executado, diz-se que houve uma iteração. Quando a condição for falsa, é
executada a instrução que se encontra posicionada depois do Fim Enquanto,
saindo, portanto, da execução repetida do bloco de comandos, encontrados
dentro do Enquanto. Como a condição é testada no início do bloco de comandos, este pode não ser executado nem uma vez.
Vejamos novamente o trabalho de descascar batatas.
Traga cestas com batatas;
Traga panela do armário;
Se saia é clara então coloque avental;
Descascar batatas;
Enquanto batatas com cascas faça
Descascar batatas;
Fim enquanto;
Devolva a cesta de batatas;
e-Tec Brasil/CEMF/Unimontes
74
Informática
Vamos analisar outro exemplo que trata da estrutura de repetição
condicional com teste no início. O procedimento eleva um conjunto de números ao quadrado. Tal conjunto pode ser vazio, unitário, ou com muitos
elementos.
Algoritmo elevaquadrado
Variáveis
Inteiro: N,A;
Início
Leia(N);
ENQUANTO N <> 0 FAÇA
A = N ** 2;
Escreva(A);
Leia(N);
Fim enquanto;
FIM.
O algoritmo receberá
novos valores de
n enquanto n for
diferente de zero.
Quando n for igual a
zero, as iterações são
encerradas e finaliza o
algoritmo.
Você sabe o que é Flag?
Flag, sinal, bandeira
é um sinal que o
programador define
para que o comando
de repetição seja
interrompido. No caso
do algoritmo acima, o
flag é n igual a zero.
Agora é com você! Analise o exemplo a seguir descrito.
Calcule o imposto de renda de um grupo de contribuintes, considerando que os dados de cada contribuinte são: número de CPF, número de
dependentes e renda mensal. Para cada contribuinte, será feito um desconto
de 5% de salário mínimo por dependente. Os valores da alíquota para cálculo
do imposto são:
- Até 2 salários Mínimos : Isento;
- 2,1 até 3 salários Mínimos : 10%;
- 3,1 até 5 salários Mínimos : 15%;
- 5,1 até 7 salários Mínimos : 20%;
- Acima de 7,1 salários Mínimos: 25%.
Quando o primeiro
número lido for igual a
zero, nenhum número
será elevado ao
quadrado.
O último valor que não será considerado terá o CPF igual a zero.
Deve ser fornecido o valor atual do salário mínimo.
Algoritmo DescontoIR
Variáveis
CPF, QtdeDependentes, Aliquota : Inteiro;
Salario, SalarioMinimo, SalarioBase, ValorIR,
QtdeSalarioMinimo : Real;
Início
Escreva “Informe o Salário Mínimo”;
Leia SalarioMinimo;
Escreva “Informe o CPF”;
Leia CPF;
Enquanto (CPF <> 0) Faça
Escreva “Informe o salário do funcionário”;
Leia Salario;
Algoritmos
75
e-Tec Brasil/CEMF/Unimontes
Escreva “Informe a quantidade de; dependentes”
Leia QtdeDependentes;
SalarioBase = (Salário – (QtdeDependentes * (Salario
Minimo*0.05));
QtdeSalarioMinimo = (SalarioBase / SalarioMinimo);
Se (QtdeSalarioMinimo <= 2) Então
Aliquota = 0
Senão Se (QtdeSalarioMinimo <= 3) Então
Aliquota = 10
Senão Se (QtdeSalarioMinimo <= 5) Então
Aliquota = 15
Senão Se (QtdeSalarioMinimo <= 7) Então
Aliquota = 20
Senão
Aliquota = 25;
Fim Se;
ValorIR = (SalarioBase * Aliquota) / 100;
Fim se;
Fim se;
Fim se;
Escreva “O desconto do IR para o CPF “, CPF, “ é de “, ValorIR;
Escreva “Informe o CPF”;
Leia CPF;
Fim Enquanto;
Fim
Este exercício traz uma situação em que não sabemos quantas vezes, as instruções de um conjunto devem ser executadas. Porém sabemos
quando elas deixam de se repetir.
O primeiro passo é descobrir qual conjunto de instruções deve ser
repetido no algoritmo. Identificamos a solicitação do CPF (inclusive devido
ao fato de ele ser nosso flag). Para cada CPF, deve ser solicitada também
a quantidade de dependentes que o contribuinte tem e seu salário-base. É
importante lembrar, também, a necessidade do salário mínimo, porém este
não se repete, pois tem o mesmo valor para todo o algoritmo. Outro ponto a
ser destacado é que, a cada grupo de informações recebidas, a identificação
da alíquota de imposto em que se enquadra cada contribuinte deve ser feita.
Algoritmo DescontoIR
...
Início
Escreva “Informe o Salário Mínimo”;
Leia SalarioMinimo;
Escreva “Informe o CPF”;
Leia CPF;
Enquanto (CPF <> 0) Faça
e-Tec Brasil/CEMF/Unimontes
76
Informática
...
FimEnquanto
Fim
...
Vamos Observar!
Note, no trecho de algoritmo anterior, que o Salário Mínimo está
sendo informado antes da estrutura de repetição (Enquanto). Isso garante
que o valor informado pode ser válido para toda a estrutura, mas não quer
dizer que não possa ser solicitado dentro dela, como é o caso do CPF, que é
solicitado também antes de a estrutura começar, porém é solicitado novamente dentro da estrutura, pois ele é nosso flag.
Ainda analisando o algoritmo anterior, você deve pensar!
Se o usuário digitar o CPF 0 (zero) antes mesmo de a estrutura de
repetição começar. O que acontece?
Isso faria com que a estrutura de repetição não ocorresse nenhuma vez.
Será que você desenvolveria o pseudocódigo abaixo?
Algoritmo Estoque
Variáveis
Nome : Caractere
ValorUnitario, Quantidade, SubTotal, TotalGeral, Estoque : Real;
QtdeTipos : Inteiro;
Início
Estoque = 0;
QtdeTipos = 0;
TotalGeral = 0;
Escreva “Informe o nome do produto”;
Leia Nome;
Enquanto (Nome <> “FIM”) Faça
QtdeTipos = QtdeTipos + 1;
Escreva “Informe o valor Unitário”;
Leia ValorUnitario;
Escreva “Informe a quantidade em estoque”;
Leia Quantidade;
SubTotal = (Quantidade * ValorUnitario)
Estoque = Estoque + Quantidade
TotalGeral = TotalGeral + SubTotal;
Escreva “O valor total do produto “, Nome, “ é “, SubTotal;
Escreva “Informe o nome do produto”;
Leia Nome;
FimEnquanto
Escreva “Existem “, QtdeTipos, “ tipos de produtos”;
Escreva “O estoque em volumes é “, Estoque;
Escreva “O valor comercial do estoque é “, TotalGeral;
Fim
Algoritmos
77
Vamos reforçar aqui
o conceito de Flag.
FLAG é uma condição
predefinida que
determina o fim de uma
estrutura de repetição,
seja ela contada ou não
contada. Na contada,
o FLAG é implícito na
quantidade de vezes
que a estrutura se
repete. Na não contada,
ela depende de uma
interação do usuário
ou um comportamento
específico do algoritmo.
Agora é com você !!!
Uma empresa deseja
fazer um levantamento
de seu estoque. Para
isso, possui, para cada
tipo de produto, seu
nome, valor unitário
e sua quantidade em
estoque. A empresa
deseja saber o Valor
Contábil em estoque
de cada produto,
quantos tipos de
produtos existem em
estoque, o saldo de
todos os produtos e
Total Contábil Geral.
A digitação terminará
quando o nome do
produto for igual a
“FIM”.
e-Tec Brasil/CEMF/Unimontes
Algoritmo Estoque
Variáveis
...
Início
Estoque = 0;
QtdeTipos = 0;
TotalGeral = 0;
...
Enquanto (Nome <> “FIM”) Faça
...
FimEnquanto
...
Fim
De modo idêntico ao
exercício anterior,
percebe-se que não
se sabe quantas vezes
ocorrerá a repetição,
ou seja, quantos itens
existem na suposta
empresa. Assim, utilizase o flag nome <> fim.
Igualmente ao exercício
anterior, temos aqui o
flag, que é solicitado
antes da estrutura
começar. Novamente,
é solicitado dentro
da estrutura, antes
que termine. Caso
o primeiro nome
informado seja igual
a “fim”, não haverá
nenhuma iteração.
Observe a inicialização das variáveis. São elas que exibirão ao usuário aquilo que ele pede, sendo todas acumuladoras. Dessa forma, precisam
inicializar com zero. A variável Estoque terá a quantidade de volumes, QtdeTipos se refere a quantidade itens, e a TotalGeral trará o Estoque Contábil, ou seja, o valor financeiro do estoque da empresa. Essas três varíaveis
sofrerão alterações a cada produto informado pelo usuário.
Algoritmo Estoque
Variáveis
...
Início
...
Escreva “Informe o nome do produto”;
Leia Nome;
Enquanto (Nome <> “FIM”) Faça
...
...
FimEnquanto
...
Fim
Crie um exemplo de
algoritmo que utiliza
comandos repetitivos
com teste no início
mostrando uma massa
de testes para o
mesmo. Utilize o AVEA
para compartilhar a
idéia com seus colegas.
A diferença entre o
teste de início e o
de fim nos comandos
repetitivos é que, nos
comandos com testes
no início, os comandos
internos podem não ser
executados nem uma
vez em função do valor
do flag. No caso dos
comandos com teste
no final, pelo menor
uma vez o grupo de
comandos internos será
executado.
6.3 Comandos repetitivos condicionais com teste
no final
Quando um grupo de comandos necessita ser executado ao menos
uma vez, e tem a possibilidade de se repetir sua execução, você deve usar a
estrutura de comandos repetitivos com teste no final do bloco.
e-Tec Brasil/CEMF/Unimontes
Veja a estrutura:
78
Informática
Repita
...
...
Bloco de Comandos
..
Até <condição>
Veja o seguinte trecho do algoritmo. Execute seus passos para
obter o resultado.
...
cont :=0;
repita
cont := cont + 1;
até cont > 20
Vamos pensar no seguinte problema:
Um comerciante deseja pagar todas as suas contas do dia. Faça
um algoritmo que solicite o valor a ser pago e a Taxa de Juros, caso a conta
esteja em atraso. Calcule o Total dos valores de multa e o valor total a ser
pago. O algoritmo deverá também solicitar quantas contas serão pagas no
dia. Informe também o total de contas em atraso e o total de contas pagas
em dia. Atenção que não há possibilidade de não haver contas a pagar, ou
seja, haverá no mínimo uma conta a ser paga no dia.
Veja o algoritmo abaixo:
Algoritmo Contas
Variáveis
QtdeContasAPagar, QtdeContasPagas, tdeContasEmAtraso :
Inteiro;
ValorConta, TaxaDeJuros, TotalVlrJuros, TotalAPagar : Real;
PagoEmAtraso : String;
Início
QtdeContasPagas = 0;
QtdeContasEmAtraso = 0;
TotalVlrJuros = 0;
TotalAPagar = 0;
Escreva “Informe quantas contas serão pagas”;
Leia QtdeContasAPagar;
Repita
Escreva “Informe o valor da conta”;
Leia ValorConta;
Escreva “Esta conta está sendo paga em atraso (S/N) ?”;
Leia PagoEmAtraso;
Algoritmos
79
e-Tec Brasil/CEMF/Unimontes
Se (PagoEmAtraso = “S”) Então
Escreva “Informe o índice da taxa de juros (0-100)”;
Leia TaxaDeJuros;
QtdeContasEmAtraso = QtdeContasEmAtraso + 1
Senão
TaxaDeJuros = 0;
FimSe
TotalVlrJuros = TotalVlrJuros + (ValorConta * TaxaDeJuros / 100);
TotalAPagar = TotalAPagar + ValorConta
QtdeContasPagas = QtdeContasPagas + 1;
Até (QtdeContasPagas = QtdeContasAPagar);
Escreva “O Valor total pago por multa é “, TotalVlrJuros;
Escreva “O Valor total pago é “, (TotalAPagar + TotalVlrJuros);
Escreva “Contas em atraso : “, QtdeContasEmAtraso;
Escreva “Contas em dia : “, (QtdeContasAPagarQtdeContasEmAtraso);
Fim
A diferença entre o
teste de início e o
de fim nos comandos
repetitivos é que, nos
comandos com testes
no início, os comandos
internos podem não ser
executados nem uma
vez em função do valor
do flag. No caso dos
comandos com teste
no final, pelo menor
uma vez o grupo de
comandos internos será
executado.
Essa situação traz um levantamento financeiro para previsão de
pagamento. Não sabemos quantas contas serão pagas, mas o usuário as informará. O enunciado ainda diz que haverá sempre o mínimo de uma conta.
Isso caracteriza que a repetição ocorrerá no mínimo uma vez.
Releia o parágrafo anterior! Está na última frase a dica para fazer
o teste no fim.
Vamos a outro exemplo. Faça um algoritmo que solicite números inteiros até que um número ímpar seja digitado. O algoritmo deverá informar,
ao final, quantos números pares foram informados.
Esse exercício é
simples, talvez sinta
uma dificuldade
apenas em saber como
identificar quando um
número é ímpar ou
par, mas para resolver
isso podemos abstrair
a existência de uma
função chamada Mod ()
ou Resto( ).
e-Tec Brasil/CEMF/Unimontes
Algoritmo NumeroPares
Variáveis
Numero, QtdeNumerosPares : Inteiro;
Início
QtdeNumerosPares = 0;
Repita
Escreva “Informe um número”;
Leia Numero;
QtdeNumerosPares = QtdeNumerosPares + 1;
Até (Mod(Numero, 2) <> 0)
QtdeNumerosPares = QtdeNumerosPares – 1;
Escreva “Números pares informados “, QtdeNumerosPares;
Fim
Vamos relembrar!
80
Informática
O procedimento anterior trabalha com dois argumentos: o número
a ser dividido e o número pelo qual este número será dividido (numerador e
denominador).
6.4 Comandos repetitivos condicionais com contadores
A repetição contada é aquela em que o programador sabe, antes de
ela ocorrer, quantas vezes deverá ser executada.
Deve ficar claro, que a quantidade de vezes que o bloco de comandos será executado pode ser um valor atribuído a uma variável ou tal valor
pode ser informado pelo usuário.
Veja a estrutura do comando:
Para I:= valor inicial até valor final passo incremento faça
...
...
Bloco de Comandos
..
Fim Para
A condição que é avaliada para a execução do bloco de comandos é
se I é maior ou igual ao valor inicial e se I menor ou igual ao valor final, para
incrementos crescentes. Para incrementos decrescentes, a condição avaliada
para a execução do bloco de comandos é se I menor ou igual ao valor inicial
e se I maior ou igual ao valor final. Até significa inclusive. Quando o passo
definido para o incremento for igual a 1, este pode não ser explicitado na
linha do comando Para.
Vejamos os seguintes trechos de algoritmos:
Para i := 1 até 5 faça
Imprima(i);
Fim Para
O quadro 13 mostra os passos de execução do trecho acima.
Agora é com você!!
Criando-se uma lista de
3 números (10, 20, 45,
por exemplo) faça os
testes no algoritmo para
obter o resultado do
mesmo.
Crie um exemplo de
algoritmo que utiliza
comandos repetitivos
com teste no fim
mostrando uma massa
de testes para o
mesmo. Utilize o AVEA
para compartilhar a
idéia com seus colegas.
O comando Para provê
iterações do bloco de
comandos, controladas
pelo valor da variável
do tipo inteiro
(qualquer), nesse caso,
I que recebe um valor
inicial e é incrementada
(ou decrementada) pelo
passo, até atingir o
valor final. Ao executar
o fim para, o valor de
I sofre o incremento
definido no passo, que
pode ser positivo ou
negativo.
QUADRO 13
Execução que conta de 1 a 5.
I
condição
resultado
1
I > 5?
1
2
I > 5?
2
3
I > 5?
3
4
I > 5?
4
5
I > 5?
5
6
I > 5?
Sai do loop
Fonte: Própria.
Para i := 1 até 10 faça Passo 3
Algoritmos
81
e-Tec Brasil/CEMF/Unimontes
Imprima(i);
Fim Para
O quadro 14 mostra os passos de execução do trecho acima.
QUADRO 14
Execução que conta de 1 a 10
I
condição
resultado
1
I > 10?
1
4
I > 10?
4
10
I > 10?
10
13
I > 10?
Sai do loop
Fonte: Própria.
Para i := 100 até 0 faça Passo -10
Imprima(i);
Fim Para
O quadro 15 mostra os passos de execução do trecho acima.
Quadro 15
Execução que conta de 100 a 0
I
condição
resultado
100
I > 0?
100
90
I > 0?
90
80
I > 0?
80
70
I > 0?
70
60
I > 0?
60
50
I > 0?
50
40
I > 0?
40
30
I > 0?
30
20
I > 0?
20
10
I > 0?
10
0
I > 0?
0
-10
I > 0?
Sai do loop
Fonte: Própria.
Vamos analisar o seguinte problema:
Dado um número, faça um algoritmo que escreva todos os números
ímpares menores que esse número. Dica: Comece pelo um.
Algoritmo NumerosImpares
e-Tec Brasil/CEMF/Unimontes
82
Informática
Variáveis
Numero, I : Inteiro;
Início
Escreva “Informe um número”;
Leia Numero;
Para I = 1 Até Numero Faça
Se (Resto(I, 2) <> 0) Então;
Escreva I, “ é ímpar”;
Fim Se;
Fim Para;
Fim
Reflita !!!
O problema proposto nesse enunciado é que deverá ser solicitado
ao usuário um número, o algoritmo deverá fazer uma contagem de 1 até o
valor informado, e, a cada número contado, identificar se o mesmo é ímpar.
Se for, deve ser mostrado seu valor ao usuário.
Bem, vamos lá!! Agora é com você!
Faça um algoritmo que leia 10 números e obtenha:
a) A soma dos números;
b) A média dos números;
c) O maior número da lista;
d) O menos numero da lista.
Tudo o que estiver entre
o faça e o fimpara será
caracterizado como
o que deve ser feito
para cada ocorrência,
nesse caso verificar se a
variável I é ímpar e, em
caso positivo, informála ao usuário. Mas o
que é e o que faz essa
variável I ?
Algoritmo MenuNumeros
Variáveis
Numero, Soma, Maior, Menor, I : Inteiro;
Media : Real;
Início
Soma = 0;
Maior = 0;
Menor = 0;
Para I = 1 Até 10 Faça
Escreva “Informe um número ”, I, “ de 10.”;
Leia Numero;
Se i = 1 então
Maior = numero;
Menor = numero;
Fim se;
Soma = Soma + Numero;
Se Numero > Maior Então
Maior = Numero
Fim Se
Se Numero < Menor Então
Algoritmos
83
e-Tec Brasil/CEMF/Unimontes
Menor = Numero
Fim Se
Fim Para
Media = (Soma / 10);
Escreva “A soma dos 10 números digitados é : “, Soma;
Escreva “A média aritmética entre os 10 números; digitados
é : “, Media;
Escreva “O maior número dentre os 10 digitados é “, Maior;
Escreva “O menor número dentre os 10 digitados é : “, Menor;
Fim
Agora é com você!!!
Crie uma lista de
números (1, 100, 2 ,
300, 20, 4, 5, 2, 8 ,
90), teste o algoritmo
e produza a saída
conforme solicitado no
enunciado.
Para melhorar o entendimento das estruturas, você agora vai analisar alguns exemplos de algoritmos que tratam de repetições.
1) Algoritmo para calcular os múltiplos de 3 de 6 até n
Algoritmo calculamultiplos
{ OBJETIVO: CALCULAR OS MULTIPLOS 3 NO INTERVALOR DE 6 ATE N
AUTOR: nome
DATA CRIACAO: 18/10/2010 }
Variaveis
inteiro: num, cont;
Início
Escreva (“Digite o número limite.”);
leia(num);
para cont de 6 ate num faca
se mod (cont, 3) = 0 entao
Escreva(“O número ”, cont, “ é multiplo de 3.”);
Fim se;
Fim para;
Fim.
2) Algoritmo para imprimir a série de Fibonacci (0,1,1,2,3,5,8,
13,21....)
Algoritmo
{ OBJETIVO: IMPRIMIR UMA DETERMINADA QTDE DE NUMEROS
DE FIBONACCI
AUTOR: nome
DATA CRIACAO: 19/10/2010 }
Variaveis
inteiro: num, cont, ant1, ant2, fib;
Início
fib = 0;
ant2 = 0;
ant1 = 1;
e-Tec Brasil/CEMF/Unimontes
84
Informática
Escreva(“Digite a quantidade de números que deseja imprimir.”);
leia(num);
Escreva(fib);
fib = 1;
para cont de 2 ate num faca
Escreva(fib);
fib = ant1 + ant2;
ant2 = ant1;
ant1 = fib;
Fim para;
Fim.
3) Algoritmo para calcular o valor da expressão E = 1 + 1/1! + ½! +
.... + 1/n!
Algoritmo
{ OBJETIVO: CALCULAR O VALOR DA EXPRESSAO E = 1 + 1/1!
+ 1/2!...1/N!
AUTOR: nome
DATA CRIACAO: 19/10/2010
Variaveis
inteiro: num, cont1, cont2, fat;
real: exp;
Início
exp = 1;
imprima(“Digite o número limite da sequência.”);
leia(num);
para cont1 de 1 ate num faca
fat = 1;
para cont2 de 2 ate cont1 faca
fat = fat * cont2;
fim para;
exp = exp + 1 / fat;
fim para;
fim.
Escreva (“O valor da expressão é: ”, exp);
4) Algoritmo para calcular salário e qtde de filhos de uma cidade
Algoritmo
{ OBJETIVO: CALCULAR SALARIO E QTDE DE FILHOS DE UMA CIDADE
AUTOR: ANDRE nome
DATA CRIACAO: 19/10/2010 }
variaveis
Algoritmos
85
e-Tec Brasil/CEMF/Unimontes
Início
inteiro: numfilhos, cont, salarios100, somafilhos;
real: salario, somasalarios, maiorsalario;
cont = 0;
somasalarios = 0;
maiorsalario = 0;
cont = 0;
salarios100 = 0;
somafilhos = 0;
Escreva(“Entre com o salário.”);
leia(salario);
Escreva(“Entre com o número de filhos.”);
leia(numfilhos);
enquanto salario >= 0 faca
cont = cont + 1;
somasalarios = somasalarios + salario;
somafilhos = somafilhos + numfilhos;
se salario <= 100 entao
salarios100 = salarios100 + 1;
Fim se;
se salario > maiorsalario entao
maiorsalario = salario;
Fim se;
Escreva(“Entre com o salário.”);
leia(salario);
Escreva (“Entre com o número de filhos.”);
leia(numfilhos);
Fim enquanto;
Escreva(“A média dos salários é: ”, somasalarios / cont);
Escreva (“A média do número de filhos é: ”, somafilhos / cont);
Escreva (“O percentual de pessoas com salário até 100 é: ”,
salarios100 * 100 / cont);
Fim.
Resumo
Você estudou nesta unidade as estruturas de repetição que tratam
de processar quantidades de dados que, em muitos casos, o programador e
em outros, o programador não tem ideia. Assim, a informação do usuário é
papel fundamental para o sucesso dos resultados.
Assim, você pode conhecer os recursos da repetição com teste no
e-Tec Brasil/CEMF/Unimontes
86
Informática
início, repetição com teste no fim, além da repetição contada.
Esperamos que os exemplos tenham auxiliado na compreensão de
mais esses conceitos! Vamos em frente!
Chegamos ao final da leitura desta unidade e não poderíamos deixar de parabenizá-lo por estar conosco até aqui e cheio de vontade para
continuar o estudo da próxima unidade.
Atividades de aprendizagem
1) Elabore um Algoritmo que depois de ler uma sequência de N números (N
informado pelo usuário), apresente os seguintes resultados: máximo, mínimo, somatório, a quantidade de números superiores a 10, a percentagem de
valores superiores a 10, a média, a média dos valores superiores a 10.
2) Construir um algoritmo que calcule a média aritmética de vários valores
inteiros positivos. O final da leitura acontecerá quando for lido um valor
negativo.
3) Em uma eleição presidencial existem quatro candidatos. Os votos são informados através de códigos. Os dados utilizados para a contagem dos votos
obedecem à seguinte codificação:
- 1,2,3,4 = voto para os respectivos candidatos;
- 5 = voto nulo;
- 6 = voto em branco;
Elabore um algoritmo que leia o código do candidato em um voto. Calcule e
escreva:
- total de votos para cada candidato;
- total de votos nulos;
- total de votos em branco.
Como finalizador do conjunto de votos, tem-se o valor 0.
4) Escreva um algoritmo que calcule a média dos números digitados pelo
usuário, se eles forem pares. Termine a leitura se o usuário digitar zero (0).
5) Escreva um algoritmo que leia o código de n alunos e suas três notas.
Algoritmos
87
e-Tec Brasil/CEMF/Unimontes
Calcule a média ponderada do aluno, considerando que o peso para a maior
nota seja 4 e para as duas restantes, 3. Mostre o código do aluno, suas três
notas, a média calculada e uma mensagem “APROVADO” se a média for
maior ou igual a 5 e “REPROVADO” se a média for menor que 5. Repita a
operação até que o código lido seja negativo.
6)Escrever um algoritmo receba um numero x. Após, calcule a sua tabuada
de 1 até n, de um. Mostre a tabuada na forma:
1xn=n
2 x n = 2n
3 x n = 3n
.......
n x n = n2
7) Escrever um algoritmo que leia um número n que indica quantos valores
devem ser lidos a seguir. Para cada número lido, mostre uma tabela contendo o valor lido e o fatorial desse valor.
8)Escrever um algoritmo que leia um número não determinado de valores e
calcule a média aritmética dos valores lidos, a quantidade de valores positivos, a quantidade de valores negativos e o percentual de valores negativos e
positivos. Mostre os resultados.
9)Escrever um algoritmo que leia uma quantidade desconhecida de números
e conte quantos deles estão nos seguintes intervalos: [0,25], [26,50], [51,75]
e [76,100]. A entrada de dados deve terminar quando for lido um número
negativo.
10) Faça um algoritmo que leia vários números inteiros e calcule o somatório
dos números negativos. O fim da leitura será indicado pelo número 0.
Para Todos os
algoritmos que
você criou nessa
unidade, elabore uma
massa de testes. Ao
terminar,utilize o AVEA
para compartilhar a
idéia com seus colegas.
e-Tec Brasil/CEMF/Unimontes
88
Informática
AULA 1
Alfabetização
Digital
Aula
7 - Variáveis
homogêneas – Vetores
e Matrizes
Você deve lembrar que definimos variável como uma entidade criada para permitir o acesso a uma posição de memória, onde se armazena uma
informação de um determinado tipo de dado pela simples referência a um
nome simbólico.
Nem sempre os tipos básicos inteiro, real, caractere e lógico são
suficientes para exprimir estruturas de dados em algoritmos. Dessa forma,
surge a necessidade da criação da definição de novos tipos. Aparecem então
as variáveis indexadas.
Ao final desta unidade, esperamos que você seja capaz de:
- Conhecer e aplicar o uso de índices;
- Definir variáveis homogêneas do tipo vetores e matrizes;
- Aplicar o uso de vetores e matrizes para as mais distintas aplicações.
7.1 Vetores
Vetor é uma variável dividida em n partes, sendo esse número n, a
sua dimensão.
Por exemplo, se um professor quiser armazenar notas de 80 alunos,
ele pode definir uma variável nota e dividi-la em 80 partes e, cada parte recebe o valor da nota de cada aluno. Essa nota é referenciada por um índice
delimitado de 1 até 80, usado para o manuseio às partes da variável nota,
como a seguir.
Variáveis indexadas
é um conjunto de
variáveis do mesmo
tipo, referenciáveis
pelo mesmo nome e
individualizadas entre
si, em função de sua
posição, referenciada
pelo índice. Quando
a variável é indexada
por um índice, trata-se
de um vetor. Por sua
vez, quando a mesma
é referenciada por, no
mínimo dois índices,
trata-se de matriz.
Para acessar cada
parte do vetor, faz-se
necessária a presença
de uma variável que
armazena o número de
cada parte do vetor,
de 1 até n, sendo essa
variável denominada de
índice.
Nota
5.0
30.
80.
1
2
3
...............
9.5
80
A criação do tipo vetor pode ser feita segundo a seguinte especificação:
Tipo v = vetor [li :ls] <tipo básico>;
Onde li = limite inferior
Ls = limite superior
Tipo básico = um dos quatro tipos primitivos
Algoritmos
89
A utilização do
vetor viabiliza a
implementação de
procedimentos mais
elaborados como, por
exemplo, métodos de
ordenação de dados,
procedimentos de
pesquisa aos dados,
como veremos mais
adiante.
e-Tec Brasil/CEMF/Unimontes
Para representar a variável nota, faz-se a definição:
Tipo v = vetor [1:80] real;
v: nota;
O número de elementos do vetor é dado por (ls - li +1).
Então, se substituirmos os dados do vetor acima defina, temos:
80 -1 + 1= 80
Agora é com você!!
Seja a variável vetor definida abaixo. Qual o número de elementos do
vetor?
Tipo v = vetor [5:9] caracter;
V:nome
Solução:
O vetor tem 9-5+1= 5 elementos e pode ser visto como:
5
6
7
8
9
Os índices do vetor são os números de 5 a 9. Assim, podemos indexar o vetor com intervalos de valores, os mais distintos, não tendo que
ser, necessariamente, os índices somente do tipo inteiro. Eles podem ser
também do tipo caractere, lógico, dependendo da forma de elaboração do
procedimento lógico. A situação mais comum é quando se define um vetor
com índices inteiros.
Cada elemento do vetor é tratado como se fosse uma variável simples. Para a referência a um elemento, usa-se o nome do vetor e a identificação do elemento (índice) entre colchetes ou parênteses. Por exemplo, se
necessitarmos definir o valor “João” ao elemento identificado pelo índice 6
do vetor anterior teríamos:
Nome[6]:=”joão”
joão
5
6
7
8
9
Agora é com você!!!
Faça um algoritmo que leia no máximo 10 números e, após a sua
leitura, mostre ao usuário em ordem inversa à digitada por ele.
Algoritmo OrdemInversa
e-Tec Brasil/CEMF/Unimontes
90
Informática
Variáveis
I, N : Inteiro
Tipo v = Vetor [1:10]:inteiro;
V: entrada;
Início
Repita
Escreva “Informe a quantidade de números que digitará”;
Leia N;
Até ((N > 0) E (N <= 10))
Para I = 1 Até N Faça
Escreva “Informe o número “, I, “ de “, N;
Leia Entrada[I];
FimPara
I = N;
Enquanto ( I > 0) Faça
Escreva “Número “, I, “ de “, N, “ é “, Entrada[I]
I = I – 1;
FimEnquanto;
Fim
No desenvolvimento desse pseudocódigo, são trabalhados alguns
novos conceitos. Quando definimos uma variável de conjunto (vetor ou matriz), devemos definir também a capacidade máxima de armazenamento que
ela aceita, ou seja, a quantidade de elementos (valores) que ela suportará.
A esse tamanho máximo, damos o nome de Tamanho Físico.
Ao que realmente foi utilizado do conjunto, ou seja, a essa quantidade de elementos utilizados é dado o nome de Tamanho Lógico. Para que
isso aconteça, devemos ter um controle para saber o tamanho físico e, de tal
espaço, quantas posições serão utilizadas. Esse controle deve ser feito em
variáveis distintas.
Observe com atenção
que a reserva do
tamanho do vetor
não implica sua real
utilização: podemos
optar (necessitar) usar
menos (nunca mais).
Vamos a mais um exemplo!
Faça um algoritmo capaz de verificar se um dado caractere existe
ou não na cadeia lida, como a seguir:
A
K
J
L
P
H
B
I
R
E
T
X
Z
Q
N
B
N
M
O
P
Algoritmo pesquisacaractere
Variaveis
Tipo v = vetor [1:20]:caractere;
V : letra;
Info : caractere;
I : inteiro;
Algoritmos
91
e-Tec Brasil/CEMF/Unimontes
O comando Abandone
executa a ação de
abandonar o loop ou
iteração no momento
em que o conteúdo
procurado for
encontrado em alguma
posição do vetor.
Início
Para I de 1 até 20 faça
Leia Letra[i];
Fim para
Leia info;
Para I de 1 até 20 faça
Se Letra[i] = info então
Escreva Info, está na posição “, i, “ do vetor”;
Abandone;
Fim se;
Fim Para
Fim
Vamos falar agora do comando abandone...
Como o vetor tem 20 posições, o pior caso que vai acontecer é percorrer as 20 posições e não encontrar o conteúdo procurado. Pode também
haver o caso de se percorrer o vetor e somente na posição 20m encontrar o
conteúdo.
Tanto no melhor caso, que é encontrar o conteúdo na primeira posição do vetor e no caso médio, encontrar nas demais posições com exceção
da última, o processamento abandona a iteração, pois já cumpriu seu objetivo. Esse recurso diminui o tempo de processamento do algoritmo, fazendo-o
um pouco mais otimizado.
Vamos refletir:
Se a informação introduzida pelo usuário na variável info estiver em
alguma posição do vetor, então o algoritmo irá emitir a seguinte mensagem:
O conteúdo de info está na posição I do vetor.
Caso não seja encontrado o conteúdo, o algoritmo finaliza sem mostrar nada.
Mas como fazer para que o algoritmo mostre quando encontrou e
quando não encontrou o conteúdo procurado?
Dessa forma, vamos usar uma variável do tipo lógico para auxiliar
na resolução do problema.
Algoritmo pesquisacaractere
Variaveis
Tipo v = vetor [1:20]:caractere;
V : letra;
Info : caractere;
Achou: lógico;
I : inteiro;
e-Tec Brasil/CEMF/Unimontes
92
Informática
início
Para I de 1 até 20 faça
Leia Letra[i];
Fim para;
Leia info;
Achou = falso;
Para I de 1 até 20 faça
Se Letra[i] = info então
Achou = verdadeiro;
Abandone;
Fim se;
Fim Para;
Se achou então
Escreva Info “ está na posição “, i, “ do vetor”;
Senão
Escreva (“A informação procurada não se encontra no
vetor”);
Fim SE;
Fim
A variável achou, como
é do tipo lógico, pode
receber os valores falso
ou verdadeiro.
Para inserir a variável do tipo lógico em comandos condicionais,
basta descrever a sintaxe:
Se achou então
A semântica é: Se achou é verdadeiro.....
Para prover ainda mais recursos de desenvolver o seu algoritmo, vamos
agora mostrar as variáveis indexadas, composta de dois índices: as matrizes.
7.2 Matrizes
Uma vez que as variáveis têm o mesmo nome, o que as distingue
são índices que referenciam sua localização dentro da estrutura. Uma variável do tipo matriz é composta por linhas e colunas. A matriz é uma variável
indexada, com, no mínimo, duas dimensões. Cada dimensão da matriz deve
receber um índice distinto.
A criação do tipo matriz pode ser feita segundo a seguinte especificação:
Tipo v = matriz [li :ls, li1:ls1] <tipo básico>;
Uma matriz é uma
variável composta,
homogênea, no
mínimo bidimensional,
formada por uma
sequência de variáveis,
todas do mesmo
tipo, com o mesmo
identificador (mesmo
nome) e alocadas
sequencialmente na
memória.
Onde li = limite inferior da linha
Ls = limite superior da linha
Algoritmos
Li1 = limite inferior da coluna
Ls1 = limite superior da coluna
Tipo básico = um dos quatro tipos primitivos
93
e-Tec Brasil/CEMF/Unimontes
Para representar a variável nota, faz-se a definição:
Tipo v = vetor [1:10, 1:10] real;
v: nota;
Assim, cria-se uma variável de 10 x 10, do tipo real, como se mostra, a seguir:
1
2
3
4
5
6
7
8
9
10
1
2
3
4
5
6
7
8
9
10
Para preencher as posições da matriz, podemos usar o seguinte
procedimento:
Algoritmo Boletim
Variáveis
Tipo m = matriz [1:10, 1:10] inteiro;
M = aluno
I , J: Inteiro
Início
Para I = 1 Até 10 Faça
Para J = 1 até 10 faça
Escreva “Informe o conteúdo da posição”;
Leia Aluno[I, J];
Fim Para
Fim Para
Fim
Quando você necessitar mostrar o conteúdo da matriz, proceda da
mesma forma, inserindo a instrução escreva:
Escreva aluno [I, J]
Você pode observar que no exemplo anterior usamos dois índices (I
e J), além de comandos de repetição aninhados.
Agora é com você!!!
e-Tec Brasil/CEMF/Unimontes
94
Informática
Execute passo a passo e mostre os resultados obtidos.
Vamos analisar o seguinte problema:
Faça um algoritmo que solicite quatro notas e seus respectivos pesos. Esses valores deverão estar armazenados em uma única matriz. Ao final,
exiba média ponderada dessas notas. Assuma que as notas são de zero a cem
(0 a 100).
Algoritmo Boletim
Variáveis
Tipo m = matriz [1:4, 1:2] inteiro;
M = Numerador, Denominador, aluno
I : Inteiro;
Media : Real;
Início
Numerador = 0;
Denominador = 0;
Para I = 1 Até 4 Faça
Escreva “Informe a nota “, I, “ do aluno”;
Leia Aluno[I, 1];
Escreva “Informe o peso da nota “, I;
Leia Aluno [I, 2];
Numerador = Numerador + (Aluno[I, 1] * Aluno[I, 2]);
Denominador = Denominador + Aluno[I, 2];
FimPara;
Media = (Numerador / Denominador);
Escreva “A média do aluno é “, Media;
Fim
Vamos supor que são 4 notas, uma por bimestre. A própria estrutura criada para a matriz, através do índice de linha, pode controlar a nota
de cada bimestre.
Vamos analisar mais um exemplo de uso de matrizes.
Outro ponto para
reflexão!!!
No algoritmo anterior,
trabalhamos com
uma matriz e usamos
somente uma estrutura
de repetição. Nesse
problema foi possível
trabalhar com o índice
I e manter constante o
conteúdo do segundo
índice da matriz.
Um comerciante deseja pagar todas as suas contas do dia. Faça
um algoritmo que solicite o valor a ser pago e a taxa de juros para a conta.
Lembre-se de que, caso a conta seja paga em dia, a taxa de juros é zero.
Calcule o total dos valores de multa e o valor total a ser pago. O algoritmo
deverá também solicitar quantas contas serão pagas no dia.
Algoritmo Pagamento
Variáveis
I, QtdeContas : Inteiro;
Tipo m = matriz[1:2, 1:5] Real;
M = Contas;
TotalMultas, TotalContas: Real;
Algoritmos
95
e-Tec Brasil/CEMF/Unimontes
Proponha uma discussão
no AVEA que trata da
utilização dos vetores
e matrizes. Insira seus
algoritmos e compareos com os aqueles
criados pelos colegas.
Início
Repita
Escreva “Informe quantas contas serão pagas”;
Leia QtdeContas;
Até (QtdeContas > 0 E QtdeContas <= 5)
TotalMultas = 0;
TotalContas = 0;
Para I = 1 Até QtdeContas Faça
Escreva “Informe o valor da conta ”, I, “ de “, QtdeContas;
Leia Contas[1, I];
Escreva “Informe a taxa de juros da conta “, I, “ de “,
QtdeContas;
Leia Contas[2, I];
TotalMultas = TotalMultas + (Contas[1, I] * Contas[2, I] / 100);
TotalContas = TotalContas + Contas[1, I];
FimPara;
Escreva “O total a ser pago em multa é “, TotalMultas;
Escreva “O valor total a ser pago é “, TotalContas + TotalMultas;
Fim
Resumo
Chegamos ao final de mais uma unidade. Tenho certeza de que você
está observando que, quanto mais avançamos no conteúdo, mais conhecemos recursos interessantes para aplicar na lógica de programação.
Esperamos que agora seu entendimento torne-se cada vez mais claro sobre o armazenamento de dado em variáveis indexadas, assim como o
manuseio com as mesmas.
Esta unidade tratou de temas importantes, um pouco mais complexos que os abordados nas unidades anteriores, exigindo leitura mais aprofundada e uma análise mais detalhada dos exemplos mostrados.
Por isso, voltamos a convidá-lo a expandir seus conhecimentos a
respeito desses assuntos por meio da pesquisa. Relembramos que a inquietação e a busca por novas informações é um grande passo para o sucesso em
qualquer área da vida. Mãos à obra!
Atividades de aprendizagem
1)Elabore um Algoritmo que leia uma sequência de n números, e os mostre
por ordem inversa.
e-Tec Brasil/CEMF/Unimontes
96
Informática
2) Elabore um Algoritmo que dada uma sequência de números, indique qual
a percentagem que cada um representa em relação ao total.
3) Elabore um Algoritmo que, dado um conjunto de temperaturas de cidades
portuguesas, identificadas por um n.º de ordem, indique quais as que têm
temperatura superior à média do país. Mostre uma lista de temperaturas
ordenadas por ordem decrescente.
4) Elabore um Algoritmo que, dadas as notas de um conjunto de alunos,
apresente o n.º de ocorrências de cada uma das notas que se situem entre
a nota mínima e a nota máxima. No fim, apresente os seguintes valores estatísticos: nota máxima; nota mínima; n.º de zeros; média das notas; n.º de
notas superiores à média.
5).Elabore um algoritmo que dada uma sequência de nomes, os apresente
por ordem alfabética.
6) Dada uma sequência de números, determine a percentagem daqueles que
são: superiores à média dos elementos que a constituem; inferiores ao antepenúltimo elemento da sequência.
7)Elabore um algoritmo que, baseando-se nos valores de produção mensal
de uma fábrica de automóveis num dado ano, calcule e apresente: os valores
mensais acumulados de produção ao longo do ano; o mês em que foi atingida
metade da produção anual.
Algoritmos
97
e-Tec Brasil/CEMF/Unimontes
8) Elabore um algoritmo que permita registrar as notas dos alunos de Sistemas de Informação à disciplina de Algoritmos e Programação I. O programa
deve ter informação sobre o número, nome e notas dos 3 exames. Deve permitir ao usuário introduzir, consultar e alterar as notas de um aluno, ter uma
opção para alterar as notas de todos os alunos existentes, e ainda tirar listagens por ordem de número de aluno e por ordem alfabética, conforme pedido do usuário; para cada aluno, as listagens deverão indicar se está aprovado
ou não, sabendo-se que para isso deverá ter uma das três notas > 10.
9) Elaborar um algoritmo que leia um conjunto de 30 valores e os coloque em
2 vetores conforme forem pares ou ímpares. O tamanho do vetor é de 5 posições. Se algum vetor estiver cheio, escrevê-lo. Terminada a leitura escrever
o conteúdo dos dois vetores. Cada vetor pode ser preenchido tantas vezes
quantas forem necessárias.
10) Escreva um algoritmo que leia dois vetores de 10 posições e faça a multiplicação dos elementos de mesmo índice, colocando o resultado em um
terceiro vetor. Mostre o vetor resultante.
11) Escreva um algoritmo que leia um vetor de 100 posições e mostre-o ordenado em ordem decrescente.
12) Escreva um algoritmo que leia um vetor de 13 elementos inteiros, que
é o Gabarito de um teste da loteria esportiva, contendo os valores 1(coluna
1), 2 (coluna 2) e 3 (coluna do meio). Leia, a seguir, para cada apostador, o
número do seu cartão e um vetor de Respostas de 13 posições. Verifique para
cada apostador o número de acertos, comparando o vetor de Gabarito com o
vetor de Respostas. Escreva o número do apostador e o número de acertos.
Se o apostador tiver 13 acertos, mostrar a mensagem “Ganhador”.
e-Tec Brasil/CEMF/Unimontes
98
Informática
13) Escreva um algoritmo que leia um vetor de 20 posições e mostre-o. Em
seguida, troque o primeiro elemento com o último, o segundo com o penúltimo, o terceiro com o antepenúltimo, e assim sucessivamente. Mostre o novo
vetor depois da troca.
14) Escrever um algoritmo que gera os 10 primeiros números primos acima
de 100 e os armazena em um vetor de X(10) escrevendo, no final, o vetor X.
15) Escrever um algoritmo que leia 2 vetores de tamanho 10 e os escreva.
Crie, a seguir, um vetor de 20 posições que contenha os elementos dos outros
2 vetores em ordem crescente.
16) Escrever um algoritmo que leia 2 vetores X(10) e Y(10) e os escreve. Crie,
a seguir, um vetor Z que seja:
a) a união de X com Y;
b) a diferença entre X e Y;
c) a soma entre X e Y;
d) o produto entre X e Y;
e) a intersecção entre X e Y.
Escreva o vetor Z a cada cálculo.
Algoritmos
99
e-Tec Brasil/CEMF/Unimontes
AULA 1
Alfabetização Digital
Aula 8 - Ordenação e pesquisa de dados
Depois de aprender a utilizar os tipos primitivos de dados (inteiro, real,
caractere e lógico) e as variáveis indexadas (vetores e matrizes) podemos estudar alguns procedimentos de ordenação e pesquisa de dados.
Tais procedimentos são de extrema importância para o processamento
de dados uma vez que são recursos que podem otimizar a recuperação dos dados tanto os da memória quanto os armazenados em disco.
Quando se mantém um procedimento adequado de ordenação, fica mais
fácil e rápido para que os dados sejam encontrados, na ordem desejada. Tal ordem
pode ser ascendente ou descendente. Depende do problema em questão.
Dessa forma, a ordenação auxilia não só no armazenamento, mas principalmente na pesquisa dos dados.
Para ordenação e pesquisa, em geral utilizam-se as variáveis indexadas, como os vetores e as matrizes.
8.1 Ordenação de Dados
Vários métodos de classificação são trabalhados para o desenvolvimento desta tarefa, tais como Ordenação por Inserção, ShellSort, Bubblesort,
QuickSort e Heapsort.
Este texto cuidará apenas do método Bubblesort para ordenação.
dente;
A classificação
consiste em ordenar
os elementos de um
vetor ou matriz em
uma determinada
classificação, seguindo o
critério necessário para
cada problema.
Ao final desta unidade, você será capaz de:
- classificar um conjunto de dados de forma ascendente ou descen- aplicar pesquisa para busca seqüencial ou binária.
Esse critério pode ser
alfabético, para dados
literais; crescente ou
decrescente para dados
numéricos.
8.1.1 Método da bolha – Bubblesort
A filosofia básica desse método consiste em ler todo o vetor, comparando os elementos vizinhos entre si. Caso estejam fora de ordem, eles
trocam de posição entre si. Procede-se assim até o final do vetor.
Na primeira leitura, verifica-se que o último elemento do vetor já
está em seu devido lugar (no caso de ordenação crescente, ele é o maior
de todos). A segunda leitura é análoga à primeira e vai até o penúltimo elemento. Esse processo é repetido até que seja feito um número de leituras
igual ao número de elementos a serem ordenados, menos um. Ao final desse
processo, o vetor estará classificado segundo o critério escolhido.
Algoritmos
101
e-Tec Brasil/CEMF/Unimontes
Vamos analisar uma ordenação de 5 elementos pelo método da bolha.
Algoritmo Bubble_Sort
Variáveis
Tipo v = vetor [1:5]: real;
V = Numeros;
I, J : Inteiro;
Aux : Real;
Início
Para I = 1 Até 5 Faça
Escreva “Informe o número “, I, “ de 5”;
Leia Numeros[I];
Fimpara
Aux = Numeros[I];
Numeros[I] = Numeros[I+1];
Numeros[I+1] = Aux;
J = 5;
Enquanto (J > 1) Faça
Para I = 1 até (J-1) Faça
Se (Numeros[I] > Numeros[I+1])
então
Aux = Numeros[I];
Numeros[I] = Numeros[I+1];
Numeros[I+1] = Aux;
Fim Se
Fim para
J = J –1
Fim Enquanto
Escreva “Vetor Ordenado”;
Para I = 1 Até 5 Faça
Escreva Numeros[I];
Fim para;
Fim
Não é o mais
eficiente dos métodos
existentes, entretanto
é considerado o mais
popular, devido à sua
simplicidade.
Agora é com você!
Desenhe um vetor
vazio, faça os
procedimentos de
entrada de dados e de
classificação. Veja o
resultado final.
Podemos pensar numa outra forma de trabalhar o mesmo processo
de ordenação.
Vejamos o algoritmo, a seguir:
Algoritmo Bubble_Sort
Variáveis
Tipo v = vetor [1:5]: real;
V = Numeros ;
I, J : Inteiro;
Aux : Real;
Início
Para I = 1 Até 10 Faça
Escreva “Informe o número “, I, “ de 10”;
Leia Numeros[I];
Fimpara;
e-Tec Brasil/CEMF/Unimontes
102
Informática
Para I = 1 até 9 Faça
Para J = I até (10-I) Faça
Se (Numeros[J] > Numeros[J+1]) então
Aux = Numeros[J];
Numeros[J] = Numeros[J+1];
Numeros[J+1] = Aux;
Fim Se;
Fim para
Fim Para
Escreva “Vetor Ordenado”;
Para I = 1 Até 10 Faça
Escreva Numeros[I];
Fim para
Fim
Faça o mesmo procedimento de teste do pseudocódigo anterior.
Desenhe um vetor vazio, faça os procedimentos de entrada de dados e de
classificação. Veja o resultado final.
8.2 Pesquisa de Dados
Vários métodos de pesquisas existem. Alguns bem interessantes e
otimizados. Nosso conteúdo abordará dois métodos bem difundidos para pesquisa, que são a pesquisa sequencial e a pesquisa binária.
Como vimos no estudo
de vetores, a pesquisa
consiste na verificação
da existência de um
valor dentro de um
conjunto de dados.
8.2.1 Método de pesquisa sequencial
Em um dos exemplos do conteúdo de vetores, foi estudado um algoritmo de pesquisa sequencial ou linear. É o método mais objetivo para encontrar um elemento particular num conjunto não classificado, isto é, cujos
elementos não estão ordenados segundo algum critério.
Envolve a simples verificação de cada componente do conjunto,
sequencialmente, até que o elemento desejado seja encontrado (nesse caso,
diz-se que a pesquisa foi bem-sucedida) ou que todos os elementos do conjunto tenham sido verificados sem que o elemento procurado tenha sido
encontrado (pesquisa mal-sucedida).
Para ilustrar o método de pesquisa sequencial, vamos apresentar o seguinte algoritmo:
Algoritmo PesquisaSequencial
Variáveis
Tipo m = vetor [1,10] caractere;
Valor: caractere;
m = nomes;
I : Inteiro;
Achou : Lógico;
Algoritmos
103
e-Tec Brasil/CEMF/Unimontes
Início
Para I = 1 Até 10 Faça
Escreva “Informe o nome “, I, “ de 10”;
Leia Nomes[I];
Fim para
Escreva “Informe o nome que deseja procurar”;
Leia Valor;
I=1
Achou = .Falso.
Enquanto (I <= 10) E (NÃO Achou) Faça
Se (Nomes[I] = Valor) então
Achou = .Verdadeiro
Senão
I = I + 1;
Fim Se
Fim Enquanto
Se (Achou) então
Escreva Valor, “ foi encontrado.”
Senão
Escreva Valor, “ não foi encontrado.”
Fim se
Fim
Agora é com você!!!
Faça uma analogia entre
o algoritmo de busca
apresentado no estudo
de vetores e o algoritmo
visto na pesquisa
sequencial:
Insira sua analogia no
AVEA e compare com a
dos seus colegas.
8.2.2 Método de pesquisa binária
Quando os elementos de um vetor estão classificados (ordenados),
a pesquisa binária é um dos tipos de pesquisa mais eficazes para estes casos.
Ela tem a capacidade de eliminar metade dos elementos da matriz que está
sendo pesquisada, a cada comparação.
O método de pesquisa binária faz uso de três variáveis auxiliares:
• Uma que aponte para o primeiro elemento da pesquisa; no caso
de ser a primeira comparação é o primeiro elemento (valor 1);
• Outra que aponte para o último elemento do vetor de pesquisa,
no caso de um vetor de dez elementos, seria o valor 10;
• A terceira variável, que aponte para o elemento do meio do vetor. no exemplo de 10 elementos, seria o quinto elemento.
O elemento que é apontado pela variável meio é localizado e comparado com o valor procurado. Se ele for igual ao valor procurado, a pesquisa
é dita bem sucedida e é interrompida. No caso de ser ele maior que o valor
procurado, repetimos o processo na primeira metade do vetor. No caso de o
elemento central ser menor que o valor procurado, repetimos o processo na
segunda metade da matriz.
A pesquisa binária só
pode ser utilizada com
um conjunto ordenado
de valores.
e-Tec Brasil/CEMF/Unimontes
Vamos analisar a seguinte situação:
104
Informática
Algoritmo PesquisaBinaria
Variáveis
I, Valor, Meio, Alto, Baixo, : Inteiro;
Tipo v ; vetor [1:15] inteiro;
V = Numeros;
Achou : Lógico;
Início
Para I = 1 Até 15 Faça
Escreva “Informe o número “, I, “ de 15”;
Leia Numeros[I];
Fim para;
Escreva “Informe o número que deseja procurar”;
Leia Valor;
Baixo = 1;
Alto = 15;
Achou = .Falso;
Enquanto (Baixo <= Alto) E (NÃO Achou) Faça
Médio = (Baixo + Alto) / 2;
Se (Valor < Numeros[Médio]) então
Alto = Médio - 1
Senão se (Valor > Numeros[Médio]) então
Baixo = Médio + 1
Senão Se (Valor = Números[Médio]) então
Achou = .Verdadeiro.
Fim Se
Fim Enquanto
Se (Achou) então
Escreva Valor, “ foi encontrado.”;
Senão
Escreva Valor, “ não foi encontrado.”;
Fim se
Fim
Para elucidar tal processo, vamos mostrar as seguintes figuras que
mostram um exemplo com uma matriz de quinze (15) elementos e a pesquisa de alguns valores. O elemento sombreado mostra que é o elemento do
meio, e cada linha representa a porção da matriz que será utilizada para a
pesquisa.
Valor a pesquisar : 25
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
0
2
4
6
8
10
12
14
16
18
20
22
24
26
28
16
18
20
22
24
26
28
24
26
28
24
Algoritmos
105
e-Tec Brasil/CEMF/Unimontes
Ou seja, o valor pesquisado não foi encontrado nos valores iniciais
do vetor cujo resultado necessitou apenas de 4 iterações em um conjunto de
15 valores.
Valor a pesquisar : 8
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
0
2
4
6
8
10
12
14
16
18
20
22
24
26
28
0
2
4
6
8
10
12
8
10
12
8
Este exemplo já traz uma situação de êxito na pesquisa: o valor foi
encontrado.
Resumo
Na unidade estudada você pode ver a aplicabilidade dos vetores e
matrizes em processos tão relevantes para a organização e recuperação da
informação.
Faz-se importante observar que, quanto mais você conhece os recursos oferecidos pela computação para o desenvolvimento dos algoritmos,
percebe-se que os mesmos se Acumulam e podem ser utilizados de forma
conjunta.
O uso de vetores e matrizes para armazenamento de valores homogêneos teve, dentro dos textos vistos, mais um benefício identificado: a
possibilidade de classificação e de pesquisa de valores. Dessa forma, a classificação pode ser feita em forma crescente ou decrescente para números,
e alfabética para literais (o que não deixa de ser uma ordenação crescente).
Atividades de aprendizagem
1) Elabore um Algoritmo que leia uma sequência de n números, e os ordene
de forma descendente.
2) Elabore um Algoritmo que leia uma sequência de n números, e os ordene
de forma ascendente.
e-Tec Brasil/CEMF/Unimontes
106
Informática
3) Elabore um Algoritmo que leia uma sequência de n nomes e os coloque
em ordem alfabética.
4) Elabore um Algoritmo para descobrir se existe um nome informado pelo
usuári0 em uma lista de nomes ordenados.
5) Elabore um algoritmo para ordenar os valores de uma matriz 10 x 10.
6) Elabora um algoritmo para encontrar valor em uma matriz de 10x10.
7) faça um algoritmo que verifica quantos nomes se iniciam pela letra “m”.
8) Faça um algoritmo que verifica quantos nomes terminam com a letra “a”.
9) Faça um algoritmo que verifica se existe a letra P em qualquer parte do
nome informado.
10) Faça um algoritmo que faz uma pesquisa binária em um conjunto de 100
nomes.
Algoritmos
107
e-Tec Brasil/CEMF/Unimontes
AULA 1
Alfabetização
Digital
Aula
9 - Variáveis
heterogêneas – Registros
O estudo de registros vem propiciar mais recursos para que você desenvolva seus algoritmos cada vez mais elaborados. Com os registros podemos
trabalhar os dados de forma persistente. Assim, quando necessário, buscam-se
os dados e se processam funcionalidades específicas.
9.1 Registros
São estruturas que podem agregar diferentes informações. Dessa maneira, podem ser feitas diferentes combinações, gerando outros tipos de dados.
Um registro consiste em um certo número de itens de dados, chamados membros da estrutura, que não necessitam ser do mesmo tipo, agrupados juntos, como mostra a figura a seguir.
Dados de Funcionário
Código: 4401
Importante!
Um registro é uma
coleção de campos,
em que cada campo
pode ser de um tipo
de dado diferente.
Por isso, os registros
são conhecidos como
variáveis compostas
heterogêneas.
Nome: Orozimbo da Silva Sexo: M
Endereço: Rua das pazes 565 Bairro: Tranquilidade Cidade: Luá
Cargo: chefe de divisão de tecnologia de informação
Salário: R$ 7.879,90
Para definir um registro no pseudocódigo, proceda da seguinte forma:
Tipo r = registro
Campo1: tipo
Campo1: tipo
Campo n: tipo
Fim registro
R = nome variável
Veja o seguinte exemplo:
Tipo r = registro
Nome, endereço, cidade, estado: caractere;
Salário: real;
Código: inteiro;
Fim registro;
R = func;
Algoritmos
109
e-Tec Brasil/CEMF/Unimontes
Para fazer leitura aos campos do registro, você pode usar a instrução:
Leia registro.campo
Para melhor compreender a sintaxe, veja o exemplo:
Leia func.nome;
Leia func.codigo;
Leia func.salario;
Para escrever os dados constantes nos campos dos registros, você
pode usar a instrução:
Escreva func.nome;
Escreva func.codigo;
Escreva func.salário;
Para realizar qualquer processamento nos campos dos registros,
pode-se utilizar o nome das variáveis do registro. Veja o exemplo:
Func.salário = func.salário * 1,15;
Essa instrução faz com que o salário do funcionário sofra um reajuste de 15 por cento.
Segue agora apresentação de algoritmos que trabalharão estrutura
heterogênea de dados em suas resoluções e, seguindo a estrutura já trabalhada nas unidades anteriores, os conceitos de código e regras de implementação serão explicados.
Faça um algoritmo que solicite ao usuário o preço de compra e o
preço de venda de um único produto e informe ao usuário:
• O valor do lucro obtido, caso exista;
• Caso o lucro seja negativo, deverá ser informado ao usuário que
ele obteve prejuízo na venda.
Algoritmo VerLucro
Variáveis
Tipo r = registro
Custo, venda, lucro: real;
Fim registro;
r = produto;
Início
Escreva “Informe o preço de compra do produto”;
Leia Produto.Custo;
Escreva “Informe o preço de venda do produto”;
Leia Produto.Venda;
Produto.Lucro = (Produto.Venda – Produto.Custo);
Se (Produto.Lucro > 0) então
e-Tec Brasil/CEMF/Unimontes
110
Informática
Escreva “A venda obteve um lucro de “, Produto.Lucro;
Senão Se (Produto.Lucro < 0) então
Escreva “A venda obteve um prejuízo de “,
Produto.Lucro;
Senão
Escreva “Não houve lucro nem prejuízo na venda”;
Fim Se
Fim se
Fim
Vamos verificar outro exemplo de utilização de registros.
Para cada aluno de uma turma de N alunos se têm dados como o
seu número de registro, seu nome e sua média final, faça um algoritmo que:
• Imprima a média da turma;
• Calcule a percentagem de alunos, cujos nomes comecem pela
letra A;
• Determine quantos alunos têm a média superior a 7,0.
Algoritmo Boletim
Variáveis
Tipo r = registro
Numero: inteiro;
Nome: string;
Media: real;
Fim registro
Tipo v = vetor [´1:100] r;
V = Alunos, nomeaux;
QtdeAlunos, QtdeNomesA, QtdeAlunos7 : Inteiro;
MediaTurma, PercentualNomesA : Real;
Início
Repita
Escreva “Informe a quantidade de alunos”;
Leia QtdeAlunos;
Até (QtdeAlunos > 0 E QtdeAlunos <= 100);
MediaTurma = 0;
QtdeNomesA = 0;
QtdeAlunos7 = 0;
Para I = 1 Até QtdeAlunos Faça
Escreva “Informe os dados do aluno “, I, “ de “, Qt
deAlunos;
Escreva “Número : ”;
Leia Alunos[I].Numero;
Escreva “Nome : “;
Leia Alunos[I].Nome;
Nomeaux = Alunos[i].nome;
Escreva “Média Final : “;
Algoritmos
111
e-Tec Brasil/CEMF/Unimontes
Leia Alunos[I].Media;
MediaTurma = (MediaTurma + Alunos[I].Media);
Se (Alunos[I].Nome[1] = ‘A’) então
QtdeNomesA = (QtdeNomesA + 1);
Fim Se
Se (Alunos[I].Media > 7.0) então
QtdeAlunos7 = (QtdeAlunos7 + 1);
Fim Se
Fim Para
MediaTurma = (MediaTurma / QtdeAlunos);
MediaNomesA = (QtdeNomesA * 100) / QtdeAlunos;
Escreva “A média da turma é : “, MediaTurma;
Escreva “O percentual de alunos com nomes; começando por
A é “, PercentualNomesA;
Escreva “Existem “, QtdeAlunos, “ com média acima de 7.0”;
Fim
Crie um algoritmo que
trabalhe com registro
de dados e compartilhe
com seus colegas no
AVEA.
O enunciado desse problema contempla uma situação um pouco
mais complexa, pois envolve, além de registros, estruturas de repetição,
estrutura de condição, bem como de um pequeno processamento sobre os
dados de entrada.
Foi utilizado um vetor do tipo registro para receber os dados. Além
disso, para verificar quais nomes começam com a letra A, cada nome foi armazenado no vetor nomeaux, pois cada letra do nome fica armazenada em
uma posição do vetor, começando do seu início.
Resumo
Como pôde ser visto, o uso de registros permite que dados comuns
a um objeto, pessoa ou acontecimento, podem ser agrupados em uma única
variável, sendo de tipos diferentes.
O uso dos registros viabilizam o trabalho com dados de diferentes
tipos, mas que tem interrelação entre si.
As instruções de leitura e escrita tem uma nova forma de redação:
elas devem identificar o nome das variáveis e muitas vezes o nome do registro que está sendo lido.
Porém, o conceito e o manuseio de variáveis são aplicados como já
visto ateriormente.
Também nos registros se aplica a mácima de que os dados são organizados para viabilizar um eficiente processo de busca e recuperação.
e-Tec Brasil/CEMF/Unimontes
112
Informática
Atividades de aprendizagem
1) Defina campo, registros.
2) Com a utilização de registros, os dados se encontram persistente ou temporariamente armazenados?
3) Como é feito o manuseio das variáveis dos registros?
4) Mostre a necessidade de sua utilização dos registros.
5) Como a construção dos registros influenciam na busca de dados
6) Crie um registro que contém os seguintes dados:
Código, nome, endereço, sexo, telefone, data nascimento, nome do pai,
nome da mãe, identidade, CPF
7) Crie um exemplo de comando de leitura dos dados do registro da questão 6.
Algoritmos
113
e-Tec Brasil/CEMF/Unimontes
8) Crie um exemplo de comando de escrita dos dados do registro da questão 6.
9) Crie um procedimento que faça a leitura de n registros cuja estrutura
foi apresentada na questão 6, mostrando se o nome informado pelo usuário
existe ou nos dados.
10) Crie um procedimento que faça a leitura de n registros cuja estrutura foi
apresentada na questão 6, mostrando se o CPF informado pelo usuário existe
ou nos dados
e-Tec Brasil/CEMF/Unimontes
114
Informática
AULA 1
Alfabetização Digital
Aula 10 - Arquivos
Os arquivos são formados pelo conjunto de registros armazenados
em um dispositivo de memória secundária.
Para relembrar!!
Ao final desta unidade, você será capaz de:
- entender a forma de organização e acesso dos arquivos;
- mesclar o uso de registros juntamente com arquivos.
10.1 Operações Básicas
As operações que se podem realizar nos arquivos são Inclusão, Exclusão, Alteração. Parar realizar a exclusão e a alteração, necessariamente
deve realizar a Obtenção de registro em um processo de busca do mesmo.
10.2 Organização de arquivos
Cada arquivo pode ser organizado de forma sequencial ou indexada.
No caso da organização sequencial, um registro é gravado após o
outro, em uma sequência. Para buscar qualquer registro armazenado de forma sequencial, deve-se percorrer o arquivo, registro por registro, até encontrar o conteúdo procurado ou detectar que o mesmo não existe.
No caso da organização indexada, cada registro necessita de um
índice para facilitar o processo de armazenamento e de busca.
Para declarar um registro, usamos a seguinte notação:
Tipo lista de identificadores arquivo organização de nome de registro
Registro é um conjunto
de informações
logicamente
relacionadas, no
qual cada unidade de
informação constitui um
campo de registro
Um arquivo só pode ser
utilizado desde que se
defina um registro para
o armazenamento e
processamento dos seus
dados
Vamos verificar o exemplo de declaração de arquivo sequencial:
Tipo AGENDA arquivo sequencial de ENDEREÇO
Tipo ENDEREÇO = REGISTRO (NOME, RUA caracter, NUMERO inteiro,
CIDADE literal ou caractere)
Tipo COMPRA.PEDIDOS arquivo sequencial de PAPELETA
Tipo PAPELETA registro (quantidade inteiro, ESPECIFICAÇÃO
caracterel)
Algoritmos
115
e-Tec Brasil/CEMF/Unimontes
Para manipular qualquer arquivo, ele precisa de uma operação de
abertura. A notação abaixo mostra a abertura de arquivos:
Abra lista de identificadores de arquivo tipo utilização
Veja os exemplos:
Abra AGENDA leitura;
Abra AGENDA escrita;
Abra AGENDA;
Para encerrar o trabalho com os arquivos, os mesmos devem ser
fechados. A notação a seguir mostra o fechamento de arquivo.
Feche lista de arquivos
Veja o exemplo, a seguir:
início
tipo NOTAS arquivo sequencial de DADOS;
tipo DADOS REGISTRO (MATRICULA numerico, NOME ALUNO
literal, NOTA TOTAL NUMERICO);
fim registro;
Abra NOTAS;
-------Feche NOTAS;
Fim.
Você vai verificar no próximo exemplo um algoritmo que trata
de leitura e escrita em um arquivo com organização sequencial.
início
Tipo A,B arquivo sequencial de T;
Tipo T =registro (nome literal, salario numerico);
Fim registro;
Abra A leitura;
Abra B Escrita;
Repita
leia (A.T);
Se A.FDA então abandone;
Fim se;
Escreva (B.T);
Fim repita;
Feche A, B;
Fim.
e-Tec Brasil/CEMF/Unimontes
116
Informática
Quando há um processo de leitura em arquivo sequencial, necessitamos saber se o arquivo chegou ao fim ou ainda tem registros a serem lidos.
Para verificar se o arquivo chegou ao fim, usa-se a expressão FDA que quer
dizer Fim de Arquivo, ou EOF, que quer dizer End of File (fim de arquivo em
inglês).
Para tratar da organização indexada, vamos passar a você um algoritmo que mostra a definição do arquivo, os campos e a forma de manuseio,
como a seguir.
Organização indexada
início
Tipo ALUNOS arquivo indexado de DADOS;
Tipo DADOS =registro (matricula numerico, outros dados
literal);
Fim registro;
Abra ALUNOS leitura;
leia item [83008] ALUNOS.DADOS;
se ALUNOS.INV senão
ESCREVA.ITEM [83008] ALUNOS.DADOS;
Fim se;
Feche ALUNOS;
Fim.
Observe que, para que haja a leitura de registros no arquivo com
organização indexada, necessitamos de um campo chave, chamado de índice. O fato é que, conhecendo o valor do índice, o acesso se torna direto
àquele registro, não realizando verificação em nenhum outro. Se não conhecemos o conteúdo do índice, não há como fazer a leitura do registro que
corresponde ao índice.
Além disso, aparece uma instrução se alunos.inv senão. Essa instrução quando verdadeira quer dizer que não foi feita a leitura do registro
procurado com o uso do índice.
Assim, as soluções se tornam bem mais interessantes quando usamos
estruturas que melhor se ajustem às soluções dos problemas computacionais.
É bom lembrar que,
quando se estuda todos
esses recursos, você
pode usar:
- Tipos primitivos de
dados, Vetores,
Matrizes, Registros,
Arquivos, Vetores com
matrizes em cada
posição, Matrizes com
vetores em cada posição
Vetores ou matrizes
com registros em cada
posição.
Registro com campos
distintos, um do tipo
primitivo, um do tipo
vetor, outro do tipo
matriz, outro do tipo
registro.... Etc..
Crie um algoritmo que
trabalhe com arquivos
nas formas seqüencial e
indexada e compartilhe
com seus colegas no
AVEA.
Algoritmos
117
e-Tec Brasil/CEMF/Unimontes
Resumo
Como pôde ser visto, o uso de registros permite que dados comuns
a um objeto, pessoa ou acontecimento, podem ser agrupados em uma única
variável, sendo de tipos diferentes. Mas, para que haja o armazenamento
persistente de dados, o arquivo deve ser utilizado.
Grandes massas de dados são armazenadas nos arquivos. Por isso,
eles devem ter uma adequada organização. A organização dos arquivos facilita o processo de busca dos dados armazenados. Assim, para se definir
a forma de organização, você deve pensar qual a necessidade de busca de
dados, qual o tempo adequado.
Assim, a organização indexada vem resolver, de certa forma essas demandas.
Atividades de aprendizagem
1) Defina e arquivos.
2) Com a utilização de arquivos, os dados se encontram persistente ou temporariamente armazenados?
3) Qual o conceito de arquivos? Mostre a necessidade de sua utilização.
4) Diferencie organização sequencial de indexada
5) O que indica o sinal FDA?
6) O que indica o sinal INV?
7) Crie um problema em que os dados sejam armazenados em registros de
um arquivo sequencial.
8) Crie um problema em que os dados sejam armazenados em registros de
um arquivo indexado.
9) Crie um problema para que possa mesclar as formas de trabalho com arquivos: sequencial e indexado.
10) Crie um arquivo para o armazenamento indexado de dados dos alunos da
turma de Algoritmos do programa E-tec Brasil.
e-Tec Brasil/CEMF/Unimontes
118
Informática
AULA 1
Alfabetização
Digital
Aula
11 - Modularização:
procedimentos
e funções
Na última unidade do nosso estudo, abordaremos o processo de modularização, enfatizando os procedimentos e funções. Tais recursos resultam
na construção de subalgoritmos que são noções importantes para o particionamento de um problema complexo em pequenos problemas simples.
Portanto, no término desta etapa de estudo é fundamental que
você seja capaz de:
- Dividir um algoritmo resolvido em pequenos subalgoritmos;
- Diferenciar procedimentos de funções.
11.1 Modularização
A complexidade dos algoritmos está intimamente ligada à da aplicação a que se destinam. Em geral, problemas complicados exigem algoritmos
extensos para sua solução.
É sempre possível dividir grandes algoritmos que resolvem grandes
e complexos problemas em partes menores em que a solução e os problemas são particionados. Uma vez dividido um grande problema em pequenos
problemas, é possível a resolução de cada um desses problemas individualmente, para que, ao final, o problema, em seu todo, tenha sido resolvido.
De um modo geral, as questões levantadas sobre um algoritmo
qualquer, são as seguintes:
1. Quanto tempo levará para ser desenvolvido o seu procedimento
lógico?
2. Sua elaboração não poderia ter sido mais rápida? Se fosse,
quanto tempo poderia ter sido economizado?
3. Qual o grau de dificuldade para implementar uma modificação
qualquer no algoritmo?
4. Como se traduz essas dificuldades em relação ao tempo gasto?
5. Qual será o comportamento do algoritmo em relação ao comportamento do sistema?
6. Se o algoritmo for lento, poderá se tornar mais rápido?
7. Se for possível tornar o algoritmo mais rápido, qual é o custo?
Vale à pena?
Com os módulos definidos, devem ser criados os Subalgoritmos, subrotinas ou subprogramas que são blocos de instruções que realizam tarefas
específicas.
Algoritmos
119
A Modularização é
a técnica que faz
o particionamento
de um algoritmo
extenso em algoritmos
menores, dentro da
premissa “Dividir para
conquistar”.
Uma aplicação
qualquer, antes de ser
programada, deve ser
analisada. A atribuição
do programador é
desenvolver uma
solução viável para a
aplicação. Isso dá uma
ideia da complexidade
da solução e,
consequentemente,
é um bom meio para
avaliar o tempo
gasto na elaboração
do algoritmo. O
programador deve
procurar encontrar
relações entre
atividades elementares
definidas, as quais
devem compor um único
módulo. Os módulos são
também combinados
para formar novos
módulos. O processo
se repete até que a
solução para a aplicação
esteja completa. A
essa técnica, dá-se o
nome de Algoritmos
Modulares que se
inserem no processo de
Modularização.
e-Tec Brasil/CEMF/Unimontes
Um subalgoritmo é
um nome dado a um
trecho de um algoritmo
mais complexo e que,
em geral, encerra em
si próprio um pedaço
da solução de um
problema maior – o
algoritmo a que ele está
subordinado.
O código de um subalgoritmo é digitado uma vez e pode ser executado quantas vezes forem necessárias. Dessa maneira, os programas tendem
a ficar menores e mais organizados, dado que o problema pode ser dividido
em pequenas tarefas.
Os programas (em programação estruturada), em geral, são executados linearmente, uma linha após a outra, até o fim. Entretanto, quando
são utilizados subalgoritmos, é possível a realização de desvios na execução
natural dos programas. Esses desvios são realizados quando uma função é
chamada pelo programa principal.
Os subalgoritmos são importantes na:
• Subdivisão de algoritmos complexos, facilitando seu entendimento;
• Estruturação de algoritmos, facilitando principalmente a detecção de erros e a documentação de sistemas;
• Modularização de sistemas, que facilita a manutenção de programas e a reutilização de subalgoritmos já implementados.
O algoritmo principal chama a execução do subalgoritmo que executa a sua funcionalidade e retorna ao algoritmo chamador, o principal.
O subalgoritmo deve ser desenvolvido na forma de procedimento
ou uma função.
Para que você possa usar corretamente os procedimentos e funções, devemos entender o conceito de variáveis locais e globais.
11.2 Variaveis locais e Globais
As variáveis locais ao bloco são declaradas internamente no bloco e
ativadas quando inicia o seu processamento. Assim, a variável local só existe
dentro do procedimento ou da função. A variável local só passa a ser ativada
no escopo do programa quando o procedimento ou função é chamado pelo
programa chamador e instalado na memória. Após o término da execução,
o subalgoritmo é desalocado da memória e as variáveis locais desaparecem.
No caso das variáveis globais, as variáveis dos blocos externos são
conhecidas nos blocos internos.
Para você entender o escopo das variáveis, mostra-se o exemplo a seguir:
Algoritmo entrada
inteiro: N,I;
início
leia (N);
início
tipo v= vetor [1:n] real;
V: VET;
para I de 1 até N faça
e-Tec Brasil/CEMF/Unimontes
120
Informática
VET[I] = I;
fim para;
imprime VET;
fim;
fim;
Vamos refletir!
A variável n foi definida no bloco externo e foi usada no bloco interno, pois é uma variável global.
Já, o vetor VET somente é declarado no bloco interno e sendo assim, somente reconhecido quando inicia o seu processamento, portanto, é
uma variável interna. Ao terminar a execução do bloco interno, também o
vetor VET desaparece.
Vamos verificar outro exemplo:
Algoritmo
inteiro: I,J;
Início
leia (I);
J = I**2;
início
Real: x;
x = J + 1;
imprime (x);
fim;
leia (j);
I=I*J
Fim.
Agora é com você!
Aponte as variáveis locais e globais que aparecem no algoritmo anterior.
I e J = globais
X = local
Agora que você já entendeu como funciona a abrangência das variáveis nos blocos do algoritmo, vamos continuar verificar o que são parâmetros e como se pode utilizar nos procedimentos e funções
11.3 Parâmetros
Para haver uma comunicação entre o algoritmo chamador e o procedimento ou função, utilizam-se os parâmetros, podendo os dados trefegarem de um algoritmo para outro.
Algoritmos
121
e-Tec Brasil/CEMF/Unimontes
A passagem de parâmetros pode ser dada de duas formas: por valor ou por referência. Observe a definição de cada uma delas.
Na passagem de parâmetros por valor, ocorre uma cópia do conteúdo enviado para uma variável do mesmo tipo daquela que remeteu.
Na passagem de parâmetros por referência não existe a cópia do
conteúdo enviado para uma variável do procedimento/função. O que ocorre
é o envio da referência na qual a variável do algoritmo chamador se encontra. Dessa forma, qualquer alteração feita na variável no subalgoritmo refletirá diretamente na variável do algoritmo chamador.
Agora que você sabe o que são parâmetros e como acontece a passagem dos valores do algoritmo chamador para o algoritmo chamado, vamos
estudar os procedimentos.
11.4 Procedimentos
Procedimento é um subalgoritmo que retorna nenhum ou mais valores ao algoritmo chamador. É um bloco que consiste em um conjunto de
declarações e comandos delimitados pelas palavras início e fim.
Como você já assimilou os fundamentos teóricos necessários ao
entendimento dos procedimentos, vamos analisar o seguinte algoritmo:
Algoritmo
Variáveis
inteiro: A,B;
PROCEDIMENTO TROCA
INTEIRO :X,Y;
início
INTEIRO: AUX;
AUX = X;
X = Y;
Y = AUX;
FIM {TROCA};
Início
LEIA (A,B)
IMPRIMA (A.B)
TROCA (A.B)
IMPRIMA (A,B);
Fim
Vamos destacar alguns pontos:
As variáveis A e B são globais.
Quando o procedimento TROCA é acionado, o conteúdo das variáveis A e B são copiados para as variáveis X e Y, que são locais ao procedimento.
e-Tec Brasil/CEMF/Unimontes
122
Informática
Ao finalizar o procedimento, A recebe o conteúdo de X e B recebe
o conteúdo de Y.
Agora é com você!!
Insira dados nas variáveis e mostre o resultado produzido pelo algoritmo.
Vamos analisar outro exemplo.
Algoritmo abs
REAL: A,B;
PROCEDIMENTO ABS(X,Y);
REAL :X,Y;
início
SE x > 0 ENTÃO
Y =X;
SENÃO
Y = -X;
FM SE;
FIM {ABS}
Início
A = 5, B = -3;
ABS(A,B);
FIM
Vamos destacar alguns pontos:
As variáveis A e B são globais
O procedimento ABS recebe parâmetros X e Y que são alimentados
pelo conteúdo de A e B.
Ao finalizar o procedimento, A recebe o conteúdo de X e B recebe
o conteúdo de Y.
O procedimento trabalha com dados de entrada e de saída
Agora é com você!!
Insira dados nas variáveis e mostre o resultado produzido pelo algoritmo.
Dado o algoritmo abaixo, crie uma massa de testes, mostre as saídas produzidas e destaque os pontos em relação à elaboração do mesmo.
Algoritmo fatorial
INTEIRO: N, FAT;
CARACTER: TITULO;
PROCEDIMENTO FATORIAL(NF,FATF);
INTEIRO : NF,FATF;
Algoritmos
123
e-Tec Brasil/CEMF/Unimontes
início; I;
FATF = 1;
PARA I DE 1 ATE NF FAÇA
FATF = FATF * I;
FIM PARA;
IMPRIMA (TITULO,NF, “E”, FATF);
FIM {FATORIAL};
Início
TITULO = ”FATORIAL DE”;
N = 5;
FATORIAL (N, FAT);
IMPRIMA (FAT, ‘E’, TITULO, N);
Fim.
Bem!! Entendido o funcionamento dos procedimentos, vamos agora
estudar as funções.
11.5 Função
A função tem seu conceito trazido da ideia de função matemática,
na qual um valor é calculado a partir de outro(s) fornecido(s) à função. Dentro de um algoritmo, a chamada a uma função sempre ocorre dentro de uma
expressão do mesmo tipo que tem o valor retornado por ela. Sua chamada é
feita pelo seu nome, seguido de seus respectivos parâmetros entre parênteses, dentro de uma expressão.
A função é executada e, ao seu término, o trecho do comando que
a invocou é substituído pelo valor retornado por ela dentro da expressão em
que se encontra, e a avaliação da expressão prossegue normalmente.
Vejamos o seguinte exemplo:
Algoritmo
REAL: A,B,C,D,E;
FUNÇÃO ABS(X) REAL;
REAL :X;
início
SE x > 0 ENTÃO
ABS =X;
SENÃO
ABS = -X;
FM SE;
FIM {ABS};
Início
A = 5, B = -3, C = -10;
D = ABS (C);
Imprima D;
IMPRIMA (ABS(A));
e-Tec Brasil/CEMF/Unimontes
124
Informática
Fim
IMPRIMA ABS(C**3) * A+B
IMPRIMA ABS (ABS(A)) * ABS(A);
Vamos destacar alguns pontos:
A função deve estar em uma expressão ou retornando em uma variável.
A função pode receber n valores, porém retorna somente um valor.
Agora é com você!!
Insira dados nas variáveis e mostre o resultado produzido pelo algoritmo.
11.5.1 Função recursiva
O código gerado por uma função recursiva exige utilização de mais
memória, o que torna a execução mais lenta. Não é difícil criar funções
recursivas, o difícil é reconhecer as situações nas quais a recursão é apropriada.
Uma função é dita
recursiva se é definida
em termos de si mesma.
Isto é, uma função é
recursiva quando dentro
dela está presente uma
instrução de chamada a
ela própria.
Vamos tecer as seguintes considerações em relações às funções recursivas:
a. pensar em criar uma função recursiva é escrever o problema
em termos de recursão. Por exemplo, o fatorial de um número
n qualquer pode ser definido por meio da seguinte expressão:
n! = n * (n-1)!
b. Toda função recursiva deve ter uma condição de término chamada condição básica. A função fatorial(), quando chamada,
verifica se n é zero. Se essa condição for satisfeita, interrompe
a execução.
c. Cada vez que a função é chamada recursivamente, deve estar
mais próxima de satisfazer a condição básica. Isso garante que
o programa não executará numa sequência infindável de chamadas. Em nosso exemplo, a cada chamada da função, o valor
de n estará mais próximo de zero.
Vamos mostrar a você um exemplo interessante de função recursiva:
Eu me casei com uma viúva que tinha uma filha crescida. Meu pai,
que nos visitava frequentemente, se apaixonou por minha enteada e casou-se com ela. Assim, meu pai se tornou meu genro e minha enteada, minha
mãe. Alguns meses mais tarde, minha esposa deu a luz a um filho, que se
tornou cunhado do meu pai e, ao mesmo tempo, meu tio. A esposa do meu
pai, que é minha enteada, também deu a luz a um filho. Dessa maneira, eu
ganhei um irmão e, ao mesmo tempo um neto. Minha esposa tornou-se agora
Algoritmos
125
e-Tec Brasil/CEMF/Unimontes
a minha avó, já que ela é mãe da minha mãe. Assim sendo, eu sou o marido
da minha esposa e, ao mesmo tempo, o seu enteado-neto. Em outras palavras, eu me tornei meu próprio avô.
Vamos praticar um pouco mais.
Dados o nome e as médias de uma turma com 47 alunos, faça um
algoritmo que escreva o nome dos alunos que tiveram a média menor que a
média da turma. Para desenvolver esse problema você deverá:
• Criar um procedimento para a leitura dos dados e armazenamento em uma matriz declarada como variável global. Nesse
mesmo procedimento, efetue o cálculo da média aritmética da
turma, que também deverá estar armazenada em uma variável
global.
• Criar um procedimento para identificação e exibição dos alunos
que tenham a média menor que a média da turma.
Algoritmo Alunos
Variáveis
Tipo m=matriz [1:47, 1:15] caractere;
M = nomes;
Tipo v = vetor [1:47] real;
V = media;
MediaTurma : Real;
Procedimento EntradaDeDados
Variáveis
I : Inteiro;
Início
Escreva “Informe o nome e média dos 47 alunos da turma”;
MediaTurma = 0;
Para I = 1 Até 47 Faça
Escreva “Informe o nome do aluno “, I, “ de 47”
Leia Nomes[I];
Escreva “Informe a média do aluno “, Nomes[I];
Leia Medias[I];
MediaTurma = MediaTurma + Medias[I];
Fim Para
MediaTurma = MediaTurma / 47;
Fim
Procedimento SaidaDeDados
Variáveis
I : Inteiro;
Início
Escreva “Alunos com média abaixo da média da turma”;
Para I = 1 Até 47 Faça
Se (Medias[I] < MediaTurma) Então
e-Tec Brasil/CEMF/Unimontes
126
Informática
Escreva “Aluno “, Nomes[I], “ média “, Notas[I];
FimSe;
FimPara;
Fim;
Início
EntradaDeDados;
SaidaDeDados;
Fim
Resumo
Nesta unidade, estudamos um pouco sobre os subalgoritmos, variáveis locais e globais, parâmetros, procedimentos e funções.
Foi bastante destacado que o uso de subalgoritmos, para resolução de problemas, é altamente recomendado, pois, mediante esse recurso,
podemos particionar um grande problema em problemas menores e tratá-los individualmente, como partes completas. Isso permite, além da modularização de código, uma reutilização deste. O envio e o recebimento de
argumentos e retorno de valores processados devem ser sempre utilizados,
lembrando que os argumentos de entrada de procedimentos e funções são
os dados necessários para que resolvam o problema que se propõem, e o retorno é aquele que se espera obter com o processamento dos argumentos de
entrada. As linguagens atuais estão voltando seu uso mais para funções (que
em linguagens orientadas a objetos são tratadas como métodos), pois o que
diferencia um procedimento de uma função é o retorno de valores.
Encerramos por aqui, sempre acreditando que o que foi estudado
tenha sido de grande utilidade pra você nesta jornada de aprendizado, que
deve ser constante.
Como foi falado no início deste caderno, estude várias vezes os
exemplos apresentados e faça várias vezes os exercícios. Se possível, associe
o estudo de algoritmo à alguma atividade artística como cantar, pintar, tocar
algum instrumento. Qualquer atividade que desenvolve a abstração auxilia no processo de refinamento do pensamento lógico que deve ser sempre
aplicado na lógica de programação, para o desenvolvimento de resolução de
problemas computacionais.
Parabéns por chegar até aqui!!! Mas, não se esqueça!!! Continue
estudando. Nós só começamos!!!
Atividades de aprendizagem
1. Faça uma função que receba, por parâmetro, o raio de uma esfera e calcule o seu volume (v = 4/3.← .R3).
Algoritmos
127
e-Tec Brasil/CEMF/Unimontes
2. Escreva um procedimento que receba as 3 notas de um aluno por parâmetro e uma letra. Se a letra for A o procedimento calcula a média aritmética
das notas do aluno, se for P, a sua média ponderada (pesos: 5, 3 e 2). A média
calculada também deve retornar por parâmetro.
3. Faça uma função que receba por parâmetro um valor inteiro e positivo e
retorna o valor lógico Verdadeiro quando o valor seja primo e Falso, em caso
contrário.
4. Faça um procedimento que receba por parâmetro os valores necessários
para o cálculo da fórmula de Baskara e retorna, também por parâmetro, as
suas raízes, caso seja possível calcular.
5. Faça uma sub-rotina que receba por parâmetro o tempo de duração de
uma fábrica expressa em segundos e retorna também por parâmetro esse
tempo em horas, minutos e segundos.
6. Faça uma função que recebe a idade de uma pessoa em anos, meses e dias
e retorna essa idade expressa em dias.
7. Faça uma função que verifique se um valor é perfeito ou não. Um valor
é dito perfeito quando ele é igual à soma dos seus divisores excetuando ele
próprio. (Ex: 6 é perfeito, 6 = 1 + 2 + 3, que são seus divisores). A função
deve retornar um valor booleano.
e-Tec Brasil/CEMF/Unimontes
128
Informática
8. Faça um procedimento que receba a idade de um nadador por parâmetro
e retorne também por parâmetro, a categoria desse nadador de acordo com
a tabela abaixo:
Idade
Categoria
5 a 7 anos
Infantil A
8 a 10 anos
Infantil B
11-13 anos
Juvenil A
14-17 anos
Juvenil B
Maiores de 18 anos (inclusive)
Adulto
9. Faça uma função que receba um valor inteiro e verifique se o valor é positivo ou negativo. A função deve retornar um valor booleano.
10. Faça uma função que receba um valor inteiro e verifique se o valor é par
ou ímpar. A função deve retornar um valor booleano.
11. Faça uma função que receba a média final de um aluno por parâmetro e
retorna o seu conceito, conforme a tabela abaixo:
Algoritmos
Nota
Conceito
de 0,0 a 4,9
D
de 5,0 a 6,9
C
de 7,0 a 8,9
B
de 9,0 a 10,0
A
129
e-Tec Brasil/CEMF/Unimontes
12. Faça um procedimento que receba, por parâmetro, a hora de
início e a hora de término de um jogo, ambas subdivididas em 2 valores
distintos: horas e minutos. O procedimento deve retornar, também por parâmetro, a duração do jogo em horas e minutos, considerando que o tempo
máximo de duração de um jogo é de 24 horas e que o jogo pode começar em
um dia e terminar no outro.
13. Escreva um procedimento que receba 3 valores reais X, Y e Z. O procedimento deve verificar se esses valores podem ser os comprimentos dos lados
de um triângulo e, neste caso, retornar qual o tipo de triângulo formado.
Para que X, Y e Z formem um triângulo é necessário que a seguinte propriedade seja satisfeita: o comprimento de cada lado de um triângulo é menor
do que a soma do comprimento dos outros dois lados. O procedimento deve
identificar o tipo de triângulo formado observando as seguintes definições:
Triângulo Equilátero: os comprimentos dos 3 lados são iguais.
Triângulo Isósceles: os comprimentos de 2 lados são iguais.
Triângulo Escaleno: os comprimentos dos 3 lados são diferentes.
e-Tec Brasil/CEMF/Unimontes
130
Informática
Referências
ASCENCIO, Ana Fernanda Gomes, CAMPOS, Edilene Aparecida Veneruch de.
Fundamentos da Programação de Computadores: Algoritmos, Pascal e C/
C++. São Paulo: Perason. 2006.
CAPRON,H.L, JONSON, J.A. Introdução à Informática. 8 ed. São Paulo: Pearson.
2004. 350 p.
COLLINS, Willian J. Programação Estruturada com Estudos de Casos em Pascal.
São Paulo: McGraw-Hill. 515 p.
DAGHIAN, Jacob. Lógica e álgebra de boole. 4 ed. São Paulo: Atlas. 1995.167 p.
FARRER, Harry, ET AL. Pascal Estruturados. 3 ed. Rio de Janeiro: JC. 1999. 279 p.
FARRER, Harry, ET AL. Algoritmos Estruturados. 3 ed. Rio de Janeiro: JC. 1999.
284 p.
FORBELLONE, André Luiz Villar, EBERSPACHER, Henri Frederico. Lógica de programação: a construção de algoritmos e estrutura de dados. 3ª ed. São Paulo:
Pearson, 2005.218 p.
LAGES, Newton Alberto de Castilho & GUIMARÃES, Ângelo de Moura. Algoritmos e estruturas de dados.1ª ed. Rio de Janeiro: LTC. 1985. 216 p.
LOPES, Anita & GARCIA, Guto. Introdução à programação: 500 algoritmos
resolvidos. Rio de Janeiro: Campus, 2002.
MEIRELLES, Fernando de Souza. Informática: novas aplicaçõs com microcomputadores. 2 ed. São Paulo: Pearson. 1994. 615 p.
MIZRDHI, Victorine Viviane. Treibamento em Linguaem C++: modulo 2. 2 ed.
São Paulo: Makron Books.318 p.
SALIBA, Walter Luiz Caram. Técnicas de programação: uma abordagem estruturada. São Paulo: Makron Books, 1993. 141p.
SALVETTI, Dirceu Douglas et al. Algoritmos estruturados. 3ª ed. Rio de Janeiro: LTC, 1999.
SANTOS, Marcos Augusto dos et al. Programação estruturada de computadores: algoritmos estruturados. 2ª ed. Rio de Janeiro: LTC,1989.
WIRTH, N. Algoritmo e estrutura de dados. 3 ed. Rio de Janeiro: Campus.
1985. 197 p.
ZIVIANE, Nívio. Projeto de algoritmos com implementação em Pascal e C.
3ª ed. São Paulo: Pioneira, 1996. 267 p.
Algoritmos
131
e-Tec Brasil/CEMF/Unimontes
Currículo do professor conteudista
Profª Msc Marilée Patta
Mestre em Ciência da Informação, especialista em Tecnologias da Computação e especialista em Engenharia de Informação. Graduada em Tecnologia
em Processamento de dados.
Atua como professora das disciplinas de Sistemas de Informação, Gestão de
Informação, Engenharia de Software, Algoritmos e Estruturas de Dados, Monografia, Estágio em Cursos de Graduação de Sistemas de Informação da
Unimontes e das Faculdades Santo Agostinho.
Atua como professora de pós-graduação lato-sensu na Unimontes nos cursos
de Engenharia de Sistemas, na disciplina de algoritmos e estruturas de dados, administração hospitalar, informática jurídica, tecnologias da educação.
Atua também como professora da pós-graduação lato-sensu nas Faculdades
Santo Agostinho nos cursos de Tecnologias e Gestão da Informação, Administração Pública, Gestão empresarial.
Ainda nas Faculdades Santo Agostinho:
Coordena o curso de pós-graduação em Tecnologia e Gestão da Informação.
Participa do colegiado de curso de sistemas de informação, participa do Núcleo Docente Estruturante do mesmo curso. Atua como analista de sistemas.
Na Unimontes:
Participa e coordena projetos de pesquisa. Atuou como coordenadora de
curso de sistemas de informação, chefe de departamento de ciência da computação, membro de colegiado de curso, conselho departamental.
Em outras instituições de ensino:
Atuou como docente de disciplinas relacionadas à Tecnologia de Informação
e à Educação.
Daniel Carli Colares e Silva
Mestrando em Engenharia Elétrica e Graduado em Sistemas de Informação.
Atua como professor das disciplinas de Redes de Computadores, Algoritmos,
Planejamento e Administração de Redes, Redes de Telecomunicações e Segurança em Redes de Computadores das Faculdades Santo Agostinho.
Atuou como analista de sistemas na área de desenvolvimento de sistemas e
de infraestrutura de redes de computadores nas Faculdades Santo Agostinho
– Montes Claros – MG e atualmente é Analista de Sistemas do IFNMG (Instituto
Federal do Norte de Minas Gerais – Campus Montes Claros)
e-Tec Brasil/CEMF/Unimontes
132
Informática
e-Tec Brasil/CEMF/Unimontes
Escola Técnica Aberta do Brasil
Download

Algoritmos - EAD Unimontes