Buscar

logica e organizacao de comput Unid 3

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 55 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 55 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 55 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

135
UNIDADE 3
LÓGICA DE PROGRAMAÇÃO
OBJETIVOS DE APRENDIZAGEM
PLANO DE ESTUDOS
A partir desta unidade você será capaz de:
• compreender os fundamentos de lógica de programação;
• entender as estruturas de controle;
• conhecer os tipos estruturados;
•	 compreender	subalgoritmos	e	escopo	de	identificadores.
Esta	unidade	está	dividida	em	cinco	tópicos,	sendo	que	no	final	de	cada	um	
deles você encontrará atividades que contribuirão para a apropriação dos 
conteúdos.
TÓPICO 1 – FUNDAMENTOS DE LÓGICA DE PROGRAMAÇÃO
TÓPICO 2 – CONSTANTES E VARIÁVEIS
TÓPICO 3 – ESTRUTURAS DE CONTROLE
TÓPICO 4 – TIPOS ESTRUTURADOS
TÓPICO 5 – SUBALGORITMOS E ESCOPO DE IDENTIFICADORES
136
137
TÓPICO 1
FUNDAMENTOS DE LÓGICA DE PROGRAMAÇÃO
UNIDADE 3
1 INTRODUÇÃO
O dia a dia de pessoas e instituições tem sido facilitado pelo uso de softwares 
das	mais	variadas	naturezas.	Seu	uso	crescente	requer	que	mais	e	melhores	softwares 
sejam	desenvolvidos	para	atender	diversas	áreas	de	aplicação.
O desenvolvimento de software, porém, ainda é uma tarefa árdua e requer 
profissionais	altamente	qualificados	para	sua	execução.	A	maturidade	 lógica	do	
profissional	de	programação	é	um	elemento	essencial	para	o	sucesso	do	software 
que	será	construído	por	ele.	
Estes	 profissionais	 devem	 ter	 em	 mente	 que	 grande	 parte	 do	 sucesso	
de um software	 depende	de	uma	definição	 clara	das	 regras	de	negócio	 a	 serem	
implementadas	nele.	
Deve-se desenvolver estas regras de negócio visando alto desempenho e 
eficiência	nos	resultados	obtidos.
Embora seja altamente sistemático, o desenvolvimento de software não 
deve	 ser	 encarado	 como	 uma	 atividade	 puramente	 técnica.	 O	 profissional	 de	
desenvolvimento deve levar em consideração o fato de que geralmente softwares são 
criados	para	o	atendimento	de	necessidades	de	pessoas.	Quem	pontua	a	qualidade	
do software	são	as	pessoas	que	os	utilizam.	
Tão	importante	quanto	o	bom	desempenho	e	eficiência	é	o	atendimento	das	
necessidades	dos	usuários.	Neste	sentido,	os	fatores	ergonômicos	são	relevantes	e	
também	devem	ser	considerados.
UNIDADE 3 | LÓGICA DE PROGRAMAÇÃO
138
2 FUNDAMENTOS DE LÓGICA DE PROGRAMAÇÃO
Para tornar esta unidade mais clara e produtiva, neste tópico são descritos 
alguns	conceitos	que	auxiliarão	no	aprendizado	e	entendimento	do	conteúdo	dos	
demais	tópicos.	Vejamos:
•	 Programa:	 é	 uma	 unidade	 de	 software	 destinada	 à	 execução	 de	 determinada	
tarefa.	Geralmente	atribui-se	esta	denominação	a	uma	unidade	de	software que 
tenha	um	conjunto	reduzido	de	funcionalidades.
•	 Sistema:	para	fins	computacionais,	sistema	pode	ser	definido	como	um	conjunto	
inter-relacionado	 de	 programas.	 Um	 sistema	 geralmente	 permite	 a	 execução	
de	um	número	maior	de	 funcionalidades.	Estas	 funcionalidades	podem	estar	
organizadas	em	programas	diferentes.	Um	exemplo	é	o	sistema	operacional.	Ele	
possui	uma	série	de	pequenos	programas	que	auxiliam	no	seu	funcionamento	e	
na	execução	das	tarefas.
•	 Rotina:	é	uma	pequena	unidade	dentro	de	um	programa	que	geralmente	executa	
uma	 tarefa	 bastante	 específica.	Um	 exemplo	 pode	 ser	 a	 rotina	 de	 cálculo	 de	
média.	Este	trecho	de	programa	é	denominado	rotina,	pois	executa	uma	tarefa	
específica	e	que	sempre	ocorre	e	é	tratada	da	mesma	maneira.	Nas	linguagens	
de programação as rotinas geralmente são implementadas na forma de funções 
ou	procedimentos.
•	 Sub-rotina:	é	um	trecho	bastante	particular	do	software	que	geralmente	auxilia	
uma	rotina.	Pode-se	dizer	que	uma	sub-rotina	é	o	refinamento	de	uma	rotina.	
Nas linguagens de programação, tanto as rotinas quanto as sub-rotinas podem 
ser encontradas na forma de funções (function) ou procedimentos (procedure).
•	 Comando:		é	uma	palavra	ou	símbolo	que	indica	uma	ordem	para	execução	de	
uma	ação.	Os	comandos	são	 imperativos.	Por	exemplo:	 leia,	escreva,	escolha,	
entre	outros.
•	 Instrução:	 é	 uma	 das	 tarefas	 que	 devem	 ser	 executadas	 para	 a	 obtenção	 do	
resultado desejado através do software.	 Esta	 tarefa	pode	 ser	um	cálculo,	uma	
atribuição,	uma	chamada	de	sub-rotina,	entre	outras.
•	 Linguagem	 de	 Programação:	 são	 softwares destinados ao desenvolvimento 
de novos softwares.	 É	 através	delas	 que	 são	 escritos	 códigos	de	programação	
entendidos	e	executados	pelos	computadores.
•	 Sintaxe:	é	a	forma	de	organização	das	instruções	para	que	seja	obtido	o	resultado	
desejado,	seguindo-se	as	regras	da	linguagem	utilizada.	É	o	conjunto	de	regras	
que	indicam	o	formato	de	escrita	das	instruções.	Considera	também	a	sequência	
em que as instruções devem ser escritas para atender aos requisitos da linguagem 
utilizada, pois não basta apenas a escrita estar correta, é necessário que haja 
coerência	na	instrução.
TÓPICO 1 | FUNDAMENTOS DE LÓGICA DE PROGRAMAÇÃO
139
•	 Semântica:	 refere-se	 ao	 significado	 das	 instruções,	 ou	 o	 que	 um	 conjunto	 de	
instruções	 quer	 informar.	Na	 semântica,	 um	 conjunto	de	 instruções	deve	 ser	
escrito	de	forma	que	elas	possam	ser	correta	e	coerentemente	executadas.
•	 Teste	 de	Mesa:	 é	 uma	 técnica	 de	 validação	 de	 algoritmos	 que	 visa	 testar	 os	
resultados	obtidos	em	relação	ao	objetivo	para	o	qual	o	algoritmo	foi	construído.	
O	teste	de	mesa	consiste	na	definição	de	um	conjunto	de	dados	de	entrada	e	
resultados	 esperados,	 após	 o	 processamento	 destes	 dados.	 Submissão	 destes	
dados	às	instruções	do	algoritmo	e	a	obtenção	do	resultado	deste	processamento.	
Caso o resultado do teste de mesa seja o mesmo que o resultado esperado, 
há	 grande	 possibilidade	 de	 o	 algoritmo	 estar	 correto.	 Num	 teste	 de	mesa	 é	
fundamental	validar	todas	as	situações	previstas	no	algoritmo.
•	 Comentário:	 é	 uma	 informação	 agregada	 ao	 algoritmo	 que	 informa	 ao	
programador algo importante e que deve ser considerado no momento de 
interpretar	 ou	 alterar	 o	 algoritmo.	 É	 aconselhável	 que	 junto	 à	 declaração	 de	
variáveis e procedimentos sejam acrescentados comentários descrevendo seus 
significados	e	finalidades.	Regras	de	negócios	também	podem	ser	descritas	em	
comentários,	 facilitando	 futuras	manutenções.	Nos	 algoritmos	desenvolvidos	
neste	livro	serão	utilizadas	chaves	{	}	para	delimitar	o	início	e	fim	de	comentários.
•	 Endentação:	é	o	alinhamento	das	instruções	de	forma	a	simplificar	a	identificação	
da	subordinação	dos	blocos	de	instruções.	A	endentação	também	é	chamada	de	
indentação	ou	 identação	na	área	de	programação.	É	altamente	 recomendável	
que os algoritmos, assim como os programas, sejam endentados, pois facilita o 
entendimento.	Para	a	maioria	das	linguagens	de	programação	a	endentação	não	
exerce	influência.	Nestes	casos,	quem	é	beneficiado	pela	endentação	é	a	pessoa	
que	precisa	ler	e	entender	o	código	escrito.
3 LÓGICA
Pessoas utilizam lógica em seu cotidiano sem perceber, chegam a citá-la 
sem	entender	direito	seu	significado.
Lógica é a ciência das formas do pensamento, além de estudar a correção 
do	 raciocínio,	 visto	 que	 ela	 é	 a	 forma	mais	 complexa	 do	 pensamento.	 Pode-se	
dizer ainda que a lógica visa à ordem da razão, que nossa razão pode funcionar 
desordenadamente e que ela estuda e ensina a colocar ordem no pensamento 
(ARAÚJO,	2007).
Para	entendermos	melhor	a	lógica	vejamos	o	exemplo	a	seguir:
O	número	4	é	menor	que	o	número	6.
O	número	8	é	maior	que	o	número	6.
Logo,	o	número	4	é	menor	que	os	números	6	e	8.
UNIDADE 3 | LÓGICA DE PROGRAMAÇÃO
140
Este	exemplo	mostra	lógica	ordenada,	porém,	muitas	vezes	nosso	raciocínio	
funciona	desordenadamente.
Veja se seria possível retirar uma mercadoria no correio na sequência 
descrita	abaixo:
1.	Sair	do	correio;
2.	Entrar	na	fila;
3.	Entrar	no	correio;
4.	Informar	seus	dados	ao	atendente;
5.	Procurar	a	fila;
6.	Pegar	a	mercadoria;
7.	Conferir	a	mercadoria.
Você conseguiria retirar amercadoria? Não, pois mesmo que as ações estão 
corretas,	a	sequência	não	está.	Temos	como	primeira	ação	sair	do	correio.	Como	
retiramos	a	mercadoria	estando	fora	dele?	Vamos	ver	como	ficariam	as	mesmas	
ações,	mas	na	ordem	correta.
1.	Entrar	no	correio;
2.	Procurar	a	fila;
3.	Entrar	na	fila;
4.	Informar	seus	dados	ao	atendente;
5.	Pegar	a	mercadoria;
6.	Conferir	a	mercadoria;
7.	Sair	do	correio.
4 LÓGICA DE PROGRAMAÇÃO
Quando	falamos	de	lógica	de	programação	estamos	apenas	contextualizando	
a lógica em programação de computadores, onde, como na lógica, temos uma 
sequência	de	ações	para	solucionar	um	problema.
Essa	sequência	de	ações	chama-se	algoritmos.	Algoritmo	é	um	conjunto	finito	
de	instruções	que	devem	ser	executadas	para	a	obtenção	de	um	resultado	desejado.
Por	exemplo,	ligar	um	computador	é	uma	instrução.
TÓPICO 1 | FUNDAMENTOS DE LÓGICA DE PROGRAMAÇÃO
141
No	 exemplo	 acima,	 podemos	 observar	 que,	 ao	 objeto	 computador	 no	
estado	 inicial	 desligado,	 é	 aplicado	 a	 instrução	 ligar,	 levando	 ao	 estado	 final	
computador	ligado.
Algoritmos	 podem	 ser	 representados	 de	 forma	 gráfica	 ou	 textual.	 Na	
forma	gráfica	geralmente	utiliza-se	o	fluxograma	ou	o	diagrama	estruturado.	 Já	
na	 representação	 textual	 utiliza-se	 um	 conjunto	 padronizado	 de	 palavras	 para	
representar as instruções que podem ser facilmente entendidas e traduzidas para 
uma	linguagem	de	programação.
Num algoritmo, os elementos fundamentais são as instruções e os dados 
manipulados.
Ainda falando sobre a representação de algoritmos, podemos representá-
los	através	de	pseudocódigo,	fluxograma	ou	diagrama	de	Chapin.
Pseudocódigo são comandos escritos de forma estruturada em português, 
também	conhecido	como	portugol.
Vejamos	a	sintaxe	do	pseudocódigo:
inicio
 comando 1
 comando 2
 comando 3
