• Nenhum resultado encontrado

Logica Programação

N/A
N/A
Protected

Academic year: 2021

Share "Logica Programação"

Copied!
68
0
0

Texto

(1)
(2)

Curso Técnico em Informática

(3)

Robson Braga de Andrade

Presidente da Confederação Nacional da Indústria

Rafael Lucchesi

Diretor do Departamento Nacional do SENAI

Regina Maria de Fátima Torres

Diretora de Operações do Departamento Nacional do SENAI

Alcantaro Corrêa

Presidente da Federação da Indústria do Estado de Santa Catarina

Sérgio Roberto Arruda

Diretor Regional do SENAI/SC

Antônio José Carradore

Diretor de Educação e Tecnologia do SENAI/SC

Marco Antônio Dociatti

(4)

Confederação Nacional da Indústria

Serviço Nacional de Aprendizagem Industrial

Curso Técnico em Informática

Lógica de Programação

Helenilson Ricardo Kitzberger

Florianópolis/SC

2011

(5)

É proibida a reprodução total ou parcial deste material por qualquer meio ou sistema sem o prévio consentimento do editor.

Autor

Helenilson Ricardo Kitzberger

Fotografias

Banco de Imagens SENAI/SC http://www.sxc.hu/

http://office.microsoft.com/en-us/ images/ http://www.morguefile.com/

http://www.bancodemidia.cni.org.br/

Ficha catalográfica elaborada por Luciana Effting CRB14/937 - Biblioteca do SENAI/SC Florianópolis K62l

Kitzberger, Helenilson Ricardo

Lógica de programação / Helenilson Ricardo Kitzberger. – Florianópolis : SENAI/SC, 2011.

67 p. : il. color ; 28 cm. Inclui bibliografias.

1. Programação (Computadores). 2. Programação lógica. 3. Algoritmos. 4. Estruturas de dados (Computação). I. SENAI. Departamento Regional de Santa Catarina. II. Título.

CDU 004.43

SENAI/SC — Serviço Nacional de Aprendizagem Industrial

Rodovia Admar Gonzaga, 2.765 – Itacorubi – Florianópolis/SC CEP: 88034-001

Fone: (48) 0800 48 12 12 www.sc.senai.br

(6)

Prefácio

Você faz parte da maior instituição de educação profissional do estado. Uma rede de Educação e Tecnologia, formada por 35 unidades conecta-das e estrategicamente instalaconecta-das em toconecta-das as regiões de Santa Catarina. No SENAI, o conhecimento a mais é realidade. A proximidade com as necessidades da indústria, a infraestrutura de primeira linha e as aulas teóricas, e realmente práticas, são a essência de um modelo de Educação por Competências que possibilita ao aluno adquirir conhecimentos, de-senvolver habilidade e garantir seu espaço no mercado de trabalho. Com acesso livre a uma eficiente estrutura laboratorial, com o que existe de mais moderno no mundo da tecnologia, você está construindo o seu futuro profissional em uma instituição que, desde 1954, se preocupa em oferecer um modelo de educação atual e de qualidade.

Estruturado com o objetivo de atualizar constantemente os métodos de ensino-aprendizagem da instituição, o Programa Educação em Movi-mento promove a discussão, a revisão e o aprimoraMovi-mento dos processos

de educação do SENAI. Buscando manter o alinhamento com as neces-sidades do mercado, ampliar as possibilidades do processo educacional, oferecer recursos didáticos de excelência e consolidar o modelo de Edu-cação por Competências, em todos os seus cursos.

É nesse contexto que este livro foi produzido e chega às suas mãos. Todos os materiais didáticos do SENAI Santa Catarina são produções colaborativas dos professores mais qualificados e experientes, e contam com ambiente virtual, mini-aulas e apresentações, muitas com anima-ções, tornando a aula mais interativa e atraente.

Mais de 1,6 milhões de alunos já escolheram o SENAI. Você faz parte deste universo. Seja bem-vindo e aproveite por completo a Indústria do Conhecimento.

(7)
(8)

Sumário

Conteúdo Formativo 9

Apresentação 11

12 Unidade de estudo 1

Introdução à Lógica

de Programação

Seção 1 - Conceitos Seção 2 - Formas de repre-sentação

Seção 3 - Teste de mesa Seção 4 - Ambiente

20 Unidade de estudo 2

Algoritmos

Seção 1 - Tipos de dados Seção 2 - Constantes e variáveis Seção 3 - Expressões Seção 4 - Funções Seção 5 - Atribuição Seção 6 - Comandos de entrada e saída 13 14 16 16

28 Unidade de estudo 3

Estruturas de

Seleção

Seção 1 - Introdução Seção 2 - Comando Se Seção 3 - Ninhos de coman-do Se

Seção 4 - Comando Escolha

34 Unidade de estudo 4

Estruturas de

Repetição

Seção 1 - Introdução Seção 2 - Comando

Enquan-to

Seção 3 - Comando Repita Seção 4 - Comando Para

40 Unidade de estudo 5

Estruturas

Homogêneas

Seção 1 - Introdução Seção 2 - Vetores Seção 3 - Matrizes 29 29 31 32 35 36 37 38

48 Unidade de estudo 6

Estruturas

Heterogêneas

Seção 1 - Introdução Seção 2 - Registros

54 Unidade de estudo 1

Funções

Seção 1 - Introdução Seção 2 - Utilização de sub-programas

Seção 3 - Argumentos e parâmetros

Seção 4 - Funções Seção 5 - Procedimentos Seção 6 - Âmbito de variá-veis

Seção 7 - Argumentos de subprogramas

Seção 8 - Erros mais comuns

Finalizando 62

Referências 64

49 49 21 23 23 25 26 27 41 42 45 55 55 56 57 58 58 59 61

(9)
(10)

Conteúdo Formativo

Carga horária da dedicação

Carga horária: 120 horas

Competências

Desenvolver algoritmos e programas utilizando técnicas, lógica e linguagens de programação para soluções computacionais.

Conhecimentos

▪ Estruturas de controle e repetição.

▪ Estruturas de dados heterogêneas (registros).

▪ Estruturas de dados homogêneas (vetores, matrizes).

▪ Ferramentas de auxílio à aprendizagem/interpretador de portugol. ▪ Fluxogramas.

▪ Funções, procedimentos, métodos. ▪ Matrizes.

▪ Metodologias de testes (teste de mesa). ▪ Programação estruturada.

▪ Pseudocódigo. ▪ Tipos de dados. ▪ Variáveis e constantes. ▪ Vetores.

▪ Operadores aritméticos, relacionais e lógicos, expressões lógicas e aritméticas.

Habilidades

▪ Aplicar a lógica de programação.

▪ Aplicar linguagens para construção de algoritmos. ▪ Estruturar soluções lógicas.

▪ Elaborar documentação do algoritmo. ▪ Executar testes manuais e automatizados. ▪ Aplicar abstração.

(11)

10 CURSOS TÉCNICOS SENAI

Atitudes

▪ Organização e zelo na utilização de equipamentos. ▪ Foco no conteúdo trabalhado.

▪ Acesso a sítios relacionados ao tema trabalhado. ▪ Organização e limpeza dos ambientes coletivos.

▪ Dedicação e empenho nas atividades curriculares e extracurriculares. ▪ Capacidade de abstração.

▪ Trabalho em equipe.

▪ Apresentação de novas soluções para situações-problema. ▪ Cumprimento de prazos.

(12)

Apresentação

Seja bem-vindo à unidade curricular de Lógica de Programação! O objetivo principal é demonstrar técnicas para a resolução de proble-mas e, consequentemente, automatização de tarefas. Você sabia que o aprendizado da lógica é essencial para a formação de um bom progra-mador? É verdade. E os conhecimentos sobre lógica servirão de base para o aprendizado de todas as linguagens de programação, estruturadas ou não. De um modo geral, esses conhecimentos serão de suma im-portância, pois ajudarão no cotidiano para o desenvolvimento de um raciocínio rápido.

Nesta unidade curricular você estudará os conceitos básicos de lógica de programação, as formas de representação e, principalmente, os algorit-mos, que auxiliam na estruturação de uma sequência lógica para resolu-ção de problemas e automatizaresolu-ção de tarefas. Você irá aprender de que forma utilizamos os algoritmos para a tomada de decisões, repetições e manipulação de informações.

