134
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

Algoritmos Email

Embed Size (px)

Citation preview

Page 1: Algoritmos Email

e-Tec Brasil/CEMF/UnimontesEscola Técnica Aberta do Brasil

Informática

AlgoritmosMarilée Patta

Daniel Carli Colares e Silva

Ministério daEducação

Page 2: Algoritmos Email
Page 3: Algoritmos Email

e-Tec Brasil/CEMF/UnimontesEscola Técnica Aberta do Brasil

Informática

AlgorítimosMarilée Patta

Daniel Carli Colares e Silva

Montes Claros - MG2011

Page 4: Algoritmos Email

Ministro da EducaçãoFernando Haddad

Secretário de Educação a DistânciaCarlos Eduardo Bielschowsky

Coordenadora Geral do e-Tec Brasil Iracy de Almeida Gallo Ritzmann

Governador do Estado de Minas GeraisAntônio Augusto Junho Anastasia

Secretário de Estado de Ciência, Tecnologia e Ensino SuperiorAlberto Duque Portugal

ReitorJoão dos Reis Canela

Vice-ReitoraMaria Ivete Soares de Almeida

Pró-Reitora de EnsinoAnete Marília Pereira

Diretor de Documentação e InformaçõesHuagner Cardoso da Silva

Coordenador do Ensino ProfissionalizanteEdson Crisóstomo dos Santos

Diretor do Centro de Educação Profissonal e Tecnólogica - CEPTJuventino Ruas de Abreu Júnior

Diretor do Centro de Educação à Distância - CEADJânio Marques Dias

Coordenadora do e-Tec Brasil/UnimontesRita Tavares de Mello

Coordenadora Adjunta do e-Tec Brasil/CEMF/UnimontesEliana Soares Barbosa Santos

Coordenadores de Cursos:

Coordenador do Curso Técnico em AgronegócioAugusto Guilherme Dias Coordenador do Curso Técnico em ComércioCarlos Alberto Meira Coordenador do Curso Técnico em Meio AmbienteEdna Helenice Almeida

Coordenador do Curso Técnico em InformáticaFrederico Bida de Oliveira

Coordenador do Curso Técnico em Vigilância em SaúdeSimária de Jesus Soares

Coordenador do Curso Técnico em Gestão em SaúdeZaida Ângela Marinho de Paiva Crispim

ALGORITMOSe-Tec Brasil/CEMF/Unimontes

ElaboraçãoMarilée PattaDaniel Carli Colares e Silva

Projeto Gráficoe-Tec/MEC

Supervisão Wendell Brito Mineiro

DiagramaçãoHugo Daniel Duarte SilvaMarcos Aurélio de Almeda e Maia

ImpressãoGráfica RB Digital

Designer InstrucionalAngélica de Souza Coimbra FrancoKátia Vanelli Leonardo Guedes Oliveira

RevisãoMaria Ieda Almeida MunizPatrícia Goulart TondineliRita de Cássia Silva Dionísio

Presidência da República Federativa do BrasilMinistério da EducaçãoSecretaria de Educação a Distância

Page 5: Algoritmos Email

e-Tec Brasil/CEMF/UnimontesAlgoritmos

AULA 1

Alfabetização Digital

5

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 dezem-bro 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 pes-soas ao garantir acesso à educação de qualidade, e promover o fortalecimen-to 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, incenti-vando 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éc-nico, 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: cul-tural, social, familiar, esportiva, política e ética.

Nós acreditamos em você!

Desejamos sucesso na sua formação profissional!

Ministério da EducaçãoJaneiro de 2010

Apresentação e-Tec Brasil/CEMF/Unimontes

Page 6: Algoritmos Email
Page 7: Algoritmos Email

e-Tec Brasil/CEMF/UnimontesAlgoritmos

AULA 1

Alfabetização Digital

7

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.

Page 8: Algoritmos Email
Page 9: Algoritmos Email

e-Tec Brasil/CEMF/UnimontesAlgoritmos

AULA 1

Alfabetização DigitalSumário

9

Palavra dos professores conteudistas ....................................... 11Projeto instrucional ........................................................... 13Aula 1 - Construção do conceito de lógica e de algoritmos ............ 15 1.1 Conceitos básicos ................................................... 15 Resumo ................................................................... 23 Atividades de aprendizagem ........................................... 23Aula 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 ........................................... 38Aula 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 ........................................... 44Aula 4 - Comandos sequenciais .............................................. 45 4.1 Comando sequenciais ............................................... 45 Resumo ................................................................... 52 Atividades de aprendizagem ........................................... 53Aula 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 ........................................... 71Aula 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

Page 10: Algoritmos Email

e-Tec Brasil/CEMF/Unimontes Informática10

6.4 Comandos repetitivos condicionais com contadores ........... 81 Resumo ................................................................... 86 Atividades de aprendizagem ........................................... 87Aula 7 - Variáveis homogêneas – Vetores e Matrizes ..................... 89 7.1 Vetores ................................................................ 89 7.2 Matrizes .............................................................. 93 Resumo ................................................................... 96 Atividades de aprendizagem ........................................... 96Aula 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 ..........................................106Aula 9 - Variáveis heterogêneas – Registros ..............................109 9.1 Registros .............................................................109 Resumo ................................................................. 112 Atividades de aprendizagem .......................................... 113Aula 10 - Arquivos ............................................................ 115 10.1 Operações Básicas ................................................ 115 10.2 Organização de arquivos ......................................... 115 Resumo ................................................................. 118 Atividades de aprendizagem .......................................... 118Aula 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 .......................................... 127Referências .................................................................... 131Currículo do professor conteudista ........................................ 132

Page 11: Algoritmos Email

e-Tec Brasil/CEMF/UnimontesAlgoritmos

AULA 1

Alfabetização Digital

11

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 reso-luçã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 utili-zados 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!

Marilée Patta Daniel Carli C e Silva

Palavra dos professores conteudistas

Page 12: Algoritmos Email
Page 13: Algoritmos Email

e-Tec Brasil/CEMF/UnimontesAlgoritmos

AULA 1

Alfabetização Digital

13

Disciplina: Algoritmos (carga horária: 120 horas).

Ementa: Lógica. Variáveis e tipos de dados. Pseudolinguagem. Se-quência simples. Estrutura Condicional (simples e composta). Estrutura de repetição. Variáveis homogêneas. Variáveis heterogêneas. Registros. Proce-dimentos. Funções.

AULA OBJETIVOS DE APRENDIZAGEM MATE-RIAIS

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 detalha-mento de comandos computacionais.

