Você está na página 1de 68

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 Fotografias
Helenilson Ricardo Kitzberger 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 28 Unidade de estudo 3 48 Unidade de estudo 6
Estruturas de Estruturas
Apresentação 11 Seleção Heterogêneas

29 Seção 1 - Introdução 49 Seção 1 - Introdução


12 Unidade de estudo 1
29 Seção 2 - Comando Se 49 Seção 2 - Registros
Introdução à Lógica
31 Seção 3 - Ninhos de coman-
de Programação do Se
Seção 4 - Comando Escolha
54 Unidade de estudo 1
32
13 Seção 1 - Conceitos Funções
14 Seção 2 - Formas de repre-
sentação 34 Unidade de estudo 4
16 Seção 3 - Teste de mesa Estruturas de 55 Seção 1 - Introdução

16 Seção 4 - Ambiente Repetição 55 Seção 2 - Utilização de sub-


programas
56 Seção 3 - Argumentos e
35 Seção 1 - Introdução parâmetros
20 Unidade de estudo 2
36 Seção 2 - Comando Enquan- 57 Seção 4 - Funções
Algoritmos to
58 Seção 5 - Procedimentos
37 Seção 3 - Comando Repita
58 Seção 6 - Âmbito de variá-
38 Seção 4 - Comando Para veis
21 Seção 1 - Tipos de dados
23 Seção 2 - Constantes e 59 Seção 7 - Argumentos de
variáveis subprogramas
40 Unidade de estudo 5
23 Seção 3 - Expressões 61 Seção 8 - Erros mais comuns
Estruturas
25 Seção 4 - Funções Homogêneas
26 Seção 5 - Atribuição Finalizando 62
27 Seção 6 - Comandos de
entrada e saída 41 Seção 1 - Introdução
42 Seção 2 - Vetores Referências 64
45 Seção 3 - Matrizes
8 CURSOS TÉCNICOS SENAI
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.

LÓGICA DE PROGRAMAÇÃO 9
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.

10 CURSOS TÉCNICOS SENAI


Apresentação
Seja bem-vindo à unidade curricular de Lógica de Programação! Helenilson Ricardo
O objetivo principal é demonstrar técnicas para a resolução de proble- Kitzberger
mas e, consequentemente, automatização de tarefas. Você sabia que o
Helenilson Ricardo Kitzberger
aprendizado da lógica é essencial para a formação de um bom progra-
é graduado em Sistemas de In-
mador? É verdade. E os conhecimentos sobre lógica servirão de base formação pelo Centro Universi-
para o aprendizado de todas as linguagens de programação, estruturadas tário de Jaraguá do Sul. Atual-
ou não. De um modo geral, esses conhecimentos serão de suma im- mente trabalha como analista
portância, pois ajudarão no cotidiano para o desenvolvimento de um de sistemas e também é pro-
raciocínio rápido. prietário de uma empresa de
Nesta unidade curricular você estudará os conceitos básicos de lógica de desenvolvimento de software
para gestão empresarial. Atua
programação, as formas de representação e, principalmente, os algorit-
também como pesquisador e
mos, que auxiliam na estruturação de uma sequência lógica para resolu- professor no SENAI de Jaraguá
ção de problemas e automatização de tarefas. Você irá aprender de que do Sul, onde ministra aulas no
forma utilizamos os algoritmos para a tomada de decisões, repetições e curso Técnico em Informática.
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!

LÓGICA DE PROGRAMAÇÃO 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
Introdução à Lógica de
Programação

Seção 1
Conceitos
Você já ouviu falar em lógi- A lógica de programação é neces- Em informática, porém, instrução
ca de programação, sequência sária para pessoas que desejam é a informação que indica a um
lógica, instruções, algoritmos trabalhar com o desenvolvimen- computador uma ação elementar
e programas? Esses são alguns to de sistemas e programas. Ela a executar. Convém ressaltar que
dos conceitos elementares de permite definir a sequência lógica uma ordem isolada não permite
lógica que você verá a seguir. para o desenvolvimento. realizar o processo completo. Para
Em relação aos algoritmos, você isso, é necessário um conjunto de
Lógica de programação é a técni-
verá que, relacionados à lógica, instruções colocadas em ordem
ca de encadear pensamentos para
eles resultam em programação. sequencial lógica.
Vamos iniciar? Aperte os cintos e atingir determinado objetivo.
E sequência lógica, você sabe o Por exemplo, para fazer uma
embarque no mundo da lógica de
que é? Então acompanhe! omelete de batatas, é preciso co-
programação!
locar em prática uma série de
instruções: descascar as batatas,
Lógica de programação Sequência lógica bater os ovos, fritar as batatas etc.
Os pensamentos que você estu- É evidente que essas instruções
Para Forbellone e Eberspächer
dou na lógica de programação precisam ser executadas em uma
(2005, p. 12), a lógica pode ser
podem ser descritos como uma ordem adequada – não se pode
relacionada com a “correção do
sequência de instruções, que de- descascar as batatas depois de
pensamento”. Correção de pensa-
vem ser seguidas para cumprir fritá-las.
mento? Isso mesmo! Uma de suas
preocupações é determinar quais uma determinada tarefa. Dessa maneira, uma instrução to-
operações são válidas e quais não mada de forma isolada não tem
Sequência lógica são passos
são, fazendo análises das formas e muito sentido. Para se obter o
executados até atingir um objetivo
leis do pensamento. resultado, é preciso colocar em
ou solução de um problema.
prática o conjunto de todas as ins-
truções, na ordem correta.
Instruções
A lógica de programação sig-
nifica o uso correto das leis do Instruções são um conjunto
pensamento e de processos de regras ou normas definidas
de raciocínio e simbolização Na linguagem comum, en- para a realização ou emprego
formais na programação de tende-se por instruções um de algo. Em informática, é o
computadores, objetivando conjunto de regras ou normas que indica a um computador
a racionalidade e o desenvol- definidas para a realização ou uma ação elementar a execu-
vimento de técnicas que coo- emprego de algo. tar.
perem para a produção de so-
luções logicamente válidas e
coerentes, que resolvam com
qualidade os problemas que
se deseja programar.

LÓGICA DE PROGRAMAÇÃO 13
Algoritmos Programas Mas veja bem! Não existe con-
senso entre os especialistas sobre
Um algoritmo é formalmente uma Os programas de computadores qual seria a melhor maneira de
sequência finita de passos que le- nada mais são do que algorit- representar um algoritmo. Atu-
vam à execução de uma tarefa. mos escritos em uma linguagem almente, a maneira mais comum
É possível pensar em algoritmo de computador (Pascal, C, Co- de representar algoritmos é por
como uma receita, uma sequên- bol, Fortran, Visual Basic, entre meio de uma pseudolinguagem
cia de instruções que dão cabo de outras) e que são interpretados ou pseudocódigo. Essa forma de
uma meta específica. Essas tarefas e executados por uma máquina; representação tem a vantagem de
não podem ser redundantes nem no caso, um computador. Com fazer com que o algoritmo seja es-
subjetivas na sua definição. Elas essa interpretação rigorosa, um crito de uma maneira próxima de
devem ser claras e precisas. programa é, por natureza, muito uma linguagem de programação
Como exemplos de algoritmos específico e rígido em relação aos de computadores.
existem os algoritmos das ope- algoritmos da vida real.
rações básicas (adição, multipli- Com esses conceitos, certamente
cação, divisão e subtração) de agora você estará pronto para se-
Descrição narrativa
números reais decimais. Outros guir para a próxima seção. Vamos Como ilustração de algoritmo em
exemplos seriam os manuais de lá! linguagem natural, considera a se-
aparelhos eletrônicos, que expli- guinte receita.
cam passo a passo como utilizá- Providencie manteiga, ovos, 2 Kg
-los. Seção 2 de massa etc.
Até mesmo as coisas mais simples Formas de ▪▪ Misture os ingredientes.
podem ser descritas por sequên-
cias lógicas. Vamos a um exem-
representação ▪▪ Despeje a mistura na forma
plo: como chupar bala. Observe! de bolo.
As formas mais comuns de repre-
▪▪ Pegar a bala. sentação de algoritmos são as se- ▪▪ Leve a forma ao forno.
▪▪ Retirar o papel. guintes. Acompanhe! ▪▪ Espere 20 minutos.
▪▪ Chupar a bala. ▪▪ Descrição narrativa: os algo- ▪▪ Retire a forma do forno.
▪▪ Jogar o papel no lixo. ritmos são expressos diretamente ▪▪ Deixe esfriar.
em linguagem natural. ▪▪ Prove.
Algoritmo é a descrição de um con- ▪▪ Fluxograma convencional: é
junto de ações que, obedecidas,
uma representação gráfica que Essa forma de representação é
emprega formas geométricas bastante conhecida, por utilizar
atingem o objetivo esperado.
padronizadas para indicar as a linguagem natural, porém tem
diversas ações e decisões que de- algumas desvantagens, como im-
Segundo Lopes e Garcia (2002), vem ser executadas para resolver precisão, pouca confiabilidade e
algoritmo não é a solução de um o problema. principalmente ser extensa, pois
problema, pois, se assim fosse, ▪▪ Pseudolinguagem: emprega escreve-se muito para dizer pouca
cada problema teria um único al- uma linguagem intermediária coisa.
goritmo. Algoritmo é um conjun- entre a linguagem natural e uma
to de passos que levam à solução linguagem de programação para
de um determinado problema e, descrever os algoritmos.
em geral, são muitos os caminhos
que levam à solução.

14 CURSOS TÉCNICOS SENAI


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

LÓGICA DE PROGRAMAÇÃO 15
A representação gráfica por meio O uso da pseudolinguagem, ou
de fluxograma é uma das ferra- linguagem algorítmica, tem inú-
Seção 4
mentas mais conhecidas na repre- meras vantagens, como utilização Ambiente
sentação de algoritmos, utiliza um do português como base e a passa-
padrão mundial e diz muito mais gem quase imediata do algoritmo
do que palavras. Porém, sua uti- para uma linguagem de progra- O computador
lização reflete em pouca atenção mação qualquer. No entanto, não
aos dados, não oferecendo recur- tem padrão definido, dificultando Os computadores podem ser usa-
sos para descrevê-los, e complica- a leitura em alguns momentos. dos de forma eficiente na solução
-se na medida em que o algoritmo de certos tipos de problemas. Os
cresce. problemas que suportam trata-
Seção 3 mento por computador em geral
envolvem grandes quantidades
Você sabe o que é uma pseudolin- Teste de mesa de dados ou são problemas de
guagem? Vamos descobrir juntos!
natureza complexa, exigindo a
Após desenvolver um algoritmo
execução de um grande número
é preciso testá-lo. Esse teste é
Pseudolinguagem de passos para alcançar a solução.
chamado de TESTE DE MESA,
Basicamente, são problemas na
Esse modo de representar algo- que significa seguir as instruções
área de processamento de dados
ritmos procura empregar uma do algoritmo de maneira precisa
e na área científica.
linguagem que esteja o mais pró- para verificar se o procedimento
xima possível de uma linguagem utilizado está correto ou não. Mas
de programação de computadores como esse teste deve ser feito?
de alto nível, mas evitando defi- Veja na tabela seguinte um exem-
nir regras de construção grama- plo de teste de mesa que valida o
tical muito rígidas. A ideia é usar algoritmo CALCULA_DOBRO,
as vantagens do emprego da lin- apresentado na seção anterior.
guagem natural, mas restringindo
o escopo da linguagem. Normal- Tabela 1: Teste de mesa
mente, essas linguagens são ver- varNum varDobro
sões ultrarreduzidas de linguagens
2 4
de alto nível do tipo Pascal ou C.
Ficou mais claro agora? Então 6 12
veja a seguir um exemplo de pseu-
dolinguagem. Nesse exemplo deve-se atribuir O computador é uma ferramenta
valores a “varNum”, executar o que permite a realização do proces-
cálculo descrito no algoritmo e samento automático (ou eletrôni-
algoritmo“CALCULA_DOBRO” avaliar se “varDobro” vai resultar co) de dados.
var como na tabela anterior.
varNum, varDobro : inteiro
inicio Mas o que é processamento de
leia (varNum) dados?
varDobro ← 2 * varNum
Escreva (varDobro) Define-se por processamento de
fimalgoritmo dados qualquer atividade que, uti-
lizando informações (ou dados),
efetua transformações para obter
novas informações (ou dados)
como resultado.