Esperamos que, por meio desse conteúdo, você conheça em detalhes o que é e como aplicar a lógica de programação em sua vida profissional. Bons estudos!

Helenilson Ricardo Kitzberger

Helenilson Ricardo Kitzberger é graduado em Sistemas de In-formação pelo Centro Universi-tário de Jaraguá do Sul. Atual-mente trabalha como analista de sistemas e também é pro-prietário de uma empresa de desenvolvimento de software para gestão empresarial. Atua também como pesquisador e professor no SENAI de Jaraguá do Sul, onde ministra aulas no curso Técnico em Informática.

(13)

Unidade de

estudo 1

Seções de estudo

Seção 1 – Conceitos

Seção 2 – Formas de representação Seção 3 – Teste de mesa

(14)

Introdução à Lógica de

Programação

Seção 1

Conceitos

Você já ouviu falar em lógi-ca de programação, sequência lógica, instruções, algoritmos e programas? Esses são alguns dos conceitos elementares de lógica que você verá a seguir. Em relação aos algoritmos, você verá que, relacionados à lógica, eles resultam em programação. Vamos iniciar? Aperte os cintos e embarque no mundo da lógica de programação!

Lógica de programação

Para Forbellone e Eberspächer (2005, p. 12), a lógica pode ser relacionada com a “correção do pensamento”. Correção de pensa-mento? Isso mesmo! Uma de suas preocupações é determinar quais operações são válidas e quais não são, fazendo análises das formas e leis do pensamento.

A lógica de programação é neces-sária para pessoas que desejam trabalhar com o desenvolvimen-to de sistemas e programas. Ela permite definir a sequência lógica para o desenvolvimento.

Lógica de programação é a técni-ca de entécni-cadear pensamentos para atingir determinado objetivo.

E sequência lógica, você sabe o que é? Então acompanhe!

Sequência lógica

Os pensamentos que você estu-dou na lógica de programação podem ser descritos como uma sequência de instruções, que de-vem ser seguidas para cumprir uma determinada tarefa.

Sequência lógica são passos executados até atingir um objetivo ou solução de um problema.

Instruções

Na linguagem comum, en-tende-se por instruções um conjunto de regras ou normas definidas para a realização ou emprego de algo.

Em informática, porém, instrução é a informação que indica a um computador uma ação elementar a executar. Convém ressaltar que uma ordem isolada não permite realizar o processo completo. Para isso, é necessário um conjunto de instruções colocadas em ordem sequencial lógica.

Por exemplo, para fazer uma omelete de batatas, é preciso co-locar em prática uma série de instruções: descascar as batatas, bater os ovos, fritar as batatas etc. É evidente que essas instruções precisam ser executadas em uma ordem adequada – não se pode descascar as batatas depois de fritá-las.

Dessa maneira, uma instrução to-mada de forma isolada não tem muito sentido. Para se obter o resultado, é preciso colocar em prática o conjunto de todas as ins-truções, na ordem correta.

Instruções são um conjunto de regras ou normas definidas para a realização ou emprego de algo. Em informática, é o que indica a um computador uma ação elementar a execu-tar.

A lógica de programação sig-nifica o uso correto das leis do pensamento e de processos de raciocínio e simbolização formais na programação de computadores, objetivando a racionalidade e o desenvol-vimento de técnicas que coo-perem para a produção de so-luções logicamente válidas e coerentes, que resolvam com qualidade os problemas que se deseja programar.

(15)

14 CURSOS TÉCNICOS SENAI

Algoritmos

Um algoritmo é formalmente uma sequência finita de passos que le-vam à execução de uma tarefa. É possível pensar em algoritmo como uma receita, uma sequên-cia de instruções que dão cabo de uma meta específica. Essas tarefas não podem ser redundantes nem subjetivas na sua definição. Elas devem ser claras e precisas. Como exemplos de algoritmos existem os algoritmos das ope-rações básicas (adição, multipli-cação, divisão e subtração) de números reais decimais. Outros exemplos seriam os manuais de aparelhos eletrônicos, que expli-cam passo a passo como utilizá--los.

Até mesmo as coisas mais simples podem ser descritas por sequên-cias lógicas. Vamos a um exem-plo: como chupar bala. Observe!

Pegar a bala.

Retirar o papel.

Chupar a bala.

Jogar o papel no lixo.

Algoritmo é a descrição de um con-junto de ações que, obedecidas, atingem o objetivo esperado.

Segundo Lopes e Garcia (2002), algoritmo não é a solução de um problema, pois, se assim fosse, cada problema teria um único al-goritmo. Algoritmo é um conjun-to de passos que levam à solução de um determinado problema e, em geral, são muitos os caminhos que levam à solução.

Programas

Os programas de computadores nada mais são do que algorit-mos escritos em uma linguagem de computador (Pascal, C, Co-bol, Fortran, Visual Basic, entre outras) e que são interpretados e executados por uma máquina; no caso, um computador. Com essa interpretação rigorosa, um programa é, por natureza, muito específico e rígido em relação aos algoritmos da vida real.

Com esses conceitos, certamente agora você estará pronto para se-guir para a próxima seção. Vamos lá!

Seção 2

Formas de

representação

As formas mais comuns de repre-sentação de algoritmos são as se-guintes. Acompanhe!

Descrição narrativa: os algo-ritmos são expressos diretamente em linguagem natural.

Fluxograma convencional: é uma representação gráfica que emprega formas geométricas padronizadas para indicar as diversas ações e decisões que de-vem ser executadas para resolver o problema.

Pseudolinguagem: emprega uma linguagem intermediária entre a linguagem natural e uma linguagem de programação para descrever os algoritmos.

Mas veja bem! Não existe con-senso entre os especialistas sobre qual seria a melhor maneira de representar um algoritmo. Atu-almente, a maneira mais comum de representar algoritmos é por meio de uma pseudolinguagem ou pseudocódigo. Essa forma de representação tem a vantagem de fazer com que o algoritmo seja es-crito de uma maneira próxima de uma linguagem de programação de computadores.

Descrição narrativa

Como ilustração de algoritmo em linguagem natural, considera a se-guinte receita.

Providencie manteiga, ovos, 2 Kg de massa etc.

Misture os ingredientes.

Despeje a mistura na forma de bolo.

Leve a forma ao forno.

Espere 20 minutos.

Retire a forma do forno.

Deixe esfriar.

Prove.

Essa forma de representação é bastante conhecida, por utilizar a linguagem natural, porém tem algumas desvantagens, como im-precisão, pouca confiabilidade e principalmente ser extensa, pois escreve-se muito para dizer pouca coisa.

(16)

Fluxograma convencional

Essa representação de algoritmos emprega várias formas geométricas para descrever cada uma das possíveis ações durante a execução dos algoritmos. Existem algumas formas geométricas empregadas normal-mente e que você poderá ver na figura seguinte. Cada uma das formas se aplica a uma determinada ação, como está indicado. Existem outras for-mas que podem ser aplicadas, no entanto, essas forfor-mas serão suficientes para os exemplos que serão mostrados nesta unidade curricular.

Figura 1: Formas geométricas

Como primeiro exemplo de um algoritmo descrito por meio de fluxo-gramas, considere o exemplo do algoritmo para decidir o que fazer em um dia de domingo. Veja a próxima figura!

(17)

16 CURSOS TÉCNICOS SENAI

A representação gráfica por meio de fluxograma é uma das ferra-mentas mais conhecidas na repre-sentação de algoritmos, utiliza um padrão mundial e diz muito mais do que palavras. Porém, sua uti-lização reflete em pouca atenção aos dados, não oferecendo recur-sos para descrevê-los, e complica--se na medida em que o algoritmo cresce.

Você sabe o que é uma pseudolin-guagem? Vamos descobrir juntos!

Pseudolinguagem