- 5 h

2. Tipos de Da-dos, Variáveis, Expressões Matemáticas, sintaxes e se-manticas

- 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 sin-taxe e a semântica.

- 10 h

3. Pseudo-linguagem

Conhecer a pseudolinguagem utilizada na construção de algoritmos para ser aplicada em qualquer linguagem de programação.

- 5 h

4. Comandos Sequenciais

Entender a estruração sequencial dos co-mandos escritos na pseudolinguagem. - 5 h

5. Comandos Condicionais

Compreender e aplicar as possibilidades de testes condicionais simples e compostos. - 5 h

6.Comandos de repetições - Iterações

Compreender e aplicar as possibilidades de produzir laços de comandos repetitivos. - 20 h

7. Variáveis homogêneas: vetores e ma-trizes

- Utilizar variáveis que podem armazenar vários conteúdos ao mesmo tempo na me-mória;- Utilizar índices para acesso aos dados das variáveis.

- 20 h

8. Variáveis Heterogêneas: Registros e arquivos

Utilizar variáveis que podem armazenar persistentemente tipos distintos de dados. - 20 h

9. Procedimen-tos e Funções

Dividir o algoritmo em módulos, funções e procedimentos. - 20 h

Projeto instrucional

Page 14: Algoritmos Email
Page 15: Algoritmos Email

e-Tec Brasil/CEMF/UnimontesAlgoritmos

AULA 1

Alfabetização Digital

15

Aula 1 - Construção do conceito de ló-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 com-putacionais.

1.1 Conceitos básicos

O estudo se inicia abordando alguns conceitos que são fundamen-tais 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 Da-dos 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.

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.

Page 16: Algoritmos Email

e-Tec Brasil/CEMF/Unimontes Informática16

Em geral, as pessoas dizem: “isso é lógico, é lógico que tenho co-nhecimento”, ou ainda, “é lógico que isso não daria certo”.

Mas o que é lógica, afinal? Você pode responder?

Bem, vamos mostrar a origem da palavra lógica. Ela vem do grego clássico - λογική - logos, que significa palavra, pensamento, ideia, argumen-to, 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 pen-sar para não errar, usando a razão, dedutivamente e indutivamente.

Todo homem morreJoão é homemPortanto, João morre

O ferro conduz eletricidadeO ferro é metalO ouro conduz eletricidadeO ouro é metalO cobre conduz eletricidadeO cobre é metalLogo: 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 en-tre a lógica e o algoritmo?

1.1.2 Algoritmos

Você já ouviu falar de algoritmos??? Não!!! Você usa algoritmos to-dos os dias!

Pense bem! Como fazer para fritar um ovo?

Passo 1) Vá até a geladeiraPasso 2) Se a porta estiver fechada, então abraPasso 3) Pegue o ovo

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.

Page 17: Algoritmos Email

e-Tec Brasil/CEMF/UnimontesAlgoritmos 17

Passo 4) Feche a geladeiraPasso 5) Pegue a frigideiraPasso 6) Pegue o óleoPasso 7) Pegue o salPasso 8) Coloque a frigideira no fogão e ascenda o fogoPasso 9) Coloque o óleo e o sal na frigideiraPasso 10) Espere esquentarPasso 11) Quebre o ovo batendo-o na beira da frigideira e coloque dentro da mesmaPasso 12) Espere tostar o ovo por baixoPasso 13) Vire o ovoPasso 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 ob-ter um ovo frito.

Assim, pode-se entender que algoritmo é um conjunto de ações detalhadas, devidamente pensadas de forma lógica, visando obter um resul-tado final.

A prática do desenvolvimento do algoritmo resulta no aprimora-mento 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 algo-ritmos 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 é auto-maçã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. As-sim, 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.

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.

Page 18: Algoritmos Email

e-Tec Brasil/CEMF/Unimontes Informática18

Você percebe a automação em outras atividades? Vamos refletir como as áreas abaixo relacionadas se inserem na automação:

1) Medicina2) Educação3) Governo4) Comércio5) Indústrias6) Polícia7) Hospitais8) etc...

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 processa-mento 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?

O processamento de dados constitui-se basicamente de três etapas: entrada de dados, processamento e saída.

Entrada processamento Saída

Vamos relembrar o exemplo do cálculo da média descrito anterior-mente. 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.aluno1Ler nota.aluno2Ler nota.aluno 3.....,Ler nota. aluno 100

Observe o trecho do algoritmo que trata do processamento:

Soma = soma + nota.alunoxx

Faça uma pesquisa e descubra em quais

cursos a disciplina de algoritmos é ministrada.

Divulgue no AVEA.

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.

Page 19: Algoritmos Email

e-Tec Brasil/CEMF/UnimontesAlgoritmos 19

Observe o trecho do algoritmo que trata da saída de dadosImprima (“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 computa-dores 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. Po-ré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ê des-crever 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 da-dos 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 produ-zir, 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 da-dos de entrada em dados de saída e assim obter a solução do problema.

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 posicio-nados 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.

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.

Page 20: Algoritmos Email

e-Tec Brasil/CEMF/Unimontes Informática20

Mova o disco 3 da haste O para a haste D.Mova o disco 1 da haste T para a haste O.Mova o disco 2 da haste T para a haste D.Mova o disco 1 da haste 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) / CImprima (F);

A = 1;B = 1:C = 1;D = 0;F = ((1*1)**0)/1F = 1

A = 2;B = 2;C = 2;D = 0;F = ((2*2)**0)/2F = 1/2