fim
Fluxogramas	utilizam-se	de	 formas	geométricas	para	a	 representação	de	
comandos	e	instruções.
Vejamos	as	figuras	geométricas	e	suas	representações:
FIGURA 59 – FIGURAS UTILIZADAS NOS FLUXOGRAMAS
FONTE: Araújo (2007, p. 79)
Terminal Indica	início	e	fim	do	fluxo	do	programa
Seta de fluxo de dados
Indica	o	sentido	do	fluxo	de	
dados.	Serve	para	conectar	os	
blocos	existentes.
Entrada de dados
Indica que serão recebidas 
informações através do 
teclado.
UNIDADE 3 | LÓGICA DE PROGRAMAÇÃO
142
FIGURA 60 – CONTINUAÇÃO FIGURAS UTILIZADAS NOS FLUXOGRAMAS
FONTE: Araújo (2007, p. 80)
Processamento
Indica a realização de cálculos, 
atribuições ou qualquer 
manipulação	de	dados.	
Exibir da tela
Indica que as informações serão 
exibidas	na	tela.
Desvio Condicional
Indica	tomada	de	decisão.	Divide	
o	fluxo	do	programa	em	dois	
caminhos.
Conector Serve	para	identificar	o	limite	de	
um	laço	de	repetição.
Repetição com variável de 
controle
Usado	especificamente	para	o	
comando	de	repetição.
Repetição com teste lógico 
no início
Usado para o comando de 
repetição com teste lógico no 
início.
Repetição com teste lógico 
no final
Usado para o comando de 
repetição com teste lógico no 
final
Declaração Usado para as declarações de 
variáveis,	tipos	e	constantes.
O diagrama de Chapin criado por Ned Chapin, nasceu a partir de trabalhos 
de	 Nassi-Schneiderman	 para	 a	 substituição	 dos	 fluxogramas.	 Este	 tipo	 de	
representação	utiliza	quadrados	e	retângulos	para	descrever	as	ações.	A	vantagem	
de utilizar este tipo de estrutura é que possui um ponto de entrada e um ponto de 
saída e são compostas por estruturas básicas de controle de sequência, seleção e 
repartição	(ARAÚJO,	2007).	Veja	a	sintaxe	a	seguir:
Comando 1
Comando 2
Comando 3
143
Caro acadêmico, neste tópico você estudou que:
•	 A	sintaxe	de	um	programa	se	refere	à	escrita	correta	das	instruções	que	deverão	
ser	 executadas.	 Tipicamente	 se	 entende	 a	 sintaxe	 como	 sendo	 o	 conjunto	 de	
palavras	reservadas	de	uma	linguagem	de	programação.	Já	a	semântica	se	refere	
ao	significado	que	um	conjunto	de	instruções	irá	gerar.
• A lógica é a forma de ordenar e corrigir pensamentos ou ações voltadas para a 
solução	de	problemas.
• O algoritmo é a descrição de um conjunto de ações, que quando obedecido 
resulta	em	uma	sucessão	finita	de	passos.
•	 Podemos	 representar	 o	 algoritmo	 através	 de	 pseudocódigo,	 fluxograma	 e	
diagrama	de	Chapin.
• A estrutura de pseudocódigo representa o algoritmo com comandos escritos na 
língua	portuguesa.
•	 O	diagrama	de	Chapin	utiliza	quadrados	para	descrever	as	ações.
•	 O	fluxograma	utiliza	figuras	geométricas	para	representar	o	fluxo	dos	dados	e	
dos	comandos.
RESUMO DO TÓPICO 1
144
Agora	vamos	praticar:	
1	 Monte	um	algoritmo	com	a	sequência	correta	de	uma	pessoa	que	vai	de	táxi	
a	uma	reunião.
a) Entrar no prédio da reunião;
b)	 Sair	do	táxi;
c)	 Acenar	para	que	o	táxi	pare;
d) Perguntar o preço da corrida;
e) Informar o destino ao motorista;
f)	 Esperar	o	táxi;
g) Pagar a corrida;
h)	Entrar	no	táxi.
2	 Monte	um	algoritmo	para	a	 troca	de	uma	 lâmpada	queimada.	Para	essa	
troca	você	tem	disponível	uma	escada	e	uma	lâmpada	nova	testada.
3 Utilize a estrutura pseudocódigo para representar o algoritmo do cálculo 
matemático	 5	 +	 6,	 feito	 em	 uma	 calculadora	 comum.	 Use	 termos	 como	
“Aperte	a	tecla	xx”	nas	ações.
AUTOATIVIDADE
145
TÓPICO 2
CONSTANTES E VARIÁVEIS
UNIDADE 3
1 INTRODUÇÃO
Conforme estudos realizados no tópico anterior, vimos que o raciocínio 
lógico é a base para fazermos um algoritmo, além disso vimos suas estruturas de 
representação.
Porém, para termos um algoritmo por completo necessitamos seguir 
algumas	regras	básicas	de	programação,	como:	constantes	e	variáveis,	declaração	de	
variáveis,	comentar	algoritmos,	atribuir	valores	às	variáveis,	construir	expressões	
aritméticas,	literais,	relacionais	e	lógicas	e	os	comandos	ler	e	escrever.
2 CONSTANTES
Constantes	como	o	próprio	nome	diz,	é	tudo	que	é	fixo,	estável,	inalterável,	
imutável,	 contínuo,	 incessante,	 invariável,	 de	 valor	 fixo	 e	 que	 é	 aplicado	 em	
diversos	pontos	de	vista.	Assim,	constante	é	uma	grandeza	numérica	fixa	utilizada	
normalmente	em	uma	expressão	aritmética	ou	matemática,	a	qual	define	um	valor	
que	será	inalterado	na	expressão,	independentemente	das	variáveis	envolvidas	na	
operação	a	ser	realizada	(MANZANO;	OLIVEIRA,	2014).
Como	exemplo	de	uso	de	uma	constante	podemos	utilizar	um	algoritmo	
para	calcular	o	imposto	de	uma	nota	fiscal,	neste	algoritmo	poderá	ser	declarada	
uma	constante	que	irá	armazenar	o	valor	percentual	do	imposto.	Caso	a	legislação	
mude, basta alterar o valor da constante, assim todos os locais onde ela está sendo 
utilizada	serão	automaticamente	atualizados	com	o	novo	valor.	
146
UNIDADE 3 | LÓGICA DE PROGRAMAÇÃO
3 VARIÁVEIS
Variável	é	tudo	que	está	sujeito	a	variação,	que	é	incerto,	estável	ou	inconstante.	
Os	dados	a	serem	processados	em	computadores	são	bastante	variáveis.	
Para todo dado a ser armazenado em um computador é necessário saber o 
tipo	de	dado	para	depois	fazer	seu	armazenamento	adequado.	Após	armazenado	
o	dado	ele	pode	ser	utilizado	e	processado	a	qualquer	momento.
Para compreender o conceito de variável, imagine que a memória principal 
de um computador é um arquivo com muitas gavetas, e cada uma delas pode 
armazenar um valor por vez, e como em um arquivo, essas gavetas devem 
estar	 identificadas	 por	 uma	 etiqueta	 com	 um	 nome.	 Portanto,	 uma	 variável	 é	
utilizada	para	sua	identificação	e	representação	em	um	programa	de	computador	
(MANZANO;	OLIVEIRA,	2014).
FIGURA 61 – REPRESENTAÇÃO DA MEMÓRIA DE UM COMPUTADOR COM VARIÁVEIS
FONTE: Manzano e Oliveira (2014, p. 43)
O nome da variável pode ser formado por um ou mais caracteres e deve estar 
sempre	em	letras	maiúsculas.	O	primeiro	caractere	deve	ser	obrigatoriamente	uma	letra	e	
oscaracteres	seguintes	podem	ser	letras	ou	números.	Não	é	permitido	o	uso	de	símbolos,	
sinais	gráficos	e	de	pontuação.	Alguns	exemplos	de	identificadores	permitidos:	NOME	
IDADE END1 NOME_DO_ALUNO
TÓPICO 2 | CONSTANTES E VARIÁVEIS
147
4 TIPOS DE DADOS
O	tipo	de	dado	define	o	conjunto	de	valores	que	um	 identificador	pode	
assumir	ou	armazenar.	Nas	linguagens	de	programação	estão	disponíveis	vários	
tipos	de	dados.	Para	fins	de	desenvolvimento	de	algoritmos	utilizam-se	os	tipos	
de	dados	primitivos,	pois	as	variações	de	tipos	são	definidas	conforme	os	recursos	
disponibilizados pela linguagem de programação e a necessidade de representação 
ou	armazenamento.
Os	tipos	de	dados	primitivos	são:	inteiro,	real,	caractere	e	lógico.
•	 Inteiro:	 armazena	 números	 positivos	 e	 negativos	 pertencentes	 ao	 conjunto	
de	números	 inteiros,	 excluindo	qualquer	 valor	 fracionário.	 Exemplos	de	 tipo	
inteiro:	2,	0,	501,	-7,	-88,	entre	outros.
•	 Real:	 números	positivos	 e	 negativos	 que	pertencem	ao	 conjunto	de	números	
inteiros,	incluindo	todos	os	valores	fracionários	e	inteiros.	Exemplo:	36,	0,	-57,	
-2,	5,	55.
•	 Caractere:	 são	delimitados	pelo	 símbolo	 aspas	 (“	 ”),	 e	 são	 representados	por	
letras	de	A	até	Z,	números	de	0	até	9	e	símbolos.	Exemplos:	“Maria”;	“Rua	296”;	
greisse@uniasselvi.com.br,	entre	outros.
•	 Lógico:	armazena	valores	do	tipo	sim	e	não,	verdadeiro	e	falso.	O	tipo	de	dado	
lógico	também	é	conhecido	como	booleano.
5 DECLARANDO CONSTANTES E VARIÁVEIS
A	sintaxe	do	portugol	para	declaração	de	variáveis	é	a	seguinte:
variável:	tipo	de	dado;
Por	exemplo,	a	variável	Cidade	armazena	somente	caracteres:
cidade:	caractere;
Podemos	declarar	mais	variáveis	ao	mesmo	tempo	para	cada	tipo.	Vejamos	
a	sintaxe:
variavel1,	variavel2,	variavel3:	inteiro;
148
UNIDADE 3 | LÓGICA DE PROGRAMAÇÃO
Vejamos	o	exemplo:
peso,	altura,	idade:	inteiro;
Para	declararmos	as	constantes	não	precisamos	identificar	o	tipo	de	dado,	
pois quando a declaramos já atribuímos o valor correspondente, sendo que este 
valor	será	o	mesmo	do	início	até	o	fim	do	algoritmo.	Vejamos	a	sintaxe:
constante = valor;
Exemplos	práticos:
salario_minino = 750,00;
aliquota:	7,5;
Você observou que ao término de cada instrução temos um ponto e vírgula 
(;)?	Isto	indica	que	a	instrução	acabou.	O	ponto	e	vírgula	tem	a	função	de	identificar	
onde	termina	e	começa	outra	instrução.
Veja	 agora	 como	 fica	 a	 declaração	 da	 constante	 e	 da	 variável	 em	 um	
algoritmo.
Algoritmo declaração;
Constantes
 Percentual = 8,5
 Reajuste = 6;