Esse modo de representar algo-ritmos procura empregar uma linguagem que esteja o mais pró-xima possível de uma linguagem de programação de computadores de alto nível, mas evitando defi-nir regras de construção grama-tical muito rígidas. A ideia é usar as vantagens do emprego da lin-guagem natural, mas restringindo o escopo da linguagem. Normal-mente, essas linguagens são ver-sões ultrarreduzidas de linguagens de alto nível do tipo Pascal ou C. Ficou mais claro agora? Então veja a seguir um exemplo de pseu-dolinguagem.

algoritmo“CALCULA_DOBRO” var

varNum, varDobro : inteiro inicio leia (varNum) varDobro ← 2 * varNum Escreva (varDobro) fimalgoritmo O uso da pseudolinguagem, ou linguagem algorítmica, tem inú-meras vantagens, como utilização do português como base e a passa-gem quase imediata do algoritmo para uma linguagem de progra-mação qualquer. No entanto, não tem padrão definido, dificultando a leitura em alguns momentos.

Seção 3

Teste de mesa

Após desenvolver um algoritmo é preciso testá-lo. Esse teste é chamado de TESTE DE MESA, que significa seguir as instruções do algoritmo de maneira precisa para verificar se o procedimento utilizado está correto ou não. Mas como esse teste deve ser feito? Veja na tabela seguinte um exem-plo de teste de mesa que valida o algoritmo CALCULA_DOBRO, apresentado na seção anterior.

Tabela 1: Teste de mesa

varNum varDobro

2 4

6 12

Nesse exemplo deve-se atribuir valores a “varNum”, executar o cálculo descrito no algoritmo e avaliar se “varDobro” vai resultar como na tabela anterior.

Seção 4

Ambiente

O computador

Os computadores podem ser usa-dos de forma eficiente na solução de certos tipos de problemas. Os problemas que suportam trata-mento por computador em geral envolvem grandes quantidades de dados ou são problemas de natureza complexa, exigindo a execução de um grande número de passos para alcançar a solução. Basicamente, são problemas na área de processamento de dados e na área científica.

O computador é uma ferramenta que permite a realização do proces-samento automático (ou eletrôni-co) de dados.

Mas o que é processamento de dados?

Define-se por processamento de dados qualquer atividade que, uti-lizando informações (ou dados), efetua transformações para obter novas informações (ou dados) como resultado.

(18)

Figura 3: Processamento de dados

Porém, a tarefa desempenhada pelos computadores é apenas parte do processo de solução de problemas. As etapas na solução de problemas são:

entendimento do problema;

criação de uma sequência de operações (ou ações) que, quando exe-cutadas, produzem a solução para o problema;

execução dessa sequência de operações;

verificação da adequação da solução.

As etapas de entendimento do problema, criação de sequência de ações e verificação da adequação da solução são tarefas desempenhadas por pessoas. Já a execução das operações pode ser desempenhada por com-putadores.

Os computadores têm a capacidade de executar processos complicados e com grande quantidade de informações de forma rápida e confiável.

Programação

Programação é a sequência de planejamento, projeto, escrita e testes de instruções desempenhados pelo computador. É uma arte e uma ciên-cia. Arte porque existem muitas maneiras de se realizar o trabalho de programação. Existe espaço para uma considerável dose de criatividade. É também uma ciência, porque existem algumas regras que devem ser seguidas, porque é necessário o uso de lógica e porque existem alguns métodos rigorosos de programação que asseguram a eficiência, econo-mia e a utilidade dos programas gerados.

Para tornar o trabalho de programação mais fácil, divida sistematica-mente em partes menos complexas (essa técnica denomina-se “dividir para conquistar”).

E você sabe quando um programa é confiável?

Um programa é considerado confiável quando consegue fazer com que o computador cumpra com o objetivo proposto. Os programas constru-ídos devem ser eficazes, realizando a tarefa definida de forma eficiente, utilizando os melhores meios para realizá-la.

O maior problema na construção de programas é a complexidade. Essa complexidade representa a quantidade de situações diferentes que um problema pode apresentar e que devem ser previstas na solução do mes-mo. Portanto, ao se construir um programa, o objetivo principal é ven-cer a complexidade do problema a ser solucionado.

(19)

18 CURSOS TÉCNICOS SENAI

Mas o que fazer para trabalhar com essa complexidade?

Você poderá dividir a programação em duas fases distintas. Acompanhe!

Figura 4: Fases da programação

Para a fase da programação você terá as seguintes etapas:

Modelização (ou resolução) do problema: determinação do modelo de solução para o problema proposto na forma de um algoritmo com-putacional. Assim, a elaboração de um algoritmo é o primeiro passo para a preparação de um programa de computador. Esse algoritmo deve ser independente da linguagem de programação que será utilizada.

Implementação: é a transformação (ou codificação) do algoritmo em alguma linguagem de programação adequada ao modelo elaborado. Linguagem de programação? O que é isso? Veja a seguir!

Linguagens de programação

Linguagem é uma maneira de comunicação que segue uma forma e uma estrutura com significado interpretável. Portanto, linguagem de progra-mação é um conjunto finito de palavras, comandos e instruções, escritos com o objetivo de orientar a realização de uma tarefa pelo computador. Logicamente, a linguagem utilizada pelos indivíduos no cotidiano é dife-rente da linguagem utilizada pela máquina. A máquina trabalha somente com códigos numéricos (linguagem de máquina), baseados nos números 0 e 1 (sistema binário), que representam impulsos elétricos, ausente e presente.

Assim, qualquer linguagem de programação deve estar situada entre dois extremos: o da linguagem natural do homem (muito clara, porém lenta) e o da linguagem de máquina (muito rápida, porém complexa).

(20)

Esse é o conceito de nível de linguagem: alto nível para as mais pró-ximas da linguagem humana; baixo nível para as mais semelhantes à linguagem de máquina.

Tradutores

Para que um computador possa “entender” um programa escrito em uma linguagem de alto nível, torna-se necessário um meio de tradução entre a linguagem utilizada no programa e a linguagem de máquina. Esse meio pode ser de dois tipos: compilador e interpretador. Saiba mais so-bre cada um deles!

Compilador

Traduz o programa escrito em linguagem de alto nível (programa-fonte) para um programa equivalente escrito em linguagem de máquina (pro-grama-objeto).

Interpretador

Traduz e envia para execução instrução por instrução e o programa per-manece na forma de fonte.

Aqui você finaliza a primeira unidade do curso, onde conheceu concei-tos de lógica de programação, sequência lógica, instruções, algoritmos e programas. Viu que os algoritmos podem ser representados por descrição narrativa, fluxograma convencional e pseudolinguagem, além do teste de mesa e do ambiente. Agora você está pronto para seguir para a próxima etapa: o estudo da seção seguinte, cujo tema será algoritmos. Então, reúna motivação e comprometimento e vá em busca de novos saberes!

(21)

Unidade de

estudo 2

Seções de estudo

Seção 1 – Tipos de dados Seção 2 – Constantes e variáveis Seção 3 – Expressões

Seção 4 – Funções Seção 5 – Atribuição

(22)

Algoritmos

Seção 1

Tipos de dados

Como você já estudou, um al-goritmo é constituído de uma sequência de instruções a serem seguidas para a obtenção de solu-ções a algum problema. Nessa so-lução, são manipulados diversos dados. Esses dados podem ser os apresentados pelo problema – os dados intermediários – que são gerados durante a execução do algoritmo, ou os dados que repre-sentam a solução do problema.

Com isso, pode-se concluir que os dados manipulados dentro de um algoritmo po-dem ser classificados em vários tipos, com suas carac-terísticas e operações. Cada linguagem de programação tem sua própria classificação.

Todo dado a ser tratado em um algoritmo deve pertencer a algum tipo, que irá determinar o domínio de seu conteúdo. Os tipos mais comuns de dados são conhecidos como tipos primitivos de dados. São eles: inteiro, real, caractere e lógico. Quer saber o que cada um deles representa? Vamos adiante!

Inteiro

Toda e qualquer informação numérica que pertença ao conjunto dos números inteiros (negativo, nulo ou positivo).

Exemplos: 39; 0; -56 entre outros.

Real

Toda e qualquer informação numérica que pertença ao conjunto dos números reais (negativo, nulo ou positivo, inteiro ou fracionário).

Exemplos: -4, 3; 0, 35; 1,23

Caractere