16 CURSOS TÉCNICOS SENAI


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.

LÓGICA DE PROGRAMAÇÃO 17
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).

18 CURSOS TÉCNICOS SENAI


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!

LÓGICA DE PROGRAMAÇÃO 19
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
Algoritmos

Seção 1
Tipos de dados
Como você já estudou, um al-
goritmo é constituído de uma
Inteiro
sequência de instruções a serem Toda e qualquer informação numérica que pertença ao conjunto dos
seguidas para a obtenção de solu- números inteiros (negativo, nulo ou positivo).
ções a algum problema. Nessa so- Exemplos: 39; 0; -56 entre outros.
lução, são manipulados diversos
dados. Esses dados podem ser os
apresentados pelo problema – os Real
dados intermediários – que são Toda e qualquer informação numérica que pertença ao conjunto dos
gerados durante a execução do números reais (negativo, nulo ou positivo, inteiro ou fracionário).
algoritmo, ou os dados que repre-
Exemplos: -4, 3; 0, 35; 1,23
sentam a solução do problema.

Caractere
Com isso, pode-se concluir
que os dados manipulados São caracterizadas como tipos caracteres as sequências contendo letras,
dentro de um algoritmo po- números e símbolos especiais. Uma sequência de caracteres deve ser
dem ser classificados em indicada entre aspas (“ ”). Esse tipo de dado é também conhecido como
vários tipos, com suas carac- alfanumérico, string, literal ou texto.
terísticas e operações. Cada
Exemplos: “Rua Alfa, 52 Apto 1”; “Fone: 3276-9988”; “04387-456”; “ “; “7”.
linguagem de programação
tem sua própria classificação.
Lógico
São caracterizados como tipos lógicos os dados com valores verdadeiros
Todo dado a ser tratado em um
e falsos, sendo que podem representar apenas um desses dois valores.
algoritmo deve pertencer a algum
Ele é chamado por alguns de tipo booleano, devido à contribuição do
tipo, que irá determinar o domínio
filósofo e matemático inglês George Boole na área da lógica matemática.
de seu conteúdo. Os tipos mais
comuns de dados são conhecidos A tabela que você verá a seguir resume os tipos de dados mais comuns
como tipos primitivos de dados. e sua definição nas linguagens utilizadas no decorrer do material. Veja!
São eles: inteiro, real, caractere e
lógico. Quer saber o que cada um Tabela 2: Tipos de dados
deles representa? Vamos adiante! 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

LÓGICA DE PROGRAMAÇÃO 21
Uma variável é composta por dois Quer saber o que são variáveis
Seção 2 elementos básicos: globais e variáveis locais? Então
Constantes e variáveis vá em frente para saber mais!
▪▪ conteúdo: valor da variável e
identificador;
▪▪ nome: dado à variável para Variáveis globais
Constantes possibilitar sua utilização e loca- Uma variável global é uma variá-
Constante é um determinado va- lização. vel acessível em todos os escopos
lor fixo que não se modifica ao de um algoritmo. O mecanismo
longo do tempo durante a execu- O conteúdo de uma variável pode de interação com variáveis globais
ção de um programa. Conforme o ser de vários tipos: inteiro, real, é chamado ambiente global.
seu tipo, a constante é classificada caractere ou lógico, entre outros. Mas fique atento! O uso de vari-
como sendo inteira, real, caractere Normalmente, quando se ensi- áveis globais é geralmente con-
e lógica. na algoritmo, trabalha-se com os siderado inadequado, pois seu
Exemplo: constPI = 3.14 quatro tipos citados. conteúdo pode ser potencialmen-
Uma vez definidos o nome e o te modificado de qualquer local
tipo de uma variável, não será e qualquer parte de um código
Variáveis
possível alterá-los no decorrer do pode depender dele.
Variável é um objeto (uma posi- algoritmo. Por outro lado, o con-
ção frequentemente localizada na teúdo de uma variável é um ob-
memória), capaz de armazenar jeto de constante modificação no Variáveis locais
um valor ou expressão. As vari- decorrer do programa, de acordo Variáveis locais são aquelas decla-
áveis só “existem” em tempo de com o fluxo de execução do mes- radas no início de um subalgorit-
execução, sendo associadas a “no- mo. mo. São visíveis, ou seja, podem
mes”, chamadas identificadores, Em algoritmos, as variáveis serão ser utilizadas somente pelo subal-
durante a criação dos algoritmos. definidas no início, por meio de goritmo onde foram declaradas.
Em relação à variável, estamos um comando definido conforme Outros subalgoritmos ou mesmo
tratando de uma região de memó- o exemplo seguinte. o algoritmo principal não pode
ria (do computador) previamente utilizá-la.
identificada, cuja finalidade é ar-
mazenar os dados ou informa- algoritmo “CALCULA_DOBRO”
ções de um programa por um de- var Variáveis locais somente per-
terminado espaço de tempo. Para varNum, varDobro : inteiro manecem válidas durante a
que você entenda melhor, pense inicio execução da função ou pro-
que a memória do computador cedimento e, em seguida, são
fimalgoritmo reinicializadas em zero.
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 Existem duas variáveis declaradas. Cada vez que a função é chamada,
o computador entende. Uma é a “varNum” e a outra é a os valores gerados anteriormente
Assim, o computador armazena “varDobro”, ambas possuindo o não estão disponíveis.
os dados nessas divisões, sendo mesmo tipo de dado, no caso in- E você sabe qual a diferença entre
que em cada divisão só é possível teiro. constantes e variáveis? Acompa-
armazenar um dado e, toda vez Como pode ser visto, “varNum” nhe!
que o computador armazenar um e “varDobro” são os nomes das
dado em uma dessas divisões, o variáveis, e é por meio desses no-
dado que antes estava armazena- mes que é possível alterar e resga-
do é eliminado. Mas lembre-se de tar o valor presente nela.
que o conteúdo pode ser alterado,
mas somente um dado pode ser
armazenado por vez naquela di-
visão.

22 CURSOS TÉCNICOS SENAI


Tabela 3: Operadores aritméticos
Constantes X variáveis
Operadores Simbologia Prioridade
A diferença primordial entre esses
Soma + 3
dois conceitos é que constantes
Subtração - 3
são valores inalterados e variável é
uma entidade capaz de manifestar Multiplicação * 2
diferenças em valor. Diz-se que Divisão / 2
a variável possui qualquer valor Módulo % 2
dentro de um campo determi- Exponenciação ^ 1
nado. Atua como uma “gaveta”,
Radiciação // 1
onde se pode guardar qualquer
valor, desde que o tipo seja res-
peitado. Mas o que representa a priorida- Um ponto importante é a ordem
de? A prioridade indica a ordem de avaliação das expressões. As
em que cada operação deverá ser prioridades que você viu na ta-
Seção 3 executada. Quanto menor o nú- bela anterior não são suficientes
mero, maior a prioridade da ope- para resolver todas as situações.
Expressões ração. Observe que o operador de Para isso, você precisa conhecer
multiplicação é o caractere asteris- algumas regras adicionais. Veja a
Para que você entenda melhor, é co, um símbolo que é empregado seguir!
possível ligar o conceito de ex- na maioria das linguagens para
pressão ao conceito de expressão essa operação.
▪▪ Deve-se observar primeiro a
(ou fórmula) matemática, onde prioridade dos operadores, con-
Expressões aritméticas podem forme a tabela anterior. Ou seja,
um conjunto de variáveis e cons-
manipular operandos de dois ti- operadores com maior prioridade
tantes numéricas relaciona-se por
pos: reais e inteiros. Se todos os (números menores) são avaliados
meio de operadores, compondo
operandos de uma expressão são primeiramente. Caso haja empate
uma fórmula que, uma vez ava-
do tipo inteiro, então a expres- na ordem de prioridade, deve-se
liada, resulta em um valor. As ex-
são fornece como resultado um resolver a expressão da esquerda
pressões dividem-se em:
número inteiro. Caso pelo me- para a direita.
▪▪ aritméticas; nos um dos operandos seja real,
o resultado será real. Isso pode ▪▪ Parênteses servem para mudar
▪▪ relacionais; a ordem de prioridade de exe-
parecer estranho a princípio, mas
▪▪ lógicas. esse procedimento reflete a for- cução das operações. Quando
ma como as operações são exe- houver parênteses dentro de
Saiba o que significa cada uma cutadas pelos processadores. Por parênteses, as expressões dentro
delas. exemplo, o resultado da operação dos mais internos são avaliadas
1/5 é 0, porque os dois operado- primeiro.
res são inteiros. Caso a expressão
Aritméticas tivesse sido escrita como 1.2/5, o Ficou claro até aqui? Para enten-
Expressões aritméticas são aque- resultado 0.24 seria o correto. A der melhor, observe alguns exem-
las que apresentam como resulta- seguir temos exemplos de algu- plos que mostram como essas
do um valor numérico que pode mas expressões aritméticas. Con- regras são aplicadas. Considere as
ser um número inteiro ou real, de- fira! seguintes variáveis:
pendendo dos operandos e ope- ▪▪ A = 2
radores. Observe os operadores
aritméticos na tabela seguinte. ▪▪ A + B - C ▪▪ B = 4
▪▪ A / B ▪▪ C = 1
▪▪ 3.14 * (A + B)

LÓGICA DE PROGRAMAÇÃO 23
Vamos então analisar expressões Para entender melhor, considere ▪▪ Não: uma expressão “não»
com essas variáveis e seus resul- alguns exemplos que mostram inverte o valor da expressão ou
tados. como é possível utilizar os ope- condição; se verdadeira, inverte
radores relacionais. Considere as para falsa e vice-versa.
▪▪ A*B-C
seguintes variáveis: ▪▪ Xou: Uma expressão “xou”
▪▪ A * (B - C)
▪▪ A = 5 tem resultado verdadeiro se seus
▪▪ B+A/C+5 dois operandos lógicos forem
▪▪ B = 3
▪▪ (B + A) / (C + 5) diferentes e falso, se forem iguais.
Vamos então analisar as expres-
Os resultados das operações ló-
sões com essas variáveis e seus
A primeira expressão tem como gicas são sempre valores lógicos
resultados.
resultado o valor 7, como era de (verdadeiro ou falso).
se esperar. Na segunda expressão, Para trabalharmos adequadamen-
Tabela 5: Expressões com variáveis e te com operadores lógicos, temos
a ordem de avaliação foi alterada
resultados
pelos parênteses e primeiro é fei- que conhecer a tabela verdade
Expressão Resultado para cada um dos operadores. Ta-
ta a subtração e o resultado passa
a ser 6. A primeira operação na A=B Falso bela verdade? Isso mesmo! Uma
terceira expressão é a divisão que A <> B Verdadeiro tabela verdade é o conjunto de to-
tem maior prioridade. Nesse caso, A>B Verdadeiro das as possibilidades combinató-
o resultado final é 11. Na última rias entre os valores das variáveis
A<B Falso
expressão as somas são realizadas lógicas, conforme você verá nas
A >= B Verdadeiro
primeiro e, por último, a divisão, tabelas seguintes.
ficando o resultado igual a 1. A <= B Falso

Tabela 7: Exemplo de tabela verdade

Relacionais Lógicas A B AeB