X1 = (-B+( (SQRT(B**2) – (4*A*C))/2*AX2 = (-B-( (SQRT(B**2) – (4*A*C))/2*AImprima (X1,X2)

INÍCIOAndo até a porta;

Se a porta está fechada então abro a porta Senão saio e fechoFim se;Se alunos fora da sala então aguardo a entrada dos alunos em salaInício os trabalhos

Fim.

Vamos agora analisar um algoritmo genérico escrito em uma pseudo-linguagem (a pseudolinguagem ou pseudocódigo será estudado na unidade 3):

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.

Page 21: Algoritmos Email

e-Tec Brasil/CEMF/UnimontesAlgoritmos 21

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 qual-quer atividade, devemos buscar entender o problema analisando-o detalha-damente. 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 necessi-dades 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 inter-pretaçã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 Portugue-sa, como equivocadamente pensam muitos estudantes.

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.

Page 22: Algoritmos Email

e-Tec Brasil/CEMF/Unimontes Informática22

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 va-mos pensar numa criança atravessando a rua em companhia de seu pai:

1. pai pega a mão da criança2. 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ãoa. pai pega a criança no colob. 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çab. 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 res-ponsável, considerando a possibilidade de estar no colo:

1. Enquanto ainda existir criança para atravessar a rua2. Se a criança é de colo então

c. pai pega a criança no colod. 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çab. pai caminha com a criança até o outro lado da rua

4. pai volta para o outro lado da rua.

Page 23: Algoritmos Email

e-Tec Brasil/CEMF/UnimontesAlgoritmos 23

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 progra-maçã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 for-necido 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 é conside-rada 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.

Page 24: Algoritmos Email

e-Tec Brasil/CEMF/Unimontes Informática24

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 algo-ritmos?

9) Quais problemas podem ser encontrados na descrição narrativa?

10) Faça um resumo dos itens estudados na unidade 1.

Page 25: Algoritmos Email

e-Tec Brasil/CEMF/UnimontesAlgoritmos

AULA 1

Alfabetização Digital

25

Aula 2 - Tipos de dados, variáveis, expres-sõ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 opera-

dores;• 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 deci-mais ou fracionários, podendo ser positivos ou negativos.

Esse é fácil! Quer ver alguns exemplos? Vamos lá!

Page 26: Algoritmos Email

e-Tec Brasil/CEMF/Unimontes Informática26

144 é um número inteiro positivo0 é 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 decimais180. é um número real positivo com zero (nenhuma) casa decimal- 16.9 é um número real negativo com uma casa decimal0.0 é um número real com uma casa decimal0. é um número real com zero (nenhuma) casa decimal.

Você sabe dizer alguns exemplos relativos ao tipo de dados numérico?

Podemos citar, por exemplo:Matricula do alunoSalárioQuantidade de material em estoqueNúmero de filhosMédia da turmaEtc...

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 caracte-res 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 repre-sentação de um único dado literal, que é chamado de caractere (por exem-

É 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.

Page 27: Algoritmos Email

e-Tec Brasil/CEMF/UnimontesAlgoritmos 27

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 62)”QUEM ?” - Literal de comprimento 53)” “ - Literal de comprimento 14)”[email protected]” - - Literal de comprimento 155)”4+5-1=” - Literal de comprimento 66) “1” - Literal de comprimento 1

Podemos citar, por exemplo:Nome do alunoEndereçoNome do produtoDescrição do produtoEtc...

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 con-trole, 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 logico?

Impresso – s/nProcessado – s/nEncontrado – s/n

2.2 Variáveis

Uma variável é um local na memória RAM (Randomic Access Me-mory) 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?

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.

Você sabe dizer alguns exemplos relativos ao tipo de dados literal?

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.

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.

Page 28: Algoritmos Email

e-Tec Brasil/CEMF/Unimontes Informática28

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 va-riá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 atri-buiçã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 diferen-

tes 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:

Page 29: Algoritmos Email

e-Tec Brasil/CEMF/UnimontesAlgoritmos 29

Início Declaração de variáveis Inicialização de variáveis Procedimento lógico Entradas Processamento Exibição dos resultadosFim 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. Algu-mas 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 pro-cessamento 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 cor-responderá 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 processamen-to, devemos saber claramente, qual é o objetivo do algoritmo que estamos construindo, interpretando o problema em questão.

Page 30: Algoritmos Email

e-Tec Brasil/CEMF/Unimontes Informática30

Assim, devemos retirar das especificações, quais dados serão pro-duzidos, 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:

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.

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.

Page 31: Algoritmos Email

e-Tec Brasil/CEMF/UnimontesAlgoritmos 31

2.3 Expressões, operadores e funções

Para que possamos realizar os cálculos matemáticos, devemos cons-truir 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 pro-duzir resultado.

Veja um exemplo bem simples:10 – 2 = 810 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 - 2204 + 012) 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 1Operadores 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)

Page 32: Algoritmos Email

e-Tec Brasil/CEMF/Unimontes Informática32

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.

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)*F3) A**B**C (A**B)**C4) A/B/C/D ((A/B)/C)/D5) X> Y ou Q (A>Y) ou Q6) 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 2Exemplo de prioridade de execução

Prioridade de ExecuçãoA * 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.

Mas, preste atenção !!!

Todas as operações internas aos parênteses

são primeiramente executadas. Depois

é obedecida a ordem de prioridade dos

operadores aritméticos.

Page 33: Algoritmos Email

e-Tec Brasil/CEMF/UnimontesAlgoritmos 33

QUADRO 3Exemplo de prioridade de execução

Prioridade de ExecuçãoA*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 in-seridos em seus termos. Atribua valores diferentes dos anteriormente apre-sentados às variáveis da primeira e da segunda coluna e verifique o que acontece com os resultados.

2.3.2 Operadores lógicos

Além dos operadores aritméticos, também dispomos dos operado-res lógicos para elaborar as nossas expressões. O quadro 4 mostra os ope-radores lógicos.

QUADRO 4Operadores 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).

Veja bem. Em função dos parênteses inseridos na segunda expressão do exemplo, os resultados foram drasticamente alterados.

Page 34: Algoritmos Email

e-Tec Brasil/CEMF/Unimontes Informática34

2.3.3 Operadores relacionais

Veja bem! Para criarmos nossas expressões condicionais, devemos uti-lizar os operadores relacionais como mostra o quadro 5.

QUADRO 5Operadores 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 relacio-nais, 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).

Page 35: Algoritmos Email

e-Tec Brasil/CEMF/UnimontesAlgoritmos 35

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 7Funçõ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)

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) = 1G = Div (5,2) = 2

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.

Page 36: Algoritmos Email

e-Tec Brasil/CEMF/Unimontes Informática36

2.4 Expressões lógicas

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 ex-pressõ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) 23 é 8.

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 é verda-deira 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 so-bre proposições, chamadas operações lógicas, quais sejam:

a) NegaçãoChamamos negação de uma proposição p, a proposição repre-

sentada 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çãoChamamos conjunção de duas proposições p e q a proposição re-

presentada 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çãoChama-se disjunção de duas proposições p e q a proposição re-

presentada 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

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

Page 37: Algoritmos Email

e-Tec Brasil/CEMF/UnimontesAlgoritmos 37

Suponha duas perguntas feitas a quatro pessoas que se candidata-ram 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 8Tabela verdade caso entrevista

Candidato Conhece linguagem C?

Conhece linguagem Pascal?