São caracterizadas como tipos caracteres as sequências contendo letras, números e símbolos especiais. Uma sequência de caracteres deve ser indicada entre aspas (“ ”). Esse tipo de dado é também conhecido como alfanumérico, string, literal ou texto.

Exemplos: “Rua Alfa, 52 Apto 1”; “Fone: 3276-9988”; “04387-456”; “ “; “7”.

Lógico

São caracterizados como tipos lógicos os dados com valores verdadeiros e falsos, sendo que podem representar apenas um desses dois valores. 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. A tabela que você verá a seguir resume os tipos de dados mais comuns e sua definição nas linguagens utilizadas no decorrer do material. Veja!

Tabela 2: Tipos de dados

Tipo Exemplo VisuAlg Java

Inteiro 2 | 45 | 100 inteiro int

Real 2,456 | 101,19 real float

Caractere “A” | “4” | “Teste” caractere char / string Lógico Verdadeiro | Falso logico true / false

(23)

22 CURSOS TÉCNICOS SENAI

Seção 2

Constantes e variáveis

Constantes

Constante é um determinado va-lor fixo que não se modifica ao longo do tempo durante a execu-ção de um programa. Conforme o seu tipo, a constante é classificada como sendo inteira, real, caractere e lógica.

Exemplo: constPI = 3.14

Variáveis

Variável é um objeto (uma posi-ção frequentemente localizada na memória), capaz de armazenar um valor ou expressão. As vari-áveis só “existem” em tempo de execução, sendo associadas a “no-mes”, chamadas identificadores, durante a criação dos algoritmos. Em relação à variável, estamos tratando de uma região de memó-ria (do computador) previamente identificada, cuja finalidade é ar-mazenar os dados ou informa-ções de um programa por um de-terminado espaço de tempo. Para que você entenda melhor, pense que a memória do computador se organiza tal qual um armário com várias divisões. Cada divisão é identificada por um endereço diferente em uma linguagem que o computador entende.

Assim, o computador armazena os dados nessas divisões, sendo que em cada divisão só é possível armazenar um dado e, toda vez que o computador armazenar um dado em uma dessas divisões, o dado que antes estava armazena-do é eliminaarmazena-do. Mas lembre-se de que o conteúdo pode ser alterado, mas somente um dado pode ser armazenado por vez naquela di-visão.

Uma variável é composta por dois elementos básicos:

conteúdo: valor da variável e identificador;

nome: dado à variável para possibilitar sua utilização e loca-lização.

O conteúdo de uma variável pode ser de vários tipos: inteiro, real, caractere ou lógico, entre outros. Normalmente, quando se ensi-na algoritmo, trabalha-se com os quatro tipos citados.

Uma vez definidos o nome e o tipo de uma variável, não será possível alterá-los no decorrer do algoritmo. Por outro lado, o con-teúdo de uma variável é um ob-jeto de constante modificação no decorrer do programa, de acordo com o fluxo de execução do mes-mo.

Em algoritmos, as variáveis serão definidas no início, por meio de um comando definido conforme o exemplo seguinte.

algoritmo “CALCULA_DOBRO” var

varNum, varDobro : inteiro inicio

fimalgoritmo

Existem duas variáveis declaradas. Uma é a “varNum” e a outra é a “varDobro”, ambas possuindo o mesmo tipo de dado, no caso in-teiro.

Como pode ser visto, “varNum” e “varDobro” são os nomes das variáveis, e é por meio desses no-mes que é possível alterar e resga-tar o valor presente nela.

Quer saber o que são variáveis globais e variáveis locais? Então vá em frente para saber mais!

Variáveis globais

Uma variável global é uma variá-vel acessívariá-vel em todos os escopos de um algoritmo. O mecanismo de interação com variáveis globais é chamado ambiente global. Mas fique atento! O uso de vari-áveis globais é geralmente con-siderado inadequado, pois seu conteúdo pode ser potencialmen-te modificado de qualquer local e qualquer parte de um código pode depender dele.

Variáveis locais

Variáveis locais são aquelas decla-radas no início de um subalgorit-mo. São visíveis, ou seja, podem ser utilizadas somente pelo subal-goritmo onde foram declaradas. Outros subalgoritmos ou mesmo o algoritmo principal não pode utilizá-la.

Variáveis locais somente per-manecem válidas durante a execução da função ou pro-cedimento e, em seguida, são reinicializadas em zero.

Cada vez que a função é chamada, os valores gerados anteriormente não estão disponíveis.

E você sabe qual a diferença entre constantes e variáveis? Acompa-nhe!

(24)

Constantes X variáveis

A diferença primordial entre esses dois conceitos é que constantes são valores inalterados e variável é uma entidade capaz de manifestar diferenças em valor. Diz-se que a variável possui qualquer valor dentro de um campo determi-nado. Atua como uma “gaveta”, onde se pode guardar qualquer valor, desde que o tipo seja res-peitado.

Seção 3

Expressões

Para que você entenda melhor, é possível ligar o conceito de ex-pressão ao conceito de exex-pressão (ou fórmula) matemática, onde um conjunto de variáveis e cons-tantes numéricas relaciona-se por meio de operadores, compondo uma fórmula que, uma vez ava-liada, resulta em um valor. As ex-pressões dividem-se em:

aritméticas;

relacionais;

lógicas.

Saiba o que significa cada uma delas.

Aritméticas

Expressões aritméticas são aque-las que apresentam como resulta-do um valor numérico que pode ser um número inteiro ou real, de-pendendo dos operandos e ope-radores. Observe os operadores aritméticos na tabela seguinte.

Tabela 3: Operadores aritméticos

Operadores Simbologia Prioridade

Soma + 3 Subtração - 3 Multiplicação * 2 Divisão / 2 Módulo % 2 Exponenciação ^ 1 Radiciação // 1

Mas o que representa a priorida-de? A prioridade indica a ordem em que cada operação deverá ser executada. Quanto menor o nú-mero, maior a prioridade da ope-ração. Observe que o operador de multiplicação é o caractere asteris-co, um símbolo que é empregado na maioria das linguagens para essa operação.

Expressões aritméticas podem manipular operandos de dois ti-pos: reais e inteiros. Se todos os operandos de uma expressão são do tipo inteiro, então a expres-são fornece como resultado um número inteiro. Caso pelo me-nos um dos operandos seja real, o resultado será real. Isso pode parecer estranho a princípio, mas esse procedimento reflete a for-ma como as operações são exe-cutadas pelos processadores. Por exemplo, o resultado da operação 1/5 é 0, porque os dois operado-res são inteiros. Caso a expoperado-ressão tivesse sido escrita como 1.2/5, o resultado 0.24 seria o correto. A seguir temos exemplos de algu-mas expressões aritméticas. Con-fira!

A + B - C

A / B

3.14 * (A + B)

Um ponto importante é a ordem de avaliação das expressões. As prioridades que você viu na ta-bela anterior não são suficientes para resolver todas as situações. Para isso, você precisa conhecer algumas regras adicionais. Veja a seguir!

Deve-se observar primeiro a prioridade dos operadores, con-forme a tabela anterior. Ou seja, operadores com maior prioridade (números menores) são avaliados primeiramente. Caso haja empate na ordem de prioridade, deve-se resolver a expressão da esquerda para a direita.

Parênteses servem para mudar a ordem de prioridade de exe-cução das operações. Quando houver parênteses dentro de parênteses, as expressões dentro dos mais internos são avaliadas primeiro.

Ficou claro até aqui? Para enten-der melhor, observe alguns exem-plos que mostram como essas regras são aplicadas. Considere as seguintes variáveis:

A = 2

B = 4

(25)

24 CURSOS TÉCNICOS SENAI

Vamos então analisar expressões com essas variáveis e seus resul-tados.

A * B - C

A * (B - C)

B + A / C + 5

(B + A) / (C + 5)

A primeira expressão tem como resultado o valor 7, como era de se esperar. Na segunda expressão, a ordem de avaliação foi alterada pelos parênteses e primeiro é fei-ta a subtração e o resulfei-tado passa a ser 6. A primeira operação na terceira expressão é a divisão que tem maior prioridade. Nesse caso, o resultado final é 11. Na última expressão as somas são realizadas primeiro e, por último, a divisão, ficando o resultado igual a 1.