Variáveis
	 Sexo:	caractere;
	 Quantidade:	inteiro;
	 Peso,	valor:	real;
Início
 <instruções>
Fim.
As instruções do algoritmo sempre acontecem após as declarações entre os 
comandos	início	e	fim.
TÓPICO 2 | CONSTANTES E VARIÁVEIS
149
6 COMANDOS BÁSICOS DE UM ALGORITMO
Os comandos básicos são instruções elementares utilizadas na maioria dos 
softwares.	Estas	instruções	são	atribuição,	leitura,	escrita	e	comentário.
•	 Atribuição:	o	comando	de	atribuição	permite	atribuir	conteúdo	a	um	determinado	
identificador.	Este	conteúdo	pode	ser	um	dado	que	está	armazenado	em	outro	
identificador,	o	resultado	de	um	cálculo,	o	retorno	de	uma	sub-rotina	(função),	
entre	outros.	É	 importante	observar	que	à	esquerda	do	símbolo	de	atribuição	
deve	haver	apenas	um	identificador.
A atribuição deve levar em consideração a compatibilidade do conteúdo com 
o	tipo	do	identificador.	A	atribuição	de	conteúdo	incompatível	ao	suportado	pelo	
tipo	de	dado	pode	causar	erros	de	compilação	ou	de	execução.	Em	consequência	
desta incompatibilidade, o programa pode terminar de forma brusca ou gerar 
resultados	inconsistentes.	Na	maioria	das	linguagens	de	programação,	a	atribuição	
é	representada	por	=	(igual)	ou	:=	(dois	pontos	e	igual).
Exemplo(s):
Continuar = verdadeiro;
Aluna	=	“Maria”;
Quantidade	=	7;
Total_Bruto = A + B;
•	 Leitura:	o	comando	de	leitura	permite	a	obtenção	de	dados	do	meio	externo	para	
o	programa.	Em	algoritmos,	esta	entrada	de	dados	geralmente	é	feita	através	do	
teclado.	A	leitura	pode	se	referir	ainda	à	obtenção	de	conteúdos	de	um	arquivo,	
de	um	banco	de	dados,	de	uma	porta	de	comunicação,	entre	outros.
A	sintaxe	deste	 comando	é	 leia	 (identificador).	O	 identificador	utilizado	
neste	comando	indica	onde	o	dado	deve	ser	armazenado.
Exemplo(s):
leia(Continuar);
leia(Total_Bruto);
leia(Idade);
leia(Nome);
leia(Prosseguir);
•	 Escrita:	 o	 comando	 de	 escrita	 permite	 interagir	 com	 o	 usuário	 do	 software 
através da apresentação do resultado de um processamento ou a solicitação de 
uma	nova	entrada	de	dados.	A	escrita	pode	se	referir	ainda	ao	armazenamento	
de dados num arquivo, num banco de dados, no envio de conteúdo para uma 
impressora,	entre	outros.
150
UNIDADE 3 | LÓGICA DE PROGRAMAÇÃO
A	 representação	 é	 escreva	 (	 [identificador,	 conteúdo]	 ).	 Os	 parâmetros	
deste	comando	podem	ser	um	ou	mais	identificadores,	que	podem	ser	combinados	
com	um	ou	mais	conteúdos	predeterminados	(caracteres,	textos,	números	e	outros	
identificadores).
Exemplo(s):
Escreva(“Primeiro	Algoritmo.”);
Escreva(“Total:	“,	Total_Bruto);
Escreva(“Sua	idade	é:	“,	Idade);
Escreva(“Deseja	prosseguir?	(S/N):	“);
Escreva(“Informe	seu	nome:	“);	
•	 Comentários:	para	que	um	algoritmo	seja	entendido	e	executado	facilmente	são	
necessárias	informações	adicionais	chamadas	de	comentários.	Os	comentários	
são delimitados por chaves aberta e fechada ({ }), sendo que o que estiver escrito 
entre estes comandos será interpretado como comentário e não haverá alguma 
ação	por	parte	do	programa.
Exemplo:
Algoritmo comentário
var	 										 					{Exemplo	de	comentário}
pessoa:	caractere;	{Variável	para	armazenar	o	nome}
idade:	inteiro;	 {Variável	para	armazenar	a	idade}
Inicio
 <comandos>
Fim.
Agora que vimos os comandos básicos vamos construir nosso primeiro 
algoritmo.	Nosso	algoritmo	fará	a	leitura	de	dois	números,	a	soma	deles	e	mostrará	
o	valor	na	tela.	Vejamos	como	ficaria:
TÓPICO 2 | CONSTANTES E VARIÁVEIS
151
Algoritmo Soma
{Definição	de	variáveis}
Var
 {Declara três variáveis para armazenar valores do tipo real}
	 valor1,	valor2,	soma:	real;
inicio
 {Solicita e armazena os dois valores que o usuário deseja somar}
	 Escreva	(“Informe	o	primeiro	valor:”);
 Leia(valor1);
	 Escreva	(“Informe	o	segundo	valor:”);
 Leia(valor2);
 {Agora faremos a soma dos valores e armazenaremos o 
resultado na variável soma}
 soma = valor1 + valor2;
{Agora	 que	 temos	 o	 valor	 armazenado	 vamos	 exibir	 na	 tela	 para	 o	
usuário}
Escreva	(“A	soma	de”,	Valor1,	“+”,	Valor2,	“é”,	soma);
Fim.
Supondo que o usuário informou o número 5 para o valor1 e o número 3 
para	o	valor2,	o	conteúdo	de	soma	será	o	número	8.	Assim,	o	resultado	exibido	
pelo	comando	Escreva	(“A	soma	de”,	Valor1,	“+”,	Valor2,	“é”,	soma);	será:
A soma de 5 + 3 é 8
7 EXPRESSÕES
No	exemplo	de	nosso	primeiro	algoritmo	utilizamos	a	expressão	somar,	
para	 calcularmos	 a	 soma	dos	 dois	 números	 informados	 pelo	 usuário.	A	 seguir	
você	irá	conhecer	outros	tipos	de	expressões,	seus	operadores	e	suas	descrições.
•	 Operadores	 Aritméticos:	 são	 utilizados	 para	 a	 realização	 de	 operações	
matemáticas.	Os	operadores	estão	relacionados	no	quadro	a	seguir.
152
UNIDADE 3 | LÓGICA DE PROGRAMAÇÃO
QUADRO 3 – OPERADORES ARITMÉTICOS
Operador Função
+ Adição e concatenação
- Subtração
* Multiplicação
/ Divisão de valores reais
div Divisão de valores inteiros
Mod Resto da divisão de valores inteiros
FONTE: A autora
•	 Operadores	 Lógicos:	 são	 utilizados	 para	 o	 tratamento	 de	 relações	 lógicas.	O	
resultado	 obtido	 destas	 operações	 é	 sempre	 o	 valor	 verdadeiro	 ou	 falso.	No	
quadro	a	seguir	estão	relacionados	os	operadores	lógicos.
QUADRO 4 – OPERADORESLÓGICOS
Operador Função
e Conjunção
ou Disjunção
não Negação
FONTE: A autora 
•	 Operadores	Relacionais:	são	utilizados	para	a	realização	de	comparações	entre	
dois	elementos	do	mesmo	tipo	de	dado.	O	resultado	obtido	a	partir	de	operações	
com	 estes	 operadores	 é	 sempre	 o	 valor	 verdadeiro	 ou	 falso.	 Tais	 operadores	
estão	relacionados	no	quadro	a	seguir.
QUADRO 5 – OPERADORES RELACIONAIS
Operador Função
= Igual
> Maior
>= Maior igual
< Menor
<= Menor igual
<> Diferente
FONTE: A autora
Dependendo da situação, os operadores poderão ser utilizados de forma 
combinada,	 permitindo	 resolver	 operações	 mais	 complexas.	 Estas	 operações	
poderão	ser	aritméticas,	lógicas,	relacionais	ou	combinações	entre	elas.
153
 Chegamos ao final do Tópico 2. Neste tópico você estudou que:
•	 As	variáveis	são	o	conjunto	de	memórias	auxiliares	que	ajudam	o	programador	
na	 realização	 das	 operações	 necessárias	 nos	 programas.	 A	 declaração	 de	
variáveis	deve	seguir	uma	regra	para	que	os	identificadores	delas	sejam	aceitos	
pelas	linguagens	de	programação.	Esta	regra	diz	que	uma	variável	deve	iniciar	
com uma letra ou sublinha (_), conter nos demais elementos letras, números e/
ou	sublinha.
• Constantes são valores inseridos em cada parte da memória do computador e 
que	permanecem	do	início	ao	fim	do	algoritmo.
•	 Os	tipos	de	dados	são	o	conjunto	de	valores	que	um	determinado	identificador	
daquele	 tipo	poderá	assumir.	Também	pode-se	entender	que	é	o	conjunto	de	
valores	 que	 ele	 poderá	 representar.	O	 conjunto	 de	 valores	 se	 refere	 tanto	 ao	
formato	(caractere,	inteiro,	real	etc.)	quanto	ao	tamanho	do	conjunto	que	pode	
ser	representado	(0..255,	-32768..32767	etc.).
RESUMO DO TÓPICO 2
154
AUTOATIVIDADE
1	 Defina	o	tipo	de	dado	mais	adequado	para	as	variáveis	segundo	o	conteúdo	
a	ser	armazenado	(inteiro,	real,	caractere	ou	lógico):
a) Metros 
b) Peso 
c) Valor_da_compra 
d) CPF 
e) Endereço 
f) Ok 
g) Estado_civil 
2	 Assinale	o	tipo	de	operador	utilizado	em	cada	expressão,	considerando	que	
uma	expressão	pode	conter	mais	de	um	operador:
a) 198 + 12
( ) Aritmético 
( ) Aritmético e Lógico 
( ) Relacional e Aritmético
b) (Parar = Sim) ou (Sinal = ‘Vermelho’)
( ) Aritmético e Lógico
( ) Aritmético e Relacional
( ) Lógico e Relacional
3	 Desenvolva	os	algoritmos	propostos	a	seguir.
a) Faça um algoritmo que leia quatro notas de um aluno e escreva a média 
obtida.
b) Faça um algoritmo para determinar o consumo médio de um automóvel 
sendo fornecida a distância total percorrida pelo automóvel e o total de 
combustível	gasto.
155
TÓPICO 3
ESTRUTURAS DE CONTROLE
UNIDADE 3
1 INTRODUÇÃO
As estruturas de controle permitem determinar como um conjunto de 
instruções	 deverá	 ser	 executado	 para	 a	 realização	 das	 tarefas	 desejadas.	 Esta	
determinação	pode	ser	a	ordem	em	que	as	 instruções	deverão	ser	executadas,	a	
submissão	a	determinadas	condições	ou	o	refinamento	do	processamento.
É	importante	observar	que	não	existe	uma	regra	de	subordinação	básica	ou	
única	para	a	utilização	das	estruturas	de	controle.	Pode-se	utilizar	as	estruturas	de	
controle	em	qualquer	combinação	de	subordinação.	
2 ESTRUTURAS DE CONTROLE SEQUENCIAL
Esta	 estrutura	 de	 controle	 permite	 a	 definição	 da	 sequência	 em	 que	 as	
instruções	deverão	ser	executadas.	A	finalidade	desta	estrutura	é	definir	a	ordem	
em	que	as	instruções	devem	ser	executadas.	Uma	inversão	na	ordem	de	execução	
das	instruções	pode	modificar	significativamente	o	resultado.
Exemplo:
UNIDADE 3 | LÓGICA DE PROGRAMAÇÃO
156
Algoritmo Calcula;
var
Primeiro,	Segundo,	Resultado	:	inteiro;
Início
 Primeiro = 0;
 Segundo = 0;
	 escreva	(“Informe	o	primeiro	número:”’);
 leia(Primeiro);
	 escreva	(’Informe	o	segundo	número:	’);
 leia(Segundo);
 Resultado = (Primeiro * 3) + Segundo;
 escreva(Resultado);
fim.
Neste algoritmo são solicitados dois números; em seguida, o primeiro 
número	é	multiplicado	por	três	e	somado	ao	segundo	número.	
3 ESTRUTURAS DE CONTROLE CONDICIONAL
Para tomar uma decisão em lógica, você deve utilizar a estrutura de 
controle condicional, também conhecida como estrutura de controle decisória 
ou	de	decisão	ou	estrutura	de	controle	alternativa.	Essa	estrutura	executa	um	ou	
vários comandos desde que seja satisfeita uma condição, ou várias, representada 
por	 uma	 expressão	 lógica.	A	 estrutura	 de	 controle	 condicional	 se	 classifica	 em	
simples	ou	composta	(XAVIER,	2004).
Na estrutura de controle condicional simples utiliza-se os comandos se, 
então e fim_se	na	construção	da	instrução.	Nesta	instrução	se	a	condição	definida	
entre os comandos se e então	for	verdadeira,	serão	executadas	todas	as	instruções	
subordinadas	e	definidas	dentro	do	bloco	adjacente	entre	os	comandos	se...então 
e fim_se.	 Após	 a	 execução	 ocorre	 automaticamente	 a	 execução	 das	 eventuais	
instruções	 existentes	 após	 o	 comando	 fim_se.	 Se	 a	 condição	 for	 falsa,	 serão	
executadas	apenas	as	 eventuais	 instruções	que	estiverem	após	o	 comando	fim_
se.Veja	a	sintaxe:
se (<condição>) então
	 instruções	executadas	após	condição	ser	verdadeira
fim_se
instruções	executadas	após	condição	ser	falsa	ou	após	executar	instruções
Exemplos:
TÓPICO 3 | ESTRUTURAS DE CONTROLE
157
se (A > 10) então
se (Prosseguir = verdadeiro) então 
se (Nome <> ’ ’) então
se ((A > 10) e (A < 20)) então
se não Terminou então
A	 estrutura	 de	 controle	 condicional	 simples	 possibilita	 a	 execução	 de	
comandos	somente	se	a	condição	for	verdadeira.	Se	a	condição	for	falsa,	não	pode	
executar	 qualquer	 comando	dentro	desta	 estrutura.	 Para	 isso	 existe	 a	 estrutura	
condicional composta formada pela mesma estrutura da condicional simples, mas 
acrescida do comando senão.
Se	a	condição	definida	entre	os	comandos	se e então for verdadeira, são 
executadas	todas	as	ações	subordinadas	do	bloco	entre	os	comandos	se...então e 
senão.	Caso	a	condição	seja	falsa,	são	executadas	todas	as	instruções	subordinadas	
do bloco entre os comandos senão e fim_se.	Vejamos	a	sintaxe:
se (<condição>) então
	 instruções	executadas	após	condição	ser	verdadeira
senão
	 instruções	executadas	após	condição	ser	falsa
fim_se
instruções	executadas	após	condição	ser	falsa	ou	após	executar	instruções
Exemplo:
se (A > 10) então
 início se
		 escreva(A,	“	é	maior	que	10.”);
fim	se
senão
 início senão
		 escreva(A,	“	é	menor	que	10.”);
fim	senão;
UNIDADE 3 | LÓGICA DE PROGRAMAÇÃO
158
No	exemplo	 anterior,	 verificamos	 apenas	duas	 condições.	 Porém	no	dia	
a dia precisaremos muitas vezes fazer vários testes ou comparações, com vários 
comandos se.	Para	 isso	utilizamos	o	encadeamento	de	comandos,	 inserindo	um	
dentro	do	outro,	para	aplicar	e	verificar	todas	as	soluções	possíveis.	
A seleção encadeada é resolvida com a utilização do comando se então 
subordinado	a	outro	se	então.	Esta	subordinação	ou	encadeamento	pode	ter	vários	
elementos	envolvidos.
Exemplo:
se ((A >= 10) e (A <= 20)) então
início se
se (A <= 15) então
 início se
 escreva(A, ’ está entre 10 e 15’);
	 		fim	se
senão
início senão
 escreva(A, ’ está entre 16 e 20’);
fim	senão;
fim	se
senão
 início senão
 escreva(A, ’ não está entre 10 e 20’);
fim	senão;
fim_se;
Para	a	resolução	de	seleções	múltiplas	utiliza-se	o	comando	escolha	caso.	
Para a construção da instrução utiliza-se os comandos caso, seja, faça, senão e 
fim_caso.	
Vejamos	a	sintaxe:
Escolha	(expressão)
Caso	<rótulo1>:	<bloco	de	comandos>
Caso	<rótulo2>:	<bloco	de	comandos>
Caso	<rótulo3>:	<bloco	de	comandos>
TÓPICO 3 | ESTRUTURAS DE CONTROLE
159
Senão
 <bloco de comandos>
Fim escolha
Exemplo:
4 ESTRUTURAS DE CONTROLE DE REPETIÇÃO
Às vezes é necessário repetir a mesma tarefa para se chegara um resultado 
final.	 Por	 exemplo,	 para	 encher	 uma	 caixa,	 você	 coloca	 dentro	 dela	 um	objeto	 e	
verifica.	Se	constatar	que	a	caixa	ainda	não	está	cheia,	coloca	mais	um	objeto.	A	ação	
se	repetirá	até	você	atingir	o	objetivo:	encher	a	caixa.	Quando	isso	acontecer,	você	vai	
parar	de	colocar	objetos	nela	(XAVIER,	2004).
Para repetir tarefas no algoritmo, evitando escrever várias vezes a mesma 
coisa,	você	pode	utilizar	a	estrutura	de	controle	de	repetição.
4.1 ESTRUTURA DE REPETIÇÃO EQUANTO-FAÇA
O comando enquanto faça é o mais adequado para situações em que a 
condição	de	término	da	repetição	deve	ser	testada	antes	da	execução	das	instruções	
subordinadas	à	estrutura	de	controle.
Os comandos enquanto, faça e fim_enquanto são utilizados para a 
construção da instrução enquanto...faça/fim_enquanto.	Neste	trecho	de	instruções	
são	executadas	as	instruções	subordinadas	ao	bloco	entre	os	comandos	enquanto_
faça e fim_enquanto, no período em que o resultado lógico da condição permanecer 
verdadeiro entre os comandos enquanto e faça.	No	momento	em	que	o	resultado	
lógico	for	falso	são	executadas	as	instruções	que	estiverem	após	o	comando	fim_
enquanto.	Vejamos	a	sintaxe:
escolha Numero 
	 caso	1:	escreva(’*’);
	 caso	2:	escreva(’**’);
	 caso	3:	escreva(’***’);
senão
	 escreva(’Este	número	está	fora	da	faixa.’);
