Baixe o app para aproveitar ainda mais
Prévia do material em texto
Curso Técnico em Informática Lógica de Programação 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 Diretor de Desenvolvimento Organizacional do SENAI/SC 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 É 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 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 instaladas em todas 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 aprimoramento 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. 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 8 CURSOS TÉCNICOS SENAI Conteúdo Formativo 9LÓGICA DE PROGRAMAÇÃO 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. 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. ▪ Análise crítica de suas produções. Apresentação LÓGICA DE PROGRAMAÇÃ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 automatizaçã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.11 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 Seção 4 – Ambiente 13LÓGICA DE PROGRAMAÇÃO 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 encadear 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. 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. 15LÓGICA DE PROGRAMAÇÃO 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 formas 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! Figura 2: Fluxograma de um domingo 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. 17LÓGICA DE PROGRAMAÇÃO 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. 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). 19LÓGICA DE PROGRAMAÇÃO 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! 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 Seção 6 – Comandos de entrada e saída 21LÓGICA DE PROGRAMAÇÃO 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úmerosinteiros (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 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 é eliminado. 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í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! 23LÓGICA DE PROGRAMAÇÃO 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 expressã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 expressã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 ▪ C = 1 24 CURSOS TÉCNICOS SENAI Vamos então analisarexpressõ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 resultado 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, 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. 25LÓGICA DE PROGRAMAÇÃO 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. 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 27LÓGICA DE PROGRAMAÇÃO 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 apresentados 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 novasinfor- mações sobre os temas estudados e praticar. Em frente! 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 29LÓGICA DE PROGRAMAÇÃO 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á executá-la que será preciso fazer uma escolha entre os caminhos possíveis. 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. 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”. 31LÓGICA DE PROGRAMAÇÃO 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. 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çõesdiferentes 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. 33LÓGICA DE PROGRAMAÇÃO 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) fimalgoritmo 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 opçã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 comando 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! 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 35LÓGICA DE PROGRAMAÇÃO 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 condiçã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 para 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 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 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, quedepois 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 é abandonado. 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. 37LÓGICA DE PROGRAMAÇÃO 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! 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. 39LÓGICA DE PROGRAMAÇÃO <valor inicial > e <valor limite > são avaliados uma única vez antes da execução da primeira repetição e não se alteram durante a execução da repetição,mesmo que variáveis eventualmente presentes nessas expressões tenham seus valores alterados. No exemplo a seguir, os números de 1 a 10 são exibidos em ordem crescente. Observe! Veja que no algoritmo anterior a variável de controle do Para é a “varMes”. A variável “varMes”, conforme especifica o comando, assume os valores inteiros que vão de 1 até 12. Para cada valor de “varMes”, as instruções internas ao Para são executadas. O valor do incremento, quando não espe- cificado, o que é possível incluin- do “passo <valor do incremento>”, no comando Para antes do faca, sempre é 1. Vamos assumir que ao chegar no Para pela primeira vez será calcu- lado o número de vezes que as instruções internas ao Para se- rão executadas. A determinação do número de repetições é feita usando-se os valores inicial e li- mite, combinados com o valor do incremento para a variável de controle. Assim, estamos assu- mindo também que não será pos- sível abandonar a repetição das instruções antes que o número de repetições seja alcançado. Veja então, que o comando Para só pode ser utilizado quando você souber o número de vezes que se quer repetir. Confira a seguir um exemplo do comando Para, utilizando um in- cremento diferente do padrão. algoritmo “NUMEROS” var varJ : inteiro inicio para varJ de 1 ate 10 passo 2 faca escreval (varJ) fimpara fimalgoritmo No exemplo anterior, serão escri- tos somente os valore 1, 3, 5, 7 e 9. Para o valor do passo também é possível definir um valor negati- vo, que fará a repetição subtrair o valor definido até chegar a 0. Nes- se caso, o valor inicial deverá ser maior que o valor final. Mais uma unidade chega ao final e agora você já tem muitos conhe- cimentos novos. Aqui você apren- deu sobre as estrutura de repeti- ção, com os comandos Enquanto, Repita e Para. Siga em frente, pois tem muita coisa interessante aguardando por você! Faça do seu estudo um momento significativo e prazeroso! algoritmo “NUMEROS” var varJ : inteiro inicio para varJ de 1 ate 10 faca escreval (varJ) fimpara fimalgoritmo Para entender melhor, veja mais um exemplo da utilização da es- trutura Para. O mesmo determina o total arrecadado para um clube no final do ano. algoritmo “BALANCO” var varMes : inteiro varSoma, varReceita, varDespesa : real inicio varSoma ← 0 para varMes de 1 ate 12 faca escreval (“Digite a receita e a despesa do mês de “, varMes) leia (varReceita) leia (varDespesa) varSoma ← varSoma + (varReceita - varDespesa) fimpara escreva(“Total arrecadado durante o ano “, varSoma) fimalgoritmo Unidade de estudo 5 Seções de estudo Seção 1 – Introdução Seção 2 – Vetores Seção 3 – Matrizes 41LÓGICA DE PROGRAMAÇÃO estruturas Homogêneas Seção 1 Introdução Para iniciar o estudo, é importante destacar que as estruturas de dados homogêneos possibilitam o armazenamento de grupos de valores em uma única variável que será armazenada na memória do computador. Mas por que essas estruturas são chamadas de homogêneas? Porque os valores que serão armazenados são de um mesmo tipo de dado. As estruturas homogêneas são divididas em unidimensionais e multidi- mensionais. Normalmente, as estruturas unidimensionais são chamadas de vetores e as multidimensionais são chamadas de matrizes. De fato, um vetor também é uma matriz, porém varia em somente uma dimensão. No intuito de compreender as facilidades do processamento de valores usando adequadamente uma estrutura de dados, observe o algoritmo a seguir, supondo a necessidade de armazenamento da altura de cinco atletas. algoritmo “ATLETA” var varAltura1, varAltura2, varAltura3, varAltura4, varAltura5 : real inicio escreval (“Informe a altura do primeiro atleta: “) leia (varAltura1) escreval (“Informe a altura do segundo atleta: “) leia (varAltura2) escreval (“Informe a altura do terceira atleta: “) leia (varAltura3) escreval (“Informe a altura do quarto atleta: “) leia (varAltura4) escreval (“Informe a altura do quinto atleta: “) leia (varAltura5) fimalgoritmo Esse algoritmo possibilitaria a leitura de cinco alturas de cinco atletas diferentes e as armazena- ria em cinco variáveis distintas (varAltura1, varAltura2, varAltu- ra3, varAltura4, varAltura5). Uma instrução de repetição não me- lhoraria muito essa lógica, pois os cinco valores precisarão estar dis- poníveis independente dos outros valores informados. Mas imagine se a leitura das alturas tivesse que ser realizada para um time de fu- tebol, ou para uma equipe de fute- bol americana, por seu algoritmo, o que seria feito, então? E se em um próximo campeonato seu al- goritmo fosse usado para registrar todos os participantes de todas as equipes que participam da com- petição? Em situações como essa é que as estruturas de dados fazem a dife- rença, sendo essenciais ao proces- samento dos dados eficiente por um computador. 42 CURSOS TÉCNICOS SENAI Seção 2 Vetores Uma estrutura de dados compos- ta de forma homogênea e unidi- mensional, ou vetor, é um arranjo de elementos (dados) armazena- dos na memória do computador, sendo que esses dados são organi- zados de forma eficiente um após o outro, sob um mesmo identifi- cador, cujas regras são as mesmas para criar um identificador de uma variável simples, que possui capacidade de guardar somente um valor. Um vetor é uma estrutura de dados homogênea que pode ser acessado de forma aleató- ria (qualquer posição que seja necessária). Suas principais características são: ▪ contém vários valores (núme- ro definido); ▪ todos os valores são do mes- mo tipo de dado (homogênea); ▪ possui um único nome (identi- ficador da variável); ▪ cada valor do conjunto é acessível independentemente, de acordo com o seu índice (ou posição na estrutura de dados); ▪ todos os seus elementos, ou dados armazenados, são igual- mente acessíveis a qualquer mo- mento do processamento (acesso aleatório). Modificando a forma de solução do algoritmo anterior, que pos- suía cinco variáveis para guardar cinco alturas de atletas, é possível empregar um vetor para armaze- nar essas cinco alturas. ▪ Único identificador dessa estrutura de dados = alturas Mas o que representam os Valores e os Índices? Os Valores correspon- dem aos conteúdos lidos pelo usuário, ou seja, são as alturas dos atletas. Os Índices são as posições que garantem independência a cada um desses valores armazenados na estrutura de dados homogênea. Por meio desses índices, também chamados de posições do vetor, seus valores (conteú- dos) podem ser manipulados de forma independente. Imagine a necessidade de mostrar a altura do maior atleta cadastrado nesse vetor. Entre essas cinco alturas, a maior é a quarta no vetor. Como o índice de uma estrutura de dados inicia sempre a partir de zero, a quar- ta altura está armazenada na terceira posição da estrutura, sendo o con- teúdo dessa posição (3) igual a 2.20 (altura do quarto atleta cadastrado). Os vetores são chamados de estruturas compostas unidimensionais. E você sabe por quê? São compostas pois podem armazenar vários valo- res. E unidimensionais, pois só possuem variação em uma dimensão. Declaração de vetor A sintaxe correta para declaração de uma estrutura de dados composta homogênea unidimensional (vetor), na representação de português es- truturado, deve respeitar a seguinte forma geral: algoritmo “VETOR” var <identificador> : vetor [<valor inicial>..<valor final>] de <tipo de dado> inicio fimalgoritmo Onde: ▪ <tipo de dado> – tipo de dado que será armazenado no vetor; ▪ <identificador> – nome definido ao vetor, respeitando as regras de identificação; ▪ <valor inicial> e <valor final> – são os valores inteiros que definem início e fim dos índices do vetor, sendo o seu intervalo a quantidade exata de elementos do vetor, ou seja, seutamanho. 43LÓGICA DE PROGRAMAÇÃO Veja mais um exemplo. algoritmo “ALTURAS” var vetAlturas : vetor [0..4] de real inicio fimalgoritmo Nesse exemplo será criado um vetor chamado alturas, que pode- rá armazenar até cinco números reais diferentes. E veja bem! Uma atenção especial deve ser dedicada na compreensão de que esse tipo de estrutura de dados tem seu pri- meiro elemento armazenado na posição zero e não na um. Poucas linguagens de programa- ção não seguem esse padrão. Ele é comumente adotado pela maioria das linguagens de desenvolvimen- to de programas. O gráfico a seguir representa a or- ganização de um vetor com tama- nho três. Confira! algoritmo “VETOR” var vetValores : vetor [0..2] de inteiro inicio fimalgoritmo Figura 7: Organização de um vetor com tamanho três Normalmente é utilizada uma instrução de repetição para guardar e acessar os dados que são armazenados em um vetor (seu conteúdo). Suponha que exista a necessidade de leitura e armazenamento das cinco alturas de atletas em um vetor que tenha capacidade de realizar esse ar- mazenamento. Saiba mais com um exemplo. algoritmo “ALTURAS” var varAuxiliar : inteiro vetAlturas : vetor [0..4] de real inicio para varAuxiliar de 0 ate 4 faca escreval (“Informe a altura do “, varAuxiliar + 1 , “º atleta”) leia (vetAlturas[varAuxiliar]) fimpara fimalgoritmo Nesse exemplo, são criados somente duas variáveis, sendo uma deno- minada auxiliar e a outra alturas, que consiste em um vetor de cinco posições (índice de zero até quatro). Esse vetor possui um único iden- tificador, mas tem a capacidade de armazenar até cinco valores reais como seu conteúdo, similar à criação das cinco variáveis alturas (altura1, altura2, altura3, altura4, altura5) da proposta de solução do algoritmo anterior. Suponha que o usuário desse algoritmo digite os seguintes valores: 1.80, 2.03, 1.75, 2.20, 2.12. Uma representação gráfica desse vetor seria: Figura 8: Representação gráfica do vetor Isso indica que a posição 3 do vetor possui como conteúdo o valor de 2.20, informado pelo usuário no momento de execução do algoritmo anterior. A terceira altura informada é 1.75 e está armazenada no índice 2, que corresponde ao terceiro conteúdo guardado nesse vetor. Vetor do tipo de dado caractere Para armazenar o nome de uma pessoa, por exemplo, deve-se criar uma estrutura de dados composta homogênea do tipo de dado caractere. Todo nome consiste em um conjunto de caracteres (letras, caracteres es- peciais e até dígitos numéricos, se assim os pais dessa pessoa desejarem). 44 CURSOS TÉCNICOS SENAI Especificamente para esse tipo de vetor, que envolve um conjunto de caracteres, é estabelecida uma expressão que a caracteriza facilmente, sendo importante na área de informática: string ou simplesmente cadeia de caracteres. A sintaxe que você verá a seguir declara um vetor de caracteres com a capacidade de armazenar até dez conjuntos de caracteres, sendo essa declaração representada graficamente após a instrução de criação desse vetor chamado “vetNomes”. algoritmo “VETOR” var vetNomes : vetor [0..9] de caractere inicio fimalgoritmo A representação anterior mostra um vetor de dez elementos. Isto é, tem a capacidade de dez variáveis do tipo caractere agrupadas em um iden- tificador, “vetNomes” , independentes por sua posição dentro do vetor, indicadas por seu índice que varia de zero até 9 (nove). Você percebeu que existe um espaço entre a palavra Ricardo e Henri- que (no índice 5)? Esse espaço consiste em um único caractere especial (espaço em branco), ocupando sua respectiva posição no vetor “vetNo- mes”. Para acessar cada uma de suas posições, será usado o identificador do vetor, seguido do valor de seu índice entre colchetes. Vamos a mais um exemplo.Veja a seguir o algoritmo que lê os dez no- mes. algoritmo “NOME DA PESSOA” var varAuxiliar : inteiro vetNomes : vetor [0..9] de caractere inicio para varAuxiliar de 0 ate 9 faca escreval (“Digite o nome: “) leia(vetNomes[varAuxiliar]) fimpara fimalgoritmo 45LÓGICA DE PROGRAMAÇÃO Nesse exemplo, o usuário digitará um nome de cada vez, pressio- nando a tecla ENTER após cada nome digitado, sendo que todos eles são armazenados no vetor “vetNomes”. Seção 3 Matrizes Um vetor não deixa de ser uma matriz, porém essa matriz possui sua representação no algoritmo com mais de um índice, variando a partir do valor inteiro zero em todas as suas possíveis dimensões. Convencionalmente, na área de programação, a variação de seu primeiro índice, ou primeira di- mensão da matriz, é representa- da como dimensão de linhas nas quais serão armazenados os res- pectivos conteúdos da matriz, en- quanto que a segunda dimensão, ou segundo índice, corresponde- ria às colunas em que serão arma- zenados seus conteúdos. Já uma terceira dimensão, tam- bém chamada de matriz tridimen- sional, seria representada como páginas de um livro, enquanto ou- tras dimensões teriam maiores di- ficuldades de uma representação didática adequada que facilitaria sua compreensão. Apesar dessa dificuldade de representação, uma matriz possui o limite das dimen- sões coerentes com a quantidade de memória disponível no com- putador que a estará manipulan- do. Similar aos vetores, as matrizes possuem o primeiro elemento de cada linha, ou coluna, ou ainda qualquer outra dimensão iniciada com índice 0 (zero). Por exemplo, o elemento na primeira linha da primeira coluna de uma matriz de alturas terá índice [0,0], enquanto o elemento na segunda linha da primeira coluna terá o índice [1,0]. Repare que as posições do exem- plo anterior ([0,0] ou [1,0]) estão indicando dois valores inteiros que correspondem à exata posi- ção em cada uma das dimensões dessa matriz bidimensional (varia em duas dimensões – linha e co- luna). Declarando uma ma- triz Você sabia que a declaração de uma matriz é bem parecida com a declaração de um vetor? É ver- dade! Afinal, o vetor não deixa de ser uma matriz, mas poderá ser bidimensional, tridimensional, entre outras possíveis variações de dimensões (multidimensional), possuindo uma definição inteira para cada uma dessas dimensões que terão seu tamanho máximo definido no momento da declara- ção no algoritmo. algoritmo “MATRIZ” var <identificador> : ve- tor [<valor inicial>..<valor final>,<valor inicial>..<valor final>] de <tipo de dado> inicio fimalgoritmo Onde: ▪ <tipo de dado> – tipo de dado que será armazenado na matriz; ▪ <identificador> – nome defi- nido para matriz, respeitando as regras de definição de identifica- dores; ▪ <valor inicial>.<valor final> e <valor inicial>.<valor final> – são os valores inteiros de início e fim de cada dimensão definida na matriz, tendo essa sintaxe geral somente duas dimensões, que são separadas por vírgula (,). Veja a seguir a representação grá- fica para uma matriz que tenha ca- pacidade de armazenar as alturas dos cinco atletas titulares de uma equipe de basquete e ainda as cin- co alturas de seus reservas. Figura 9: Representação gráfica para matriz A representação que você acabou de ver pode ser definida em lin- guagem algorítmica, no bloco de declarações do algoritmo, respei- tando a forma genérica apresenta- da anteriormente para declaração de uma matriz. Observe que essa matriz tem capacidade de armaze- namento de dez alturas indepen- dentes, ao invés de somente cinco, como foi abordado no primeiro exemplo no estudo de vetores. Caso tenha dúvidas, retorne ao conteúdo sobre vetores para re- lembrar. Veja mais uma situação! 46 CURSOS TÉCNICOS SENAI algoritmo “ALTURAS” var vetAlturas : vetor [0..1,0..4] de real inicio fimalgoritmo Assim, a manipulação e armazenamento das alturas na memória estão mais bem organizados, propiciando maior eficiência do computador no acesso aos seus endereços de memória que guardam essas dez alturas (todos estes valores estão guardados de maneira consecutiva na memó-
Compartilhar