Relacionais

As expressões relacionais são uti-lizadas para comparar caracteres e números. Os valores a serem comparados podem ser literais ou variáveis. Esses operadores sem-pre retornam valores lógicos (ver-dadeiro ou falso).

Para estabelecer prioridades no que diz respeito a qual operação executar primeiro podem ser uti-lizados os parênteses, conforme mostrado anteriormente.

Observe os operadores relacionais disponíveis na tabela seguinte.

Tabela 4: Operadores relacionais Descrição Simbologia Igual a = Diferente de <> Maior que > Menor que < Maior ou igual a >= Menor ou igual a <=

Não: uma expressão “não» inverte o valor da expressão ou condição; se verdadeira, inverte para falsa e vice-versa.

Xou: Uma expressão “xou” tem resultado verdadeiro se seus dois operandos lógicos forem diferentes e falso, se forem iguais. Os resultados das operações ló-gicas são sempre valores lógicos (verdadeiro ou falso).

Para trabalharmos adequadamen-te com operadores lógicos, adequadamen-temos que conhecer a tabela verdade para cada um dos operadores. Ta-bela verdade? Isso mesmo! Uma tabela verdade é o conjunto de to-das as possibilidades combinató-rias entre os valores das variáveis lógicas, conforme você verá nas tabelas seguintes.

Tabela 7: Exemplo de tabela verdade

A B A e B F F F F V F V F F V V V A B A ou B F F F F V V V F V V V V A B A xou B F F F F V V V F V V V F A nao A F V V F

Veja agora uma tabela com todos os valores possíveis criados pelos três operadores lógicos.

Para entender melhor, considere alguns exemplos que mostram como é possível utilizar os ope-radores relacionais. Considere as seguintes variáveis:

A = 5

B = 3

Vamos então analisar as expres-sões com essas variáveis e seus resultados.

Tabela 5: Expressões com variáveis e resultados Expressão Resultado A = B Falso A <> B Verdadeiro A > B Verdadeiro A < B Falso A >= B Verdadeiro A <= B Falso

Lógicas

As expressões lógicas servem para combinar resultados de expres-sões, retornando se o resultado final é verdadeiro ou falso. Veja quais são os operadores lógicos a seguir.

Tabela 6: Operadores lógicos Descrição Simbologia

E e

Ou ou

Não nao

Xou xou

Puxa! Quantos dados, não é mes-mo? Saiba o que cada um signi-fica.

E: uma expressão “e” é verda-deira se todas as condições forem verdadeiras.

Ou: uma expressão “ou” é verdadeira se pelo menos uma condição for verdadeira.

(26)

Tabela 8: Resultados das operações lógicas

Primeiro valor Operador Segundo valor Resultado

Verdadeiro e Verdadeiro Verdadeiro

Verdadeiro e Falso Falso

Falso e Verdadeiro Falso

Falso e Falso Falso

Verdadeiro ou Verdadeiro Verdadeiro

Verdadeiro ou Falso Verdadeiro

Falso ou Verdadeiro Verdadeiro

Falso ou Falso Falso

Verdadeiro nao Falso

Falso nao Verdadeiro

Seção 4

Funções

O conceito de função está intimamente ligado ao conceito de função (fórmula) matemática, onde um conjunto de variáveis e constantes nu-méricas relaciona-se por meio de operadores, compondo uma fórmula que, uma vez avaliada, resulta em um valor.

Na verdade, as funções ajudam a reduzir a quantidade de expressões dentro de um algoritmo, já que em uma única linha é possível obter resultado de uma fórmula matemática que poderia resultar em muitas linhas.

E você sabia que existem vários tipos de funções? É verdade! Entre elas, podem ser destacadas as seguintes.

Numéricas: são aquelas cujo resultado da avaliação é do tipo nu-mérico, seja ele inteiro ou real. Somente podem ser efetuadas entre números propriamente apresentados ou variáveis numéricas.

Caractere: são aquelas cujo resultado da avaliação é do tipo carac-tere. Somente podem ser efetuadas entre caracteres propriamente apresentados ou variáveis literais do tipo caractere.

Conversão de tipos: são aquelas que convertem valores numéricos de um determinado tipo para outro valor numérico de outro tipo. Entre esses tipos é possível encontrar diversas funções matemáticas, descritas conforme a próxima tabela.

(27)

26 CURSOS TÉCNICOS SENAI

Tabela 9: Operadores matemáticos

Função Resultado

sen (x) Seno de x

cos (x) Cosseno de x

tg (x) Tangente de x

arcsen (x) Arco cujo seno é x

arccos (x) Arco cujo cosseno é x

arctg (x) Arco cuja tangente é x

abs (x) Valor absoluto (módulo) de x

int (x) A parte inteira de x

frac (x) A parte fracionária de x

ard (x) Arredondamento de x

rnd (x) Valor randômico de x

Um ponto importante é que as funções matemáticas variam conforme a linguagem de programação utilizada.

DICA

Portanto, uma dica é avaliar a equivalência dos comandos apresenta-dos anteriormente com o da linguagem escolhida.

Seção 5

Atribuição

Como o próprio nome diz, um comando de atribuição permite fornecer um valor a uma variável (guardar um objeto em uma gaveta), em que o tipo do dado deve ser compatível com o tipo da variável. Isto é, somente podemos atribuir um valor lógico a uma variável capaz de comportá-lo, ou seja, uma variável declarada como sendo do tipo lógico.

Veja um exemplo de algoritmo utilizando o comando de atribuição (←). algoritmo “CALCULA_DOBRO”

var

varNum, varDobro : inteiro inicio

varNum ← 3 + 3 varDobro ← 2 * varNum fimalgoritmo

(28)

Nesse exemplo, o resultado final (valor) da variável “varDobro” será 12. No computador, no momento em que temos uma atribuição, o espaço em memória que já estava alocado para as variáveis “varNum” e “var-Dobro”, porém vazio, receberá o valor das expressões.

Nos comandos em que o valor a ser atribuído à variável é representa-do por uma expressão aritmética ou lógica, esta deve ser resolvida em primeiro lugar, para que depois o resultado possa ser armazenado na variável.

Seção 6

Comandos de entrada e saída

Um comando de entrada (leitura) tem por função transferir dados do meio externo para a memória de trabalho do computador. Os dados do meio externo, na maioria das vezes, entram em nosso computador por meio do teclado.

Vamos a mais um exemplo? Veja um algoritmo exemplificando o co-mando de entrada de dados.

algoritmo “CALCULA_DOBRO” var

varNum, varDobro : inteiro inicio

leia (varNum) fimalgoritmo

Como você pode ver nesse exemplo, é possível fazer com que o compu-tador fique aguardando que um valor seja digitado. O valor digitado será armazenado na variável “varNum”.

Ao contrário de um comando de entrada, um comando de saída é utili-zado quando necessitamos apresentar valores ao meio externo. Os valo-res são comumente apvalo-resentados na tela do computador.

A seguir, você verá um algoritmo exemplificando o comando de saída de dados “escreva”:

algoritmo “CALCULA_DOBRO” var

varNum, varDobro : inteiro inicio

leia (varNum)

varDobro ← 2 * varNum escreva (varDobro) fimalgoritmo

Nesse exemplo fazemos com que o computador aguarde que um valor seja digitado. Após, ele efe-tua um cálculo e, por fim, exibe o resultado desse cálculo armazena-do na variável “varDobro” na tela do computador.

Mais uma etapa cumprida e quanto conhecimento novo, não é mesmo? Nesta unidade você aprendeu sobre os algoritmos, os tipos de dados, constantes e vari-áveis, viu o que são as expressões, as funções, a atribuição e os co-mandos de entrada e saída. Foi um estudo muito interessante, não é mesmo? E não para por aí. Na próxima unidade você estu-dará sobre estruturas de seleção. Lembre-se de buscar novas infor-mações sobre os temas estudados e praticar. Em frente!

(29)

Unidade de

estudo 3

Seções de estudo

Seção 1 – Introdução Seção 2 – Comando Se

Seção 3 – Ninhos de comando Se Seção 4 – Comando Escolha

(30)

estruturas de Seleção

Seção 1

Introdução