fim	escolha.
UNIDADE 3 | LÓGICA DE PROGRAMAÇÃO
160
enquanto (<condição>) faça
	 Instruções	a	serem	executadas	enquanto	a	condição	for	verdadeira
fim_enquanto
Agora	vamos	para	o	exemplo:
Vamos	a	mais	um	exemplo.	Algoritmo	que	executa	cinco	vezes	e	em	cada	
vez	escreve	o	número	da	execução	utilizando	o	comando	enquanto	faça.
Quantidade	=	0;
enquanto	(Quantidade	<=	5)	faça
 início enquanto 
	 Quantidade	=	Quantidade	+	1;
	 escreva(Quantidade,	’ª	execução.’);
fim	enquanto;
Algoritmo Enquanto_Faca;
variáveis
	 Quantidade	:	inteiro;
início
	 Quantidade		=	1;
	 enquanto	(Quantidade	<=	5)	faça	
 início enquanto
	 escreva(Quantidade,	’	vez.’);
	 Quantidade	=	Quantidade	+	1;
	 fim	enquanto;
fim.
4.2 ESTRUTURA DE REPETIÇÃO PARA-FAÇA
A utilização do comando para faça é recomendada para situações em que 
se conhece previamente a quantidade de vezes que o conjunto de instruções deve 
ser	executado.	Esta	quantidade	de	vezes	também	é	conhecida	como	limite	inferior	
e	limite	superior.
Para essa estrutura utiliza-se os comandos para, de, até, passo, faça e fim_
para	para	realizar	a	construção	da	instrução	desta	estrutura.	Pode-se	executar	um	
determinado conjunto de instruções subordinadas a um bloco até determinado 
TÓPICO 3 | ESTRUTURAS DE CONTROLE
161
número	de	vezes.	No	momento	que	o	valor	da	variável	de	controle	atingir	o	valor	
definido	no	segmento	de	fim	de	contagem,	serão	executadas	as	eventuais	instruções	
que estiverem após o comando fim_para.	Vejamos	a	sintaxe:
Para	<variável>	de	<início>	até	<fim>	passo	<incremento>	faça
 <Instruções>
Fim_para
Vejamos	o	exemplo:
para	Quantidade	de	1	até	5	faça
 início para 
	 escreva(Quantidade,	execução.’);	
fim	para;
Vejamos	mais	um	exemplo.	Algoritmo	que	executa	cinco	vezes	e	em	cada	
vez	escreve	o	número	da	execução	utilizando	o	comando	para	faça.
Algoritmo Para_Faca;
variáveis
	 Quantidade	:	inteiro;
início
	 para	Quantidade	de	1	até	5	faça
 início para 
	 escreva(Quantidade,	’	vez.’);	
	 fim	para;
fim.
4.3 ESTRUTURA DE REPETIÇÃO REPITA_ATÉ
O comando repita até é mais adequado para situações em que as instruções 
subordinadas	à	estrutura	de	controle	deverão	ser	executadas	pelo	menos	uma	vez,	
antes	do	teste	da	condição	de	término.	Em	algumas	linguagens	de	programação	
o	comando	repita	até	pode	ser	encontrado	como	uma	variante	do	enquanto	faça.
UNIDADE 3 | LÓGICA DE PROGRAMAÇÃO
162
Na	estrutura	repita	até	são	executadas	instruções	entre	os	comandos	repita 
e até_que durante o período em que o resultado lógico da condição permanecer 
falso.	No	momento	em	que	o	resultado	for	verdadeiro,	executam-se	as	eventuais	
instruções que estiverem após o comando até_que.	Vejamos	a	sintaxe:
Repita
 <instruções>
Até_que
Vejamos	o	exemplo:
Quantidade		=	0;
repita
	 Quantidade	=	Quantidade	+	1;
	 escreva(Quantidade,	’ª	execução.’);
até	(Quantidade	>=	5);
Vejamos	mais	um	exemplo.	Algoritmo	que	executa	cinco	vezes	e	em	cada	
vez	escreve	o	número	da	execução	utilizando	o	comando	repita	até.
Algoritmo Repita_Ate;
variáveis
	 Quantidade	:	inteiro;
início
	 Quantidade		=	1;
 repita
	 		escreva(Quantidade,	’	vez.’);
	 		Quantidade	=	Quantidade	+	1;
	 até	(Quantidade	>	5);
fim.
163
Chegamos ao final de mais um tópico. Neste tópico vimos que:
•	 Os	algoritmos	são	baseados	quase	em	sua	totalidade	nas	estruturas.	As	estruturas	
são	sequência,	seleção	e	repetição.	Com	isso,	quem	aprender	a	utilizar	bem	estas	
estruturas poderá programar grande parte dos softwares	existentes	atualmente.	
Exceção	pode	se	dar	em	casos	que	utilizem	tecnologias	mais	avançadas.
•	 A	 estrutura	 de	 sequência	 define	 a	 ordem	 em	 que	 as	 instruções	 devem	 ser	
executadas	para	que	o	resultado	definido	para	o	algoritmo	seja	atingido.	Caso	
a estrutura de sequência não seja obedecida, os resultados obtidos por tal 
algoritmo são imprevisíveis, pois as instruções dependentes podem estar sendo 
executadas	antes	daquelas	que	as	deveriam	preceder.
•	 A	estrutura	de	seleção	permite	a	definição	de	desvios	condicionados	às	condições	
definidas	na	expressão	do	comando	de	seleção	definido.	A	estrutura	de	seleção	
pode	ser	subdividida	nos	tipos:	simples,	composta,	encadeada	e	múltipla.	Na	
seleção simples, composta e encadeada é utilizado o comando se e na seleção 
encadeada	é	utilizado	o	comando	escolha	caso.
•	 A	estrutura	de	repetição	visa	permitir	a	execução	de	um	conjunto	de	instruções	
na quantidade de vezes necessárias de acordo com a condição estabelecida na 
expressão	de	controle	do	laço.	As	estruturas	de	seleção	são:	enquanto	faça,	para	
faça	e	repita	até.
•	 É	 importante	 observar	 que	 as	 estruturas	 de	 seleção	 e	 repetição	 utilizam	
expressões	como	forma	de	definir	o	que	deve	ser	executado.	Estas	expressões	
demonstram	o	quanto	a	 computação	 tem	suas	 raízes	na	área	da	matemática.	
Portanto, conhecimentos e habilidades com lógica são muito importantes para 
profissionais	da	área	de	computação.
RESUMO DO TÓPICO 3
164
AUTOATIVIDADE
Caro	acadêmico,	como	forma	de	fixar	o	conteúdo	estudado,	realize	a	
autoatividade	proposta	a	seguir:
1	 Desenvolva	os	algoritmos	propostos	a	seguir.
a) Elabore um algoritmo onde será lido o valor de vários itens de compra e ao 
final	escreva	o	valor	a	ser	pago.	O	algoritmo	deverá	continuar	lendo	itens	
enquanto	o	valor	digitado	for	diferente	de	zero.
b) Uma loja deseja saber quantos clientes compram 1 = à vista, 2 = 30 dias e 3 
=	60	dias.	Desenvolva	um	algoritmo	que	leia	uma	quantidade	ilimitada	de	
clientes.	Ao	informar	zero,	o	algoritmo	será	finalizado	e	deverá	apresentar	
quantos	clientes	foram	digitados	em	cada	condição.
c) Construa um algoritmo para calcular e escrever o IMC (Índice de Massa 
Corporal)	de	uma	pessoa.	São	fornecidos	o	nome	da	pessoa,	o	peso	e	a	altura.	
A	fórmula	para	calcular	o	IMC	é	o	peso	dividido	pela	altura	ao	quadrado.	
Com base no resultado do cálculo do IMC, escreva o resultado conforme as 
seguintes	faixas:
até	20,0	(inclusive)	=	abaixo	do	peso
acima	de	20,0	e	abaixo	de	25,0	=	peso	normal
entre	25,0	e	abaixo	de	30,0	=	sobrepeso
entre	30,0	e	abaixo	de	40,0	=	obeso
40,0 e acima = obeso mórbido
O	 algoritmo	 deverá	 ser	 executado	 até	 que	 seja	 informado	 “FIM”	 no	
nome	da	pessoa.
d) Faça um algoritmo que leia o nome de uma pessoa e várias ligações 
telefônicas	(número	do	telefone	e	valor	da	ligação),	enquanto	o	número	do	
telefone	informado	for	diferente	de	zero.	Ao	final	escreva	o	nome	do	cliente	
e	o	valor	da	conta	telefônica.
e)No	controle	de	qualidade	de	uma	empresa	são	classificadas	as	mercadorias	
como	de	primeira,	de	segunda	e	refugo.	Elabore	um	algoritmo	para	ler	100	
peças	e	no	final	escreva	quantas	são	de	primeira,	quantas	são	de	segunda	e	
quantas	são	refugo.
165
TÓPICO 4
TIPOS ESTRUTURADOS
UNIDADE 3
1 INTRODUÇÃO
A partir do momento em que se passa a construir algoritmos mais 
sofisticados,	aumenta	proporcionalmente	a	necessidade	de	elementos	que	deem	
suporte	a	esta	construção.	
Utilizando apenas os tipos de dados primitivos, os algoritmos podem ser 
bastante	restritos	e	limitados.	Felizmente,	os	tipos	estruturados	permitem	romper	as	
barreiras	desta	limitação.
Tipos estruturados são tipos de dados construídos a partir de outros 
tipos	de	dados.	Os	tipos	de	dados	utilizados	como	base	para	a	criação	dos	tipos	
estruturados podem ser tipos primitivos ou tipos estruturados que já tenham sido 
previamente	definidos.
2 REGISTROS
Registros	permitem	a	criação	de	tipos	de	dados	heterogêneos.	Os	elementos	
que	compõem	o	registro	são	chamados	de	campos.	Estes	campos	devem	ter	nomes	
(identificadores)	diferentes	e	podem	ter	o	mesmo	tipo	de	dado	ou	tipos	de	dados	
diferentes,	conforme	a	necessidade.
Em algumas linguagens de programação a construção do tipo registro pode 
ser encontrada com o nome estrutura (struct)	(KOCHANSKI;	ANDRIETTI,	2005).
O algoritmo a seguir contém um registro que armazena o código, o nome e 
o	endereço	de	uma	pessoa.
UNIDADE 3 | LÓGICA DE PROGRAMAÇÃO
166
Algoritmo Registro;
tipo 
 TCadastroPessoas = registro
	 Codigo	:	inteiro;
	 Nome	:	caracter;
	 Endereco	:	caracter;
	 fim	registro;
variaveis
	 CadastroPessoas	:	TCadastroPessoas;