As expressões lógicas servem para F F F
As expressões relacionais são uti-
combinar resultados de expres- F V F
lizadas para comparar caracteres
e números. Os valores a serem sões, retornando se o resultado V F F
comparados podem ser literais ou final é verdadeiro ou falso. Veja V V V
variáveis. Esses operadores sem- quais são os operadores lógicos a
seguir. A B A ou B
pre retornam valores lógicos (ver-
F F F
dadeiro ou falso).
Tabela 6: Operadores lógicos F V V
Para estabelecer prioridades no
que diz respeito a qual operação Descrição Simbologia V F V
executar primeiro podem ser uti- E e V V V
lizados os parênteses, conforme Ou ou A B A xou B
mostrado anteriormente.
Não nao F F F
Observe os operadores relacionais
Xou xou F V V
disponíveis na tabela seguinte.
V F V
Puxa! Quantos dados, não é mes- V V F
Tabela 4: Operadores relacionais
mo? Saiba o que cada um signi- A nao A
Descrição Simbologia
fica.
Igual a = F V
Diferente de <>
▪▪ E: uma expressão “e” é verda- V F
deira se todas as condições forem
Maior que >
verdadeiras.
Menor que < Veja agora uma tabela com todos
▪▪ Ou: uma expressão “ou” é os valores possíveis criados pelos
Maior ou igual a >= verdadeira se pelo menos uma
Menor ou igual a <=
três operadores lógicos.
condição for verdadeira.

24 CURSOS TÉCNICOS SENAI


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.

LÓGICA DE PROGRAMAÇÃO 25
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

26 CURSOS TÉCNICOS SENAI


Nesse exemplo, o resultado final (valor) da variável “varDobro” será 12. Nesse exemplo fazemos com que
No computador, no momento em que temos uma atribuição, o espaço o computador aguarde que um
em memória que já estava alocado para as variáveis “varNum” e “var- valor seja digitado. Após, ele efe-
Dobro”, porém vazio, receberá o valor das expressões. tua um cálculo e, por fim, exibe o
resultado desse cálculo armazena-
Nos comandos em que o valor a ser atribuído à variável é representa-
do na variável “varDobro” na tela
do por uma expressão aritmética ou lógica, esta deve ser resolvida em
do computador.
primeiro lugar, para que depois o resultado possa ser armazenado na
variável. Mais uma etapa cumprida e
quanto conhecimento novo, não
é mesmo? Nesta unidade você
Seção 6 aprendeu sobre os algoritmos, os
tipos de dados, constantes e vari-
Comandos de entrada e saída áveis, viu o que são as expressões,
as funções, a atribuição e os co-
Um comando de entrada (leitura) tem por função transferir dados do mandos de entrada e saída. Foi
meio externo para a memória de trabalho do computador. Os dados do um estudo muito interessante,
meio externo, na maioria das vezes, entram em nosso computador por não é mesmo? E não para por aí.
meio do teclado. Na próxima unidade você estu-
Vamos a mais um exemplo? Veja um algoritmo exemplificando o co- dará sobre estruturas de seleção.
mando de entrada de dados. Lembre-se de buscar novas infor-
mações sobre os temas estudados
e praticar. Em frente!
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

LÓGICA DE PROGRAMAÇÃO 27
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
Estruturas de Seleção

Seção 1
Introdução
Para iniciar o estudo, é importante Mas se deixássemos a critério de Dessa forma, o computador mais
ressaltar que existem problemas quem executa o algoritmo, será parecia uma máquina de calcular.
que podem ter mais de um ca- que ele sempre escolheria o ca- O aprendizado de novos concei-
minho para serem resolvidos em minho correto? Não se pode ar- tos, como a estrutura de seleção,
uma seleção correta. Muitas vezes riscar. Por isso, além de saber que dará uma visão maior da comple-
também podem existir restrições existe mais de um caminho para xidade de tarefas que ele poderá
nas soluções. Portanto, para exe- a solução do problema, é preciso executar.
cutar o algoritmo, em dado mo- prover subsídios para que o mes- E que tal agora refletir sobre a
mento é preciso tomar a decisão mo faça a escolha do caminho importância dessa estrutura? Para
do caminho que deverá ser segui- correto. isso, leia com atenção as afirmati-
do para chegar à solução correta Assim, o simples fato de informar vas seguintes:
para o problema. que a solução do problema tem
A decisão do caminho a ser se- ▪▪ Distribuição gratuita de cestas
duas ou mais metodologias dife-
guido precisa estar fundamenta- básicas.
rentes em sua solução não funcio-
da em alguma lógica. E é função naria. É preciso dizer em quais si- ▪▪ Distribuição gratuita de cestas
de quem escreve o algoritmo dar tuações ele utilizará a metodologia básicas para as famílias com qua-
condições para o sujeito que o A e quando utilizará a B. tro ou mais componentes.
executa fazer a escolha correta do No caso das raízes de polinômio ▪▪ Distribuição gratuita de in-
caminho para se chegar à solução de 2° grau, é possível utilizar a se- gressos para o teatro, sendo dois
do problema. guinte descrição narrativa: para pessoas do sexo feminino e
Um exemplo simples de proble- um para pessoas do sexo mascu-
ma que pode ter metodologias ▪▪ se o resultado de b2 – 4ac for lino.
diferentes em sua solução são os maior ou igual a zero: O que você pôde concluir com es-
cálculos das raízes de equações ▪▪ então utilize a metodo- sas afirmações?
polinomiais de 2° grau (ax2 + bx logia de cálculo de raízes
+ c = 0). Se o termo b2 – 4ac for reais; ▪▪ Na primeira, todas as pes-
maior ou igual a zero, as raízes soas recebem a cesta básica, o
▪▪ caso contrário, utilize a que equivaleria a um comando
serão reais. Caso contrário, serão metodologia de cálculo de
complexas. sequencial.
raízes complexas.
Não seria correto escrever um al- ▪▪ Na segunda, só recebem as
goritmo que resolvesse somente cestas básicas as famílias com
Até agora, os algoritmos seguiram pelo menos quatro integrantes.
a parte de raízes reais ou a parte um mesmo padrão: entrava-se
complexa, pois a metodologia que com dados, que eram processados ▪▪ Na terceira, dependendo
vai ser usada somente será conhe- e alguma informação era mostra- do sexo, recebe-se um ou dois
cida na execução do algoritmo. da na tela. ingressos.
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.

LÓGICA DE PROGRAMAÇÃO 29
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”.

30 CURSOS TÉCNICOS SENAI


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)
Figura 6: Exemplo de seleção composta se varNum1 > varNum2
entao
Essas situações são muito comuns em programação, razão pela qual será escreva (“Maior valor é
preciso recorrer aos comandos de seleção (ou de decisão). o primeiro”)
senão
A condição Se-Então (-Senão) é uma estrutura de seleção comum em di- escreva (“Maior valor é
versas linguagens de programação. Sua estrutura básica é a seguinte. o segundo”)
fimse
fimalgoritmo
algoritmo “SE”
var
varNum : inteiro
inicio Como você pode perceber, nesse
se varNum < 10 entao algoritmo é determinado o maior
escreva (“Número menor que 10”) valor entre dois valores. Se os dois
senão números forem iguais, o algorit-
escreva (“Número maior ou igual a 10”) mo informará que o “varNum2”
fimse é o maior valor, o que obviamente
fimalgoritmo não é verdade. Assim, esse algo-
ritmo não está correto. Note que
nesse problema há três situações
Quando o interpretador encontra o identificador Se, ele espera em se- possíveis: “varNum1” maior que
guida uma condição booleana sob forma de expressão relacional (como “varNum2”, “varNum1” menor
por exemplo, “varNum < 10”), que pode ser verdadeira ou falsa. Se a que “varNum2” e os dois com va-
condição é verdadeira, o bloco de código seguido de Então é executado. lores iguais. Utilizando um único
Caso a condição seja falsa, o bloco de código seguido de Senão é execu- comando Se, conseguimos ava-
tado. Em ambos os casos, após a execução do bloco de código, o fluxo liar apenas duas situações. Para
do programa é retornado para o ponto indicado por Fim Se. Note que levar em conta as três situações,
a parte do Senão é opcional e pode ser omitida. Caso seja omitida, a es- outro comando de seleção faz-se
trutura é chamada de seleção simples; caso contrário, é chamada seleção necessário. Quer saber a seleção
composta. para esse problema? Então veja o
exemplo seguinte.

LÓGICA DE PROGRAMAÇÃO 31
Suponha que o conceito de um
algoritmo “MAXIMO” aluno seja determinado em fun-
var ção de sua nota. Suponha também
varNum1, varNum2 : inteiro que essa nota seja um valor inteiro
inicio
na faixa de 1 a 4. O problema está
leia (varNum1)
na seguinte situação: dada a nota,
leia (varNum2)
se varNum1 > varNum2 entao determine o respectivo conceito.
escreva (“Maior valor é o primeiro”) Considere ainda os conceitos que
senão você verá na tabela seguinte.
se varNum1 < varNum2
escreva (“Maior valor é o segundo”)
Tabela 10: Notas e conceitos
senão
escreva (“Os dois valores são iguais”) Nota Conceito
fimse 1 Insuficiente
fimse 2 Regular
fimalgoritmo
3 Bom
4 Ótimo

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- Para resolver o problema, veja a
tro do Senão do primeiro Se. Dentro do Senão do primeiro Se, um outro seguir o algoritmo por meio da
Se é executado, sendo então verificado se o conteúdo de “varNum1” é utilização de Se´s aninhados.
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.

32 CURSOS TÉCNICOS SENAI


Com isso, ao executar o comando
algoritmo “CONCEITO” Escolha no algoritmo anterior, será
var avaliada cada uma das opções de
varNota : inteiro valores de “varNota”. Portanto,
varConceito : caractere
veja que a opção 1, por exemplo,
inicio
significa valor igual a 1. Assim, se
leia (varNota)
se varNota = 1 entao o valor de “varNota” for igual ao
varConceito ← “Insuficiente” da comparação, essa opção será
senão satisfeita. As opções serão sempre
se varNota = 2 avaliadas na ordem em que apa-
varConceito ← “Regular” recem e será executada a instru-
senão ção relativa à primeira opção que
se varNota = 3 satisfazer o valor de “varNota”.
varConceito ← “Bom” Caso nenhuma das opções satis-
senão
faça o valor da expressão do co-
varConceito ← “Ótimo”
mando Escolha, serão executadas
fimse
fimse as instruções colocadas no Outro-
fimse caso.
escreva (varConceito) Quantos comandos importantes
fimalgoritmo você aprendeu nesta unidade de
estudo, não é mesmo? O coman-
do Se, os ninhos de comando Se e
o comando Escolha certamente se-
Perceba que, no algoritmo anterior, vários testes são feitos sobre o con-
rão muito úteis para seus cálculos!
teúdo da variável “varNota”. Em vez de escrevermos os vários testes
Existem muitos outros comandos
utilizando Se´s aninhados e considerando que todos os testes são realiza-
que você aprenderá no decorrer
dos sobre uma mesma expressão, é possível utilizar um comando alter-
desta unidade curricular. Então
nativo, que tem essa função. Trata-se do comando Escolha, cuja função é
não perca tempo. Aplique seus
tornar possível a escolha de uma alternativa, entre as várias disponíveis.
conhecimentos praticando e siga
Usando o comando Escolha, o problema de determinação do conceito de
com dedicação e disciplina!
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

LÓGICA DE PROGRAMAÇÃO 33
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
Estruturas de Repetição