Para iniciar o estudo, é importante ressaltar que existem problemas que podem ter mais de um ca-minho para serem resolvidos em uma seleção correta. Muitas vezes também podem existir restrições nas soluções. Portanto, para exe-cutar o algoritmo, em dado mo-mento é preciso tomar a decisão do caminho que deverá ser segui-do para chegar à solução correta para o problema.

A decisão do caminho a ser se-guido precisa estar fundamenta-da em alguma lógica. E é função de quem escreve o algoritmo dar condições para o sujeito que o executa fazer a escolha correta do caminho para se chegar à solução do problema.

Um exemplo simples de proble-ma que pode ter metodologias diferentes em sua solução são os cálculos das raízes de equações polinomiais de 2° grau (ax2 + bx

+ c = 0). Se o termo b2 – 4ac for

maior ou igual a zero, as raízes serão reais. Caso contrário, serão complexas.

Não seria correto escrever um al-goritmo que resolvesse somente a parte de raízes reais ou a parte complexa, pois a metodologia que vai ser usada somente será conhe-cida na execução do algoritmo. Logo, é preciso descrever a solu-ção por ambas as metodologias, mas deixando claro para quem irá

Mas se deixássemos a critério de quem executa o algoritmo, será que ele sempre escolheria o ca-minho correto? Não se pode ar-riscar. Por isso, além de saber que existe mais de um caminho para a solução do problema, é preciso prover subsídios para que o mes-mo faça a escolha do caminho correto.

Assim, o simples fato de informar que a solução do problema tem duas ou mais metodologias dife-rentes em sua solução não funcio-naria. É preciso dizer em quais si-tuações ele utilizará a metodologia A e quando utilizará a B.

No caso das raízes de polinômio de 2° grau, é possível utilizar a se-guinte descrição narrativa:

se o resultado de b2 – 4ac for

maior ou igual a zero:

então utilize a metodo-logia de cálculo de raízes reais;

caso contrário, utilize a metodologia de cálculo de raízes complexas.

Até agora, os algoritmos seguiram um mesmo padrão: entrava-se com dados, que eram processados e alguma informação era mostra-da na tela.

Dessa forma, o computador mais parecia uma máquina de calcular. O aprendizado de novos concei-tos, como a estrutura de seleção, dará uma visão maior da comple-xidade de tarefas que ele poderá executar.

E que tal agora refletir sobre a importância dessa estrutura? Para isso, leia com atenção as afirmati-vas seguintes:

Distribuição gratuita de cestas básicas.

Distribuição gratuita de cestas básicas para as famílias com qua-tro ou mais componentes.

Distribuição gratuita de in-gressos para o teatro, sendo dois para pessoas do sexo feminino e um para pessoas do sexo mascu-lino.

O que você pôde concluir com es-sas afirmações?

Na primeira, todas as pes-soas recebem a cesta básica, o que equivaleria a um comando sequencial.

Na segunda, só recebem as cestas básicas as famílias com pelo menos quatro integrantes.

Na terceira, dependendo do sexo, recebe-se um ou dois ingressos.

(31)

30 CURSOS TÉCNICOS SENAI

Assim, é possível avaliar a importância do teste nas duas últimas afirma-tivas, pois ações diferentes são executadas de acordo com o resultado.

Seção 2

Comando Se

É muito comum ver situações em programação, assim como na prática, em que se decide por um ou por outro procedimento, de acordo com certas condições. Por exemplo, ao dizer “SE estiver chovendo ENTÃO leve um guarda-chuva”.

Certamente você já passou por alguma situação como essa, certo? Ob-serve um exemplo de seleção simples.

Figura 5: Exemplo de seleção simples

A figura anterior significa que certa ação (levar o guarda-chuva) deverá ser tomada se a condição (estar chovendo) for verdadeira. Caso contrá-rio, a ação não será realizada.

Em alguns casos, especifica-se também o que deverá ser feito caso a condição não se cumpra, onde: “SE a piscina estiver livre ENTÃO faça natação, CASO CONTRÁRIO faça uma caminhada”.

(32)

Figura 6: Exemplo de seleção composta

Essas situações são muito comuns em programação, razão pela qual será preciso recorrer aos comandos de seleção (ou de decisão).

A condição Se-Então (-Senão) é uma estrutura de seleção comum em

di-versas linguagens de programação. Sua estrutura básica é a seguinte. algoritmo “SE”

var

varNum : inteiro inicio

se varNum < 10 entao

escreva (“Número menor que 10”) senão

escreva (“Número maior ou igual a 10”) fimse

fimalgoritmo

Quando o interpretador encontra o identificador Se, ele espera em

se-guida uma condição booleana sob forma de expressão relacional (como por exemplo, “varNum < 10”), que pode ser verdadeira ou falsa. Se a condição é verdadeira, o bloco de código seguido de Então é executado.

Caso a condição seja falsa, o bloco de código seguido de Senão é

execu-tado. Em ambos os casos, após a execução do bloco de código, o fluxo do programa é retornado para o ponto indicado por Fim Se. Note que

a parte do Senão é opcional e pode ser omitida. Caso seja omitida, a

es-trutura é chamada de seleção simples; caso contrário, é chamada seleção composta.

Seção 3

Ninhos de comando Se

Dentro de um comando de sele-ção (comando Se) é possível

co-locar qualquer tipo de comando. Assim, dentro de um comando Se,

pode-se ter outros comandos de seleção. Veja a seguir.

algoritmo “MAXIMO” var

varNum1, varNum2 : in-teiro inicio leia (varNum1) leia (varNum2) se varNum1 > varNum2 entao

escreva (“Maior valor é o primeiro”)

senão

escreva (“Maior valor é o segundo”)

fimse fimalgoritmo

Como você pode perceber, nesse algoritmo é determinado o maior valor entre dois valores. Se os dois números forem iguais, o algorit-mo informará que o “varNum2” é o maior valor, o que obviamente não é verdade. Assim, esse algo-ritmo não está correto. Note que nesse problema há três situações possíveis: “varNum1” maior que “varNum2”, “varNum1” menor que “varNum2” e os dois com va-lores iguais. Utilizando um único comando Se, conseguimos

ava-liar apenas duas situações. Para levar em conta as três situações, outro comando de seleção faz-se necessário. Quer saber a seleção para esse problema? Então veja o exemplo seguinte.

(33)

32 CURSOS TÉCNICOS SENAI algoritmo “MAXIMO” var

varNum1, varNum2 : inteiro inicio

leia (varNum1) leia (varNum2)

se varNum1 > varNum2 entao

escreva (“Maior valor é o primeiro”) senão

se varNum1 < varNum2

escreva (“Maior valor é o segundo”) senão

escreva (“Os dois valores são iguais”) fimse

fimse fimalgoritmo

Note que, nessa nova versão, caso o valor da expressão “varNum1 > varNum2” seja falso, o fluxo de execução irá executar o que estiver den-tro do Senão do primeiro Se. Dentro do Senão do primeiro Se, um outro Se é executado, sendo então verificado se o conteúdo de “varNum1” é

menor que conteúdo de “varNum2”. Veja que o comando de seleção que está colocado dentro do Senão do primeiro Se, só será executado se

ao executar o primeiro Se, a expressão for falsa. Em seguida, é feita a verificação se o conteúdo de “varNum1” é menor que o conteúdo de “varNum2”. Caso positivo, será definido que o conteúdo de “varNum2” é maior, senão definirá que ambos são iguais.

E você já ouviu falar no Comando Escolha? Mesmo que não saiba o que é fique tranquilo, pois esse será o tema da seção seguinte. Até lá!

Seção 4

Comando Escolha

Quando um conjunto de valores discretos precisa ser testado e ações diferentes são associadas a esses valores, estamos diante de uma seleção com ninhos de comando Se. Como essa situação é bastante frequente

na construção de algoritmos que dependem de alternativas, utilizaremos uma estrutura específica para esses casos: a seleção de múltipla escolha.

O comando Escolha é uma alternativa para os comandos Se aninhados, dei-xando o algoritmo com uma estrutura melhor.