início
	 escreva(’Informe	o	código:	’);	
	 leia(CadastroPessoas.codigo);
	 escreva(’Informe	o	nome:	’);
	 leia(CadastroPessoas.nome);
	 escreva(’Informe	o	endereço:	’);
	 leia(CadastroPessoas.endereco);
fim.
3 VETORES
Vetor é o nome atribuído a um tipo estruturado que armazena um conjunto 
unidimensional	de	elementos	homogêneos.	Os	vetores	são	conjuntos	homogêneos,	
pois	todos	os	elementos	que	o	compõem	são	do	mesmo	tipo.
Os	vetores	podem	ser	classificados	em	simples	e	estruturado.
Um	vetor	simples	é	composto	por	elementos	com	apenas	um	campo.	Este	
conjunto poderá ter vários elementos e em cada elemento poderá ser armazenado 
apenas	um	valor	(KOCHANSKI;	ANDRIETTI,	2005).
Vejamos	a	sintaxe:
Variável:	conjunto[	]		de	<tipo	de	dado>
Exemplo:	O	algoritmo	a	seguir	implementa	um	vetor	com	capacidade	para	
armazenar	10	números	do	tipo	inteiro.
TÓPICO 4 | TIPOS ESTRUTURADOS
167
Algoritmo VetorSimples;
tipo 
	 TNumeros	=	Vetor[1..10]	de	inteiro;
variáveis 
	 VetorNumeros	:	TNumeros;
	 Contador	:	inteiro;
início
 para Contador de 1 até 10 faça
 início para
	 				escreva(’Informe	um	número:	’);
	 				leia(VetorNumeros[Contador]);
	 fim	para;
fim.
Um vetor estruturado é composto por elementos cujo tipo de dado utilizado 
é	derivado	de	outros	tipos	de	dados.	Um	vetor	estruturado	também	é	conhecido	
como	um	vetor	de	registros	(KOCHANSKI;	ANDRIETTI,	2005).
Exemplo:
Este algoritmo armazena o código e a idade de 10 alunos em um vetor 
homogêneo	estruturado	com	registro	de	apenas	um	tipo	de	dado.
Algoritmo VetorEstruturadoUm;
tipo 
 TCadastroAluno = registro
	 Codigo	:	inteiro;
	 Idade	:	inteiro;
Fim registro;
TAlunos	=	Vetor[1..10]	de	TCadastroAluno;
variáveis 
	 VetCadAlu	:	TAlunos;
	 Contador	:	inteiro;
início
 para Contador de 1 até 10 faça
 início para
	 		escreva(’Informe	o	código	do	aluno:	’);
	 		leia(VetCadAlu[Contador].Codigo);
	 		escreva(’Informe	a	idade	do	aluno:	’);
	 		leia(VetCadAlu[Contador].Idade);
	 fim	para;
fim.
UNIDADE 3 | LÓGICA DE PROGRAMAÇÃO
168
É	 importante	 observar	 que	 para	 criar	 um	vetor	 homogêneo	 estruturado	
deve-se,	primeiro,	criar	um	registro	com	os	dados	necessários.	O	passo	seguinte	
é criar um vetor que usará o tipo de dado criado no registro e então declarar uma 
variável	do	tipo	do	vetor.	O	registro	pode	ter	um	ou	vários	tipos	de	dados.
4 MATRIZES
Matriz é o nome atribuído a um tipo estruturado que armazena um conjunto 
bidimensional	de	elementos	homogêneos.	As	matrizes	são	conjuntos	homogêneos,	
pois	todos	os	elementos	que	a	compõem	são	do	mesmo	tipo.
Nas	matrizes,	além	do	limite	inferior	e	superior	do	eixo	X,	há	também	
o	 limite	 inferior	 e	 superior	 do	 eixo	 Y.	Assim	 como	 nos	 vetores,	 as	matrizes	
também podem ser compostas por elementos baseados em tipos de dados 
primitivos	ou	estruturados.
Uma	matriz	 simples	 é	 composta	por	 elementos	 com	apenas	um	 campo.	
Este conjunto poderá ter vários elementos em cada dimensão e em cada elemento 
poderá	ser	armazenado	apenas	um	valor	(KOCHANSKI;	ANDRIETTI,	2005).
Exemplo:	este	algoritmo	tem	capacidade	de	armazenar	nove	números	do	
tipo	inteiro.
Algoritmo MatrizSimples;
tipo 
	 TMatriz	=	Vetor[1..3,	1..3]	de	inteiro;
variáveis 
	 Matriz	:	TMatriz;
	 Linha	:	inteiro;
	 Coluna	:	inteiro;
início
 para Linha de 1 até 3 faça
 início para
 para Coluna de 1 até 3 faça
 início para
 escreva(’Informe um número para a ’, Coluna, ’ coluna da ’,
						Linha,	’	Linha:	’);
	 						leia(Matriz[Linha,	Coluna]);
				fim	para;
	 fim	para;
fim.
TÓPICO 4 | TIPOS ESTRUTURADOS
169
Neste	exemplo	a	matriz	de	3	X	3	com	tipo	de	dado	inteiro	foi	carregada	
com	números	na	seguinte	ordem:
• primeira coluna da primeira linha;
• segunda coluna da primeira linha; 
• terceira coluna da primeira linha; 
• primeira coluna da segunda linha; 
• segunda coluna da segunda linha; 
• terceira coluna da segunda linha; 
• primeira coluna da terceira linha; 
• segunda coluna da terceira linha; e 
•	 terceira	coluna	da	terceira	linha.
Uma matriz estruturada é composta por elementos cujo tipo de dado utilizado 
é	derivado	de	outros	tipos	de	dados.	Uma	matriz	estruturada	também	é	conhecida	
como	uma	matriz	de	registros.
Exemplo:	este	algoritmo	armazena	os	dados	de	25	alunos	em	uma	matriz	
de	registros	onde	cada	célula	da	matriz	recebe	o	código	e	a	idade	de	um	aluno.
Algoritmo MatrizEstruturadaUm;
constantes
	 MaxLin	=	5;
	 MaxCol	=	5;
tipo 
 TAlu = registro
	 Codigo	:	inteiro;
	 Idade	:	inteiro;
	 fim	registro;
TMatAlu	=	Vetor[1..MaxLin,	1..MaxCol]	de	TAlu;	
variaveis 
	 Matriz	:	TMatAlu;
	 Linha	:	inteiro;
	 Coluna	:	inteiro;
início
	 para	Linha	de	1	até	MaxLin	faça
 início para
	 					para	Coluna	de	1	até	MaxCol	faça
 início para
 escreva(’Informe o código do aluno da ’, Coluna, ’ coluna da ’, 
Linha,	’	Linha:	’);
										leia(Matriz[Linha,	Coluna].Codigo);
 escreva(’Informe a idade do aluno da ’, Coluna, ’ coluna da ’, 
Linha,	’	Linha:	’);
	 									leia(Matriz[Linha,	Coluna].Idade);
					fim	para;
fim	para;
fim.
UNIDADE 3 | LÓGICA DE PROGRAMAÇÃO
170
Vejamos	mais	um	exemplo:	neste	algoritmo	é	possível	armazenar	os	dados	
de 50 pessoas em uma matriz de registros onde cada célula da matriz recebe o 
código,	o	nome,	o	endereço	e	a	renda	de	uma	pessoa.
Algoritmo MatrizEstruturadaDois;
constantes
	 MaxLin	=	10;
	 MaxCol	=	5;
tipo 
 TCadPes = registro
	 Codigo	:	inteiro;
	 Nome	:	caracter;
	 Endereco	:	caracter;
	 Renda	:	real;	
	 fim	registro;
	 TCad	=	Vetor[1..MaxLin,	1..MaxCol]	de	TCadPes;	
variáveis 
 {Declaração da variável do tipo TCad}
	 Cad	:	TCad;
	 Linha	:	inteiro;
	 Coluna	:	inteiro;
início
	 para	Linha	de	1	até	MaxLin	faça
 início para
	 						para	Coluna	de	1	até	MaxCol	faça
 início para
 escreva(’Informe o codigo da pessoa da ’, Coluna, ’ coluna da ’, 
Linha,	’Linha:	’);
	 										leia(Cad[Linha,	Coluna].Codigo);
 escreva(’Informe o nome da pessoa da ’, Coluna, ’ coluna da ’, 
Linha,	’	Linha:	’);
										leia(Cad[Linha,	Coluna].Nome);
 escreva(’Informe o endereço da pessoa da ’, Coluna,’ coluna da 
’,Linha,	’	Linha:	’);
	 										leia(Cad[Linha,	Coluna].Endereco);
 escreva(’Informe a renda mensal da pessoa da ’, Coluna, ’ coluna da 
’,Linha,	’	Linha:	’);
	 										leia(Cad[Linha,	Coluna].Renda);
	 				fim	para;
	 fim	para;