Seção 1
Introdução
Existem situações em que, para Mas atenção! Caso o bloco de có- Vamos a um exemplo. Suponha
obter-se a solução do problema, é digo nunca modifique o estado da que um determinado clube social
necessário fazer com que um con- condição, observe que a estrutu- tenha registrado a quantidade de
junto de instruções seja executado ra será executada para sempre. E latas de cerveja vendidas no últi-
várias vezes. Esta unidade de es- essa será uma situação chamada mo carnaval. Considerando que
tudo tem por objetivo apresentar laço infinito. Da mesma forma, é cada lata foi vendida a R$ 1,40,
e discutir estruturas que possibi- possível especificar uma estrutura deseja-se saber o total arrecadado
litem a execução de um conjunto em que o bloco de código modifi- no último carnaval, com a venda
de instruções por várias vezes, ca o estado da condição, mas esta das latas de cerveja. Obviamente
com o programador escrevendo é sempre verdadeira. que para esse problema tem-se
este conjunto apenas uma vez. Algumas linguagens de programa- como entrada a quantidade de
Em detalhes, uma estrutura de re- ção especificam ainda uma palavra latas vendidas e deseja-se saber,
petição é uma estrutura de desvio reservada para sair da estrutura de como solução do problema, qual
do fluxo de controle que realiza repetição de dentro do bloco de o total arrecadado. Veja a seguir o
e repete diferentes ações depen- código, “quebrando” a estrutura. respectivo algoritmo.
dendo se uma condição é verda- Também é oferecida por algumas
deira ou falsa, em que a expressão linguagens uma palavra reservada
é processada e transformada em para terminar uma iteração espe- algoritmo “QUANTIDADE_
um valor booleano. Estão associa- cífica do bloco de código, forçan- ARRECADADA”
das a uma estrutura de repetição do uma nova verificação da con- var
uma condição (também chamada varQuantidadeVendida : in-
dição.
teiro
“expressão de controle” ou “con- Ficou claro até aqui? Esta unida- varValorArrecadado : real
dição de parada”) e um bloco de de de estudo é uma das mais im- inicio
código: verifica-se a condição e, portantes para o seu estudo! Você leia (varQuantidadeVendi-
caso seja verdadeira, o bloco é notará que a partir desse ponto da)
executado. Após o final da execu- começará a ter mais dificuldade varValorArrecadado ← var-
ção do bloco, a condição é verifi- na resolução dos algoritmos em QuantidadeVendida * 1,40
cada novamente e, caso ela ainda função da dificuldade de entender escreva (varValorArrecada-
seja verdadeira, o código é execu- do)
onde as estruturas de repetição fimalgoritmo
tado novamente. deverão ser colocadas para aten-
der às exigências dos enunciados.
Portanto, continue atento!

LÓGICA DE PROGRAMAÇÃO 35
Como você pôde perceber, o problema apresentado consiste em de-
terminar o total arrecadado com a venda de latas de cerveja no último Consiste em uma estrutura de
carnaval. Se desejarmos determinar o total arrecadado em cada um dos controle do fluxo de execução
último três carnavais, o algoritmo poderia ser escrito da forma seguinte: que permite repetir diversas
vezes um mesmo trecho do
algoritmo, porém, sempre ve-
rificando antes de cada exe-
algoritmo “QUANTIDADE_ARRECADADA” cução se é permitido executar
var o mesmo trecho.
varQuantidadeVendida : inteiro
varValorArrecadado : real
inicio
// Total arrecadado no último ano Para realizar a repetição com tes-
leia (varQuantidadeVendida) te no início, utilizamos a estrutu-
varValorArrecadado ← varQuantidadeVendida * 1,40
ra Enquanto, que permite que um
escreva (varValorArrecadado)
// Total arrecadado no penúltimo ano
bloco ou uma ação primitiva seja
leia (varQuantidadeVendida) repetido enquanto uma determi-
varValorArrecadado ← varQuantidadeVendida * 1,40 nada Condição for verdadeira. O
escreva (varValorArrecadado) modelo genérico desse tipo de re-
// Total arrecadado no antepenúltimo ano petição é o que você verá a seguir.
leia (varQuantidadeVendida)
varValorArrecadado ← varQuantidadeVendida * 1,40
escreva (varValorArrecadado) algoritmo “ENQUANTO”
fimalgoritmo inicio
enquanto <condição> faca
// Trecho a ser repetido
fimenquanto
Observe no algoritmo anterior que a solução do problema é a mesma
fimalgoritmo
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 Preste atenção! Quando o resulta-
obviamente se tornaria impraticável. do de Condição for falso, o coman-
Considerando que para cada um dos casos as instruções a serem execu- do de repetição é abandonado. Se
tadas são as mesmas, é muito mais adequado que se escreva um conjunto já da primeira vez o resultado é
de instruções apenas uma vez, e que instrua o computador para que falso, os comandos não são exe-
repita a execução das instruções por um determinado número de vezes. cutados nenhuma vez, o que re-
presenta a característica principal
Os laços de repetição também são conhecidos por sua tradução em inglês: desse modelo de repetição.
loops ou looping. Ganham esse nome por lembrarem uma execução finita
Com isso, é possível concluir que
em círculos, que depois segue seu curso normal.
em algum momento do processo
Nesta unidade, você estudará três tipos de estrutura de repetição: com de repetição das instruções inter-
teste no início (comando Enquanto), com teste no final (comando Repita) nas ao comando Enquanto será
e automática (comando Para). Ficou curioso para saber o que cada um necessário que a expressão lógi-
dos comandos representa? Vamos iniciar com o comando Enquanto. Em ca assuma o valor falso, pois, do
frente! contrário, o fluxo jamais sairá de
dentro do Enquanto e o conjunto
de instruções será repetido infini-
Seção 2 tas vezes.
Comando Enquanto Para que você entenda melhor,
veja a seguir um exemplo de análi-
O comando Enquanto é uma estrutura recomendada quando o número se de saldo bancário. Se você qui-
de repetições for desconhecido, sendo necessária uma chave (um teste) ser um algoritmo que faça a análi-
para interromper a repetição. se para dez contas, pode escrever
a solução conforme o exemplo.

36 CURSOS TÉCNICOS SENAI


algoritmo “ANALISE_BANCARIA” Seção 3
var Comando Repita
varSaldo : real
varConta, varContador : inteiro O comando Repita é uma estrutu-
inicio
ra recomendada quando o núme-
varContador ← 0
enquanto varContador < 10 faca
ro de repetições for desconheci-
varContador ← varContador + 1 do, sendo necessária uma chave
(um teste) para interromper a re-
leia (varConta) petição.
leia (varSaldo) Sua diferença em relação ao En-
se varSaldo < 0 entao quanto é que ele testa ao final, exe-
escreva (varConta, “ está estourada”) cutando o trecho pelo menos uma
senao
vez.
escreva (varConta, “ está normal”)
fimse Essa estrutura também precisa de
fimenquanto uma condição para interromper a
fimalgoritmo repetição. Veja um modelo gené-
rico:

Observe que no algoritmo anterior utilizamos uma variável “varConta-


dor”, que inicialmente assume o valor zero. Na primeira vez que o fluxo algoritmo “REPITA”
de execução chega ao Enquanto, a expressão lógica “varContador < 10” inicio
repita
tem o valor verdadeiro. Assim, são executados todos os comandos in-
// Trecho a ser repetido
ternos do Enquanto. Observe também que no interior do comando En- ate <condição>
quanto colocamos o comando “varContador ß varContador + 1”, o qual fimalgoritmo
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?
Quando o fluxo de execução che-
gar ao Repita, automaticamente
serão executados os comandos
Incrementar é o mesmo que somar um valor constantemente. O pon-
internos ao Repita. Chegando no
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- ate, será avaliada a condição. Se a
valente a 1 segundo. Quando atinge 60 segundos, é a vez do ponteiro condição for falsa, então o fluxo de
dos minutos ser incrementado e assim por diante. 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
E o comando Repita, você sabe qual sua função? Esse será o assunto da condição for verdadeira, a execução
próxima seção! sairá do Repita.
O algoritmo seguinte utiliza o Re-
pita para determinar o melhor alu-
no de uma turma. Observe com
atenção!

LÓGICA DE PROGRAMAÇÃO 37
algoritmo “MELHOR_ALUNO” Seção 4
var Comando Para
varNota, varMaximo, varQuantidade, varContador : inteiro
varNome, varMelhor : caractere O comando Para é usado quando
inicio
o número de repetições for co-
escreval (‘Entre com a quantidade de alunos’)
leia (varQuantidade)
nhecido durante a elaboração do
algoritmo ou quando puder ser
varMaximo ← -1 fornecido durante a execução.
varContador ← 0 Nas estruturas de repetição vis-
tas até agora, ocorrem casos em
repita que se torna difícil determinar o
escreval (“Entre com o nome do aluno”) número de vezes em que o blo-
leia (varNome)
co será executado. Sabemos que
repita ele será executado enquanto uma
escreval (“Digite um valor de 0 a 10”) condição for satisfeita (Enquanto),
leia (varNota) ou até que uma condição seja sa-
ate (varNota >=0) e (varNota <= 10) tisfeita (Repita). A estrutura Para
é diferente, já que sempre repete
se varNota > varMaximo entao a execução do bloco durante um
varMaximo ← varNota número predeterminado de vezes,
varMelhor ← varNome pois ela não prevê uma condição
fimse e possui limites fixos.
varContador ← varContador + 1 Quer saber qual o modelo gené-
ate varContador = varQuantidade rico para a estrutura de repetição
fimalgoritmo Para? Então veja a seguir.

algoritmo “PARA”
Ficou mais fácil com o exemplo, não é mesmo? Como você pôde ver, inicio
a cada vez que for executado o conjunto de instruções internas ao pri- para <variável> de <valor
meiro comando Repita, um aluno é processado. Ou seja, é solicitado o inicial> ate <valor limite> faca
nome e a nota de cada aluno. Cada nota de um aluno é comparada com // Trecho a ser repetido
o conteúdo da variável “varMaximo” e, se o conteúdo de “varNota” fimpara
for maior que “varMaximo”, então é possível concluir que essa nota fimalgoritmo
é 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, Onde:
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 ▪▪ <variável >: é a variável conta-
que, a cada aluno processado, o conteúdo da variável “varContador” dora que controla o número de
é incrementado em uma unidade, resultando em algum momento do repetições;
processo de repetição, que a expressão “varContador = varQuantidade” ▪▪ <valor inicial>: é uma expres-
assumirá o valor verdadeiro, fazendo com que a repetição seja encerrada. são que especifica o valor de ini-
Ainda no algoritmo, o segundo comando Repita faz com que o valor lido cialização da variável contadora
para nota do aluno esteja no intervalo de 0 a 10. Veja que este Repita só antes da primeira repetição;
é encerrado se a expressão “(varNota >= 0) e (varNota <= 10)” tiver ▪▪ <valor limite >: é uma ex-
o valor verdadeiro. Sempre que a expressão for avaliada e apresentar o pressão que especifica o valor
valor falso, o fluxo retornará ao respectivo Repita e será solicitado que o máximo que a variável contadora
usuário digite novamente a nota. pode alcançar.
O último comando dessa unidade é o Para. Está pronto para saber mais
sobre ele? Adiante!

38 CURSOS TÉCNICOS SENAI


<valor inicial > e <valor limite > são Veja que no algoritmo anterior a Veja então, que o comando Para
avaliados uma única vez antes da variável de controle do Para é a só pode ser utilizado quando você
execução da primeira repetição e “varMes”. A variável “varMes”, souber o número de vezes que se
não se alteram durante a execução conforme especifica o comando, quer repetir.
da repetição, mesmo que variáveis assume os valores inteiros que Confira a seguir um exemplo do
eventualmente presentes nessas vão de 1 até 12. Para cada valor de comando Para, utilizando um in-
expressões tenham seus valores “varMes”, as instruções internas cremento diferente do padrão.
alterados. ao Para são executadas. O valor
No exemplo a seguir, os números do incremento, quando não espe-
de 1 a 10 são exibidos em ordem cificado, o que é possível incluin- algoritmo “NUMEROS”
crescente. Observe! do “passo <valor do incremento>”, var
no comando Para antes do faca, varJ : inteiro
sempre é 1. inicio
Vamos assumir que ao chegar no para varJ de 1 ate 10 passo
algoritmo “NUMEROS” 2 faca
Para pela primeira vez será calcu-
var escreval (varJ)
lado o número de vezes que as fimpara
varJ : inteiro instruções internas ao Para se- fimalgoritmo
inicio rão executadas. A determinação
para varJ de 1 ate 10 faca do número de repetições é feita
escreval (varJ) usando-se os valores inicial e li-
mite, combinados com o valor No exemplo anterior, serão escri-
fimpara tos somente os valore 1, 3, 5, 7 e
do incremento para a variável de
fimalgoritmo 9. Para o valor do passo também
controle. Assim, estamos assu-
mindo também que não será pos- é possível definir um valor negati-
sível abandonar a repetição das vo, que fará a repetição subtrair o
Para entender melhor, veja mais instruções antes que o número de valor definido até chegar a 0. Nes-
um exemplo da utilização da es- repetições seja alcançado. se caso, o valor inicial deverá ser
trutura Para. O mesmo determina maior que o valor final.
o total arrecadado para um clube Mais uma unidade chega ao final
no final do ano. e agora você já tem muitos conhe-
cimentos novos. Aqui você apren-
deu sobre as estrutura de repeti-
algoritmo “BALANCO” ção, com os comandos Enquanto,
var Repita e Para. Siga em frente, pois
varMes : inteiro tem muita coisa interessante
varSoma, varReceita, varDespesa : real
aguardando por você! Faça do seu
inicio
varSoma ← 0
estudo um momento significativo
e prazeroso!
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