Suponha que o conceito de um aluno seja determinado em fun-ção de sua nota. Suponha também que essa nota seja um valor inteiro na faixa de 1 a 4. O problema está na seguinte situação: dada a nota, determine o respectivo conceito. Considere ainda os conceitos que você verá na tabela seguinte.

Tabela 10: Notas e conceitos Nota Conceito

1 Insuficiente

2 Regular

3 Bom

4 Ótimo

Para resolver o problema, veja a seguir o algoritmo por meio da utilização de Se´s aninhados.

(34)

algoritmo “CONCEITO” var varNota : inteiro varConceito : caractere inicio leia (varNota) se varNota = 1 entao varConceito ← “Insuficiente” senão se varNota = 2 varConceito ← “Regular” senão se varNota = 3 varConceito ← “Bom” senão varConceito ← “Ótimo” fimse fimse fimse escreva (varConceito) fimalgoritmo

Perceba que, no algoritmo anterior, vários testes são feitos sobre o con-teúdo da variável “varNota”. Em vez de escrevermos os vários testes utilizando Se´s aninhados e considerando que todos os testes são

realiza-dos sobre uma mesma expressão, é possível utilizar um comando alter-nativo, que tem essa função. Trata-se do comando Escolha, cuja função é

tornar possível a escolha de uma alternativa, entre as várias disponíveis. Usando o comando Escolha, o problema de determinação do conceito de

um aluno pode ser resolvido conforme apresentado no próximo algorit-mo. Acompanhe com atenção!

algoritmo “CONCEITO” var varNota : inteiro varConceito : caractere inicio leia (varNota) escolha varNota caso 1 varConceito ← “Insuficiente” caso 2 varConceito ← “Regular” caso 3 varConceito ← “Bom” outrocaso varConceito ← “Ótimo” fimescolha escreva (varConceito)

Com isso, ao executar o comando

Escolha no algoritmo anterior, será

avaliada cada uma das opções de valores de “varNota”. Portanto, veja que a opção 1, por exemplo, significa valor igual a 1. Assim, se o valor de “varNota” for igual ao da comparação, essa opção será satisfeita. As opções serão sempre avaliadas na ordem em que apa-recem e será executada a instru-ção relativa à primeira opinstru-ção que satisfazer o valor de “varNota”. Caso nenhuma das opções satis-faça o valor da expressão do co-mando Escolha, serão executadas

as instruções colocadas no Outro-caso.

Quantos comandos importantes você aprendeu nesta unidade de estudo, não é mesmo? O coman-do Se, os ninhos de comancoman-do Se e o comando Escolha certamente

se-rão muito úteis para seus cálculos! Existem muitos outros comandos que você aprenderá no decorrer desta unidade curricular. Então não perca tempo. Aplique seus conhecimentos praticando e siga com dedicação e disciplina!

(35)

Unidade de

estudo 4

Seções de estudo

Seção 1 – Introdução

Seção 2 – Comando Enquanto Seção 3 – Comando Repita Seção 4 – Comando Para

(36)

estruturas de Repetição

Seção 1

Introdução

Existem situações em que, para obter-se a solução do problema, é necessário fazer com que um con-junto de instruções seja executado várias vezes. Esta unidade de es-tudo tem por objetivo apresentar e discutir estruturas que possibi-litem a execução de um conjunto de instruções por várias vezes, com o programador escrevendo este conjunto apenas uma vez. Em detalhes, uma estrutura de re-petição é uma estrutura de desvio do fluxo de controle que realiza e repete diferentes ações depen-dendo se uma condição é verda-deira ou falsa, em que a expressão é processada e transformada em um valor booleano. Estão associa-das a uma estrutura de repetição uma condição (também chamada “expressão de controle” ou “con-dição de parada”) e um bloco de código: verifica-se a condição e, caso seja verdadeira, o bloco é executado. Após o final da execu-ção do bloco, a condiexecu-ção é verifi-cada novamente e, caso ela ainda seja verdadeira, o código é execu-tado novamente.

Mas atenção! Caso o bloco de có-digo nunca modifique o estado da condição, observe que a estrutu-ra será executada paestrutu-ra sempre. E essa será uma situação chamada laço infinito. Da mesma forma, é possível especificar uma estrutura em que o bloco de código modifi-ca o estado da condição, mas esta é sempre verdadeira.

Algumas linguagens de programa-ção especificam ainda uma palavra reservada para sair da estrutura de repetição de dentro do bloco de código, “quebrando” a estrutura. Também é oferecida por algumas linguagens uma palavra reservada para terminar uma iteração espe-cífica do bloco de código, forçan-do uma nova verificação da con-dição.

Ficou claro até aqui? Esta unida-de unida-de estudo é uma das mais im-portantes para o seu estudo! Você notará que a partir desse ponto começará a ter mais dificuldade na resolução dos algoritmos em função da dificuldade de entender onde as estruturas de repetição deverão ser colocadas para aten-der às exigências dos enunciados. Portanto, continue atento!

Vamos a um exemplo. Suponha que um determinado clube social tenha registrado a quantidade de latas de cerveja vendidas no últi-mo carnaval. Considerando que cada lata foi vendida a R$ 1,40, deseja-se saber o total arrecadado no último carnaval, com a venda das latas de cerveja. Obviamente que para esse problema tem-se como entrada a quantidade de latas vendidas e deseja-se saber, como solução do problema, qual o total arrecadado. Veja a seguir o respectivo algoritmo. algoritmo “QUANTIDADE_ ARRECADADA” var varQuantidadeVendida : in-teiro varValorArrecadado : real inicio leia (varQuantidadeVendi-da) varValorArrecadado ← var-QuantidadeVendida * 1,40 escreva (varValorArrecada-do) fimalgoritmo

(37)

36 CURSOS TÉCNICOS SENAI

Como você pôde perceber, o problema apresentado consiste em de-terminar o total arrecadado com a venda de latas de cerveja no último carnaval. Se desejarmos determinar o total arrecadado em cada um dos último três carnavais, o algoritmo poderia ser escrito da forma seguinte:

algoritmo “QUANTIDADE_ARRECADADA” var

varQuantidadeVendida : inteiro varValorArrecadado : real inicio

// Total arrecadado no último ano leia (varQuantidadeVendida)

varValorArrecadado ← varQuantidadeVendida * 1,40 escreva (varValorArrecadado)

// Total arrecadado no penúltimo ano leia (varQuantidadeVendida)

varValorArrecadado ← varQuantidadeVendida * 1,40 escreva (varValorArrecadado)

// Total arrecadado no antepenúltimo ano leia (varQuantidadeVendida)

varValorArrecadado ← varQuantidadeVendida * 1,40 escreva (varValorArrecadado)

fimalgoritmo

Observe no algoritmo anterior que a solução do problema é a mesma para cada ano. Assim, as instruções para cada um dos anos podem ser as mesmas. Veja também que, se você quisesse determinar o total arre-cadado em cada um dos últimos 30 anos, usando a mesma metodologia, teríamos que escrever 30 vezes o mesmo conjunto de instruções, o que obviamente se tornaria impraticável.

Considerando que para cada um dos casos as instruções a serem execu-tadas são as mesmas, é muito mais adequado que se escreva um conjunto de instruções apenas uma vez, e que instrua o computador para que repita a execução das instruções por um determinado número de vezes.

Os laços de repetição também são conhecidos por sua tradução em inglês:

loops ou looping. Ganham esse nome por lembrarem uma execução finita

em círculos, que depois segue seu curso normal.

Nesta unidade, você estudará três tipos de estrutura de repetição: com teste no início (comando Enquanto), com teste no final (comando Repita)

e automática (comando Para). Ficou curioso para saber o que cada um

dos comandos representa? Vamos iniciar com o comando Enquanto. Em

frente!

Seção 2

Comando Enquanto

O comando Enquanto é uma estrutura recomendada quando o número

de repetições for desconhecido, sendo necessária uma chave (um teste) para interromper a repetição.

Consiste em uma estrutura de controle do fluxo de execução que permite repetir diversas vezes um mesmo trecho do algoritmo, porém, sempre ve-rificando antes de cada exe-cução se é permitido executar o mesmo trecho.

Para realizar a repetição com tes-te no início, utilizamos a estrutu-ra Enquanto, que permite que um