Candidato Aprova-do 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ções2 – expressões aritméticas: +- unários,**, */, + - (binários)3 – Comparação: <,<=, =, >, >=, #4 – não5 – e6 – 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 pos-sui 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 es-tudado é de grande relevância. Foram aqui apresentados conceitos e exem-plos de tipos de dados possíveis de uso em nossos pseudocódigos, conceitos

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.

Page 38: Algoritmos Email

e-Tec Brasil/CEMF/Unimontes Informática38

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?

Page 39: Algoritmos Email

e-Tec Brasil/CEMF/UnimontesAlgoritmos

AULA 1

Alfabetização Digital

39

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éti-ca, 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 pseu-docódigos com estruturas condicionais e faremos breve comentário sobre funções.

Assim, esperamos que, ao final da leitura desta unidade, você possa:

- 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 construção do pseudocódigo, trazemos palavras do nosso idio-ma 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.

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.

Page 40: Algoritmos Email

e-Tec Brasil/CEMF/Unimontes Informática40

QUADRO 9Estrutura básica do pseudocódigo

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 progra-mador 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-tecBrasilVariáveisInício Escreva “Hei, você participa do E-tec Brasil”Fim

3.2 Endentação

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 finalida-des 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á en-dentada 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

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.

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.

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.

Você já estudou tipos de variáveis e composição de nomes na unidade 2.

Page 41: Algoritmos Email

e-Tec Brasil/CEMF/UnimontesAlgoritmos 41

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.

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 neces-sário que seja estabelecida uma convenção. Tal comando aqui será definido como Leia.

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.

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.

Page 42: Algoritmos Email

e-Tec Brasil/CEMF/Unimontes Informática42

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 entradaVariá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 exemploleiaVariá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.

Quando for possível, você pode usar somente

uma instrução Leia para receber o valor de

várias variáveis.

Page 43: Algoritmos Email

e-Tec Brasil/CEMF/UnimontesAlgoritmos 43

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ídaVariá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ídaVariáveis idade: inteiro;

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 desen-volver algoritmos. Apresentamos a você a estrutura básica do pseudocódigo identificando a forma de declarar variáveis e também de inicializar as mes-mas. 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 seguin-tes, os comandos sequenciais, os comandos condicionais, os comandos repe-titivos, além de apresentarmos, mais adiante, as estruturas homogêneas e heterogêneas de dados, com suas respectivas formas de manipulação.

É 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.

Page 44: Algoritmos Email

e-Tec Brasil/CEMF/Unimontes Informática44

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 ins-truçã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 co-mandos?

10) Quais são as regras necessárias para construir um pseudocódigo?

Page 45: Algoritmos Email

e-Tec Brasil/CEMF/UnimontesAlgoritmos

AULA 1

Alfabetização Digital

45

Aula 4 - Comandos sequenciais

Para o aprendizado de desenvolvimento de algoritmos, faz-se ne-cessário o estudo dos conceitos e das instruções primitivas estudados nas unidades anteriores. Além disso, a unidade que trata dos comandos sequen-ciais vem agregar conhecimento para a resolução e representação de algo-ritmos 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 deta-lhar 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 descontosb) Total de acréscimoc) Salário líquido.

Para resolver o problema anteriormente proposto, vamos mostrar a você o seguinte algoritmo:

Algoritmo CalculoDeFolhaVariá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;

São blocos de comandos dispostos um após o outro, sem nenhum desvio ou repetição

Page 46: Algoritmos Email

e-Tec Brasil/CEMF/Unimontes Informática46

INSS ← SalarioBruto*0.08; IR ßSalarioBruto * 0.10; FS ← (SalarioBruto – (INSS+IR)) * 0.005; TotalDeDescontos ← INSS + IR + FS; TotalDeAcrescimos ← (Dependentes * 50); SalarioLiquido ← SalarioBruto – TotalDeDescontos + TotalDe-

Acrescimos; 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?

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 rea-lize 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 CalculoDeFolhaVariáveis SalarioBruto, INSS, IR, FS, TotalDeDescontos, TotalDeAcres-

cimos, 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.

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.

Page 47: Algoritmos Email

e-Tec Brasil/CEMF/UnimontesAlgoritmos 47

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 Descontosb) Total de Acréscimoc) Salário Líquido

Assim, observe o algoritmo:Algoritmo CalculoDeFolhaVariáveis SalarioBruto, INSS, IR, FS, TotalDeDescontos, TotalDeAcres-

cimos, 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 CalculoDeFolhaVariáveis SalarioBruto, INSS, IR, FS, TotalDeDescontos, TotalDeAcres-

cimos, 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 + TotalDe-

Acrescimos;...Fim

No caso específico desse problema, estas variáveis são desneces-sárias, pois o resultado pode ser obtido diretamente, mediante operações matemáticas. Vejamos como poderia ficar esta resolução.

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.

Page 48: Algoritmos Email

e-Tec Brasil/CEMF/Unimontes Informática48

Agora, vamos analisar o próximo exemplo:Algoritmo CalculoDeFolhaVariáveis SalarioBruto, TotalDeDescontos, TotalDeAcrescimos, Salario-

Liquido : 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 compre-ensão da referida linha de operação.

Além disso, é importante documentar as funcionalidades do algorit-mo, 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!

Assim, veja o algoritmo:Algoritmo CalculoDeFolhaVariá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) + (Sala-rioBruto * 0.10))) * 0.05) + (Dependentes * 50);

Fim...

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.

Page 49: Algoritmos Email

e-Tec Brasil/CEMF/UnimontesAlgoritmos 49

Note a expressão acima. Há casos em que isso não é recomendado, tampouco deverá ser feito, pois, em uma necessidade de alteração, dificul-tará a compreensão.

Agora é com você!!Desenvolva um programa que receba o salário-base de um funcio-

ná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 CalculoDeFolhaVariá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 CalculoDeFolhaVariáveis SalarioBase, SalarioLiquido, Credito, Debito : Real;Início ... Credito ← (SalarioBase * 0.05); Debito ← (SalarioBase * 0.07); SalarioLiquido SalarioBase + Credito – Debito; ...Fim.

Page 50: Algoritmos Email

e-Tec Brasil/CEMF/Unimontes Informática50

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 to-dos 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, mostrare-mos alguns exemplos, a seguir.

Exemplos1) 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úmerosAlgoritmo 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çãoAlgoritmo 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.

Page 51: Algoritmos Email

e-Tec Brasil/CEMF/UnimontesAlgoritmos 51