LÓGICA DE PROGRAMAÇÃO 39
Unidade de
estudo 5
Seções de estudo

Seção 1 – Introdução
Seção 2 – Vetores
Seção 3 – Matrizes
Estruturas Homogêneas

Seção 1
Introdução
Para iniciar o estudo, é importante destacar que as estruturas de dados Esse algoritmo possibilitaria a
homogêneos possibilitam o armazenamento de grupos de valores em leitura de cinco alturas de cinco
uma única variável que será armazenada na memória do computador. atletas diferentes e as armazena-
Mas por que essas estruturas são chamadas de homogêneas? Porque os ria em cinco variáveis distintas
valores que serão armazenados são de um mesmo tipo de dado. (varAltura1, varAltura2, varAltu-
As estruturas homogêneas são divididas em unidimensionais e multidi- ra3, varAltura4, varAltura5). Uma
mensionais. Normalmente, as estruturas unidimensionais são chamadas instrução de repetição não me-
de vetores e as multidimensionais são chamadas de matrizes. De fato, um lhoraria muito essa lógica, pois os
vetor também é uma matriz, porém varia em somente uma dimensão. cinco valores precisarão estar dis-
No intuito de compreender as facilidades do processamento de valores poníveis independente dos outros
usando adequadamente uma estrutura de dados, observe o algoritmo valores informados. Mas imagine
a seguir, supondo a necessidade de armazenamento da altura de cinco se a leitura das alturas tivesse que
atletas. ser realizada para um time de fu-
tebol, ou para uma equipe de fute-
bol americana, por seu algoritmo,
algoritmo “ATLETA” o que seria feito, então? E se em
var um próximo campeonato seu al-
varAltura1, varAltura2, varAltura3, varAltura4, varAltura5 : real goritmo fosse usado para registrar
inicio todos os participantes de todas as
escreval (“Informe a altura do primeiro atleta: “) equipes que participam da com-
leia (varAltura1) petição?
Em situações como essa é que as
escreval (“Informe a altura do segundo atleta: “)
leia (varAltura2)
estruturas de dados fazem a dife-
rença, sendo essenciais ao proces-
escreval (“Informe a altura do terceira atleta: “) samento dos dados eficiente por
leia (varAltura3) um computador.

escreval (“Informe a altura do quarto atleta: “)


leia (varAltura4)

escreval (“Informe a altura do quinto atleta: “)


leia (varAltura5)
fimalgoritmo

LÓGICA DE PROGRAMAÇÃO 41
▪▪ Único identificador dessa estrutura de dados = alturas
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 Mas o que representam os Valores e os Índices? Os Valores correspon-
o outro, sob um mesmo identifi- dem aos conteúdos lidos pelo usuário, ou seja, são as alturas dos atletas.
cador, cujas regras são as mesmas
Os Índices são as posições que garantem independência a cada um desses
para criar um identificador de
valores armazenados na estrutura de dados homogênea. Por meio desses
uma variável simples, que possui
índices, também chamados de posições do vetor, seus valores (conteú-
capacidade de guardar somente
dos) podem ser manipulados de forma independente.
um valor.
Imagine a necessidade de mostrar a altura do maior atleta cadastrado
nesse vetor. Entre essas cinco alturas, a maior é a quarta no vetor. Como
Um vetor é uma estrutura de o índice de uma estrutura de dados inicia sempre a partir de zero, a quar-
dados homogênea que pode ta altura está armazenada na terceira posição da estrutura, sendo o con-
ser acessado de forma aleató- teúdo dessa posição (3) igual a 2.20 (altura do quarto atleta cadastrado).
ria (qualquer posição que seja Os vetores são chamados de estruturas compostas unidimensionais. E
necessária). 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.

Suas principais características são:


Declaração de vetor
▪▪ contém vários valores (núme-
ro definido); A sintaxe correta para declaração de uma estrutura de dados composta
homogênea unidimensional (vetor), na representação de português es-
▪▪ todos os valores são do mes- truturado, deve respeitar a seguinte forma geral:
mo tipo de dado (homogênea);
▪▪ possui um único nome (identi-
ficador da variável); algoritmo “VETOR”
▪▪ cada valor do conjunto é var
<identificador> : vetor [<valor inicial>..<valor final>] de <tipo de
acessível independentemente,
dado>
de acordo com o seu índice (ou inicio
posição na estrutura de dados); fimalgoritmo
▪▪ todos os seus elementos, ou
dados armazenados, são igual-
mente acessíveis a qualquer mo-
Onde:
mento do processamento (acesso
aleatório). ▪▪ <tipo de dado> – tipo de dado que será armazenado no vetor;
▪▪ <identificador> – nome definido ao vetor, respeitando as regras de
Modificando a forma de solução identificação;
do algoritmo anterior, que pos- ▪▪ <valor inicial> e <valor final> – são os valores inteiros que definem
suía cinco variáveis para guardar início e fim dos índices do vetor, sendo o seu intervalo a quantidade
cinco alturas de atletas, é possível exata de elementos do vetor, ou seja, seu tamanho.
empregar um vetor para armaze-
nar essas cinco alturas.

42 CURSOS TÉCNICOS SENAI


Veja mais um exemplo. 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
algoritmo “ALTURAS” alturas de atletas em um vetor que tenha capacidade de realizar esse ar-
var mazenamento. Saiba mais com um exemplo.
vetAlturas : vetor [0..4] de
real
inicio
fimalgoritmo algoritmo “ALTURAS”
var
varAuxiliar : inteiro
vetAlturas : vetor [0..4] de real
Nesse exemplo será criado um inicio
para varAuxiliar de 0 ate 4 faca
vetor chamado alturas, que pode-
rá armazenar até cinco números escreval (“Informe a altura do “, varAuxiliar + 1 , “º atleta”)
reais diferentes. E veja bem! Uma leia (vetAlturas[varAuxiliar])
atenção especial deve ser dedicada
na compreensão de que esse tipo fimpara
de estrutura de dados tem seu pri- fimalgoritmo
meiro elemento armazenado na
posição zero e não na um.
Poucas linguagens de programa- Nesse exemplo, são criados somente duas variáveis, sendo uma deno-
ção não seguem esse padrão. Ele é minada auxiliar e a outra alturas, que consiste em um vetor de cinco
comumente adotado pela maioria posições (índice de zero até quatro). Esse vetor possui um único iden-
das linguagens de desenvolvimen- tificador, mas tem a capacidade de armazenar até cinco valores reais
to de programas.  como seu conteúdo, similar à criação das cinco variáveis alturas (altura1,
O gráfico a seguir representa a or- altura2, altura3, altura4, altura5) da proposta de solução do algoritmo
ganização de um vetor com tama- anterior.
nho três. Confira! 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:

algoritmo “VETOR”
var
vetValores : vetor [0..2] de
inteiro
inicio
fimalgoritmo

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
Figura 7: Organização de um vetor com estrutura de dados composta homogênea do tipo de dado caractere.
tamanho três 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).

LÓGICA DE PROGRAMAÇÃO 43
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

44 CURSOS TÉCNICOS SENAI


Nesse exemplo, o usuário digitará Similar aos vetores, as matrizes Onde:
um nome de cada vez, pressio- possuem o primeiro elemento de
▪▪ <tipo de dado> – tipo de dado
nando a tecla ENTER após cada cada linha, ou coluna, ou ainda
que será armazenado na matriz;
nome digitado, sendo que todos qualquer outra dimensão iniciada
eles são armazenados no vetor com índice 0 (zero). Por exemplo, ▪▪ <identificador> – nome defi-
“vetNomes”. o elemento na primeira linha da nido para matriz, respeitando as
primeira coluna de uma matriz de regras de definição de identifica-
alturas terá índice [0,0], enquanto dores;
Seção 3 o elemento na segunda linha da ▪▪ <valor inicial>.<valor final> e
Matrizes primeira coluna terá o índice [1,0]. <valor inicial>.<valor final> – são
Repare que as posições do exem- os valores inteiros de início e fim
Um vetor não deixa de ser uma plo anterior ([0,0] ou [1,0]) estão de cada dimensão definida na
matriz, porém essa matriz possui indicando dois valores inteiros matriz, tendo essa sintaxe geral
sua representação no algoritmo que correspondem à exata posi- somente duas dimensões, que são
com mais de um índice, variando ção em cada uma das dimensões separadas por vírgula (,).
a partir do valor inteiro zero em dessa matriz bidimensional (varia  
todas as suas possíveis dimensões. em duas dimensões – linha e co- Veja a seguir a representação grá-
Convencionalmente, na área de luna). fica para uma matriz que tenha ca-
programação, a variação de seu pacidade de armazenar as alturas
primeiro índice, ou primeira di- dos cinco atletas titulares de uma
Declarando uma ma- equipe de basquete e ainda as cin-
mensão da matriz, é representa-
da como dimensão de linhas nas triz co alturas de seus reservas.
quais serão armazenados os res- Você sabia que a declaração de
pectivos conteúdos da matriz, en- uma matriz é bem parecida com
quanto que a segunda dimensão, a declaração de um vetor? É ver-
ou segundo índice, corresponde- dade! Afinal, o vetor não deixa de
ria às colunas em que serão arma- ser uma matriz, mas poderá ser
zenados seus conteúdos. bidimensional, tridimensional,
Já uma terceira dimensão, tam- entre outras possíveis variações
bém chamada de matriz tridimen- de dimensões (multidimensional), Figura 9: Representação gráfica para
matriz
sional, seria representada como possuindo uma definição inteira
páginas de um livro, enquanto ou- para cada uma dessas dimensões
tras dimensões teriam maiores di- que terão seu tamanho máximo A representação que você acabou
ficuldades de uma representação definido no momento da declara- de ver pode ser definida em lin-
didática adequada que facilitaria ção no algoritmo. guagem algorítmica, no bloco de
sua compreensão. Apesar dessa declarações do algoritmo, respei-
dificuldade de representação, uma tando a forma genérica apresenta-
matriz possui o limite das dimen- algoritmo “MATRIZ” da anteriormente para declaração
sões coerentes com a quantidade var de uma matriz. Observe que essa
de memória disponível no com- <identificador> : ve- matriz tem capacidade de armaze-
putador que a estará manipulan- tor [<valor inicial>..<valor namento de dez alturas indepen-
do. final>,<valor inicial>..<valor dentes, ao invés de somente cinco,
final>] de <tipo de dado> como foi abordado no primeiro
inicio exemplo no estudo de vetores.
fimalgoritmo
Caso tenha dúvidas, retorne ao
conteúdo sobre vetores para re-
lembrar. Veja mais uma situação!

LÓGICA DE PROGRAMAÇÃO 45
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ó-
ria por estarem definidos para o armazenamento em uma estrutura de
dados – matriz ou vetor).
Acompanhe o exemplo seguinte que permite a manipulação dessa ma-
triz bidimensional denominada “varAlturas”. 