bloco ou uma ação primitiva seja repetido enquanto uma determi-nada Condição for verdadeira. O

modelo genérico desse tipo de re-petição é o que você verá a seguir.

algoritmo “ENQUANTO” inicio

enquanto <condição> faca // Trecho a ser repetido fimenquanto

fimalgoritmo

Preste atenção! Quando o resulta-do de Condição for falso, o

coman-do de repetição é abancoman-donacoman-do. Se já da primeira vez o resultado é falso, os comandos não são exe-cutados nenhuma vez, o que re-presenta a característica principal desse modelo de repetição. Com isso, é possível concluir que em algum momento do processo de repetição das instruções inter-nas ao comando Enquanto será

necessário que a expressão lógi-ca assuma o valor falso, pois, do contrário, o fluxo jamais sairá de dentro do Enquanto e o conjunto

de instruções será repetido infini-tas vezes.

Para que você entenda melhor, veja a seguir um exemplo de análi-se de saldo bancário. Se você qui-ser um algoritmo que faça a análi-se para dez contas, pode escrever a solução conforme o exemplo.

(38)

algoritmo “ANALISE_BANCARIA” var

varSaldo : real varConta, varContador : inteiro inicio

varContador ← 0

enquanto varContador < 10 faca varContador ← varContador + 1 leia (varConta)

leia (varSaldo) se varSaldo < 0 entao

escreva (varConta, “ está estourada”) senao

escreva (varConta, “ está normal”) fimse

fimenquanto fimalgoritmo

Observe que no algoritmo anterior utilizamos uma variável “varConta-dor”, que inicialmente assume o valor zero. Na primeira vez que o fluxo de execução chega ao Enquanto, a expressão lógica “varContador < 10”

tem o valor verdadeiro. Assim, são executados todos os comandos in-ternos do Enquanto. Observe também que no interior do comando En-quanto colocamos o comando “varContador ß varContador + 1”, o qual

fará com que o conteúdo da variável “varContador” seja incrementado de uma unidade toda vez que o mesmo for executado.

Mas o que é incrementar nesse tipo de cálculo?

Incrementar é o mesmo que somar um valor constantemente. O pon-teiro dos segundos de um relógio é um legítimo contador de segun-dos, que sempre vai incrementando 1 a cada instante de tempo, equi-valente a 1 segundo. Quando atinge 60 segundos, é a vez do ponteiro dos minutos ser incrementado e assim por diante.

E o comando Repita, você sabe qual sua função? Esse será o assunto da próxima seção!

Seção 3

Comando Repita

O comando Repita é uma

estrutu-ra recomendada quando o núme-ro de repetições for desconheci-do, sendo necessária uma chave (um teste) para interromper a re-petição.

Sua diferença em relação ao En-quanto é que ele testa ao final,

exe-cutando o trecho pelo menos uma vez.

Essa estrutura também precisa de uma condição para interromper a repetição. Veja um modelo gené-rico:

algoritmo “REPITA” inicio

repita

// Trecho a ser repetido ate <condição>

fimalgoritmo

Quando o fluxo de execução che-gar ao Repita, automaticamente

serão executados os comandos internos ao Repita. Chegando no ate, será avaliada a condição. Se a condição for falsa, então o fluxo de

execução retornará ao Repita, e os

comandos internos serão nova-mente executados. Quando o flu-xo de execução chegar no ate e a condição for verdadeira, a execução

sairá do Repita.

O algoritmo seguinte utiliza o Re-pita para determinar o melhor

alu-no de uma turma. Observe com atenção!

(39)

38 CURSOS TÉCNICOS SENAI algoritmo “MELHOR_ALUNO” var

varNota, varMaximo, varQuantidade, varContador : inteiro varNome, varMelhor : caractere inicio

escreval (‘Entre com a quantidade de alunos’) leia (varQuantidade)

varMaximo ← -1 varContador ← 0 repita

escreval (“Entre com o nome do aluno”) leia (varNome)

repita

escreval (“Digite um valor de 0 a 10”) leia (varNota)

ate (varNota >=0) e (varNota <= 10) se varNota > varMaximo entao varMaximo ← varNota varMelhor ← varNome fimse

varContador ← varContador + 1 ate varContador = varQuantidade fimalgoritmo

Ficou mais fácil com o exemplo, não é mesmo? Como você pôde ver, a cada vez que for executado o conjunto de instruções internas ao pri-meiro comando Repita, um aluno é processado. Ou seja, é solicitado o

nome e a nota de cada aluno. Cada nota de um aluno é comparada com o conteúdo da variável “varMaximo” e, se o conteúdo de “varNota” for maior que “varMaximo”, então é possível concluir que essa nota é a maior entre as que já foram processadas. Portanto, o conteúdo de “varMaximo” deve ser alterado para o valor de “varNota”. Como o al-goritmo se propõe a determinar também qual o nome do melhor aluno, então toda vez que for encontrada uma nota maior que o conteúdo de “varMaximo”, o nome do aluno é salvo na variável “varMelhor”. Note que, a cada aluno processado, o conteúdo da variável “varContador” é incrementado em uma unidade, resultando em algum momento do processo de repetição, que a expressão “varContador = varQuantidade” assumirá o valor verdadeiro, fazendo com que a repetição seja encerrada. Ainda no algoritmo, o segundo comando Repita faz com que o valor lido

para nota do aluno esteja no intervalo de 0 a 10. Veja que este Repita só

é encerrado se a expressão “(varNota >= 0) e (varNota <= 10)” tiver o valor verdadeiro. Sempre que a expressão for avaliada e apresentar o valor falso, o fluxo retornará ao respectivo Repita e será solicitado que o

usuário digite novamente a nota.

O último comando dessa unidade é o Para. Está pronto para saber mais

sobre ele? Adiante!

Seção 4

Comando Para

O comando Para é usado quando

o número de repetições for co-nhecido durante a elaboração do algoritmo ou quando puder ser fornecido durante a execução. Nas estruturas de repetição vis-tas até agora, ocorrem casos em que se torna difícil determinar o número de vezes em que o blo-co será executado. Sabemos que ele será executado enquanto uma condição for satisfeita (Enquanto),

ou até que uma condição seja sa-tisfeita (Repita). A estrutura Para

é diferente, já que sempre repete a execução do bloco durante um número predeterminado de vezes, pois ela não prevê uma condição e possui limites fixos.

Quer saber qual o modelo gené-rico para a estrutura de repetição

Para? Então veja a seguir.

algoritmo “PARA” inicio

para <variável> de <valor

inicial> ate <valor limite> faca

// Trecho a ser repetido fimpara

fimalgoritmo

Onde:

<variável >: é a variável

conta-dora que controla o número de repetições;

<valor inicial>: é uma

expres-são que especifica o valor de ini-cialização da variável contadora antes da primeira repetição;

<valor limite >: é uma

ex-pressão que especifica o valor máximo que a variável contadora pode alcançar.

Referências

Documentos relacionados

No final, os EUA viram a maioria das questões que tinham de ser resolvidas no sentido da criação de um tribunal que lhe fosse aceitável serem estabelecidas em sentido oposto, pelo

The DCF model using the Free Cash Flow to the Firm (FCFF) method, estimates in the first place the Enterprise Value of the company, that represents the value of all future cash

Este era um estágio para o qual tinha grandes expetativas, não só pelo interesse que desenvolvi ao longo do curso pelas especialidades cirúrgicas por onde

Por fim, na terceira parte, o artigo se propõe a apresentar uma perspectiva para o ensino de agroecologia, com aporte no marco teórico e epistemológico da abordagem

tecnologia levaria o capital, inexoravelmente, a projetos de desenvolvimento de novas tecnologias. Foi exatamente o que ocorreu nas últimas décadas: a aplicação de um

Dentro de uma estrutura atuarial, a plataforma do Tesouro Direto é utilizada como fundamento para a implementação de um sistema apto a proteger os valores dos participantes,

No Capítulo 4, através da análise estática não linear dos arcos, observou-se que a condição de perpendicularidade — técnica do fluxo normal — imposta ao longo do

Apesar da Constituição Federal de 1988 e as leis educacionais afirmarem que a educação é para todos, observa-se que as escolas regulares não estão preparadas