4) Faça um algoritmo para converter horas em minutosAlgoritmo 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 grausAlgoritmo 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 temperaturaAlgoritmo 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.

Page 52: Algoritmos Email

e-Tec Brasil/CEMF/Unimontes Informática52

7) Faça um algoritmo para calcular a hipotenusa de um trianguloAlgoritmo 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ívelAlgoritmo gasto {OBJETIVO: CALCULAR OS GASTOS DE COMBUSTIVEL DE UM

AUTOMOVEL AUTOR: nome DATA CRIACAO: 18/10/2010 }

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.

Crie um exemplo de algoritmo que utiliza

comandos seqüenciais e utilize o AVEA para compartilhar a idéia

com seus colegas.

Page 53: Algoritmos Email

e-Tec Brasil/CEMF/UnimontesAlgoritmos 53

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 infor-mados 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.

Page 54: Algoritmos Email
Page 55: Algoritmos Email

e-Tec Brasil/CEMF/UnimontesAlgoritmos

AULA 1

Alfabetização Digital

55

Aula 5 - Comandos condicionais

Condições são comparações realizadas entre componentes de com-paração, sendo esses, variáveis, expressões matemáticas, campos de uma determinada estrutura de dados. Tais comparações possuem respostas ver-dadeiras 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 condi-cional, 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 comandosFim 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,

Page 56: Algoritmos Email

e-Tec Brasil/CEMF/Unimontes Informática56

Se não condição (falsa) então Grupo de comandosFim 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 comandosSenão (falsa) Grupo de comandosFim 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,

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 seSenão (falsa) Grupo de comandosFim 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.

Com o uso de aninhamentos, devemos tomar cuidado para não

perdermos o controle da lógica do processo.

Page 57: Algoritmos Email

e-Tec Brasil/CEMF/UnimontesAlgoritmos 57

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 menorvalorvariaveis 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 con-diçã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:

Page 58: Algoritmos Email

e-Tec Brasil/CEMF/Unimontes Informática58

....Se A > B senão A:= B;Fim se;

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 sim-ples 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 faixaVariaveis 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 efe-tue 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.

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.

Page 59: Algoritmos Email

e-Tec Brasil/CEMF/UnimontesAlgoritmos 59

Algoritmo SomaVariá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 MaiorNumeroVariá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.

Page 60: Algoritmos Email

e-Tec Brasil/CEMF/Unimontes Informática60

Vamos supor alguns valores para as variáveis A, B e C para realizar-mos testes no algoritmo anterior.

A = 3 B = 2 e C = 4

O quadro 10 mostra as instruções executadas com os dados atribuídos.

QUADRO 10Execução do algoritmo maior

instrução Resultado condição Resultado usuário

A é maior que B? verdade

A é maior que C? Falso Maior numero é C

FIm

Fonte: Própria.

A = 1 B = 3 e C = 0

O quadro 11 mostra as instruções executadas com os dados atribuídos.

QUADRO 11Execução do algoritmo maior

instrução Resultado condição Resultado usuário

A é maior que B? Falso

B é maior que C? verdade Maior úmero é B

Fonte: Própria.

A = 10 B = 3 e C = 0

O quadro 12 mostra as instruções executadas com os dados atri-buídos.

Quadro 12Execução do algoritmo maior

instrução Resultado condição Resultado usuário

A é maior que B? verdade

A é maior que C? verdade 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 con-dicional para a sua solução.

Lembre-se de que a sequência de comandos

depende de valores variáveis.

Page 61: Algoritmos Email

e-Tec Brasil/CEMF/UnimontesAlgoritmos 61

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 SeSenã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 ocor-rer 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......

Page 62: Algoritmos Email

e-Tec Brasil/CEMF/Unimontes Informática62

Observe agora que a expressão que é operada por E, só será verdadei-ra se todas retornarem verdadeiro.

5.4 Estrutura condicional - Caso

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, tornando-

os 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 gravida-des relativas à Terra:

QUADRO 13Gravidade 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.

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.

Page 63: Algoritmos Email

e-Tec Brasil/CEMF/UnimontesAlgoritmos 63

Para calcular o peso no planeta utilize a fórmula:PesoNoPlaneta = pesonaterra/100*Gravidade

Veja o algoritmo

Algoritmo PesoPlanetaVariá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 EscolhaFim.

Será exibido ao usuário um menu com as opções que ele pode es-colher 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 é real-mente essa. Veja no quadro, a seguir, essa situação.

Page 64: Algoritmos Email

e-Tec Brasil/CEMF/Unimontes Informática64

...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

{OBJETIVO: CONVERTER QTDE DE MINUTOS EM DIAS, HORAS E MINUTOS

AUTOR: nome

Page 65: Algoritmos Email

e-Tec Brasil/CEMF/UnimontesAlgoritmos 65

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}

Page 66: Algoritmos Email

e-Tec Brasil/CEMF/Unimontes Informática66

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)

Page 67: Algoritmos Email

e-Tec Brasil/CEMF/UnimontesAlgoritmos 67

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 decres-cente

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.”);

Page 68: Algoritmos Email

e-Tec Brasil/CEMF/Unimontes Informática68

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);

Page 69: Algoritmos Email