algoritmo “ALTURAS”
var
varLinha, varColuna, varContador : inteiro
varSoma : real
vetAlturas : vetor [0..1,0..4] de real
inicio
varContador ← 1
varSoma ← 0

escreval(“Cadastro das Alturas dos Atletas Titulares”)

para varLinha de 0 ate 1 faca


para varColuna de 0 ate 4 faca
escreva(“Digite a altura do ”, varContador , “ atleta: ”)
leia(vetAlturas[varLinha,varColuna])

varContador ← varContador + 1
varSoma ← varSoma + vetAlturas[varLinha,varColuna]
fimpara

se varLinha = 0 entao
escreval(“Cadastro das Alturas dos Atletas Reservas”)
fimse
fimpara

46 CURSOS TÉCNICOS SENAI


// Percorre a matriz novamente para apresentar as alturas cadastradas

para varLinha de 0 ate 1 faca


para varColuna de 0 ate 4 faca
escreval(“Altura [“, varLinha, “,”, varColuna,”]=”,
vetAlturas[varLinha,varColuna])
fimpara
fimpara

escreval(“Média da Altura destes Atletas = ” , (varSoma / (varCon-


tador - 1)))
fimalgoritmo

Perceba que, no exemplo anterior, na primeira linha (zero), serão guar-


dadas as alturas dos atletas titulares, enquanto que na segunda linha (um)
serão as dos reservas. Apesar de existir um único identificador, é possível
armazenar dez valores, como também poderia ser feito por um vetor
de dez posições ([0..9]). Porém, a organização no armazenamento das
alturas dos titulares e reservas não poderia ser feita de maneira lógica
adequada e eficiente para manipulação dos endereços de memória do
computador que estiver executando esse algoritmo.
Note que tanto a quantidade de linhas como a de colunas estão iniciando
de zero e chegando até o valor final definido na declaração da matriz,
onde a multiplicação da quantidade de elementos em cada dimensão
pode ser somada para identificar a capacidade máxima de armazena-
mento da matriz.

▪▪ Linhas [0..1] – Dimensão com duas linhas


▪▪ Colunas [0..4] – Dimensão com cinco colunas

A quantidade de duas linhas sendo multiplicada por cinco colunas resul-


tará em dez posições, independentes de memória para essa estrutura de
dados composta homogênea (matriz de alturas), com duas dimensões
(bidimensional).
O mesmo cálculo e manipulação são realizados para estruturas de dados
de caracteres (string), o que pode organizar melhor o armazenamento de
vários nomes de pessoas diferentes, frase e outros dados que correspon-
dam a um conjunto de caracteres.
Puxa, quantas informações importantes nesta unidade! Você conheceu
as estruturas homogêneas, vetores e matrizes. Foi um aprendizado e tan-
to, não é mesmo? E as estruturas heterogêneas? Esse será o assunto da
próxima unidade. Então, sinta-se convidado a aprender ainda mais. Até
lá!

LÓGICA DE PROGRAMAÇÃO 47
Unidade de
estudo 6
Seções de estudo

Seção 1 – Introdução
Seção 2 – Registros
Estruturas Heterogêneas

Seção 1 Seção 2
Introdução Registros
Agora você já sabe que um con- Os registros são agrupamentos de dados, possivelmente heterogêneos
junto homogêneo de dados, tal (real, inteiro, lógico, caractere), que visam a oferecer meios mais simples
como uma alcateia, é composto de manipular informações relacionadas que o projetista do algoritmo
de variáveis do mesmo tipo (lo- quer manter unidas. Por exemplo, pense em um algoritmo que imple-
bos), certo? Mas veja bem! Se mente operações sobre número de empregados, valor do salário, depar-
você tivesse um conjunto em que tamento dos projetos, lucros obtidos de uma empresa. A manipulação
os elementos não são do mesmo de tais dados se torna trivial com a utilização dos registros. E sabe por
tipo, teria um conjunto hetero- quê? Pois por meio de um rótulo (identificador do conjunto de dados) é
gêneo de dados. Vamos entender possível acessar os dados membros do conjunto.
melhor!
Poderíamos ter um conjunto de
animais quadrúpedes, formado Um registro é composto por campos que são partes que especificam
por cães (matilha), camelos (cáfi- cada uma das informações que o compõe. Uma variável do tipo regis-
la), búfalos (manada) etc. tro é uma variável composta, pois engloba um conjunto de dados, e
é heterogênea, pois cada campo pode ser de um tipo primitivo dife-
Sendo assim, uma das principais rente.
estruturas de dados é o registro.
Imagine uma identificação de
passageiro, aquele formulário de
informações que o passageiro A figura que você verá a seguir ilustra graficamente um exemplo de uma
entrega ao motorista antes de em- hipotética identificação de embarque (registro) em um ônibus, com di-
barcar no ônibus, junto com sua versas informações (campos) solicitadas pela companhia de transporte
passagem. Ela é formada por um para o controle dos passageiros embarcados.
conjunto de informações logica-
mente relacionadas, porém, de ti-
pos diferentes, tais como número
de passagem (inteiro), origem e
destino (caracteres), data (carac-
teres), horário (caracteres), pol-
trona (inteiro), idade (inteiro) e
nome do passageiro (caracteres),
que são subdivisões do registro
(elementos do conjunto), também Figura 7: Passagem de ônibus
chamadas de campos.
Quer saber mais sobre os regis-
tros? Vamos para a próxima se-
ção!

LÓGICA DE PROGRAMAÇÃO 49
Todas as operações concernentes A criação dessas fichas cadastrais conterá dados com tipos diferentes e,
aos algoritmos podem ser realiza- por isso, não será possível usar uma variável composta homogênea para
das com as estruturas, atribuições, guardar todos. Apesar disso, todos esses dados são relacionados, pois
operações lógicas e/ou aritmé- pertencem a uma mesma pessoa. Ou seja, cada ficha possuirá diferen-
ticas e declarações de vetores de tes dados (nome, endereço e CPF), mas todos eles são de um mesmo
estruturas. cliente, sendo que todos esses dados são relacionados logicamente a esse
Além dos vetores e matrizes, os cliente.
registros permitem a confecção Cada um dos dados que formam essa ficha é chamado de componente
de algoritmos mais sofisticados, ou elemento do registro, sendo que cada ficha completa é identificada
tendo em vista que fornecem uma como um código de registro. Portanto, nesse exemplo, só será possível
maneira mais cômoda de traba- conseguir um crediário após a efetivação do registro do cliente, sendo
lhar com os dados e facilitam a esse registro formado pelos componentes nome, endereço e número do
vida do projetista do algoritmo CPF. Vamos ver um exemplo? Acompanhe!
em relação ao planejamento de
como simular os dados do mundo
real para os conceitos abstratos
inerentes aos algoritmos.
Agora vamos imaginar o seguinte
problema: uma empresa vai for-
necer o crediário para um cliente
efetuar o pagamento em várias
parcelas. Mas, para isso, será ne-
cessário efetivar um cadastro dos
dados mais relevantes para a lo- Figura 8: Registro de crediário
calização do cliente, caso algum
problema venha a ocorrer com os Essa empresa também não fará o crediário somente para um cliente,
pagamentos. mas para os vários clientes que possuírem um perfil interessante para o
Você sabe quais seriam as infor- negócio. Assim, será necessário criar uma estrutura de dados que possa
mações? armazenar vários dados (composta) de tipos diferentes (heterogênea).
As informações são estas: Essas estruturas (compostas heterogêneas) também são chamadas de
registros e permitem uma organização eficiente no armazenamento e
▪▪ nome; manipulação dos dados que estão implicitamente relacionados.
▪▪ endereço; E que tal, agora, conhecer as características dos registros? Elas serão
▪▪ número do CPF. muito importantes. Observe!
▪▪ Podem conter vários registros com valores (número definido).
▪▪ Os valores não precisam ser do mesmo tipo de dado.
▪▪ Um registro possui um único nome (identificador).
▪▪ Cada registro é acessível independentemente, sendo seus elementos
também independentes, de acordo com o seu nome significativo.
 

50 CURSOS TÉCNICOS SENAI


Veja mais um exemplo.

Figura 9: Registro de crediário

No exemplo anterior, você pôde observar dois registros cadastrados. A


primeira ficha contém os dados do João Carlos da Silva, enquanto que a
segunda possui os dados da Maria Rita Amaral.
Os componentes desse registro são identificados por meio dos seus no-
mes, atribuídos após a especificação do registro com o uso do operador
ponto (.).

Declaração geral de registro


Para que você entenda o que é uma estrutura básica para declaração de
um registro, acompanhe a seguir.

algoritmo “REGISTRO”
var
registro = <identificador>
<componente> <tipo básico>;
<componente> <tipo básico>;
fimregistro
inicio
fimalgoritmo

Onde:
▪▪ <identificador> é o nome do registro (segue as regras de nomenclatu-
ra);
▪▪ <componente> é o nome do componente que forma esse registro;
▪▪ <tipo básico> é o tipo de dado que será armazenado em cada compo-
nente.

LÓGICA DE PROGRAMAÇÃO 51
Ficou mais claro agora? Então vamos criar um registro para armazenar
os três componentes diferentes (SEXO, CPF, PESO). Veja!

algoritmo “REGISTRO”
var
registro = regPessoa
CPF inteiro;
Sexo caracter;
Peso real;
fimregistro
inicio
escreva (“Informe o seu CPF: ”)
leia (regPessoa.CPF)

escreva (“Digite F para sexo feminino e M para masculino”)


leia (regPessoa.Sexo)

escreva (“Digite seu peso: ”)


leia (regPessoa.Peso)
fimalgoritmo

Suponha que esse cadastro seja feito por uma empresa de publicida-
de, que está procurando alguns novos modelos. Ela não irá cadastrar
somente um candidato à vaga de modelo mas todos os interessados,
que poderão ser vários. Portanto, será criado um vetor para esse tipo
de estrutura heterogênea. Observe o exemplo a seguir, que cria a pos-
sibilidade de 1.000 registros serem armazenados na estrutura composta
homogênea (vetor).

52 CURSOS TÉCNICOS SENAI


algoritmo “REGISTRO”
var
varContador : inteiro
registro = regPessoa
CPF inteiro;
Sexo caracter;
Peso real;
fimregistro
inicio
para varAuxiliar de 0 ate 999 faca

escreva (“Informe o seu CPF: ”)


leia (regPessoa[varAuxiliar].CPF)

escreva (“Digite F para sexo feminino e M para masculino”)


leia (regPessoa[varAuxiliar].Sexo)

escreva (“Digite seu peso: ”)


leia (regPessoa[varAuxiliar].Peso)

fimpara
fimalgoritmo

Esse algoritmo permite o cadastramento de 1.000 fichas com os compo-


nentes CPF, SEXO e PESO, sendo cada um para uma pessoa diferente.
Essa estrutura armazenará no algoritmo todos os 1.000 registros, deno-
minados FICHA, sendo ela homogênea, pois cada um desses elementos
do vetor é do mesmo tipo de dado criado no bloco de declarações. O
registro criado imediatamente antes dos dados acima é do tipo PESSOA.
Muito bem! Aqui terminamos mais uma unidade de estudos, onde você
aprendeu o que são registros e como deve ser feita uma declaração geral
de registro. Está preparado para mais uma etapa? Na unidade seguinte
você estudará as funções. Lembre-se de que, para apropriar-se de novos
conhecimentos, é indispensável motivação e interesse. Siga os passos
rumo ao conhecimento!

LÓGICA DE PROGRAMAÇÃO 53
Unidade de
estudo 7
Seções de estudo

Seção 1 – Introdução
Seção 2 – Utilização de subprogramas
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
Funções