fim.
171
RESUMO DO TÓPICO 4
Caro(a) acadêmico(a), neste tópico você estudou que:
• Os tipos estruturados ou estruturas de dados estáticas são arranjos de dados 
que permitem o armazenamento e navegação no conjunto de dados de modo 
simples	e	rápido.
•	 Os	 registros	 são	 estruturas	 nas	 quais	 são	 definidos	 conjuntos	 de	 dados	 que	
podem ser utilizados em vetores, matrizes ou mesmo em listas dinamicamente 
alocadas	na	memória.	Este	conjunto	de	dados	pode	conter	diferentes	tipos	de	
dados,	pois	o	registro	é	uma	nova	definição	de	tipo	de	dado.
• Vetores são estruturas homogêneas que permitem a rápida navegação pelos 
elementos.	 Os	 vetores	 com	 os	 quais	 lidamos	 neste	 Caderno	 de	 Estudos	
são	 estruturas	 estáticas,	 ou	 seja,	 o	 seu	 tamanho	deve	 ser	 definido	 em	 tempo	
de	 programação	 e	 a	 alocação	 é	 feita	 uma	 única	 vez	 na	 carga	 do	 programa.	
Vetores são especialmente úteis para tratamento de dados intermediários cuja 
quantidade	 seja	 pequena	 e	 previamente	 conhecida.	Vetores	 estáticos	 não	 são	
muito aconselháveis em situações em que não se conhece a quantidade de 
elementos	ou	esta	quantidade	seja	grande.
• Matrizes são estruturas homogêneas cuja diferença dos vetores é a possibilidade 
de	definir	quantidade	de	linhas	superior	a	uma.	Os	vetores	permitem	a	definição	
da	 quantidade	de	 colunas,	 porém	a	 quantidade	de	 linhas	 é	 sempre	uma.	As	
matrizes são especialmente úteis em situações em que é necessário armazenar e 
navegar	em	um	conjunto	de	dados	bidimensional.
172
AUTOATIVIDADE
Elabore	os	algoritmos	propostos	a	seguir.
a) Elabore um algoritmo que implemente uma matriz de 15 X 12 onde as linhas 
são os produtos em estoque e as colunas são as quantidades incluídas em 
cada	mês	do	ano.	Ao	terminar	a	inclusão	dos	dados,	liste	a	matriz.
b) Faça um algoritmo que leia uma matriz de 5 X 5 e multiplique cada um dos 
seus	 elementos	por	um	número	qualquer.	Carregue	uma	 segunda	matriz	
com	os	valores	multiplicados.	Ao	final,	liste	a	matriz	original	e	a	matriz	com	
os	números	multiplicados.
c)	Construa	um	algoritmo	que	leia	duas	matrizes	de	3	X	3	e	ao	final	mostre	as	
matrizes	e	uma	terceira	matriz	com	a	soma	das	duas.
173
TÓPICO 5
SUBALGORITMOS E ESCOPO DE IDENTIFICADORES
UNIDADE 3
1 INTRODUÇÃO
Os subalgoritmos são uma forma de organização que visa especializar 
um conjunto de instruções e tornar ainda mais clara a descrição de cada parte da 
solução.
Quando	a	quantidade	de	instruções	torna-se	muito	elevada	e	principalmente	
quando um mesmo bloco de instruções precisa ser utilizado várias vezes, é 
aconselhável	 o	 uso	 de	 subalgoritmos.	 A	 estrutura	 básica	 de	 um	 subalgoritmo	
compreende	as	seguintes	partes:
Cabeçalho do subalgoritmo
Definição	de	constantes
Definição	de	tipos	de	dados
Definição	de	variáveis
Início do subalgoritmo
Corpo principal do subalgoritmo
Fim	do	subalgoritmo.
Conforme se pode perceber na estrutura de um subalgoritmo, ele segue o 
mesmo	princípio	estrutural	de	um	algoritmo.
Um subalgoritmo pode ser chamado a partir do corpo principal do 
algoritmo	ou	de	outro	subalgoritmo.
Exemplo:	este	algoritmo	demonstra	a	utilização	de	um	subalgoritmo.
UNIDADE 3 | LÓGICA DE PROGRAMAÇÃO
174
Algoritmo Soma;
variáveis
	 Primeiro	:	inteiro;
	 Segundo	:	inteiro;
	 subalgoritmo	SomaValores(N1,	N2	:	inteiro);
 início
 SomaValores = N1 + N2;
	 fim;
início
 Primeiro = 0;
 Segundo = 0;
	 escreva(’Informe	o	primeiro	número:	’);
 leia(Primeiro);
	 escreva(’Informe	o	segundo	número:	’);
 leia(Segundo);
 escreva(SomaValores(Primeiro, Segundo));
fim.
2 ESCOPO DE IDENTIFICADORES
O	 escopo	 de	 identificadores	 (constantes,	 tipos	 e	 variáveis)	 define	 a	
abrangência	de	utilização	dos	mesmos.	O	 escopo	define	onde	um	 identificador	
pode	ser	utilizado.	Os	elementos	declarados	no	cabeçalho	podem	ser	utilizados	em	
qualquer	ponto	do	algoritmo.	Este	tipo	de	declaração	é	conhecido	como	declaração	
global	(KOCHANSKI;	ANDRIETTI,	2005).
Exemplo:
Variáveis do tipo Global (Primeiro, Segundo e Resultado) podem ser 
vistas	por	todo	o	algoritmo.	Vejamos	o	subalgoritmo	com	uso	de	variáveis	globais	
(Primeiro,	Segundo	e	Resultado),	as	quais	podem	ser	vistas	por	todo	o	algoritmo.
TÓPICO 5 | SUBALGORITMOS E ESCOPO DE IDENTIFICADORES
175
Algoritmo Calcula;
variáveis
	 Primeiro	:	inteiro;
	 Segundo	:	inteiro;
	 Resultado	:	inteiro;
	 subalgoritmo	SomaValores(N1,	N2	:	inteiro);
 início
 Resultado = N1 + N2;
	 fim;
início
	 escreva(’Informe	o	primeiro	número:	’);
 leia(Primeiro);
	 escreva(’Informe	o	segundo	número:	’);
 leia(Segundo);
 SomaValores(Primeiro, Segundo);
 escreva(Resultado);
fim.
Já as declarações feitas no cabeçalho de um subalgoritmo podem ser 
utilizadas	apenas	no	corpo	do	subalgoritmo.	Fora	do	subalgoritmo	estas	declarações	
não	são	conhecidas.	Este	tipo	de	declaração	é	chamado	local.
Exemplo(s):
Variáveis	do	tipo	local	(Soma)	só	podem	ser	vistas	por	quem	a	declarou.
Algoritmo Calcula;
variáveis
	 Primeiro	:	inteiro;
	 Segundo	:	inteiro;
	 Resultado	:	inteiro;
	 subalgoritmo	SomaValores(N1,	N2	:	inteiro);
 variáveis
	 inteiro	:	Soma;
 início
 Soma = N1 + N2;
	 fim;
início
	 escreva(’Informe	o	primeiro	número:	’);
 leia(Primeiro);
	 escreva(’Informe	o	segundo	número:	’);
 leia(Segundo);
 escreva(SomaValores(Primeiro, Segundo));
fim.
UNIDADE 3 | LÓGICA DE PROGRAMAÇÃO
176
Um	 subalgoritmo,	 além	 de	 processar,	 pode	 receber	 e	 devolver	 dados.	
O recebimento de dados é utilizado em situações em que é necessário fornecer 
valores	específicos	para	serem	manipulados	no	subalgoritmo.	Para	isso	chamamos	
de	passagem	de	parâmetros	(KOCHANSKI;	ANDRIETTI,	2005).
A passagem de parâmetros permite generalizar a solução através da 
indicação	de	comportamentos	específicos	passados	nos	parâmetros.
Exemplo:	neste	algoritmo	são	passadas	por	parâmetro	duas	notas	lidas	e	o	
subalgoritmo	carrega	a	variável	global	“Media”	com	a	média	do	aluno.
Algoritmo Media;
variáveis
	 inteiro	:	Nota1;
	 inteiro	:	Nota2;
	 real	:	Media;
	 subalgoritmo	CalculaMedia(N1,	N2	:	inteiro);
 início
 Media = (N1 + N2) / 2;
	 fim;
início
	 escreva(’Informe	a	primeira	nota:	’);
 leia(Nota1);
	 escreva(’Informe	a	segunda	nota:	’);
 leia(Nota2);
 CalculaMedia(Nota1, Nota2);
 escreva(Media);
fim.
Na maioria das linguagens de programação a passagem de parâmetros 
pode	ser	efetuada	de	duas	formas:	por	cópia	e	por	referência.	
Na passagem de parâmetros por cópia, uma cópia do conteúdo da variável 
informada	no	parâmetro	é	fornecida	ao	subalgoritmo.	Após	copiado,	o	conteúdo	
pode ser manipulado no subalgoritmo sem que a variável de origem seja afetada 
ou	alterada.
Exemplo:	Algoritmo	com	passagem	de	parâmetros	por	cópia.
TÓPICO 5 | SUBALGORITMOS E ESCOPO DE IDENTIFICADORES
177
Algoritmo Emprestimo;
variáveis
	 ValorInicial	:	real;
	 ValorFinal	:	real;
	 Taxa	:	inteiro;
	 subalgoritmo	CalculaJuros(Valor	:	real;	Tx	:	inteiro):	real;
 início
	 CalculaJuros	=	(Valor	*	Tx)	/	100;
	 fim;
início
	 escreva(’Informe	o	valor	a	emprestar:	’);
 leia(ValorInicial);
	 escreva(’Informe	a	taxa	de	juros:	’);
	 leia(Taxa);
 escreva(‘O valor dos juros é ‘,
	 CalculaJuros(ValorInicial,	Taxa));
	 ValorFinal	=	ValorInicial	+	CalculaJuros(ValorInicial,	Taxa);
 escreva(‘O valor a pagar é ‘, ValorFinal);
fim.
Na passagem de parâmetros por referência não é feita uma cópia do 
conteúdo.	Neste	caso	é	passada	uma	referência	à	variável	de	origem	e	as	alterações	
realizadas	refletem	diretamente	sobre	esta	variável.
Exemplo:	algoritmo	com	passagem	de	parâmetrospor	referência.
UNIDADE 3 | LÓGICA DE PROGRAMAÇÃO
178
Algoritmo Juros;
variáveis
	 ValorInicial	:	real;
	 ValorFinal	:	real;
	 Taxa	:	inteiro;
	 subalgoritmo	CalculaJuros(Valor	:	real;	
	 Taxa	:	inteiro;	
	 ValorFin	:	variaveis	real):	real;
 início
	 ValorFin	=	Valor	+	(Valor	*	Taxa);
	 CalculaJuros	=	Valor	*	Taxa;
	 fim;
início
	 escreva(’Informe	o	valor	a	emprestar:	’);
 leia(ValorInicial);
	 escreva(’Informe	a	taxa	de	juros:	’);
	 leia(Taxa);
 escreva(‘O valor dos juros é ‘,
	 CalculaJuros(ValorInicial,	Taxa,	ValorFinal));
 escreva(‘O valor valor a pagar é ‘, ValorFinal);
fim.
A diferença fundamental entre estas formas de passagem de parâmetros é 
que na primeira os dados de origem não são afetados e, na segunda, são os dados 
de	origem	que	estão	sendo	alterados.
É	 importante	 que	 se	 conheça	 as	 consequências	 do	 uso	 de	 ambos	 para	
utilizar cada forma nas situações que forem mais adequadas, evitando eventuais 
falhas	na	execução	por	problemas	na	lógica	empregada.
TÓPICO 5 | SUBALGORITMOS E ESCOPO DE IDENTIFICADORES
179
LEITURA COMPLEMENTAR
QUER APRENDER PROGRAMAÇÃO? SAIBA QUAL A MELHOR 
LINGUAGEM!
 A pergunta que é feita por todo mundo que está aprendendo a programar 