e-Tec Brasil/CEMF/UnimontesAlgoritmos 69

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ícioEscreva(“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

Page 70: Algoritmos Email

e-Tec Brasil/CEMF/Unimontes Informática70

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

Page 71: Algoritmos Email

e-Tec Brasil/CEMF/UnimontesAlgoritmos 71

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.

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 em-pregado 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 funcio-nário, bem como os respectivos descontos.

Crie um exemplo de algoritmo que utiliza comandos condicionais simples e compostos pensando nas suas atividades do seu dia-a-dia. Além disso, tente elaborar um problema que utiliza o recurso condicional Caso. Utilize o AVEA para compartilhar a idéia com seus colegas.

Page 72: Algoritmos Email

e-Tec Brasil/CEMF/Unimontes Informática72

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, saben-do 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, in-dique 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.

Page 73: Algoritmos Email

e-Tec Brasil/CEMF/UnimontesAlgoritmos

AULA 1

Alfabetização Digital

73

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.

Aula 6 - Estruturas de repetição

Nesta unidade, vamos passar com maior intensidade às especifici-dades dos pseudocódigos com estruturas de repetição.

A estrutura de repetição é caracterizada pela necessidade de exe-cutar 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 introdu-zir o conceito de iteração.

Ícone glossárioA 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 ba-tatas para descascar:

Traz cestas com batatas Traz panela do armário Descasca uma batata ... 13 vezes descasca uma batata devolve cesta à dispensa

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

Page 74: Algoritmos Email

e-Tec Brasil/CEMF/Unimontes Informática74

A construção de algoritmos para atender as duas necessidades tem que ter um mesmo padrão de comportamento. Pode-se, aqui, usar mecanis-mos 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 for-mas: 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 coman-dos, 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;

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.

Page 75: Algoritmos Email

e-Tec Brasil/CEMF/UnimontesAlgoritmos 75

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 elevaquadradoVariáveis

Inteiro: N,A;Início Leia(N); ENQUANTO N <> 0 FAÇA A = N ** 2; Escreva(A); Leia(N); Fim enquanto;FIM.

Agora é com você! Analise o exemplo a seguir descrito.

Calcule o imposto de renda de um grupo de contribuintes, consi-derando 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%.

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 DescontoIRVariá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;

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.

Quando o primeiro número lido for igual a zero, nenhum número será elevado ao quadrado.

Page 76: Algoritmos Email

e-Tec Brasil/CEMF/Unimontes Informática76

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 ve-zes, 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

Page 77: Algoritmos Email

e-Tec Brasil/CEMF/UnimontesAlgoritmos 77

... FimEnquantoFim...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 nova-mente 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 EstoqueVariá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

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”.

Page 78: Algoritmos Email

e-Tec Brasil/CEMF/Unimontes Informática78

Algoritmo EstoqueVariáveis...Início Estoque = 0; QtdeTipos = 0; TotalGeral = 0;... Enquanto (Nome <> “FIM”) Faça ... FimEnquanto ...Fim

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, Qt-deTipos se refere a quantidade itens, e a TotalGeral trará o Estoque Con-tá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 EstoqueVariáveis...Início... Escreva “Informe o nome do produto”; Leia Nome; Enquanto (Nome <> “FIM”) Faça ... ... FimEnquanto... Fim

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.

Veja a estrutura:

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, utiliza-

se 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.

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.

Page 79: Algoritmos Email

e-Tec Brasil/CEMF/UnimontesAlgoritmos 79

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 ContasVariá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;

Page 80: Algoritmos Email

e-Tec Brasil/CEMF/Unimontes Informática80

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 : “, (QtdeContasAPagar-QtdeContasEmAtraso);Fim

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 in-formará. 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 in-teiros até que um número ímpar seja digitado. O algoritmo deverá informar, ao final, quantos números pares foram informados.

Algoritmo NumeroParesVariá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!

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.

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( ).

Page 81: Algoritmos Email

e-Tec Brasil/CEMF/UnimontesAlgoritmos 81

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 con-tadores

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 coman-dos 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.

QUADRO 13Execuçã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

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.

Page 82: Algoritmos Email

e-Tec Brasil/CEMF/Unimontes Informática82

Imprima(i);Fim Para

O quadro 14 mostra os passos de execução do trecho acima.

QUADRO 14Execuçã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 15Execuçã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

Page 83: Algoritmos Email

e-Tec Brasil/CEMF/UnimontesAlgoritmos 83

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

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.

Algoritmo MenuNumerosVariá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

Reflita !!!

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 ?

Page 84: Algoritmos Email

e-Tec Brasil/CEMF/Unimontes Informática84

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

Para melhorar o entendimento das estruturas, você agora vai anali-sar 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;

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.

Page 85: Algoritmos Email

e-Tec Brasil/CEMF/UnimontesAlgoritmos 85

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/2010Variaveis 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;

Escreva (“O valor da expressão é: ”, exp); fim.

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

Page 86: Algoritmos Email

e-Tec Brasil/CEMF/Unimontes Informática86

inteiro: numfilhos, cont, salarios100, somafilhos; real: salario, somasalarios, maiorsalario;Início 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

Page 87: Algoritmos Email

e-Tec Brasil/CEMF/UnimontesAlgoritmos 87

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 dei-

xar 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íni-mo, 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 in-formados 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.

Page 88: Algoritmos Email

e-Tec Brasil/CEMF/Unimontes Informática88

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: 1 x n = 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 conten-do 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 positi-vos, 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.

Page 89: Algoritmos Email

e-Tec Brasil/CEMF/UnimontesAlgoritmos

AULA 1

Alfabetização Digital

89

Aula 7 - Variáveis homogêneas – Vetores e Matrizes

Você deve lembrar que definimos variável como uma entidade cria-da 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 re-cebe 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.

Nota

5.0 30. 80. ............... 9.5

1 2 3 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

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.

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.

Page 90: Algoritmos Email

e-Tec Brasil/CEMF/Unimontes Informática90

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 in-dexar 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 sim-ples. Para a referência a um elemento, usa-se o nome do vetor e a identifi-caçã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

Page 91: Algoritmos Email

e-Tec Brasil/CEMF/UnimontesAlgoritmos 91

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 ma-triz), 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 quanti-

dade 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.

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 pesquisacaractereVariaveis Tipo v = vetor [1:20]:caractere; V : letra; Info : caractere; I : inteiro;

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).

Page 92: Algoritmos Email

e-Tec Brasil/CEMF/Unimontes Informática92

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 ParaFim

Vamos falar agora do comando abandone...

Como o vetor tem 20 posições, o pior caso que vai acontecer é per-correr 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 po-siçã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 objeti-vo. 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 mos-

trar 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 pesquisacaractereVariaveis Tipo v = vetor [1:20]:caractere; V : letra; Info : caractere; Achou: lógico; I : inteiro;

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.

Page 93: Algoritmos Email

e-Tec Brasil/CEMF/UnimontesAlgoritmos 93

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

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>;

Onde li = limite inferior da linha Ls = limite superior da linha Li1 = limite inferior da coluna Ls1 = limite superior da coluna Tipo básico = um dos quatro tipos primitivos

A variável achou, como é do tipo lógico, pode receber os valores falso ou verdadeiro.

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.

Page 94: Algoritmos Email

e-Tec Brasil/CEMF/Unimontes Informática94

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 mos-tra, 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 BoletimVariáveis Tipo m = matriz [1:10, 1:10] inteiro; M = aluno I , J: InteiroIní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 ParaFim 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ê!!!

Page 95: Algoritmos Email

e-Tec Brasil/CEMF/UnimontesAlgoritmos 95

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 pe-

sos. 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 BoletimVariá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 estru-tura 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.

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 PagamentoVariáveis I, QtdeContas : Inteiro; Tipo m = matriz[1:2, 1:5] Real; M = Contas; TotalMultas, TotalContas: Real;

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.