Seção 1
Introdução
A complexidade dos algoritmos E você sabia que a ideia de reu- ▪▪ modularização de sistemas,
está intimamente ligada à da tilização de software tem sido ado- que facilita a manutenção de sof-
aplicação a que se destinam. Em tada há muito tempo por muitos twares e a reutilização de subalgo-
geral, problemas complicados desenvolvedores de sistemas de ritmos já implementados.
exigem algoritmos extensos para computador? É verdade! Isso se
sua solução. Lembre-se também deve à economia de tempo e tra- Após essa introdução sobre o
de que sempre é possível dividir balho que proporcionam. tema da unidade, vamos à próxi-
um problema grande em proble- Seu princípio é o seguinte: um ma seção, onde o foco de estudos
mas menores e de solução mais conjunto de algoritmos destinado será a utilização de subprogramas.
simples. a solucionar uma série de tarefas Até lá!
Assim, pode-se solucionar cada bastante corriqueiras é desenvol-
um desses problemas mais sim- vido e vai sendo aumentado com
ples e combinar essas soluções de o passar do tempo, com o acrés- Seção 2
forma que o problema maior seja cimo de novos algoritmos. A esse Utilização de subprogra-
resolvido. E você sabe como? Po- conjunto se dá o nome de biblio-
demos codificar a solução desses teca. mas
problemas simples utilizando os No desenvolvimento de novos
chamados subalgoritmos ou sub- Na escrita de um programa de
sistemas, procura-se ao máximo
-rotinas. computador, muitas vezes surge
basear a concepção em subalgo-
a necessidade de repetir a mesma
ritmos já existentes na biblioteca,
sequência de instruções em locais
de modo que a quantidade de sof-
Subalgoritmo é um nome diferentes do programa. Para evi-
tware realmente novo que venha a
dado a um trecho de um algo- tar essa repetição, que implica em
ser desenvolvido seja minimizada.
ritmo mais complexo e que, um aumento do número de linhas
em geral, encerra em si mes- Mas veja bem! Muitas vezes, os e um tempo de desenvolvimento
mo um pedaço da solução de subalgoritmos são utilizados para maior, muitas linguagens de pro-
um problema maior a que ele conter certas sequências de ins- gramação apresentam o conceito
está subordinado. truções que são repetidas em um de subprograma. Esse conceito,
algoritmo. Nesses casos, os su- por vezes também designado por
O subalgoritmo divide-se em balgoritmos proporcionam uma sub-rotina, permite escrever um
funções e procedimentos. É im- diminuição no tamanho dos algo- conjunto de instruções da lingua-
portante observar que existe dis- ritmos. gem identificadas por um nome
tinção entre funções (possui um Em resumo, os subalgoritmos são determinado. Assim, ao invés de
único retorno) e procedimentos importantes na: repetir as instruções sempre que
(não possui retorno algum). sejam necessárias no programa,
▪▪ subdivisão de algoritmos com-
bastaria indicar o nome do sub-
plexos, facilitando o seu entendi-
programa correspondente a essas
mento;
linhas nos locais onde a sequência
▪▪ estruturação de algoritmos, seria repetida.
facilitando principalmente a
detecção de erros e a documenta-
ção de sistemas;

LÓGICA DE PROGRAMAÇÃO 55
Os subprogramas são normal- A variável A seria de um tipo com-
Um subprograma é controla- mente classificados como funções patível com o valor de retorno do
do por um programa de nível ou como procedimentos. Em subprograma. Já o comprimento
superior que determina quan- qualquer subprograma é tam- e a largura seriam variáveis usadas
do e sob que condições o sub-
bém possível a definição de ou- como argumentos. O subprogra-
programa deve ser executado
tros subprogramas. Alguns deles ma seria definido da seguinte ma-
e que pode eventualmente
recolher um valor devolvido apresentam ainda uma caracte- neira. Observe!
por este. rística importante e que consiste
na possibilidade de se chamarem
a si próprios, ou seja, um subpro- funcao AREA (varX, varY :
grama é invocado recursivamente real) : real
Outra questão importante é que pelo mesmo subprograma. var
os subprogramas podem ser cha- varAux : real
mados a partir de várias zonas do Agora que você já sabe mais sobre
inicio
programa e sob condições dife- os subprogramas, siga para a pró- varAux ← varX * varY
rentes. O seu uso introduz tam- xima seção!
bém uma maior flexibilidade no retorne varAux
processo de desenvolvimento de fimfuncao
software, pois permite a substitui- Seção 3
ção fácil de um subprograma por Argumentos e parâme-
uma versão mais atual. tros No subprograma AREA estão
A divisão em subprogramas cor- definidos os parâmetros varX e
responde à divisão de um proble- Muitas vezes é necessário indicar varY do tipo real. Os parâmetros
ma em subproblemas mais sim- explicitamente ao subprograma declaram-se imediatamente antes
ples, o que facilita a resolução do as condições sob as quais a sua da chaveta que marca o início do
problema inicial e permite uma execução vai ser realizada. Por conjunto de instruções que cons-
abordagem top-down. A utilização essas razões, um subprograma tituem a função ou procedimento.
de subprogramas é também uma poderá aceitar argumentos que Existe uma relação direta entre os
forma de facilitar a produção de determinam essas condições. Os argumentos usados na chamada
software favorecendo o recurso a argumentos poderão ser variáveis, de um subprograma e os parâme-
módulos previamente desenvolvi- constantes ou expressões. Na des- tros definidos para esse subpro-
dos e constituídos por conjuntos crição do subprograma, devem grama. A esses parâmetros irão
de subprogramas. estar definidos os parâmetros que ser atribuídos os valores dos argu-
correspondem aos argumentos mentos. Se o subprograma fosse
que o programa do nível acima invocado como “varA = AREA
DICA determinou. Essas considerações (10,5)”, os parâmetros varX e
são válidas para subprogramas varY passariam a conter os valo-
A utilização desses módu-
los evita a reescrita de sub- definidos pelos programadores e res 10 e 5, respectivamente. Note
programas sempre que um para subprogramas predefinidos. que não precisa existir nenhuma
novo programa necessita de Vamos entender melhor! Consi- correspondência entre os nomes
atualização, diminuindo o dere, por exemplo, um subpro- das variáveis definidas como pa-
tempo de desenvolvimento grama, designado por AREA, râmetros de um subprograma e
de programas complexos e para calcular a área de um retân- os nomes de eventuais variáveis
evitando que o programador usadas como argumentos na cha-
gulo, dados os comprimentos
se preocupe com detalhes
dos lados. Esse subprograma irá mada desse subprograma. Aliás,
pouco importantes para a
compreensão do problema. devolver o valor da área do re- no exemplo anterior, o subpro-
Esses módulos são designa- tângulo. O subprograma seria grama foi invocado com valores
dos por bibliotecas. invocado recorrendo a uma ins- constantes.
trução do tipo “varA = AREA
(varComprimento,varLargura)”.

56 CURSOS TÉCNICOS SENAI


Outra possibilidade é a utilização de expressões com significado dentro As funções incluem sempre a pa-
do programa a partir do qual o subprograma é executado. Por exemplo: lavra retorne, seguida do valor a de-
“varA = AREA( varX * 2, varLargura / 10 )”. volver ou de uma expressão que
Nesse caso, a variável varX usada na expressão correspondente ao pri- defina esse valor. Nas funções é
meiro argumento tem um significado diferente do parâmetro varX usa- também necessário indicar o tipo
do na definição do subprograma, embora os nomes sejam iguais. Lem- do valor de retorno. A linha “fun-
bre-se de que é muito importante ter bem clara a distinção entre essas cao QUADRADO (varX : real) :
situações. Vamos em frente! real” indica uma função designa-
da por QUADRADO que aceita
um parâmetro varX e retorna um
Seção 4 valor real.
Funções Genericamente, a sintaxe para
definição de uma função é a que
você verá a seguir.
Na seção anterior você conheceu uma característica importante: o sub-
programa AREA possui um valor de retorno. Ou seja, devolve um valor
determinado que pode ser utilizado pelo programa que o invocou. Os
subprogramas que apresentam essa característica designam-se por fun- funcao <nome-de-função>
[(<seqüência-de-declarações-
ções. As funções podem ser definidas com ou sem parâmetros.
-de-parâmetros>)]:
<tipo-de-dado>
// Seção de Declarações In-
algoritmo “QUADRADO” ternas
inicio
funcao QUADRADO (varX : real) : real // Seção de Comandos
var fimfuncao
varAux : real
inicio
varAux <- varX * varX
retorne varAux Mas lembre-se de que a lista de
fimfuncao parâmetros e declarações respec-
tivas são opcionais.
var
varNumero, varResultado : real
varFim : logico
inicio
enquanto varFim = falso faca

leia (varNumero)

se varNumero = 0 entao
varFim = verdadeiro
senão
varResultado ← QUADRADO (varNumero)

escreva (“Quadrado de ”, varNumero, “ é ”, varResultado)


fimse

fimenquanto
fimalgoritmo

LÓGICA DE PROGRAMAÇÃO 57
Note que as funções e procedi-
Seção 5 mentos que eventualmente pos-
Procedimentos sam existir em um programa são
sempre definidos antes do proce-
Os procedimentos são subprogramas que se distinguem das funções pelo dimento especial “inicio”. Portan-
fato de não apresentarem qualquer valor de retorno. Os procedimentos, to, fique atento!
tal como as funções, podem apresentar ou não uma lista de parâmetros Genericamente, a sintaxe para de-
que definem a forma como o procedimento irá ser executado. Tal como finição de um procedimento é a
nas funções, é necessário declarar os parâmetros do procedimento, caso seguinte, veja:
existam. Por exemplo, considere-se o programa que permite o cálculo
da área de um retângulo, escrevendo o valor calculado. Nesse programa
foram definidos dois subprogramas: a função AREA, que permite o procedimento <nome-de-
cálculo da área do retângulo, e o procedimento ESCREVE_AREA, que -procedimento> [(<seqüên-
apresenta o resultado calculado. O programa termina se for introduzido cia-de-declarações-de-parâ-
um valor negativo para o comprimento de um lado do retângulo. metros>)]
// Seção de Declarações In-
ternas
algoritmo “AREA” inicio
// Seção de Comandos
funcao AREA (varX, varY : real) : real fimprocedimento
var
varAux : real
inicio
varAux ß varX * varY Tal como no caso das funções, a
lista de parâmetros e declarações
retorne varAux respectivas são opcionais.
fimfuncao

procedimento ESCREVE_AREA (varX : real) Seção 6


inicio
escreva (“O valor da área é ”, varX) Âmbito de variáveis
fimfuncao
As variáveis que representam o
var comprimento dos lados de um
varX, varY, varA : real retângulo no programa exempli-
varFim : logico ficado têm o mesmo nome no
inicio programa principal e na função
repita AREA.
leia (varX) E você sabe o que aconteceria se a
leia (varY) função AREA alterasse os valores
dessas variáveis? Os novos valo-
se varX < 0 ou varY < 0 entao res seriam reconhecidos no pro-
varFim = verdadeiro grama principal, ou esse consi-
senão deraria apenas os valores iniciais?
varA ← AREA (varX, varY) Ah, essas são boas perguntas!
ESCREVE_AREA(varA) Na realidade, em ambos os casos,
fimse as variáveis são locais, ou seja,
são variáveis que são reconheci-
ate varFim = falso das apenas nas funções onde se
fimalgoritmo encontram declaradas. Assume-
-se que o computador cria novas
variáveis em cada um dos casos e
as armazena em locais diferentes,
embora os nomes sejam iguais.

58 CURSOS TÉCNICOS SENAI