é:	 que	 linguagem	 de	 programação	 devo	 aprender?	 A	 resposta	 é	 óbvia:	 uma	
linguagem de programação para iniciantes!
Antes de mais nada, você deve ter consciência de que ao longo da sua 
carreira como programador, você sempre terá que aprender uma linguagem de 
programação	 nova.	 Pois	 todas	 têm	 suas	 vantagens	 e	 desvantagens.	 Uma	 dica	
interessante	 é:	 não	 seja	 fanático	 por	 uma	 linguagem	 específica!	Muitas	 pessoas	
defendem com unhas e dentes a linguagem de programação que têm mais 
afinidade.	Mas	isso	não	é	bom!	Para	cada	projeto,	cada	trabalho,	uma	linguagem	
é	mais	indicada	ou	não.	Você	deve	decidir	qual	usar	não	com	base	no	seu	gosto	
pessoal,	mas	nas	vantagens	que	a	linguagem	oferece	para	o	projeto.
QUAL	A	MELHOR	LINGUAGEM	PARA	APRENDER	PROGRAMAÇÃO?
Se você é iniciante, procure uma linguagem de programação que te ajude 
a aprender lógica de programação! Só depois de aprender o básico que você deve 
aprender	 uma	 outra	 linguagem	mais	 profissional.	 Muitas	 pessoas	 já	 começam	
aprendendo	 lógica	de	programação	 com	 linguagens	profissionais,	 por	 exemplo	
java,	C,	python,	C#	etc.	É	totalmente	válido	e	muitos	conseguem	de	fato	aprender,	
mas	algumas	pessoas	podem	ter	dificuldade	de	assimilar	os	conceitos	básicos	com	
essas	 linguagens.	 Então,	para	 quem	nunca	programou	antes,	 indico	 fortemente	
que	comece	com	uma	linguagem	que	o	ajude	aprender	a	programar.
UNIDADE 3 | LÓGICA DE PROGRAMAÇÃO
180
Para mim foi difícil entender isso quando ensinava pessoas a programar, 
queria	logo	que	elas	aprendessem	java,	ou	C#	etc.	Mas	a	dificuldade	dos	iniciantes	
era	conseguir	aprender	lógica	de	programação	tendo	que	“decorar”	as	restrições	
exigidas	pela	 linguagem.	Por	 isso,	nos	artigos	voltados	para	 iniciante	aqui	no	 {	
Dicas de Programação }, vamos escrever algoritmos em português (pseudocódigos) 
e utilizar uma linguagem simples para transmitir os conceitos, pois o objetivo é 
ensinar	o	básico.
VISUALG, IMPLEMENTANDO ALGORITMOS EM PORTUGUÊS!
Na minha opinião esta é a melhor ferramenta para iniciantes em programação 
implementarem	seus	algoritmos.	O	Visualg	foi	criado	por	um	brasileiro	(Claudio	
Morgado de Souza), é fácil de ser usado e compila pseudocódigos escritos em 
português,	também	conhecidos	como	“Portugol”.
O	Visualg	foi	desenvolvido	para	Windows.	Para	 instalar	 faça	o	download 
do	 instalador	 (versão	 2.5)	 na	 página:	 <http://www.dicasdeprogramacao.com.br/
download-visualg/>.
A	instalação	é	muito	simples,	basta	executar	o	instalador	e	acionar	os	botões	
“Avançar”,	a	famosa	instalação	“Next,	next,	next	…”.	Quando	abrimos	o	software, 
vimos	uma	tela	com	o	esqueleto	de	um	algoritmo	já	criado,	como	a	imagem	a	seguir:
TÓPICO 5 | SUBALGORITMOS E ESCOPO DE IDENTIFICADORES
181
CRIANDO O PRIMEIRO PROGRAMA COM O VISUALG
Para	 batizar	 o	Visualg	 vamos	 criar	 agora	um	programa	básico.	Digite	 o	
algoritmo	abaixo	no	visualg	(as	linhas	que	iniciam	com	“//”	são	comentários	e	não	
são	interpretadas):
Para	 executarmos	 o	 programa,	 utilize	 o	 botão	 indicado	 na	 figura	 ou	
pressione	F9.
UNIDADE 3 | LÓGICA DE PROGRAMAÇÃO
182
Obs.: Diferentemente do que fora visto anteriormente, o visualg não utiliza o ; ao 
final de cada instrução.
IMPORTANT
E
Para	finalizar,	o	resultado	deste	programa	é	como	apresentado	pela	figura	
a	seguir:
TÓPICO 5 | SUBALGORITMOS E ESCOPO DE IDENTIFICADORES
183
Outra	coisa	muito	interessante	no	Visualg	é	a	documentação	de	referência.	
É	tudo	em	português!	Se	você	tiver	dúvida	de	uma	palavra-chave	ou	comando,	
basta	acessar	a	documentação	através	do	menu	ajuda.	Eu	mesmo	já	acessei	muito	
essas	referências	para	ver	como	os	comandos	básicos	deveriam	ser	escritos.	Use-a!	
É	uma	documentação	bem	simples	e	didática,	 com	certeza	ela	pode	 te	ajudar	a	
aprender	programação.
Como	 pôde	 ser	 visto,	 programar	 utilizando	 o	 Visualg	 é	 muito	 fácil!	
Por utilizar uma linguagem em português, ele torna-se um grande aliado para 
iniciantes	em	programação.	Evidentemente,	não	se	cria	softwares	profissionais	com	
esta	ferramenta,	o	seu	grande	objetivo	é	ajudar	no	ensino	de	lógica	de	programação.	
E	com	certeza	cumpre	o	seu	papel.
FONTE: Disponível em: <http://www.dicasdeprogramacao.com.br/linguagem-de-programacao-
para-iniciantes/>. Acesso em: 25 abr. 2016.
184
RESUMO DO TÓPICO 5
Caro acadêmico, neste tópico você estudou que:
• Os subalgoritmos são estruturas de programação que possuem praticamente 
todas	as	características	e	potencialidades	de	algoritmos.	Eles	permitem	que	seja	
definido	 um	 novo	 tipo	 de	 dado,	 declaradas	 constantes,	 declaradas	 variáveis	
e	em	algumas	linguagens	de	programação,	até	que	se	definam	subalgoritmos	
deles.
•	 É	importante	observar	que	os	tipos	de	dados,	constantes	e	variáveis	declarados	
num	 subalgoritmo	 possuem	 escopo	 de	 utilização	 apenas	 no	 subalgoritmo.	As	
variáveis,	por	exemplo,	são	chamadas	de	variáveis	locais.	Isso	significa	que	elas	
possuem	“vida”	apenas	dentro	do	subalgoritmo,	não	estando	disponíveis	para	
uso	por	outras	partes	do	algoritmo/programa.
•	 A	passagem	de	parâmetros	 é	 um	 recurso	 bastante	 útil	 nos	 subalgoritmos.	A	
maioria das linguagens de programação permite que se utilize duas formas de 
passagem	de	parâmetros:	por	cópia	e	por	referência.
• Na passagem de parâmetros por cópia, os dados são copiados para o subalgoritmo 
para	o	qual	estão	sendo	passados	e	utilizados	em	seu	escopo.	Isso	significa	que	
os dados passam para o subalgoritmo e podem ser alterados em seu interior, 
sem	que	os	dados	a	partir	dos	quais	foram	copiados	sejam	alterados.
• Na passagem de parâmetros por referência, o endereço da variável é levado 
para dentro do subalgoritmo, de forma que quaisquer alterações no conteúdo 
da	 variável	 são	 realizadas	 diretamente	 nela,	 com	 base	 no	 seu	 endereço.	 Isso	
significa	 que	 é	 necessária	muita	 atenção	 ao	utilizar	 passagem	de	parâmetros	
por	referência,	pois	ao	final	da	execução	do	subalgoritmo	as	variáveis	passadas	
poderão	ter	os	valores	alterados.
185
AUTOATIVIDADE
1 Elabore um algoritmo que leia 30 números inteiros utilizando um 
subalgoritmo que recebe como parâmetro se deve mostrar os números pares 
ou	ímpares.	Ao	final,	mostre	os	números	pares	e	depois	os	números	ímpares.
2	 Em	 uma	 competição	 de	 agilidade	 são	 cadastrados	 20	 cães.	 Construa	 um	
algoritmo	que	leia	o	nome,	a	raça	e	a	pontuação	do	cão.	Ao	final,	utilize	um	
subalgoritmo	para	mostrar	os	dados	em	ordem	crescente	de	pontuação.
186
187
REFERÊNCIAS
ARAÚJO,	Everton	Coimbra.	Algoritmos fundamentos e prática.	Florianópolis:	
VisualBooks,	2007.
BOYER,	Carl	B.	História da matemática.	São	Paulo:	Edgard	Blücher,	1996.
COMER,	Douglas	E.	Redes de computadores e Internet.	Porto	Alegre:	Bookman,	
2001.
FOROUZAN,	Behrouz;	MOSHARRAF,	Firouz.	Fundamentos da ciência da 
computação.	São	Paulo:	Cengage,	2011
FOROUZAN,	Behrouz;	MOSHARRAF,	Firouz.	Fundamentos da computação. 
São	Paulo:	Cengage	Learning,	2011.
KOCHANSKI,	Djone;	ANDRIETTI,	Odilon	Jose.	Algoritmos. Indaial:	Asselvi,	
2005.
KUROSE,	James	S.	Redes de computadores e a internet:	uma	nova	abordagem.	
São	Paulo:	Addison	Wesley,	2003.
MANZANO,	José	Augusto	N.	G;	OLIVEIRA,	Jayr	Figueiredo	de.	Algoritmos:	
lógica	para	desenvolvimento	de	programação	de	computadores.	São	Paulo:	Érica/
Saraiva,	2014.
MONTEIRO,	Mario	A.	Introdução à organização de computadores. Rio de 
Janeiro:	LTC,	2014.
SENGER,	Hermes.	Redes locais, metropolitanas e de longa distância.	Disponível	
em:	<www-usr.inf.ufsm.br/~candia/aulas/espec/Aula_2_LAN_MAN_WAN.pdf>.	
Acesso	em:	1	mar.	2016.
SOARES,	Luiz	Fernando	Gomes.	Redes de computadores:	das	LANs,	MANs	e	
WANs	às	redes	ATM.	Rio	de	Janeiro:	Campus,	1995.
TANENBAUM,	Andrew	S.	Organização estruturada de computadores.	São	
Paulo: Pearson,	2009.
TECHIWAREHOUSE.	Fifth Generation of Computers.	2011.	Disponível	
em:	<http://www.techiwarehouse.com/engine/0ee1987d/Fifth-Generation-of-
Computers>.	Acesso	em:	26	fev.	2016.
188
THE	HISTORY	OF	COMPUTERS. 2008.	Disponível	em:	<http://www.ptc.dcs.edu/
Moody/comphistory/comphistory_print.html>.	Acesso	em:	25	fev.	2016.
XAVIER,	Gley	Fabiano	Cardoso.	Lógica de Programação.	São	Paulo:	Senac,	2004.
189
ANOTAÇÕES
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________
____________________________________________________________

Continue navegando