Page 96: Algoritmos Email

e-Tec Brasil/CEMF/Unimontes Informática96

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 conhece-mos recursos interessantes para aplicar na lógica de programação.

Esperamos que agora seu entendimento torne-se cada vez mais cla-ro 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 comple-xos que os abordados nas unidades anteriores, exigindo leitura mais aprofun-dada 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 inquie-taçã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.

Proponha uma discussão no AVEA que trata da utilização dos vetores e matrizes. Insira seus algoritmos e compare-

os com os aqueles criados pelos colegas.

Page 97: Algoritmos Email

e-Tec Brasil/CEMF/UnimontesAlgoritmos 97

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 es-tatí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 ante-penú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.

Page 98: Algoritmos Email

e-Tec Brasil/CEMF/Unimontes Informática98

8) Elabore um algoritmo que permita registrar as notas dos alunos de Siste-mas 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 per-mitir 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 lista-gens por ordem de número de aluno e por ordem alfabética, conforme pedi-do 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 mul-tiplicaçã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 orde-nado 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”.

Page 99: Algoritmos Email

e-Tec Brasil/CEMF/UnimontesAlgoritmos 99

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últi-mo, 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.

Page 100: Algoritmos Email
Page 101: Algoritmos Email

e-Tec Brasil/CEMF/UnimontesAlgoritmos

AULA 1

Alfabetização Digital

101

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 estu-dar 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 da-dos 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 prin-cipalmente na pesquisa dos dados.

Para ordenação e pesquisa, em geral utilizam-se as variáveis indexa-das, como os vetores e as matrizes.

8.1 Ordenação de Dados

Vários métodos de classificação são trabalhados para o desenvolvimen-to 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.

Ao final desta unidade, você será capaz de:- classificar um conjunto de dados de forma ascendente ou descen-

dente;- aplicar pesquisa para busca seqüencial ou binária.

8.1.1 Método da bolha – Bubblesort

A filosofia básica desse método consiste em ler todo o vetor, com-parando 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 ele-mento. 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.

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.

Esse critério pode ser alfabético, para dados literais; crescente ou decrescente para dados numéricos.

Page 102: Algoritmos Email

e-Tec Brasil/CEMF/Unimontes Informática102

Vamos analisar uma ordenação de 5 elementos pelo método da bolha.Algoritmo Bubble_SortVariá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

Podemos pensar numa outra forma de trabalhar o mesmo processo de ordenação.

Vejamos o algoritmo, a seguir:Algoritmo Bubble_SortVariá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;

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.

Page 103: Algoritmos Email

e-Tec Brasil/CEMF/UnimontesAlgoritmos 103

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 paraFim

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 pes-quisa, que são a pesquisa sequencial e a pesquisa binária.

8.2.1 Método de pesquisa sequencial

Em um dos exemplos do conteúdo de vetores, foi estudado um al-goritmo de pesquisa sequencial ou linear. É o método mais objetivo para en-contrar 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 con-junto tenham sido verificados sem que o elemento procurado tenha sido encontrado (pesquisa mal-sucedida).

Para ilustrar o método de pesquisa sequencial, vamos apresen-tar o seguinte algoritmo:

Algoritmo PesquisaSequencialVariáveis Tipo m = vetor [1,10] caractere; Valor: caractere; m = nomes; I : Inteiro; Achou : Lógico;

Como vimos no estudo de vetores, a pesquisa consiste na verificação da existência de um valor dentro de um conjunto de dados.

Page 104: Algoritmos Email

e-Tec Brasil/CEMF/Unimontes Informática104

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 seFim

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 ve-

tor. no exemplo de 10 elementos, seria o quinto elemento.

O elemento que é apontado pela variável meio é localizado e com-parado 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.

Vamos analisar a seguinte situação:

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.

A pesquisa binária só pode ser utilizada com um conjunto ordenado

de valores.

Page 105: Algoritmos Email

e-Tec Brasil/CEMF/UnimontesAlgoritmos 105

Algoritmo PesquisaBinariaVariá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 seFim

Para elucidar tal processo, vamos mostrar as seguintes figuras que mostram um exemplo com uma matriz de quinze (15) elementos e a pesqui-sa 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

Page 106: Algoritmos Email

e-Tec Brasil/CEMF/Unimontes Informática106

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 re-cursos 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 ho-mogêneos teve, dentro dos textos vistos, mais um benefício identificado: a possibilidade de classificação e de pesquisa de valores. Dessa forma, a clas-sificaçã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.

Page 107: Algoritmos Email

e-Tec Brasil/CEMF/UnimontesAlgoritmos 107

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.

Page 108: Algoritmos Email
Page 109: Algoritmos Email

e-Tec Brasil/CEMF/UnimontesAlgoritmos

AULA 1

Alfabetização Digital

109

Aula 9 - Variáveis heterogêneas – Regis-tros

O estudo de registros vem propiciar mais recursos para que você de-senvolva 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 ma-neira, podem ser feitas diferentes combinações, gerando outros tipos de dados.

Um registro consiste em um certo número de itens de dados, cha-mados membros da estrutura, que não necessitam ser do mesmo tipo, agru-pados juntos, como mostra a figura a seguir.

Dados de Funcionário

Código: 4401 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;

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.

Page 110: Algoritmos Email

e-Tec Brasil/CEMF/Unimontes Informática110

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 rea-juste 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á traba-lhada nas unidades anteriores, os conceitos de código e regras de implemen-taçã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 VerLucroVariá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

Page 111: Algoritmos Email

e-Tec Brasil/CEMF/UnimontesAlgoritmos 111

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 seFim

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 BoletimVariá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 : “;

Page 112: Algoritmos Email

e-Tec Brasil/CEMF/Unimontes Informática112

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

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 ar-mazenado 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 regis-tro 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 orga-nizados para viabilizar um eficiente processo de busca e recuperação.

Crie um algoritmo que trabalhe com registro

de dados e compartilhe com seus colegas no

AVEA.

Page 113: Algoritmos Email

e-Tec Brasil/CEMF/UnimontesAlgoritmos 113

Atividades de aprendizagem

1) Defina campo, registros.

2) Com a utilização de registros, os dados se encontram persistente ou tem-porariamente 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.

Page 114: Algoritmos Email

e-Tec Brasil/CEMF/Unimontes Informática114

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

Page 115: Algoritmos Email

e-Tec Brasil/CEMF/UnimontesAlgoritmos

AULA 1

Alfabetização Digital

115