Dessa forma, evitam-se conflitos As variáveis globais são declara-
entre os valores armazenados nas das fora de qualquer função ou algoritmo “SOMA”
duas situações. Quando termina procedimento, incluindo o proce-
uma função ou procedimento, as dimento especial “inicio”. procedimento SOMA_UM
(varX)
suas variáveis locais são destru- Ficou claro até aqui? Então siga inicio
ídas e o espaço de memória res- para a seção seguinte! varX ← varX + 1
pectivo é libertado, podendo ser escreva (varX)
usado pelo programa para outros fimprocedimento
fins. Seção 7
var
Argumentos de subpro- varX : real
Uma variável local só é reco- gramas inicio
nhecida no subprograma em varX ← 3
que se encontra declarada,
Um subprograma definido de
não podendo ser invocada SOMA_UM (varX)
por outros subprogramas. O
forma a aceitar parâmetros, cria
uso de variáveis locais dimi- cópias das variáveis passadas escreva (varX)
nui o espaço na memória do como argumentos pelo programa fimalgoritmo
computador requerido por que invocou o subprograma em
um programa, uma vez que questão. Mas o que isso represen-
apenas possuem uma área de ta? Significa que os parâmetros
memória reservada durante definidos para um subprogra- Conforme o exemplo anterior, o
a execução do bloco do pro- ma vão funcionar como variá- procedimento SOMA_UM não
grama no qual se encontram veis locais desse subprograma. É alterou o valor da variável varX
definidas. que continuou a ter o valor 3 após
por esse motivo que não existe
qualquer conflito em invocar um a chamada do procedimento. O
Existem, no entanto, muitas situ- subprograma cujos argumentos valor 4 corresponde ao valor da
ações em que é importante que são variáveis com nomes iguais variável varX no procedimento
uma determinada variável seja aos parâmetros definidos para o SOMA_UM.
reconhecida em qualquer ponto subprograma. Internamente, o Mas fique atento! Esse mecanis-
do programa. Isso significa que, computador irá reservar áreas de mo de cópia dos argumentos para
independentemente da função ou memória diferentes para os seus variáveis locais no subprograma
procedimento que utilizar a vari- parâmetros. Acompanhe o se- não é desejável em todas as situ-
ável, esta estará sempre associada guinte procedimento. ações. Existem muitos casos em
à mesma posição de memória, que se pretende que as alterações
não sendo destruída depois de ser exercidas sobre as variáveis cor-
utilizada por um subprograma. A procedimento SOMA_UM respondentes aos parâmetros do
variável existirá, permanecendo (varX) subprograma sejam reconhecidas
inicio no programa ou subprograma de
reservado o espaço de memória
varX ← varX + 1 nível superior.
respectivo, até que o programa
escreva (varX)
termine a sua execução. fimprocedimento Um exemplo típico consiste na
Assim, é possível considerar a definição de um subprograma
existência de variáveis com ca- que permita proceder à troca dos
racterísticas distintas: as variáveis valores de duas variáveis. Veja a
Como você pode perceber, esse seguir um procedimento capaz de
locais ou automáticas, que apenas
procedimento limita-se apenas a executar essa tarefa.
têm existência dentro do subpro-
aceitar um valor inteiro, somar o
grama em que se encontram de-
valor 1 ao valor recebido e escre-
claradas, e as variáveis globais ou
ver o resultado. Se esse procedi-
estáticas, que existem enquanto
mento for chamado em conjunto
o programa não terminar, sendo
com as instruções que você verá a
reconhecidas por qualquer sub-
seguir, o resultado obtido seria 4 e
programa.
sucessivamente 3.

LÓGICA DE PROGRAMAÇÃO 59
E sabe qual o resultado para essa
procedimento TROCA (varA, varB) operação? O resultado obtido se-
var ria “X = 5, Y = 6, ou seja, não
varC : inteiro houve qualquer troca dos valores
inicio
das variáveis. Para que você enten-
varC ← varA
da melhor, a explicação é simples.
varA ← varB
varB ← varC Ao ser invocado, o procedimento
fimprocedimento TROCA criou cópias dos argu-
mentos que recebeu, trocou esses
valores entre si e, ao terminar, li-
bertou o espaço reservado para os
Com esse procedimento, pretende-se atribuir à variável varA ao con- parâmetros que continham o va-
teúdo da variável varB e a esta, o conteúdo de varA recorrendo a uma lor dos argumentos. Isso significa
variável auxiliar varC. Caso esse procedimento fosse utilizado, seria feito que o procedimento funcionou,
da seguinte maneira. Saiba mais! mas apenas em relação às cópias
dos argumentos que recebeu.
Para resolver o problema, ao in-
algoritmo “TROCA” vés de passar como argumentos
os valores das variáveis, deve-se
procedimento TROCA (varA, varB)
indicar ao procedimento TROCA
var
varC : inteiro
as posições de memória (endere-
inicio ços) ocupadas por essas variáveis.
varC ← varA Na prática, isso significa que os
varA ← varB parâmetros do procedimento são
varB ← varC substituídos pelos argumentos
fimprocedimento que são passados, fazendo com
que as alterações efetuadas den-
var tro do procedimento sejam reco-
varX, varY : real nhecidas no programa que o in-
inicio
vocou. Nesse caso, diz-se que os
varX ← 5
varY ← 6
argumentos foram passados por
referência. A situação inicial cor-
TROCA (varX, varY) responde a passar os argumentos
por valor.
escreva (“X = ”, varX, “, Y = ”, varY) Mas como será possível distinguir
fimalgoritmo essas duas situações? Para isso, é
feita a colocação do caractere var
antes do nome do argumento que
é passado por referência na ins-
trução correspondente à chamada
do procedimento. A palavra var
permite aceder ao endereço da
variável e não ao seu conteúdo.
A troca correta de valores das
duas variáveis precisa ser efetuada
indicando o endereço dos argu-
mentos do procedimento TRO-
CA. Confira!

60 CURSOS TÉCNICOS SENAI


Um erro frequente consiste na
algoritmo “TROCA” utilização de uma variável global
como se fosse uma variável local.
procedimento TROCA (var varA, var varB) Embora normalmente o compu-
var
tador não acuse qualquer erro,
varC : inteiro
gera-se uma situação que, em ge-
inicio
varC ← varA ral, leva a um mau funcionamento
varA ← varB do programa. Essas situações são
varB ← varC normalmente difíceis de detectar.
fimprocedimento Por isso, fique atento!
Os erros que ocorrem pela troca
var na forma de passagem de argu-
varX, varY : real
mentos também podem ser difí-
inicio
varX ← 5
ceis de detectar e têm como con-
varY ← 6 sequências a alteração de valores
de variáveis que se pretendiam
TROCA (varX, varY) inalteráveis (troca da passagem
por valor pela passagem por re-
escreva (“X = ”, varX, “, Y = ”, varY) ferência) ou a não alteração de
fimalgoritmo conteúdos de variáveis que se
pretendiam modificar (troca da
passagem por referência pela pas-
O resultado obtido seria “X = 6, Y = 5”, ou seja, houve troca dos valo- sagem por valor).
res das variáveis. Puxa, foram muitos termos técni-
Nesse caso, as alterações efetuadas no procedimento foram reconheci- cos, não é mesmo? E agora você
das no programa que o invocou. Em relação a essa questão, é importante já está mais familiarizado para
destacar que esses problemas podem ser resolvidos de outra maneira. aplicar os conhecimentos sobre
Para tal, basta que as variáveis envolvidas sejam definidas como variáveis lógica de programação. Mas não
globais, sendo reconhecidas em todo o programa. Assim, não seria ne- pare por aqui. Busque novas in-
cessário fazer a passagem de argumentos por referência. Aliás, não seria formações para aprimorar ainda
necessário passar essas variáveis como argumentos aos subprogramas mais o seu trabalho!
que atuassem sobre elas, pois todos os subprogramas são capazes de
reconhecer variáveis globais.
Mas esse processo não é muito aconselhável. Sabe por quê? Porque ele
limita as potencialidades de utilização dos subprogramas, que passam a
ter um caractere muito restrito.
As linguagens de programação apresentam formas diversas de efetuar a
distinção entre a passagem de argumentos por valor ou por referência.

Seção 8
Erros mais comuns
A correta compreensão do âmbito de uma variável envolvida em um
programa e a análise das situações que permitem a escolha da forma de
passagem de parâmetros são fundamentais na elaboração de programas
de computador. Esses aspectos tornam-se mais críticos à medida que a
complexidade dos programas aumenta. Os programas complexos po-
dem envolver um número elevado de variáveis e a utilização de diversos
subprogramas, implicando maiores cuidados na definição do âmbito das
diversas variáveis e nas formas de passagem de argumentos.

LÓGICA DE PROGRAMAÇÃO 61
Finalizando
Parabéns, querido aluno!
Como você viu nesta unidade curricular, a lógica de programação nada mais é do que a organiza-
ção coerente das instruções do programa para que seu objetivo seja alcançado. Para criar essa
organização, instruções simples do programa – como mudar o valor de uma variável ou desenhar
uma imagem na tela do computador –, são interconectadas a estruturas lógicas que guiam o fluxo
da execução do programa. Isso é muito próximo ao que usamos em nosso cotidiano para realizar
atividades simples, não é mesmo?
Além das atividades que realizamos no dia a dia, há sempre o chamado raciocínio lógico, que
define os passos para que nossa atividade seja completada com sucesso. Quando esse raciocínio
falha, ou seja, não é suficientemente preciso, há grandes chances de não alcançarmos nosso ob-
jetivo. A mesma coisa acontece com os programas de computador.
Esta unidade curricular teve como principal objetivo fazer com que você entendesse os conceitos
fundamentais de lógica de programação independentemente da linguagem e introduzi-lo em uma
metodologia de desenvolvimento de programas.
E saiba que conhecer lógica de programação é mais importante que conhecer uma linguagem
de programação. Sem saber como se planeja um programa, dificilmente poderá ser implantada,
tanto na linguagem de programação mais antiga como nas mais modernas.
Portanto, lembre-se de que um aprendizado efetivo depende do seu empenho e dedicação. Esses
conhecimentos serão úteis em várias ocasiões de sua vida.
Boa sorte e muito sucesso!

LÓGICA DE PROGRAMAÇÃO 63
Referências
▪▪ ASCENCIO, Ana Fernanda Gomes; CAMPOS, Edilene Aparecida Veneruchi de. Funda-
mentos da programação de computadores. 2. ed. São Paulo, SP: Pearson Prentice Hall,
2007.

▪▪ BOENTE, Alfredo. Aprendendo a programar em Pascal: técnicas de programação. Rio


de Janeiro, RJ: Brasport, 2003.

▪▪ FORBELLONE, André Luiz Villar. Lógica de programação – A construção de algorit-


mos e estruturas de dados. São Paulo, SP: Makron, 1993.

▪▪ FORBELLONE, André Luiz Villar; EBERSPÄCHER, Henri Frederico. Lógica de pro-


gramação – a construção de algoritmos e estrutura de dados. 3. ed. São Paulo, SP: Makron,
2000.

▪▪ FORBELLONE, André Luiz Villar; EBERSPÄCHER, Henri Frederico. Lógica de pro-


gramação – a construção de algoritmos e estruturas de dados. São Paulo, SP: Pearson
Prentice Hall, 2005.

▪▪ LOPES, Anita; GARCIA, Guto. Introdução à programação – 500 algoritmos resolvidos.


Rio de Janeiro, RJ: Elsevier, 2002.

▪▪ MORAES, Paulo Sérgio de. Curso básico de lógica de programação. São Paulo, SP:
Unicamp, 2000.

▪▪ OLIVEIRA, Álvaro Borges de. Introdução à programação – algoritmos. Florianópolis:


Bookstore, 1999.

LÓGICA DE PROGRAMAÇÃO 65
Equipe de Desenvolvimento de Recursos Didáticos

Coordenação de Educação a Distância


Beth Schirmer

Coordenação Projetos EaD


Maristela de Lourdes Alves

Coordenação de Desenvolvimento de Recursos


Didáticos
Gisele Umbelino

Projeto Educacional
Angela Maria Mendes
Israel Braglia

Projeto Gráfico
Daniela de Oliveira Costa
Jordana Paula Schulka
Juliana Vieira de Lima

Design Educacional
Daiana Silva

Capa, Ilustrações, Tratamento de Imagens


D’imitre Camargo Martins
Diego Fernandes
Luiz Eduardo Meneghel

Diagramação
Daniela de Oliveira Costa
Flavia Akemi Ito

Revisão e Fechamento de Arquivos


Juliana Vieira de Lima

Revisão Ortográfica e Normatização


FabriCO

LÓGICA DE PROGRAMAÇÃO 67

Você também pode gostar