Registro é um conjunto de informações logicamente relacionadas, no qual cada unidade de informação constitui um campo de registro

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, Ex-clusã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 for-ma sequencial, deve-se percorrer o arquivo, registro por registro, até encon-trar 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

Vamos verificar o exemplo de declaração de arquivo sequencial:Tipo AGENDA arquivo sequencial de ENDEREÇOTipo ENDEREÇO = REGISTRO (NOME, RUA caracter, NUMERO inteiro,

CIDADE literal ou caractere)

Tipo COMPRA.PEDIDOS arquivo sequencial de PAPELETATipo PAPELETA registro (quantidade inteiro, ESPECIFICAÇÃO

caracterel)

Um arquivo só pode ser utilizado desde que se defina um registro para o armazenamento e processamento dos seus dados

Page 116: Algoritmos Email

e-Tec Brasil/CEMF/Unimontes Informática116

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.

Page 117: Algoritmos Email

e-Tec Brasil/CEMF/UnimontesAlgoritmos 117

Quando há um processo de leitura em arquivo sequencial, necessi-tamos 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 algo-ritmo 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 ín-dice. 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 conhe-cemos 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 ins-truçã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çãoVetores 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.

Page 118: Algoritmos Email

e-Tec Brasil/CEMF/Unimontes Informática118

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 fa-cilita 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 tem-porariamente 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 ar-quivos: sequencial e indexado.

10) Crie um arquivo para o armazenamento indexado de dados dos alunos da turma de Algoritmos do programa E-tec Brasil.

Page 119: Algoritmos Email

e-Tec Brasil/CEMF/UnimontesAlgoritmos

AULA 1

Alfabetização Digital

119

Aula 11 - Modularização: procedimentos e funções

Na última unidade do nosso estudo, abordaremos o processo de mo-dularização, enfatizando os procedimentos e funções. Tais recursos resultam na construção de subalgoritmos que são noções importantes para o particio-namento 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 proble-mas são particionados. Uma vez dividido um grande problema em pequenos problemas, é possível a resolução de cada um desses problemas individual-mente, 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 com-

portamento 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, su-brotinas ou subprogramas que são blocos de instruções que realizam tarefas específicas.

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.

Page 120: Algoritmos Email

e-Tec Brasil/CEMF/Unimontes Informática120

O código de um subalgoritmo é digitado uma vez e pode ser execu-tado 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 exe-cutados 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 entendi-

mento;• 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 pro-

gramas e a reutilização de subalgoritmos já implementados.

O algoritmo principal chama a execução do subalgoritmo que exe-cuta 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 exem-plo 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

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.

Page 121: Algoritmos Email

e-Tec Brasil/CEMF/UnimontesAlgoritmos 121

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 inter-no, pois é uma variável global.

Já, o vetor VET somente é declarado no bloco interno e sendo as-sim, 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 * JFim.

Agora é com você!Aponte as variáveis locais e globais que aparecem no algoritmo an-

terior.I e J = globaisX = 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âme-tros 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 pro-cedimento ou função, utilizam-se os parâmetros, podendo os dados trefega-rem de um algoritmo para outro.

Page 122: Algoritmos Email

e-Tec Brasil/CEMF/Unimontes Informática122

A passagem de parâmetros pode ser dada de duas formas: por va-lor 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 encon-tra. Dessa forma, qualquer alteração feita na variável no subalgoritmo refle-tirá diretamente na variável do algoritmo chamador.

Agora que você sabe o que são parâmetros e como acontece a pas-sagem dos valores do algoritmo chamador para o algoritmo chamado, vamos estudar os procedimentos.

11.4 Procedimentos

Procedimento é um subalgoritmo que retorna nenhum ou mais va-lores 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:

AlgoritmoVariá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 procedi-mento.

Page 123: Algoritmos Email

e-Tec Brasil/CEMF/UnimontesAlgoritmos 123

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 al-goritmo.

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 globaisO 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 al-goritmo.

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;

Page 124: Algoritmos Email

e-Tec Brasil/CEMF/Unimontes Informática124

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. Den-tro 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ênte-ses, 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));

Page 125: Algoritmos Email

e-Tec Brasil/CEMF/UnimontesAlgoritmos 125

IMPRIMA ABS(C**3) * A+B IMPRIMA ABS (ABS(A)) * ABS(A);Fim

Vamos destacar alguns pontos:A função deve estar em uma expressão ou retornando em uma va-

riá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 al-goritmo.

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 é apro-priada.

Vamos tecer as seguintes considerações em relações às funções re-cursivas:

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 cha-mada 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 cha-madas. 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

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.

Page 126: Algoritmos Email

e-Tec Brasil/CEMF/Unimontes Informática126

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 pala-vras, 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 armazena-mento 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 AlunosVariá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

Page 127: Algoritmos Email

e-Tec Brasil/CEMF/UnimontesAlgoritmos 127

Escreva “Aluno “, Nomes[I], “ média “, Notas[I]; FimSe; FimPara; Fim;InícioEntradaDeDados;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 modu-larizaçã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 re-torno é 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 auxi-lia 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 cal-cule o seu volume (v = 4/3.← .R3).

Page 128: Algoritmos Email

e-Tec Brasil/CEMF/Unimontes Informática128

2. Escreva um procedimento que receba as 3 notas de um aluno por parâme-tro 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.

Page 129: Algoritmos Email

e-Tec Brasil/CEMF/UnimontesAlgoritmos 129

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 é posi-tivo 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:

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

Page 130: Algoritmos Email

e-Tec Brasil/CEMF/Unimontes Informática130

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 pa-râ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 procedi-mento 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 proprie-dade 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.

Page 131: Algoritmos Email

e-Tec Brasil/CEMF/UnimontesAlgoritmos 131

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 pro-gramaçã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. Algorit-mos 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 microcom-putadores. 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 es-truturada. São Paulo: Makron Books, 1993. 141p.

SALVETTI, Dirceu Douglas et al. Algoritmos estruturados. 3ª ed. Rio de Ja-neiro: LTC, 1999.

SANTOS, Marcos Augusto dos et al. Programação estruturada de computa-dores: 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.

Page 132: Algoritmos Email

e-Tec Brasil/CEMF/Unimontes Informática132

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, Mo-nografia, 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 da-dos, 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, Adminis-traçã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 com-putaçã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 Se-guranç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)

Page 133: Algoritmos Email
Page 134: Algoritmos Email

e-Tec Brasil/CEMF/UnimontesEscola Técnica Aberta do Brasil