Você está na página 1de 96

LICENCIATURA EM CINCIA

DA COMPUTAO

ALGORITMOS
EaD UNIVERSIDADE DO ESTADO DA BAHIA

PRESIDENTE DA REPBLICA
Dilma Roussef
MINISTRO DA EDUCAO
Alosio Mercadante
SISTEMA UNIVERSIDADE ABERTA DO BRASIL
PRESIDENTE DA CAPES
Jorge Guimares
DIRETOR DE EDUCAO A DISTNCIA DA CAPES
Joo Teatini

GOVERNO DO ESTADO DA BAHIA


GOVERNADOR
Jaques Wagner
VICE-GOVERNADOR
Otto Roberto Mendona de Alencar
SECRETRIO DA EDUCAO
Osvaldo Barreto Filho

UNIVERSIDADE DO ESTADO DA BAHIA - UNEB


REITOR
Lourisvaldo Valentim da Silva
VICE-REITORA
Adriana do Santos Marmori Lima
PR-REITOR DE ENSINO DE GRADUAO
Jos Bites de Carvalho
COORDENADOR UAB/UNEB
Silvar Ferreira Ribeiro
COORDENADOR UAB/UNEB ADJUNTO
Andr Magalhes

LICENCIATURA
LICENCIATURA EM
EM CINCIA
CINCIA DA
DA COMPUTAO
COMPUTAO
FABRIZIO LEANDRO FONSCA FISCINA
MARCIO VIEIRA BORGES

LICENCIATURA EM CINCIA
DA COMPUTAO

ALGORITMOS

EDUNEB
Salvador
UNEB 2012
Nenhuma parte deste material poder ser reproduzida, transmitida ou gravada, por qualquer meio eletrnico, mecnico, por fotocpia e outros,
sem a prvia autorizao, por escrito, da Coordenao UAB/UNEB.
Depsito Legal na Biblioteca Nacional
Impresso no Brasil 2012

EDITORA DA UNIVERSIDADE DO ESTADO DA BAHIA

DIRETORA
Maria Nadja Nunes Bittencourt
COORDENADOR EDITORIAL
Ricardo Baroud

COORDENAO UAB/UNEB
COLABORADORES REVISORA
SUPERVISO DE MATERIAL DIDTICO Mata Nogueira de Andrade

Andra Santos Tanure Preparao do original

Flvia Souza dos Santos Carla Cristiani Honorato de Souza

Nas Calasans Fagundes Pereira NORMALIZAO


Sheila Rangel
Samara Kelly Rodrigues Sampaio
DIAGRAMAO
PROJETO GRFICO e CRIAO
Joo Victor Souza Dourado
Joo Victor Souza Dourado
Carla Cristiani Honorato de Souza

O contedo deste Material Didtico de inteira responsabilidade do(s)/da(s) autores (as), por cuja criao assume(m) ampla e total responsabilidade
quanto a titularidade, originalidade do contedo intelectual produzido, uso de citaes de obras consultadas, referncias, imagens e outros elementos
que faam parte desta publicao.

FISCINA, Fabrizio Leandro Fonseca; BORGES, Marcio.


F531 Algoritmos: licenciatura em cincia da computao. / Fabrizio Lenadro Fonseca
Fiscina; Marcio Borges. Salvador: UNEB/GEAD, 2013.
96 p.

1. Algoritmos 2.Lgica de Programao 3. Linguagem Pascal I. Fabrizio Lenadro


Fonseca Fiscina II. Marcio Borges III. Ttulo. IV. Universidade Aberta do Brasil. V.
UNEB / GEAD

CDD: 658.05

Editora da Universidade do Estado da Bahia - EDUNEB.


Rua Silveira Martins, 2555 - Cabula
41150-000 - Salvador - BA
www.eduneb.uneb.br
editora@listas.uneb.br Tel. + 55 71 3117-5342
UNIVERSIDADE DO ESTADO DA BAHIA EaD

Caro (a) Cursista

Estamos comeando uma nova etapa de trabalho e para auxili-lo no desenvolvimento da sua aprendizagem
estruturamos este material didtico que atender ao Curso de Licenciatura na modalidade de Educao a Distncia
(EaD).
O componente curricular que agora lhe apresentamos foi preparado por profissionais habilitados, especialistas da
rea, pesquisadores, docentes que tiveram a preocupao em alinhar o conhecimento terico e prtico de maneira
contextualizada, fazendo uso de uma linguagem motivacional, capaz de aprofundar o conhecimento prvio dos
envolvidos com a disciplina em questo. Cabe salientar, porm, que esse no deve ser o nico material a ser
utilizado na disciplina, alm dele, o Ambiente Virtual de Aprendizagem (AVA), as atividades propostas pelo Professor
Formador e pelo Tutor, as atividades complementares, os horrios destinados aos estudos individuais, tudo isso
somado compe os estudos relacionados EaD.
importante tambm que vocs estejam sempre atentos s caixas de dilogos e cones especficos que aparecem
durante todo o texto apresentando informaes complementares ao contedo. A ideia mediar junto ao leitor, uma
forma de dialogar questes para o aprofundamento dos assuntos, a fim de que o mesmo se torne interlocutor ativo
desse material.

So objetivos dos cones em destaque:

VOC SABIA?
convida o leitor a conhecer outros aspectos daquele tema/
contedo. So curiosidades ou informaes relevantes que podem ser associadas discusso proposta.

SAIBA MAIS
apresenta notas, textos para aprofundamento de assuntos
diversos e desenvolvimento da argumentao, conceitos, fatos, biografias, enfim, elementos que o auxiliam a
compreender melhor o contedo abordado.

INDICAO DE LEITURA
neste campo, voc encontrar sugestes de livros, sites,
vdeos. A partir deles, voc poder aprofundar seu estudo, conhecer melhor determinadas perspectivas tericas
ou outros olhares e interpretaes sobre determinado tema.

SUGESTO DE ATIVIDADE
consiste num conjunto de atividades para voc realizar
autonomamente em seu processo de autoestudo. Estas atividades podem (ou no) ser aproveitadas pelo professor-
formador como instrumentos de avaliao, mas o objetivo principal o de provoc-lo, desafi-lo em seu processo
de autoaprendizagem.

Sua postura ser essencial para o aproveitamento completo desta disciplina. Contamos com seu empenho e
entusiasmo para juntos desenvolvermos uma prtica pedaggica significativa.

Setor de Material Didtico


Coordenao UAB/UNEB
EaD UNIVERSIDADE DO ESTADO DA BAHIA

REA DE AMBIENTAO

Dados Pessoais

Nome:
Telefones: E-mail:
Residncia:
Municpio/Polo do curso EaD:

Dados do Curso

Endereo de acesso sala de aula virtual:


Perodo de execuo desta disciplina: de_______ _____/ ______/______
Quem so os orientadores desta disciplina?

Categoria Responsvel por Nome E-mail


Prof. Autor Elaborar o mdulo
impresso

Prof. Formador Planejar e organizar a


sala vitual

Tutor a distncia Mediar os estudos no


ambiente

Tutor presencial Mediar os encontros


presenciais

Coord. de Polo Apoiar as aes do


curso no local

Identificao da Turma

Nome Onde encontrar Telefones E-mail


UNIVERSIDADE DO ESTADO DA BAHIA EaD

APRESENTAO

Estamos contentes em poder participar de sua formao e gostaramos de dar a voc boas-vindas
disciplina Algoritmos. Nosso objetivo com esta disciplina dialogar com voc sobre o estudo da lgica
computacional, conceituando o algoritmo, a anlise e a resoluo de problemas. A noo de algoritmo
muito importante para toda a computao, sendo que para sua criao, existem linhas mestras e estru-
turas bsicas, a partir das quais o aluno poder cria-lo. Mas a soluo completa depende em grande parte
do criador. Geralmente existem diversos algoritmos para resolver o mesmo problema, cada um segundo o
ponto de vista do seu criador.
Este material apoiar a disciplina, abordando os conceitos bsicos de algoritmo, anlise e resoluo
de problemas, a expresso de solues em termos de algoritmos estruturados, a aplicao das principais
estruturas para controle de fluxo da soluo, a aplicao de estruturas bsicas para estruturao da infor-
mao, o projeto de solues estruturadas e modularizadas para problemas simples.
Os principais objetivos da disciplina no capitulo um conceituar o algoritmo e suas formas de rep-
resentao mais conhecidas, alm de apresentar os conceitos de variveis e atribuio e assim contribuir
para desenvolver um conhecimento bsico geral que proporcionar base para a resoluo de problemas
atravs de solues estruturadas. Outro objetivo deste material fomentar no estudante a capacidade de
resoluo de problemas atravs das tcnicas de algoritmos, ampliando o conceito do funcionamento do
computador.
Ao longo deste mdulo, voc encontrar informaes que atendem a crescente demanda do mer-
cado de trabalho, que cada vez mais precisa de profissionais que tenham desenvolvido uma viso lgica e
tcnica da programao, fornecendo as principais estruturas e recursos na elaborao de um Algoritmo.
Para isso, a metodologia da disciplina deve contemplar tambm vdeo aulas, estudo de caso e re-
alizao de exerccios que estimulam o aprendizado e contribuem para o fortalecimento do conhecimento.
Alm disso, importante que o aluno utilize o ambiente virtual de aprendizagem para acompanhar as
atividades e a conduo da disciplina.
Gostaramos de convid-lo a participar deste dilogo conosco, esperando que os conhecimentos
aqui mediados sejam profcuos para o seu desenvolvimento profissional.

Prof. Msc. Fabrizio Leandro Fonsca Fiscina e Prof. Msc. Marcio Vieira Borges
EaD UNIVERSIDADE DO ESTADO DA BAHIA
UNIVERSIDADE DO ESTADO DA BAHIA

Anotaes
UNIVERSIDADE DO ESTADO DA BAHIA EaD

SUMARIO

1 INTRODUO LGICA DE PROGRAMAO....................................................................................................................13


1.1 Formas de representao de algoritmos........................................................................................................................... 16
1.1.1 Diagrama Chapin.................................................................................................................................................... 16
1.1.2 Fluxograma............................................................................................................................................................. 17
1.1.3 Portugus Estruturado............................................................................................................................................ 18
1.1.4 Representaes de um mesmo Algoritmo............................................................................................................... 19
2 CONSTANTES, VARIVEIS E ATRIBUIES....................................................................................................................... 21
2.1 Constantes...................................................................................................................................................................... 23
2.2 Variveis......................................................................................................................................................................... 23
2.3 Atribuio........................................................................................................................................................................ 23
2.4 Tipos de dados................................................................................................................................................................ 24
2.4.1 Inteiros................................................................................................................................................................... 24
2.4.2 Reais...................................................................................................................................................................... 24
2.4.3 Caracteres.............................................................................................................................................................. 24
2.4.4 Lgicos ou booleanos............................................................................................................................................. 24
2.5 Utilizando as variveis e constantes no algoritmo............................................................................................................. 24
2.6 Definindo uma varivel no algoritmo................................................................................................................................ 25
2.7 Conceito e utilidade de constantes................................................................................................................................... 25
3 INSTRUES BSICAS DO ESTUDO DO ALGORITMO........................................................................................................27
3.1 Instruo escrever........................................................................................................................................................... 29
3.2 Instruo ler.................................................................................................................................................................... 30
3.3 Horizontalizao.............................................................................................................................................................. 30

4 OPERADORES E EXPRESSES.......................................................................................................................................... 31
4.1 Operadores..................................................................................................................................................................... 33
4.1.1 Operadores de atribuio .......................................................................................................................................33
4.1.2 Operadores aritmticos........................................................................................................................................... 33
4.1.3 Operadores relacionais........................................................................................................................................... 34
4.1.4 Operadores lgicos................................................................................................................................................. 35
4.1.5 Operadores literais.................................................................................................................................................. 36
4.2 Expresses...................................................................................................................................................................... 36
4.2.1 Expresses aritmticas........................................................................................................................................... 36
4.2.2 Expresses lgicas................................................................................................................................................. 36
4.2.3 Expresses literais.................................................................................................................................................. 37
4.2.4 Avaliao de expresses......................................................................................................................................... 37
EaD UNIVERSIDADE DO ESTADO DA BAHIA

5 INSTRUES..................................................................................................................................................................... 39
5.1 Comandos de atribuio.................................................................................................................................................. 41
5.2 Comandos de sada de dados.......................................................................................................................................... 41
5.3 Comandos de entrada de dados....................................................................................................................................... 42
5.4 Interface com usurio...................................................................................................................................................... 42
5.5 Funes matemticas...................................................................................................................................................... 43

6 ESTRUTURAS DE CONTROLE............................................................................................................................................45
6.1 Comandos compostos.................................................................................................................................................... 47
6.2 Estrutura seqencial........................................................................................................................................................ 47
6.3 Estruturas de deciso...................................................................................................................................................... 47
6.3.1 Estruturas de deciso simples (se ... Ento)............................................................................................................ 48
6.3.2 Estruturas de deciso composta (se ... Ento ... Seno).......................................................................................... 48
6.3.3 Estruturas de deciso mltipla do tipo escolha (escolha...Caso...Seno).................................................................. 50
6.4 Estruturas de repetio.................................................................................................................................................... 51
6.4.1 Laos contados (para ... Faa)................................................................................................................................ 51
6.4.2 Laos condicionais................................................................................................................................................. 52
6.4.3 Laos condicionais com teste no incio (enquanto ... Faa)..................................................................................... 52
6.4.4 Laos condicionais com teste no final (repita ... At que)........................................................................................ 53
6.5 Estruturas de controle encadeadas ou aninhadas............................................................................................................. 54
7 ESTRUTURAS DE DADOS HOMOGNEAS..........................................................................................................................55
7.1 Matrizes de uma dimenso ou vetores............................................................................................................................. 57
7.1.1 Operaes bsicas com vetores............................................................................................................................. 57
7.1.2 Atribuio de uma matriz do tipo vetor.................................................................................................................... 57
7.1.3 Leitura de dados de uma matriz do tipo vetor.......................................................................................................... 57
7.1.4 Escrevendo dados de um vetor...............................................................................................................................58
7.1.5 Mtodo de bolha de classificao...........................................................................................................................59
7.2 Matrizes com mais de uma dimenso.............................................................................................................................. 60
7.2.1 Operaes bsicas com matrizes de duas dimenses............................................................................................. 60
7.2.2 Atribuio de uma matriz de duas dimenses.......................................................................................................... 61
7.2.3 Leitura de informaes de uma matriz de duas dimenses...................................................................................... 61
7.2.4 Escrita de dados de uma matriz de duas dimenses................................................................................................ 61
UNIVERSIDADE DO ESTADO DA BAHIA EaD

8 SUBALGORITMOS.............................................................................................................................................................63
8.1 Funcionamento do subalgoritmo...................................................................................................................................... 65
8.2 Elementos dos subalgoritmos.......................................................................................................................................... 66
8.3 Funes.......................................................................................................................................................................... 66
8.4 Procedimentos................................................................................................................................................................ 67
8.5 Variveis......................................................................................................................................................................... 68
8.6 Parmetros...................................................................................................................................................................... 69
8.7 Mecanismos de passagem de parmetros....................................................................................................................... 69
8.7.1 Passagem de parmetros por valor......................................................................................................................... 69
8.7.2 Passagem de parmetros por referncia.................................................................................................................. 70
8.8 Refinamentos sucessivos................................................................................................................................................ 70

9 LINGUAGEM DE PROGRAMAO PASCAL......................................................................................................................... 73


9.1 A origem do pascal......................................................................................................................................................... 75
9.2 Elementos da linguagem pascal....................................................................................................................................... 75
9.2.1 Elementos definidos pela linguagem pascal............................................................................................................. 75
9.2.2 Elementos definidos pelo usurio............................................................................................................................ 76
9.3 Tipos de dados no pascal................................................................................................................................................ 76
9.3.1 Tipos predefinidos pela linguagem na pascal........................................................................................................... 76
9.4 Constantes e variveis do pascal..................................................................................................................................... 77
9.4.1 Constante............................................................................................................................................................... 77
9.4.2 Variveis................................................................................................................................................................. 77
9.4.3 Operadores............................................................................................................................................................. 78
EaD UNIVERSIDADE DO ESTADO DA BAHIA

10 ESTRUTURA DO PROGRAMA DESENVOLVIDO EM PASCAL.............................................................................................79


10.1 Identificao do programa............................................................................................................................................. 81
10.2 Bloco de declaraes................................................................................................................................................... 81
10.3 Bloco de comandos....................................................................................................................................................... 81
10.4 Comandos.................................................................................................................................................................... 82
10.4.1 Read e readln..................................................................................................................................................... 82
10.4.2 Write e writeln....................................................................................................................................................... 82
10.4.3 Uses printer.......................................................................................................................................................... 83
10.4.4 Readkey............................................................................................................................................................... 83
10.4.5 Goto..................................................................................................................................................................... 83
10.4.6 Exit .....................................................................................................................................................................84
10.4.7 Runerror............................................................................................................................................................... 84
10.4.8 Clrscr................................................................................................................................................................... 84
10.4.9 GotoXY................................................................................................................................................................. 84
10.4.10 DELAY................................................................................................................................................................ 85
10.4.11 CHR................................................................................................................................................................... 85
10.4.12 ORD................................................................................................................................................................... 85
10.4.13 UPCASE............................................................................................................................................................. 85
10.5 Estruturas de controle................................................................................................................................................... 85
10.5.1 Seqncia de comandos....................................................................................................................................... 85
10.5.2 Comandos condicionais........................................................................................................................................ 86
10.5.3 Comandos de repetio........................................................................................................................................ 86

glossrio..........................................................................................................................................................................92

REFERNCIAS......................................................................................................................................................................93
UNIVERSIDADE DO ESTADO DA BAHIA
EaD

INTRODUO
LGICA DE
PROGRAMAO

CAPTULO 1
EaD UNIVERSIDADE DO ESTADO DA BAHIA
UNIVERSIDADE DO ESTADO DA BAHIA

Anotaes
UNIVERSIDADE DO ESTADO DA BAHIA EaD

CAPTULO 1 - INTRODUO Na rea da informtica, o algoritmo o projeto


LGICA DE PROGRAMAO do software, ou seja, antes de se fazer um software
na linguagem de programao desejada (Pascal, C,
No presente captulo, voc conhecer a Lgica Delphi, etc.) deve-se fazer o algoritmo do software.
de Programao e ter uma viso geral do processo Um programa, um algoritmo escrito atravs de
de desenvolvimento de programas (softwares), visto uma linguagem de programao numa forma com-
que o objetivo final ter um bom embasamento para a preensvel pelo computador, onde todas as aes a
prtica da programao de computadores. Sero apre- serem executadas devem ser especificadas de acordo
sentadas as etapas para o ciclo de vida do sistema, com as regras de sintaxe da linguagem escolhida.
as principais formas de representao dos algoritmos Cada Linguagem de Programao tem um con-
e os conceitos bsicos de constantes, variveis e junto de instrues, comandos, chamado de sintaxe,
atribuio. que deve ser seguida corretamente para que o progra-
Nosso objetivo desenvolver o que chamamos ma funcione. Este conjunto de palavras e regras que
de lgica de programao, quanto falamos em lgica definem o formato das sentenas vlidas chama-se de
de programao, usamos vrios termos como fluxog- sintaxe da linguagem.
rama, algoritmos, pseudocdigo, entre outros. Para o desenvolvimento de qualquer programa,
No momento em que uma determinada ativi- deve-se seguir algumas etapas, conhecidas como
dade passa a ser realizada por mquinas, inclusive Ciclo de Vida do Sistema:
computadores, ao invs de ser realizada pelo homem,
estamos realizando um processo de automao. 1) Estudo da Viabilidade (Estudos Iniciais);
Para que a automao de uma determinada ativ- 2) Anlise detalhada do sistema (Projeto Lgico);
idade tenha xito, fundamental que o equipamento 3) Projeto preliminar do sistema (Projeto Fsico);
que a ir realizar o mesmo tenha condies de desem- 4) Projeto detalhado do sistema (Algoritmos);
penhar todas as etapas que o envolve com preciso
5) Implementao ou Codificao do sistema (na
e no menor espao de tempo possvel, garantindo
Linguagem de Programao escolhida);
tambm a repetio do processo, e tais instrues
devero ser repassadas a esta mquina. 6) Testes do sistema; e
A esta especificao dos passos a serem 7) Instalao e Manuteno do sistema.
seguidos e suas regras dado o nome de algoritmo, No desenvolvimento de um sistema, quanto
ou seja, para que o computador possa realizar um mais tarde um erro detectado, mais capital e tempo
determinado trabalho, ser necessrio que este seja se gasta para repar-lo. Assim, a responsabilidade do
detalhado passo a passo, atravs de uma forma com- desenvolvedor maior na criao dos algoritmos do
preensvel pela mquina para ser empregado no que que na sua prpria implantao, pois quando bem pro-
chamamos de programa. jetados, no se perde tempo tendo que refaz-los, as-
Para representar um algoritmo, so utilizadas segurando assim uma implantao eficaz e eficiente.
diversas tcnicas e cabe ao profissional, adotar aquela Na literatura em informtica so encontradas
que melhor se adapte as suas necessidades. vrias formas de representao das etapas que com-
Existem algoritmos que apresentam os passos pem o ciclo de vida de um sistema. Essas formas de
apenas a nvel lgico, ou seja, sem se preocupar com representao podem variar tanto na quantidade de
detalhes de uma linguagem de programao espec- etapas quanto nas atividades a serem realizadas em
fica, e outros que tratam os passos a serem seguidos cada fase. Portanto, no existe um modelo ideal.
com maior riqueza de detalhes.

LICENCIATURA EM CINCIA DA COMPUTAO 15


EaD UNIVERSIDADE DO ESTADO DA BAHIA

Um algoritmo pode ser definido como um con- Linguagem de programao: Forma utilizada por
junto de regras (instrues), bem especificadas, para alguns programadores, que pulam a etapa do
soluo de um determinado problema. Conforme o projeto do programa (algoritmo) e passam direto
dicionrio Michaelis, o conceito de algoritmo a uti- para a programao em si.
lizao de regras para definir ou executar uma tarefa Linguagem estruturada (Portugol): Forma de
especfica ou para resolver um problema especfico. escrever algoritmos que muito se assemelha a
(MICHAELIS, 1998, p. 21). forma na qual os programas so escritos nas
A partir desses conceitos de algoritmos que linguagens de programao (Pascal, C, Java,
bastante amplo, pode-se perceber que a palavra algo- etc.).
ritmo no um termo computacional, ou seja, no se Fluxograma: Atravs de representaes grficas:
refere apenas rea de informtica. so bastante recomendveis, j que um diagra-
Para que um problema no computador possa ma ou fluxograma muitas vezes substitui, com
ser resolvido, necessrio que seja primeiro encon- vantagem, vrias palavras. A representao
trado uma maneira correta e clara de descrever este grfica de algoritmos, ou seja, das instrues
problema. preciso que encontremos uma seqncia e/ou mdulos do processamento, tambm
de passos que permitam que o problema possa ser conhecida como diagrama de bloco.
resolvido de maneira automtica e repetitiva. Esta claro que cada uma dessas formas de repre-
seqncia de passos chamada de algoritmo. sentar um algoritmo, tem suas vantagens e desvan-
Uma das formas mais eficazes de aprender tagens, cabe ao programador escolher a forma que
algoritmos atravs de muitos exerccios, construindo melhor lhe convir. Neste mdulo sero apresentadas
e testando os algoritmos. trs formas de representao de algoritmos, so elas:

SUGESTO DE ATIVIDADE Diagrama de Chapin ou Diagrama de Nassi-


-Shneiderman;
Fluxograma (Diagrama de Fluxo);
Os exerccios so importantssimos para o apredizado dos algoritmos.
atravs da prtica que as solues vo sendo assimiladas e melhor Portugus Estruturado (Pseudocdigo, Portugol
conhecidas. Portanto a cada novo contedo voc deve realizar as ou Pseudolinguagem).
atividades propostas para uma melhor fixao dos conhecimentos.

1. O que so algoritmos? 1.1.1 Diagrama Chapin


2. Quais as etapas mais conhecidas no Ciclo de Vida de um Sistema?
3. Pesquise sobre as linguagens de programao mais utilizadas no
mercado atualmente. Os Diagramas Chapin, tambm conhecidos
4. O que a sintaxe de uma linguagem de programao? D
exemplos. como Diagramas Nassi-Shneiderman, surgiram nos
anos 70 como uma maneira de ajudar nos esforos
da abordagem de programao estruturada. Um tpico
1.1 FORMAS DE REPRESENTAO DE diagrama Chapin apresentado na Figura 1 a seguir.
ALGORITMOS Como voc pode ver, o diagrama fcil de ler e de en-
tender, cada desenho representa uma ao/instruo
Os algoritmos podem ser representados de diferente.
vrias formas, como por exemplo:
Linguagem Natural: Atravs de uma lngua
(portugus, ingls, etc.): forma utilizada nos
manuais de instrues, nas receitas culinrias,
bulas de medicamentos, manual de operao de
um determinado eletrodomstico, constantes do
manual do operador, etc.

16 LICENCIATURA EM CINCIA DA COMPUTAO


UNIVERSIDADE DO ESTADO DA BAHIA EaD

Figura 1: Diagrama de Chapin


Fonte: PREUSS (2012).

A idia deste diagrama representar as aes de um
algoritmo dentro de um nico retngulo, subdividindo-
o em retngulos menores, que representam os difer-
entes blocos de seqncia de aes do algoritmo.

SAIBA MAIS

O primeiro artigo elaborado pelos autores do Diagrama de Chapin,


foi escrito em 1973, e pode ser acessado na rede de computadores
mundial. O diagrama de Chapin foi criado por Ned Chapin a partir
de trabalhos de Nassi-Shneiderman, os quais resolveram substituir
o fluxograma tradicional por um diagrama que apresenta uma viso
hierrquica e estruturada da lgica do programa. A grande vantagem
de usar este tipo de diagrama a representao das estruturas que
Figura 2: Diagrama de Fluxo
tem um ponto de entrada e um ponto de sada e so compostas pelas
Fonte : MULLER( 2012)
estruturas bsicas de controle de seqncia, seleo e repartio.
Existem atualmente vrios padres para definir
1.1.2 Fluxograma as formas geomtricas a serem utilizadas para as
Os Fluxogramas tambm conhecidos como diversas instrues (passos) a serem seguidos pelo
Diagramas de Fluxo, so uma representao grfica sistema. A seguir, na figura 3, apresentado alguns
que utilizam formas geomtricas padronizadas ligadas smbolos que so utilizados no fluxograma:
por setas de fluxo, para indicar as diversas instrues
e decises que devem ser as mais seguidas para
resolver o problema abordado.
Eles permitem visualizar o fluxo e as etapas de
processamento de dados possveis e, dentro destas,
os passos para a resoluo do problema. Na Figura 2
apresentado um exemplo de fluxograma:

LICENCIATURA EM CINCIA DA COMPUTAO 17


EaD UNIVERSIDADE DO ESTADO DA BAHIA

uma forma especial de linguagem bem mais restrita


que a Lngua Portuguesa e com significados bem defi-
nidos para todos os termos utilizados nas instrues.
O Portugus Estruturado uma simplificao extrema
da lngua portuguesa, limitada a poucas palavras e
estruturas que tm significado, pois deve-se seguir um
padro. Emprega uma linguagem intermediria entre a
linguagem natural e uma linguagem de programao,
para descrever os algoritmos.
A sintaxe do Portugus Estruturado no precisa
ser seguida to rigorosamente quanto a sintaxe de
Figura 3: Smbolos utilizados no fluxograma uma linguagem de programao, j que o algoritmo
Fonte: MULLER (2012) no ser executado como um programa.
Vamos a seguir, exibir um fluxograma que teria O Portugus Estruturado uma linguagem
o objetivo de calcular o valor dirio de um salrio bastante simplificada, entretanto, ela possui todos os
recebido mensalmente. Seguindo uma lgica simples, elementos bsicos e uma estrutura semelhante de
teramos que dividir o valor do salrio, neste caso R$ uma linguagem de programao de computadores. No
1.200,00, por 30 (nmero de dias de um ms). uso do Portugus Estruturado para a soluo de um
Observe como ficaria este fluxograma: problema permitido uma menor rigidez que quando
se utiliza uma linguagem de programao, pois a
sintaxe errada no influenciar na soluo. A seguir
um exemplo de um programa representado atravs do
Portugol.

Declaraes
inteiro IDADE;
Inicio
escreva(Informe sua idade: );
leia (IDADE);
se (IDADE < 16) ento
Figura 4: Fluxograma para calcular mdia diria de um salrio escreva (Voc no pode votar);
Fonte: MULLER(2012) seno
Observe que da forma que o mesmo foi ex- escreva (Voc pode votar);
posto, existe um procedimento lgico para o clculo fim se;
proposto, bem como, poderemos repetir este procedi- Fim
mento por quantas vezes for necessrio, que o resul- O Portugol uma forma de representar um algo-
tado sempre ser correto e preciso. ritmo mais detalhada que o fluxograma, se assemel-
Posteriormente, iremos criar fluxogramas mais hando muito s linhas de cdigo de uma linguagem
complexos, expressando situaes reais de proces- de programao, onde temos que definir as variveis,
samento, este teve apenas o objetivo de lhe dar uma rotinas, sub-rotinas, etc. Ao invs de smbolos gr-
noo simples e objetiva de fluxogramas. ficos, utilizamos comandos ou ordens para solicitar
uma determinada tarefa/rotina. Sua sintaxe bsica :
1.1.3 Portugus Estruturado
Algoritmo <nome do algoritmo>
O Portugus Estruturado, tambm conhecido <declarao das variveis>
como Portugol, Pseudocdigo ou Pseudolinguagem Inicio da rotina

18 LICENCIATURA EM CINCIA DA COMPUTAO


UNIVERSIDADE DO ESTADO DA BAHIA EaD

<instrues a serem seguidas> Exemplo 02: Fluxograma Convencional


Fim da rotina
Vamos utilizar o mesmo exemplo e objetivo ex-
posto na exemplificao do fluxograma, empregando o
mesmo no Portugol. ilustrao
Algoritmo VALOR_DIA
Var SALARIO, MEDIA : real
Inicio
SALARIO 1.200,00
MEDIA SALARIO/30
Envie para impressora MEDIA
Fim

No exemplo acima, a linha que contm a


definio VAR tem o objetivo de declarar as variveis
que sero usadas e o tipo REAL representa uma var-
ivel que pode assumir valores numricos com parte
decimal. Mais adiante, iremos estudar os principais
tipos de variveis.

1.1.4 Representaes de um mesmo Algoritmo

Para uma completa compreenso, seguem Figura 5: Representao do algoritmo de clculo da mdia de um aluno
sob a forma de um fluxograma.
abaixo exemplos onde vamos mostrar a representao Fonte: MULLER (2012)
de um mesmo algoritmo de formas distintas.
A funo do algoritmo calcular a mdia de um aluno Exemplo 03: Diagrama de Chapin
que realizou duas avaliaes e que para ser aprovado
deve obter a mdia igual ou superior a 7,0.

Exemplo 01: Representao na forma da Linguagem


Natural
Obter as notas da primeira e da
segunda prova
Calcular a mdia aritmtica entre
as duas
Se a mdia for maior ou igual a 7,
o aluno foi aprovado, seno ele foi
reprovado.
Esta representao pouco usada na prtica
porque o uso de linguagem natural muitas vezes d
oportunidade a ms interpretaes, ambigidades e Figura 6: Diagrama de Chapin para o algoritmo do clculo da mdia de
imprecises. um aluno.
Fonte: MULLER (2012)

LICENCIATURA EM CINCIA DA COMPUTAO 19


EaD UNIVERSIDADE DO ESTADO DA BAHIA

Exemplo 04: Portugus Estruturado/ Pseudocdigo /


Pseudolinguagem INDICAO DE LEITURA
A seguir, apresentada a representao do
algoritmo de clculo da mdia de um aluno na forma Guimares, Angelo de Moura. Algoritmos e Estruturas de Dados. Rio
de um pseudocdigo. de Janeiro: Ed. LTC, 1985.

Algoritmo Mdia
Var NOTA1, NOTA2, MEDIA
Incio
Leia NOTA1, NOTA2
MDIA (NOTA1+NOTA2)/2
Se MEDIA >= 7 Ento
Escreva Aprovado
Seno
Escreva Reprovado
Fim.

SUGESTO DE ATIVIDADE

1. Mostre a Representao do algoritmo a seguir na forma da


Linguagem Natural, na forma de Fluxograma Convencional, no
diagrama de Chapin e no Portugus Estruturado. Escreva um
algoritmo que leia trs valores e armazene nas variveis IDADE1,
IDADE2 e IDADE3, depois calcule a mdia das idades e armazene na
varivel IDADE_MEDIA em seguida informe se a mdia das idades
maior ou menor que 20.

2. No algoritmo abaixo possvel perceber a representao em


Portugol. Mostre como ficaria a sua representao na forma da
Linguagem Natural, na forma do Fluxograma Convencional e no
diagrama de Chapin.

Declaraes
inteiro IDADE;
Inicio
escreva(Informe sua idade: );
leia(IDADE);
se (IDADE < 16) ento
escreva (Voc no pode votar);
seno
escreva(Voc pode votar);
fim se;
Fim

20 LICENCIATURA EM CINCIA DA COMPUTAO


UNIVERSIDADE DO ESTADO DA BAHIA
EaD

CONSTANTES, VARIVEIS
E ATRIBUIES

CAPTULO 2
EaD UNIVERSIDADE DO ESTADO DA BAHIA
UNIVERSIDADE DO ESTADO DA BAHIA

Anotaes
UNIVERSIDADE DO ESTADO DA BAHIA EaD

CAPTULO 2 - CONSTANTES, VA- seguida, o valor alterado para receber um desconto de


RIVEIS E ATRIBUIES 50%, ficando assim com um novo valor, que informado
no final.
Na construo de um algoritmo, alguns conceitos Declaraes
so fundamentais, pois constituem a base para todo o inteiro PRECO;
desenvolvimento do algoritmo e para a posterior soluo Inicio
do problema. Neste captulo so apresentados e explica- Escreva (Informe o preo: );
dos trs conceitos fundamentais para a construo de Leia (PRECO);
algoritmos, so eles: Constante, Varivel e Atribuio. PRECO PRECO*50%
Escreva (O preo com desconto :,PRECO)
2.1 CONSTANTES Fim

As constantes so as informaes que no variam 2.3 ATRIBUIO


com o tempo, ou seja, permanecem sempre com o
mesmo contedo, um valor fixo. Como exemplos de A atribuio uma notao utilizada para atribuir
constantes temos: nmeros, letras, palavras, etc. um valor a uma varivel, ou seja, para armazenar um
determinado contedo em uma varivel. A operao de
2.2 VARIVEIS atribuio, normalmente, representada por uma seta
apontando para a esquerda, mas existem outros smbo-
Uma varivel uma rea da memria do computa- los para representar a atribuio, depende da forma de
dor que reservada para guardar informaes. As var- representao do algoritmo.
iveis podem conter valores diferentes a cada instante de Algumas possibilidades de atribuio so as
tempo, ou seja, seu contedo pode variar de acordo com relaes:
as instrues do algoritmo. Compreender o conceito de a) Varivel recebe valor armazenado em constante, ex:
varivel fundamental para elaborao de algoritmos e PRECO 150
conseqentemente de programas.
b) Varivel recebe valor armazenado em varivel, ex:
As variveis so referenciadas atravs de um
PRECO VALOR
nome criado por voc durante o desenvolvimento do
algoritmo. Exemplos de nomes de variveis: nome, c) Varivel recebe valor calculado em uma expresso,
idade, nota, media, etc. O contedo de uma varivel ex: TOTAL PRECO - DESC
pode ser alterado, consultado ou apagado quantas vezes Nas atribuies, a parte que ir receber um
forem necessrias durante o algoritmo. Mas, ao alterar o valor (localizada na esquerda, antes da seta) no pode
contedo da varivel, a informao armazenada anteri- haver nada alm da varivel, ou seja, s a varivel
ormente perdida, ou seja, sempre uma informao que recebe algum contedo, no possvel ter uma
substituda pela informao mais recente. expresso, por exemplo, ou uma constante, recebendo
Uma varivel armazena um contedo de cada vez, algum valor. Veja o exemplo a seguir:
assim, simplificando, podemos dizer que uma varivel
como uma caixa com um rtulo colado nela, que em a) MEDIA (NOTA1 + NOTA2) /2, CORRETO
um dado momento guarda um determinado objeto. O b) TOTAL VALOR1 + VALOR2, CORRE-
contedo desta caixa no algo permanente ele pode ser TO
alterado diversas vezes. c) PRECO CUSTO LUCRO, ERRADO
No exemplo a seguir, temos uma varivel chamada d) LARGURA * ALTURA TAXA, ERRADO
de PRECO, que inicialmente recebe o valor 15,00, em

LICENCIATURA EM CINCIA DA COMPUTAO 23


EaD UNIVERSIDADE DO ESTADO DA BAHIA

2.4 TIPOS DE DADOS 2.5 UTILIZANDO AS VARIVEIS E


CONSTANTES NO ALGORITMO
Todo o trabalho realizado por um computador
baseado na manipulao das informaes contidas em Entender como as variveis e as constantes so
sua memria. Estas informaes podem ser classifica- aplicadas o primeiro passo para a elaborao corretas
das em dois tipos: dos algoritmos. No processo de armazenamento de
As instrues, que comandam o funcionamento da dados podemos supor que a memria de um computa-
mquina e determinam a maneira como devem ser dor um grande arquivo com vrias gavetas, onde cada
tratados os dados. gaveta pode armazenar apenas um nico valor (seja ele
Os dados propriamente ditos, que correspondem numrico, caractere ou lgico). Sabendo que o local
poro das informaes a serem processadas onde a informao vai ser armazenada um arquivo
pelo computador. com diversas gavetas, necessrio identificar com um
A classificao apresentada a seguir no se aplica nome a gaveta que se pretende utilizar. Desta forma o
a nenhuma linguagem de programao especfica; pelo valor armazenado pode ser utilizado a qualquer momen-
contrrio, ela sintetiza os padres utilizados na maioria to. Outra observao que dependendo da informao
dos algoritmos e linguagens de programao. a ser armazenada, o tipo de gaveta deve ser adequado
tanto para o formato da informao quanto para o ta-
2.4.1 Inteiros
manho.
Como visto anteriormente, informaes corre-
Os tipos inteiros compreendem os dados numri- spondentes a diversos tipos de dados so armazenadas
cos positivos ou negativos. Excluindo-se destes qualquer nas memrias dos computadores. Para acessar individ-
nmero fracionrio. Como exemplo deste tipo de dado, ualmente cada uma destas informaes, em princpio,
tem-se os valores: 46, 0, -120, 256 dentre outros. seria necessrio saber o tipo de dado desta informao
(ou seja, o nmero de bytes de memria por ela ocu-
2.4.2 Reais
pados) e a posio inicial deste conjunto de bytes na
memria.
Os tipos reais compreendem os dados numricos
Percebe-se que esta sistemtica de acesso a
positivos e negativos e nmeros fracionrios. Como
informaes na memria bastante ilegvel e difcil de se
exemplo deste tipo de dado, tem-se os valores: 46, 0,
trabalhar. Para contornar esta situao criou-se o con-
-120, 1.34, -12.345, 256 dentre outros.
ceito de varivel, que uma entidade destinada a guardar
2.4.3 Caracteres uma informao. Basicamente, uma varivel possui trs
atributos:
So caracterizados como tipos caracteres, as a) Um nome;
seqncias contendo letras, nmeros e smbolos espe- b) Um tipo de dado associado mesma; e
ciais. Uma seqncia de caracteres deve ser indicada c) Uma informao por ela guardada.
entre aspas (). Este tipo de dado tambm conhe- Assim, toda varivel possui um nome que tem a
cido como alfanumrico, string, literal ou cadeia. Como
funo de diferenci-la das demais. Cada linguagem de
exemplo deste tipo de dado, tem-se os valores: Nome,
programao estabelece suas prprias regras de for-
Praa Igaratinga, 120, Apto 1, Telefone 3221-1018,
mao de nomes de variveis.
A mdia das notas foi, , 150 dentre outros.
Adotaremos para os algoritmos, as seguintes
regras:
2.4.4 Lgicos ou Booleanos a) Um nome de varivel deve necessariamente comear
com uma letra;
So caracterizados como tipos lgicos os dados
b) Um nome de varivel no deve conter nenhum sm-
com valor verdadeiro e falso, sendo que este tipo de bolo especial, exceto a sublinha ( _ ) e nenhum
dado poder representar apenas um dos dois valores. espao em branco;
Como exemplo deste tipo, tem-se os valores: sexo, pos-
c) Um nome de varivel no poder ser uma palavra
sui_filhos, aposentado, dentre outros. reservada a uma instruo de programa ou co-

24 LICENCIATURA EM CINCIA DA COMPUTAO


UNIVERSIDADE DO ESTADO DA BAHIA EaD

mando. no decorrer do programa. Nos algoritmos usaremos


A seguir possvel perceber os exemplos de a definio de variveis por assemelhar-se com as
nomes de variveis utilizados de forma correta e errada: principais linguagens de programao como Pascal e
Media correto; C.
1MES errado (no comeou Nos algoritmos, todas as variveis utilizadas
por uma letra) sero definidas no incio do mesmo, por meio de um
comando de uma das seguintes formas:
Ano1 correto
VAR <nome_da_varivel> : <tipo_da_varivel>
O menino errado (contm o caractere ou
branco) VAR <lista_de_variveis> : <tipo_das_variveis>
SAL/HORA errado (contm o caractere /) As regras para esta definio podem ser enten-
SAL_HORA correto didas da seguinte maneira:
_DESCONTO errado (no comeou a) A palavra-chave VAR dever estar presente sempre
com uma letra) e ser utilizada uma nica vez na definio de
um conjunto de uma ou mais variveis;
Obviamente, interessante adotar nomes de
variveis relacionados s funes que sero exercidas b) Em uma mesma linha podero ser definidas uma
pelas mesmas dentro de um programa. Ou seja, na hora ou mais variveis do mesmo tipo; neste caso,
de definir o nome da varivel, deve-se tentar escolher deve-se separar os nomes das mesmas por
um que realmente esteja relacionado com o contedo vrgulas;
que ficar armazenado naquela varivel. Assim se facilita c) Variveis de tipos diferentes devem ser declaradas
o entendimento e lgica deste algoritmo. em linhas diferentes.
Outro atributo caracterstico de uma varivel o Exemplos de definio de variveis:
tipo de dado que ela pode armazenar. Este atributo define VAR
a natureza das informaes contidas na varivel. Por nome: caracter[40]
ltimo, h o atributo informao, que nada mais do que numero_de_filhos: inteiro
a informao til contida na varivel. custo: real
importante saber que, uma vez definidos, os tem_filhos: lgico
atributos nome e tipo de dado de uma varivel, estes No exemplo anterior foram declaradas quatro
no podem ser alterados e assim permanecem durante variveis:
toda a sua existncia, desde que o programa no seja A varivel nome, capaz de armazenar dados ca-
modificado. Por outro lado, o atributo informao est ractere de comprimento 40 (40 caracteres), a
constantemente sujeito a mudanas de acordo com o exemplo: Fabrizio Leandro Fonsca Fiscina;
fluxo de execuo do algoritmo. A varivel numero_de_filhos, capaz de armazenar
O conceito de varivel foi criado para facilitar a um nmero inteiro, a exemplo 3;
vida dos desenvolvedores, permitindo acessar infor-
a varivel custo, capaz de armazenar um nmero
maes na memria dos computadores por meio de um
real, a exemplo 13.987,45;
nome, em vez do endereo de uma clula de memria.
a varivel tem_filhos, capaz de armazenar uma
2.6 DEFININDO UMA VARIVEL NO informao lgica, a exemplo SIM.
ALGORITMO
2.7 CONCEITO E UTILIDADE DE
Todas as variveis utilizadas em algoritmos CONSTANTES
devem ser definidas antes de serem utilizadas. Isto se
faz necessrio para permitir que o compilador reserve Uma constante por definio tudo aquilo que
um espao na memria para as mesmas. fixo ou estvel. Existiro vrios momentos em que este
Existem algumas linguagens de programao conceito dever estar em uso, quando desenvolver-
(como BASIC e FORTRAN) que dispensam esta mos programas.
definio, uma vez que o espao na memria reser- Geralmente bastante comum definirmos uma
vado medida que novas variveis so encontradas constante no incio do algoritmo, e a utilizarmos no

LICENCIATURA EM CINCIA DA COMPUTAO 25


EaD UNIVERSIDADE DO ESTADO DA BAHIA

decorrer do mesmo, com o objetivo de facilitar o


entendimento ou ento para poupar tempo no caso de SUGESTO DE ATIVIDADE
ter que alterar o seu valor, de modo que alterando uma
nica vez a declarao da constante, todos os coman- 1. Informe se os nomes das variveis utilizados a seguir podem ser
dos e expresses que a utilizam so automaticamente utilizados ou no:
atualizados.
Valor ( )
Nos algoritmos, todas as constantes utilizadas 2NOTA ( )
sero definidas no incio do mesmo, por meio de um MES1 ( )
CASA ( )
comando da seguinte forma: TEMPO ( )
SALADRIO ( )
CONST <nome_da_constante> = <valor> ALTURA&HOMENS ( )
ALTURA_MULHER ( )
Exemplo de definio de constantes: 1234 ( )
CONST pi = 3.14159
2. Qual o valor de X, Y e Z, sabendo que T 5 e A 10.
nome_da_empresa = Edutec Consul-
toria Ltda X T + A + 20
numero_de_times = 30 YA+A5
ZT+X+Y
Assim, o conceito, definio e utilizao das
constantes e variveis constituem na base inicial para 3. Abaixo, identifique se a varivel deve ser declarada como inteira,
real, lgica ou caracter.
o desenvolvimento de algoritmos precisos e eficientes.
VAR
endereo:
numero_de_netos:
preo: real
tem_carro:
desconto:
media:
telefone:
cidade:

4. No exemplo a seguir temos uma varivel chamada de PRECO, que


inicialmente recebe o valor 30,00, em seguida o valor alterado para
receber um desconto de 50%, ficando assim com um novo valor, que
informado no final. Entretanto, existe um erro no algoritmo. Indique
o erro e a soluo para equacionar este problema

Declaraes
inteiro PRECO;
Inicio
escreva(Informe o preo: );
leia(PRECO);
PRECO VALOR*50%
escreva(O preo com desconto :,PRECO)
Fim

INDICAO DE LEITURA

Forbellone, Andr. Lgica de Programao - A Construo de


Algoritmos e Estruturas de Dados. So Paulo: Ed. Makron Books,
1993.

26 LICENCIATURA EM CINCIA DA COMPUTAO


UNIVERSIDADE DO ESTADO DA BAHIA
EaD

INSTRUES BSICAS DO
ESTUDO DO ALGORITMO

CAPTULO 3
EaD UNIVERSIDADE DO ESTADO DA BAHIA
UNIVERSIDADE DO ESTADO DA BAHIA

Anotaes
UNIVERSIDADE DO ESTADO DA BAHIA EaD

CAPTULO 3 - INSTRUES B- A seguir, armazenar a soma do valor de X com o de Y


SICAS DO ESTUDO DO ALGORIT- em uma varivel Z. Escrever na tela o valor armazena-
do em X, em Y e em Z.
MO
X 30
Neste capitulo, para que possamos iniciar o
entendimento de alguns exemplos relacionados aos Y 10
algoritmos, voc encontrar informaes sobre as Z X+Y
instrues bsicas do estudo do algoritmo (escreva e Escreva (X)
leia), posteriormente sero apresentadas as instrues
de forma mais especficas. Tambm ser apresentada Escreva (X)
a escrita linear (horizontalizao) indispensvel na Escreva (X)
construo dos algoritmos.
Escreva um algoritmo para armazenar o valor 12
em uma varivel CAP e o valor 8 em uma varivel VAL.
3.1 INSTRUO ESCREVER
A seguir, armazenar a soma de CAP com VAL em uma
varivel TOT e a subtrao de CAP com VAL em uma
Conhecer as instrues algo importante para
varivel DOL. Escrever o valor de CAP, VAL, TOT e DOL
quem deseja realizar bons algoritmos. Basicamente
e tambm escrever a mensagem Fim do Algoritmo.
existem duas instrues principais em algoritmos que
so: Escrever e Ler. Neste captulo veremos como
funciona a instruo Escreva. CAP 12
Na construo de algoritmos teremos palavras VAL 8
que determinaremos reservada, ou seja, toda palavra TOT CAP + VAL
considerada reservada no mais poder ser utilizada DOL CAP VAL
como nome de varivel, de modo que toda a vez que
Escreva CAP, VAL, TOT, DOL
for encontrada em algoritmos ser identificada como
tal. Neste caso, a palavra Escreva daqui por diante Escreva Fim do Algoritmo
ser considerada uma palavra reservada e determinar
um comando de sada de dados. importante ressaltar que quando queremos
A instruo Escreva utilizada quando deseja- escrever alguma mensagem na tela (letra, frase,
se mostrar informaes na tela do computador, nmero etc.) literalmente, devemos utilizar aspas para
sendo denominada de comando de sada de dados. identificar o que ser escrito, pois o que estiver entre
Para simplificar, usa-se a instruo Escreva, quando aspas no algoritmo, ser exatamente o que aparecer
necessita-se mostrar algum dado para o usurio do na tela do computador. Diferente de quando queremos
algoritmo e posteriormente no programa). escrever o contedo de uma varivel, pois neste caso
Tanto no Diagrama de Chapin quanto em Por- no utiliza-se aspas.
tugus Estruturado representa-se a sada de dados
atravs da palavra Escreva. J em Fluxogramas a rep- Veja como fica o uso das aspas:
resentao da sada de dados feita atravs de uma IDADE1 20
forma geomtrica especfica.
IDADE2 30
Alguns exemplos da instruo Escreva:
Escreva um algoritmo para armazenar o valor MEDIA (IDADE1+INDADE2)
30 em uma varivel X e o valor 10 em uma varivel Y. Escreva A mdia geral :,MEDIA

LICENCIATURA EM CINCIA DA COMPUTAO 29


EaD UNIVERSIDADE DO ESTADO DA BAHIA

Neste caso, a frase que est entre as aspas A Algoritmo Mdia


mdia : se mantm constante e o valor armazenado Var NOTA1, NOTA2, MEDIA
na varivel MDIA ser apresentado. Assim ser ex- Incio
ibida a seguinte informao na tela do computador: A Leia NOTA1,
mdia geral 15. Leia NOTA2,
MDIA (NOTA1+NOTA2)/2
Se MEDIA >= 7 Ento
SUGESTO DE ATIVIDADE Escreva Aprovado
Seno
1. Desenvolva um algoritmo onde a varivel A receba o valor 30, a Escreva Reprovado
varivel B receba o valor 70 e a varivel C receba o valor 100. Em Fim.
seguida calcule e armazene na varivel D a soma das variveis A, B,
C e na varivel E a multiplicao de A por B. escreva o resultado
na tela. Observamos que tanto o valor informado para
2. Escreva um algoritmo que armazene o valor 3 na varivel F e o valor
a NOTA1 como para a NOTA2 so valores externos,
10 na varivel G. A seguir, armazenar a multiplicao do valor de F diferentes de uma constante. So valores informados
com o de G em uma varivel H. Escrever na tela o valor armazenado pelo usurio e vo variar conforme o usurio. Ao con-
em F, em G e em H.
trrio da varivel MEDIA que receber um valor calcu-
lado e que no sofre nenhuma interferncia externa.

3.2 INSTRUO LER 3.3 HORIZONTALIZAO

Como vimos anteriormente, a Instruo Es- Para o desenvolvimento de algoritmos que pos-
creva, existem basicamente duas instrues principais suam clculos matemticos, as expresses aritmti-
em algoritmos (e em programao em geral) que so: cas devem estar horizontalizadas, ou seja, linearizadas
Escrever e Ler. No captulo 4, foi apresentada a in- e tambm no devemos esquecer de utilizar os opera-
struo Escreva, agora, neste captulo, veremos como dores corretamente. No exemplo a seguir, apresenta-
funciona a instruo Leia. do um exemplo de uma expresso aritmtica na forma
A instruo Leia utilizada quando deseja-se tradicional e como deve ser utilizada nos algoritmos e
em programao em geral (linearmente).
obter informaes do teclado do computador, ou seja,
Na matemtica tradicional a representao
um comando de entrada de dados. Para simplificar,
usa-se a instruo Leia, quando necessita-se que o
MDIA = NOTA1+NOTA2
usurio do algoritmo digite algum dado (e posterior-
2
mente do programa).
No algoritmo a representao MDIA (NOTA1+NOTA2)/2
VOC SABIA?
As expresses matemticas na forma horizon-
Tanto no Diagrama de Chapin quanto em Portugus Estruturado
talizada no so apenas utilizadas em algoritmos, mas
representa-se a entrada de dados atravs da palavra Leia (ou ler). J tambm na maioria das linguagens de programao.
em Fluxogramas a representao da entrada de dados feita atravs
de uma forma geomtrica especfica.

Para melhor entender a instruo ler vamos


utilizar esse exemplo do algoritmo Mdia visto no
capitulo 2.

30 LICENCIATURA EM CINCIA DA COMPUTAO


UNIVERSIDADE DO ESTADO DA BAHIA
EaD

OPERADORES E
EXPRESSES

CAPTULO 4
EaD UNIVERSIDADE DO ESTADO DA BAHIA
UNIVERSIDADE DO ESTADO DA BAHIA

Anotaes
UNIVERSIDADE DO ESTADO DA BAHIA EaD

CAPTULO 4 - OPERADORES E permitem comparar pares de operandos de tipos de


EXPRESSES dados iguais, resultando sempre num valor lgico.

4.1.1 Operadores de Atribuio

Neste capitulo voc conhecer os principais


Um operador de atribuio serve para atribuir
operadores utilizados no desenvolvimento dos algo-
um valor a uma varivel. Na construo dos algorit-
ritmos, e tambm ser apresentado s expresses /
mos usamos o operador de atribuio: :=
clculos que, relacionados aos operadores, resultam
A sintaxe de um comando de atribuio :
em aes fundamentais para a construo dos algorit-
Varivel := expresso
mos.
A expresso localizada no lado direito do sinal
4.1 OPERADORES de igual avaliada e seu valor resultante armazenado
na varivel esquerda. O nome da varivel aparece
Os operadores so elementos importantssimos sempre sozinho, no lado esquerdo do sinal de igual
que atuam sobre operandos e produzem um determi- deste comando.
nado resultado. Por exemplo, a expresso matemtica
4.1.2 Operadores Aritmticos
1 + 2 relaciona dois operandos (os nmeros 1 e 2)
por meio do operador (+) que representa a operao
Os operadores aritmticos se relacionam s
de adio/soma.
operaes aritmticas bsicas e possuem prioridades
Conforme o nmero de operandos sobre os
diferentes, conforme o quadro 01:
quais os operadores atuam, estes podem ser classifi-
cados em:
binrios, quando atuam sobre dois operan-
dos. Esta operao chamada didica. Ex.:
os operadores das operaes aritmticas
bsicas (soma, subtrao, multiplicao e
diviso).
unrios, quando atuam sobre um nico
operando. Esta operao chamada
mondica. Ex.: o sinal de (-) na frente de
um nmero, cuja funo inverter seu
sinal.
Tambm existem outras classificaes dos
operadores. Observando neste caso o tipo de dado
de seus operandos e o valor resultante de sua aval-
iao. Nesta classificao, os operandos dividem-se
em aritmticos, lgicos e literais. A classificao est
diretamente relacionada com o tipo de expresso onde
aparecem os operadores.
Existem ainda os operadores relacionais, que

LICENCIATURA EM CINCIA DA COMPUTAO 33


EaD UNIVERSIDADE DO ESTADO DA BAHIA

Quadro 01 Prioridade dos operadores e


suas relaes com as operaes matemti-
cas bsicas.
Operador Tipo Operao Prioridade

+ Binrio Adio 4

- Binrio Subtrao 4

* Binrio Multiplicao 3

/ Binrio Diviso 3

MOD Binrio Resto da Diviso 3

DIV Binrio Diviso Inteira 3

** Binrio Exponenciao 2

+ Unrio Manuteno do Sinal 1

- Unrio Inverso do Sinal 1


Fonte : PREUSS (2012)

A prioridade entre operadores define a ordem em dado. O resultado de uma comparao sempre um
que os mesmos devem ser avaliados dentro de uma valor lgico
mesma expresso. Por exemplo, digamos que a varivel inteira
marco contenha o valor 10. A primeira das expresses
4.1.3 Operadores Relacionais a seguir fornece um valor falso, e a segunda um valor
verdadeiro:
J os operadores relacionais so operadores marco <= 4 (valor falso, pois o valor de marco 10,
binrios que devolvem os valores lgicos verdadeiros neste caso maior que 4)
e falsos. marco > 4 (valor verdadeiro, pois marco 10, neste
caso maior que 4)
Quadro 02 Operadores Relacionais No caso da utilizao dos operadores relacio-
Operador Comparao nais com valores de string (para escrever um texto,
= Igual mais de um caracter necessrio. Na programao,
<> Diferente precisamos representar essa cadeia de caracteres
> maior que de alguma forma. A palavra cadeia em ingls
< Menor que string), os operadores relacionais comparam os va-
>= maior ou igual lores levando como base a tabela ASCII dos caracteres
<= Menor ou igual correspondentes em cada string. Uma string dita
Fonte: PREUSS (2012)
menor que outra se os caracteres correspondentes
Os operadores relacionais so somente usados tiverem os nmeros de cdigos ASCII menores. Por
quando se deseja efetuar comparaes. Desta forma exemplo, todas as expresses a seguir so verdadei-
as comparaes s podem ser feitas entre objetos de ras:
mesma natureza, isto , variveis do mesmo tipo de informatica > INFORMATICA (verdadeiro)

34 LICENCIATURA EM CINCIA DA COMPUTAO


UNIVERSIDADE DO ESTADO DA BAHIA EaD

ABC < EFG (verdadeiro)


computador < computador pessoal (verdadeiro)
Note que as letras minsculas tm cdigos ASCII maiores do que os das letras maisculas. Observe tam-
bm que o comprimento da string se torna o fator determinante na comparao de duas ou mais strings, quando
os caracteres existentes na string menor so os mesmos que os caracteres correspondentes na string maior.
Neste caso, a string maior dita maior que a menor. Como exemplo de valores falsos temos:
casa > grande casa (falso)
HIJ > TUV (falso)

4.1.4 Operadores Lgicos

Os operadores lgicos, tambm so chamados de booleanos e so utilizados para combinar expresses


relacionais. Tambm devolvem como resultado valores lgicos: verdadeiro ou falso, entre estes operadores
tambm existe a relao de grau de prioridade.
Quadro 03 - Prioridade nos Operadores lgicos
Operador Tipo Operao Prioridade
OU Binrio Disjuno 3
E Binrio Conjuno 2
NO Unrio Negao 1
Fonte: PREUSS ( 2012)
Uma expresso relacional ou lgica retornar falso para o valor lgico falso e verdadeiro para o valor lgico
verdade.
Para melhor explicar, vamos fornecer dois valores ou expresses lgicas, representadas por expressoA e
expressoB. Podemos descrever as operaes lgicas no Quadro 04.

Quadro 04 - Descrio da operaes lgicas na Conjuno

expressoA Operador expressoB resultado


verdadeira E verdadeira Verdadeira
verdadeira E falsa Falsa
Falsa E verdadeira Falsa
Falsa E falsa Falsa
Fonte: PREUSS (2012)

Quadro 05 - Descrio da operaes lgicas na Disjuno


expressoA Operador expressoB resultado
verdadeira OU verdadeira Verdadeira
verdadeira OU falsa Verdadeira
Falsa OU verdadeira Verdadeira
Falsa OU falsa Falsa
Fonte: PREUSS (2012)
O operador NO na expressoA avalia verdadeiro se expressoA for falsa; de modo contrrio, a expresso
NO resultar em falso, se expressoA for verdadeira.
Quadro 06 - Descrio da operaes lgicas na Negao

LICENCIATURA EM CINCIA DA COMPUTAO 35


EaD UNIVERSIDADE DO ESTADO DA BAHIA

Quadro 07 - Prioridades nas operaes aritmticas


Operador expressoB Resultado
Operao Smbolo Prioridade
NO verdadeira Falsa
Multiplicao
* 1
NO falsa Verdadeira (Produto)
Diviso / 1
Fonte: PREUSS (2012)
Adio (Soma) + 2
4.1.5 Operadores Literais
Subtrao (Difer-
- 2
ena)
Dentre os operadores que atuam sobre carac-
Fonte: PREUSS(2012)
teres, o mais comum e mais usado o operador que
faz a concatenao de strings: toma-se duas strings
Nas linguagens de programao e no desenvolvimento
e acrescenta-se (concatena-se) a segunda ao final da
de algoritmos, as expresses matemticas sempre
primeira.
obedecem s regras matemticas comuns, ou seja:
O operador que faz esta operao represen-
As expresses dentro de parnteses so sem-
tado: +
pre resolvidas antes das expresses fora dos
Por exemplo, a concatenao das strings IN-
parnteses. Quando existem vrios nveis de
FOR e MTICA representada por:
parnteses, ou seja, um parntese dentro de
INFOR + MTICA e o resultado de sua
outro, a soluo sempre inicia do parntese mais
avaliao : INFORMTICA
interno at o mais externo (de dentro para fora).
Quando duas ou mais expresses tiverem a mes-
4.2 EXPRESSES ma prioridade, a soluo sempre iniciada da
expresso mais esquerda at a mais direita.
O conceito de expresso em termos com- Assim, possvel estabelecer uma ordem de pri-
putacionais est intimamente ligado ao conceito de oridade para a resoluo das expresses. Veja a seguir
expresso ou frmula matemtica, onde um conjunto alguns exemplos:
de variveis e constantes numricas relacionam-se Exemplo: 2 + (5 * (3 + 2)) = 27
por meio de operadores aritmticos compondo uma Exemplo: 2 + 4 * (3 + 2) = 22
frmula que, uma vez avaliada, resulta num valor. Exemplo: 4 + ( 8 (3 + 2)) = 7
4.2.1 Expresses Aritmticas 4.2.2 Expresses Lgicas

Expresses aritmticas so aquelas cujo resul- As expresses lgicas so aquelas cujo re-
tado da avaliao do tipo numrico, seja ele inteiro sultado da avaliao um valor lgico verdadeiro ou
ou real. Somente o uso de operadores aritmticos, falso. Nestas expresses so usados os operadores
variveis numricas e parnteses permitido em relacionais e os operadores lgicos, podendo ainda
expresses deste tipo. serem combinados com expresses aritmticas.
muito comum no desenvolvimento de al- Quando forem combinadas duas ou mais
goritmos o uso de expresses matemticas para a expresses que utilizem operadores relacionais e
resoluo de clculos. A seguir so apresentados os lgicos, os mesmos devem utilizar os parnteses para
operadores aritmticos necessrios para determinadas indicar a ordem de precedncia, como foi apresentado
expresses. Veja o quadro 07. anteriormente.

4.2.3 Expresses Literais

36 LICENCIATURA EM CINCIA DA COMPUTAO


UNIVERSIDADE DO ESTADO DA BAHIA EaD

As expresses cujo resultado da avaliao um a seguir, so avaliadas as subexpresses


valor literal (caractere) so chamadas de expresses com operadores relacionais e, por ltimo os
Literais. Neste tipo de expresses s utilizado o operadores lgicos so avaliados.
operador de literais (+).
SUGESTO DE ATIVIDADE
4.2.4 Avaliao de Expresses

1. Dados as variveis e operaes:


Como j foi visto anteriormente, as expresses v1 := 10
podem ser avaliadas, e aquelas que apresentam v2 := 5 + v1
v1 := v2 * 2
apenas um nico operador podem ser avaliadas
diretamente. No entanto, medida que as mesmas Como fazer para segurar e mostrar o valor inicial
da varivel v1 no final das operaes?
vo tornando-se mais complexas com o aparecimento
de mais de um operando na mesma expresso, 2. Como fazer para passar o valor de uma
varivel para outra e vice-versa?
necessria a avaliao da mesma passo a passo,
tomando um operador por vez. 3. Quais as operaes necessrias para intercambiar os valores
de 3 variveis a, b e c de modo que a fique com o valor de
A seqncia destes passos definida de acordo b; b fique com o valor de c e c fique com o valor de a?
com o formato geral da expresso, considerando-se a
4. Se x possui o valor 10 e foram executadas
prioridade de avaliao de seus operadores e a ex- as seguintes instrues:
istncia ou no de parnteses na mesma.
x := X + 6
As seguintes regras so essenciais para a cor- X := X - 4
reta avaliao de expresses: X := X / 2
X := 6 * X
1. Deve-se observar a prioridade dos opera-
dores, conforme mostrado nas tabelas de Qual ser o valor armazenado em x?
operadores: operadores de maior prioridade
devem ser avaliados primeiro. Se houver INDICAO DE LEITURA
empate com relao precedncia, ento a
avaliao se faz da esquerda para a direita.
Farrer, Harry. Algoritmos Estruturados. Rio de Janeiro: Editora
2. Os parnteses so usado em expresses Guanabara Koogan S.A, 1989. 252p.
para definir um maior grau de prioridade ______.Programao Estruturada de Computadores. Rio de Janeiro:
Ed. LTC, 1989.
dos demais operadores, forando a aval-
iao da subexpresso em seu interior.
3. Entre os grupos de operadores existentes, a CAPTULO 5 INSTRUES
saber, aritmtico, lgico, literal e relacional,
h uma prioridade de avaliao: os aritmti-
cos e literais devem ser avaliados primeiro;

LICENCIATURA EM CINCIA DA COMPUTAO 37


EaD UNIVERSIDADE DO ESTADO DA BAHIA
UNIVERSIDADE DO ESTADO DA BAHIA

Anotaes
UNIVERSIDADE DO ESTADO DA BAHIA
EaD

INSTRUES

CAPTULO 5
EaD UNIVERSIDADE DO ESTADO DA BAHIA
UNIVERSIDADE DO ESTADO DA BAHIA

Anotaes
UNIVERSIDADE DO ESTADO DA BAHIA EaD

100
O modo de funcionamento (semntica) de uma
atribuio consiste:
Neste capitulo reforaremos o conceito de 1. Na avaliao da expresso;
instrues, e apresentaremos as estruturas de con-
2. No armazenamento do valor resultante na vari-
trole do fluxo de execuo, mostrando como o algo-
vel que aparece esquerda do comando.
ritmo ganha sua forma e responde a cada instruo e
estrutura de controle. Na seqncia, apresentamos um exemplo de um
As instrues so os comandos bsicos que algoritmo utilizando o comando de atribuio:
efetuam tarefas essenciais para a operao dos Algoritmo exemplo_comando_de_atribuio
computadores, como entrada e sada de dados e Var preo_unit, preo_total : real
movimentao dos mesmos na memria. Estes tipos
quantidade : inteiro
de instruo esto presentes na absoluta maioria das
linguagens de programao. Incio
Como j foi visto anteriormente, necessrio preco_unit := 10.0
entender o que representa a sintaxe e a semntica
para uma melhor compreenso das instrues. Assim, quantidade := 50
a sintaxe a forma como os comandos devem ser preo_total := preo_unit * quantidade
escritos, a fim de que possam ser entendidos pelo
Fim.
tradutor de programas. A violao das regras sin-
tticas considerada um erro sujeito pena do no
reconhecimento por parte do tradutor
5.2 COMANDOS DE SADA DE DADOS
J a semntica o significado, ou seja, o con-
junto de aes que sero exercidas pelo computador
Os comandos de sada de dados a forma pela
durante a execuo do referido comando. Deste
qual as informaes contidas na memria dos com-
ponto em diante, todos os comando novos sero apre-
putadores so colocadas nos dispositivos de sada,
sentados por meio de sua sintaxe e sua semntica,
para que os usurios possam apreci-las. Existem
isto , a forma como devem ser escritos e as aes
quatro sintaxes possveis para esta instruo:
que executam.
ESCREVA <varivel>
Ex: Escreva QUANTIDADE
5.1 COMANDOS DE ATRIBUIO ESCREVA <lista_de_variveis>
Ex: Escreva NOME, SOBRENOME, RUA,
O comando de atribuio ou simplesmente BAIRRO, CIDADE
atribuio, a principal maneira de armazenar uma ESCREVA <literal>
informao numa varivel. Sua sintaxe : Ex: Escreva Estou aprendendo a fazer
<nome_da_varivel> := <expresso> Algoritmo!
Exemplos: Nome := fabrizio ESCREVA <literal>, <varivel>, ... ,<lit-
preco := 25.67 eral>, <varivel>
quant := 10 Ex: Escreva Meu nome :, NOME, e
media : idade * quant meu endereo :, ENDERECO
imposto := total * 17 / Uma lista_de_variveis um conjunto de nomes

LICENCIATURA EM CINCIA DA COMPUTAO 41


EaD UNIVERSIDADE DO ESTADO DA BAHIA

de variveis separados por vrgulas. Um literal sim- Ex: Leia X


plesmente um dado do tipo literal (string ou cadeia de LEIA <lista_de_variveis>
caracteres) delimitado por aspas. Ex: Leia NOME, RUA, BAIRRO,
A semntica da instruo primitiva de sada de CIDADE
dados muito simples: os argumentos do comando Da mesma forma que Escreva, estaremos utili-
so enviados para o dispositivo de sada. No caso de zando deste ponto em diante Leia como uma palavra-
uma lista de variveis, o contedo de cada uma delas reservada e no mais poder ser usada como nome
pesquisado na memria e enviado para o disposi- de varivel em algoritmos. A lista_de_variveis um
tivo de sada. No caso de argumentos do tipo literal conjunto de um ou mais nomes de variveis separa-
ou string, estes so enviados diretamente ao referido dos por vrgulas.
dispositivo. A semntica da instruo de entrada ou leitura
Existe ainda a possibilidade de se combinar de dados , de certa forma, inversa da instruo de
nomes de variveis com literais na lista de um mesmo escrita: os dados so fornecidos ao computador por
comando. O efeito obtido bastante til e interes- meio de um dispositivo de entrada e armazenados
sante: a lista lida da esquerda para a direita e cada nas posies de memria das variveis cujos nomes
elemento da mesma tratado separadamente; se um aparecem na lista_de_variveis.
nome de varivel for encontrado, ento a informao A seguir, ser apresentado um exemplo de um
da mesma colocada no dispositivo de sada; no algoritmo utilizando o comando de entrada de dados:
caso de um literal, o mesmo escrito diretamente no Algoritmo exemplo_comando_de_entrada_
dispositivo de sada. de_dados
A seguir, temos um exemplo de um algoritmo
Var preo_unit, preo_total : real
utilizando o comando de sada de dados:
Algoritmo exemplo_comando_de_sada_de_dados quantidade : inteiro
Var preo_unit, preo_total : real Incio
quantidade : inteiro Leia preco_unit, quantidade
Incio preo_total := preo_unit * quantidade
preco_unit := 10.0 Escreva preo_total
quantidade := 50 Fim.
preo_total := preo_unit * quantidade 5.4 INTERFACE COM USURIO
Escreva preo_total A interface com o usurio basicamente o
Fim. meio pelo qual o programa e o usurio interagem. Esta
5.3 COMANDOS DE ENTRADA DE DA- interface deve ser desenvolvida com o intuito de ofer-
DOS ecer um programa amigvel ao usurio. Em termos
prticos, isto se resume aplicao de duas regras
Os comandos de entrada de dados correspon- bsicas:
dem ao meio pelo qual as informaes dos usurios 1. Toda vez que um programa estiver esperando
so transferidas para a memria dos computadores, que o usurio fornea a ele um determinado
para que possam ser usadas nos programas. J tive- dado (operao de leitura), ele deve antes
mos um contato inicial com este comando no capitulo enviar uma mensagem dizendo ao usurio
2 quando falamos da instruo ler. o que ele deve digitar, por meio de uma
Formalmente existem duas sintaxes possveis instruo de sada de dados;
para esta instruo: 2. Antes de enviar qualquer resultado ao usu-
LEIA <varivel> rio, um programa deve escrever uma men-

42 LICENCIATURA EM CINCIA DA COMPUTAO


UNIVERSIDADE DO ESTADO DA BAHIA EaD

sagem explicando o significado do mesmo.


Estas regas tornam o dilogo entre o usurio e EXP (r) Retorna o valor exponencial
o desenvolvedor muito mais fcil. A seguir, temos um
exemplo do algoritmo anterior, utilizando as regras de FRAC (r) Retorna a parte fracionria
construo de uma interface amigvel:
Algoritmo exemplo_interface_amigavel LN (r) Retorna o logaritmo natural
Var preo_unit, preo_total : real Retorna o parmetro elevado
SQR (r)
quantidade : inteiro ao quadrado.

Incio SQRT (r) Retorna a raiz quadrada.


Escreva Digite o preo unitrio:
(2012)
Fonte: PREUSS
Leia preco_unit As funes muitas vezes no esto prontas e s vezes
Escreva Digite a quantidade: necessrio utilizar uma frmula equivalente, ou uma
combinao de mais de uma funo, veja no quadro
Leia quantidade
09:
preo_total := preo_unit * quantidade
Quadro 09 - Exemplos de combinaes de funes
Escreva O Preo total da compra : , preo_
tot Expresso Frmula prevista

Fim. YX = EXP ( LN ( Y ) * X )

xY = EXP ( LN ( Y ) * ( 1 / X ))
5.5 FUNES MATEMTICAS

As funes servem para diminuir o trabalho LOG (x) = LN ( X ) / LN ( 10 )


do desenvolvedor e tornar a resposta a determina-
dos problemas mais exata. O seu uso pode variar de
Fonte: PREUSS (2012)
desenvolvedor para desenvolvedor e tambm entre
as linguagens de programao. Entre as principais
funes, temos:

Quadro 08 - Principais funes matemticas utilizadas


para construo de algoritmos.

Funo Ao Prevista

Retorna o valor absoluto de


ABS (x)
uma expresso

Retorna o arco de tangente do


ARCTAN (x)
argumento utilizado

COS (r) Retorna o valor do co-seno

LICENCIATURA EM CINCIA DA COMPUTAO 43


EaD
EaD UNIVERSIDADE DO
UNIVERSIDADEDO ESTADO
DOESTADO DA
ESTADODA BAHIA
DABAHIA
BAHIA
UNIVERSIDADE

Anotaes

44 LICENCIATURA EM CINCIA DA COMPUTAO


UNIVERSIDADE DO ESTADO DA BAHIA
EaD

ESTRUTURAS
DE CONTROLE

CAPTULO 6
EaD UNIVERSIDADE DO ESTADO DA BAHIA
UNIVERSIDADE DO ESTADO DA BAHIA

Anotaes
UNIVERSIDADE DO ESTADO DA BAHIA EaD

CAPTULO 6 - ESTRUTURAS DE belecida. Cada comando executado somente aps o


CONTROLE trmino do comando anterior.
As palavras-reservadas Incio e Fim delimitam
uma estrutura seqencial e contm basicamente
At agora os algoritmos estudados utilizam comandos de atribuio, comandos de entrada e
apenas instrues bsicas de atribuio e de entrada comandos de sada. Os algoritmos do captulo ante-
e sada de dados. Qualquer conjunto de dados forne- rior so algoritmos que utilizam uma nica estrutura
cido a um algoritmo destes ser submetido ao mesmo seqencial.
conjunto de instrues, executadas sempre na mesma Um algoritmo puramente seqencial aquele
seqncia. cuja execuo efetuada em ordem ascendente dos
Entretanto, na prtica, muitas vezes necessrio nmeros que identificam cada passo. A passagem de
executar aes diversas em funo dos dados forne- um passo ao seguinte natural e automtica, e cada
cidos ao algoritmo. Ou seja, dependendo do conjunto passo executado uma nica vez.
de dados de entrada do algoritmo, deve-se executar
um conjunto diferente de instrues. Alm disso,
6.3 ESTRUTURAS DE DECISO
pode ser necessrio executar um mesmo conjunto de
instrues um nmero repetido de vezes. Resumindo, Na estrutura de deciso o fluxo de instrues
se faz necessrio controlar o fluxo de execuo das a ser seguido escolhido em funo do resultado da
instrues, ou seja, a seqncia em que as instrues avaliao de uma ou mais condies. Uma condio
so executadas em um determinado algoritmo em fun- representa ento uma expresso lgica.
o dos dados fornecidos como entrada do mesmo. Existe uma classificao para as estruturas de
As estruturas bsicas de controle so classifica- deciso. Assim, a classificao das estruturas de
das de acordo com o modo como o controle do fluxo deciso feita de acordo com o nmero de condies
de instrues de um algoritmo feito. Assim temos: que devem ser testadas para que se decida qual o
Estruturas seqenciais; caminho a ser seguido. Segundo esta classificao,
Estruturas de deciso; e tm-se 3 tipos de estruturas de deciso:
Estruturas de repetio. Estrutura de Deciso Simples (Se ... ento)
Estrutura de Deciso Composta (Se ... ento ...
6.1 COMANDOS COMPOSTOS seno)
Estrutura de Deciso Mltipla do Tipo Escolha
Um comando composto um conjunto de zero (Escolha ... Caso ... Seno)
ou mais comandos (ou instrues) simples, como Os algoritmos puramente seqenciais podem
atribuies e instrues bsicas (instrues primi- ser usados na soluo de um grande nmero de
tivas) de entrada ou sada de dados, ou alguma das problemas, porm, existem problemas que exigem
construes apresentadas neste captulo. o uso de alternativas de acordo com as entradas do
mesmo. Nestes algoritmos, as situaes so resolvi-
das atravs de passos cuja execuo subordinada a
6.2 ESTRUTURA SEQENCIAL uma condio. Assim, o algoritmo conter passos que
so executados somente se determinadas condies
Na estrutura seqencial os comandos de um forem observadas.
algoritmo so executados numa seqncia pr-esta- Um algoritmo em que se tem a execuo de

LICENCIATURA EM CINCIA DA COMPUTAO 47


EaD UNIVERSIDADE DO ESTADO DA BAHIA

determinados passos subordinada a uma condio creve se o mesmo maior que 15:
denominado algoritmo com seleo. Algoritmo exemplo_estrutura_de_deciso_simples
Var X : inteiro
6.3.1 Estruturas de Deciso Simples ( Se ...
ento ) Incio

A estrutura de Deciso Simples (se...ento) Leia X


prev que uma nica condio (expresso lgica) seja Se X > 15 Ento Escreva X maior que 15
avaliada. Dependendo do resultado desta avaliao,
Fim.
um comando ou conjunto de comandos sero ex-
ecutados (se a avaliao for verdadeira) ou no sero
6.3.2 Estruturas de Deciso Composta ( Se ...
executados (se a avaliao for falsa).
ento ... seno )
Para a estrutura de deciso simples existem
duas sintaxes possveis: Nesta estrutura, uma nica condio (expresso
SE <condio> ENTO <comando_nico> lgica) avaliada. Se o resultado desta avaliao for
Ex: Se X > 15 Ento Escreva verdadeiro, um comando ou conjunto de comandos
X maior que 15 sero executados. Caso contrrio, ou seja, quando o
SE <condio> ENTO resultado da avaliao for falso, um outro comando ou
INCIO um outro conjunto de comandos sero executados.
<comando_composto> Existem duas sintaxes possveis para a estrutura
FIM de deciso composta:
Ex: Se X > 15 Ento SE <condio> ENTO <comando_ni-
Incio co_1>
cont := cont + 1 SENO <comando_
soma := soma + x nico_2>
Escreva X maior que
15 Ex: Se X > 1000 Ento
FIM Escreva X maior que 1000
A semntica desta construo a seguinte: a Seno
condio avaliada: Escreva X no maior que 1000
Se o resultado for verdadeiro, ento o coman- SE <condio> ENTO
do_nico ou o conjunto de comandos (coman- INCIO
do_composto) delimitados pelas palavras-reser- <comando_composto_1>
vadas incio e fim sero executados. Ao trmino FIM
de sua execuo, o fluxo do algoritmo prossegue SENO
pela instruo seguinte construo, ou seja, o INCIO
primeiro comando aps o comando_nico ou a <comando_composto_2>
palavra-reservada fim. FIM
No caso da condio ser falsa, o fluxo do al-
goritmo prossegue pela instruo seguinte Ex: Se X > 1000 Ento
construo, ou seja, o primeiro comando aps Incio
o comando_nico ou a palavra-reservada fim, cont_a := cont_a + 1
sem executar o comando_nico ou o conjunto soma_a := soma_a +
de comandos (comando_composto) entre as x
palavras-reservadas incio e fim. Escreva X maior que
Exemplo de algoritmo que l um nmero e es- 1000

48 LICENCIATURA EM CINCIA DA COMPUTAO


UNIVERSIDADE DO ESTADO DA BAHIA EaD

FIM so baseadas nelas. A colocao de uma expresso


SENO errada pode alterar totalmente o objetivo final do algo-
Incio ritmo. As diversas formulaes das condies podem
cont_b := cont_b + 1 levar a algoritmos distintos. Considerando o problema:
soma_b := soma_b + Dado um par de valores x, y, que representam
x as idades de duas pessoas, determinar se ambas
Escreva X no maior podem votar, se elas no podem votar, ou se alguma
que 1000 delas apenas pode votar.
FIM A soluo do problema consiste em determinar
todas as combinaes de x e y para as classes de
A semntica desta construo a seguinte: a valores positivos, negativos e nulos.
condio avaliada: Os algoritmos podem ser baseados em estru-
Se for verdadeiro, ento o comando_nico_1 turas concatenadas uma em seqncia a outra ou em
ou o conjunto de comandos (comando_com- estruturas aninhadas uma dentro da outra, de acordo
posto_1) delimitados pelas palavras-reservadas com a formulao da condio.
incio e fim sero executados. Ao trmino de O algoritmo a seguir utiliza estruturas concat-
sua execuo, o fluxo do algoritmo prossegue enadas.
pela instruo seguinte construo, ou seja, Algoritmo estruturas_concatenadas
o primeiro comando aps o comando_nico_2 Var x, y : inteiro
ou a palavra-reservada fim do comando_com-
posto_2. Incio
Se a condio avaliada como falsa, o co- Ler x, y
mando_nico_2 ou o conjunto de comandos
Se x>15 e y>15 Ento Escrever Ambas podem vo-
(comando_composto_2) delimitados pelas
tar
palavras-reservadas incio e fim sero execu-
tados. Ao trmino de sua execuo, o fluxo do Se x<15 e y>15 Ento Escrever Apenas y pode
algoritmo prossegue pela instruo seguinte votar
construo, ou seja, o primeiro comando aps Se x>15 e y<15 Ento Escrever Apenas x pode
o comando_nico_2 ou a palavra-reservada fim votar
do comando_composto_2.
Se x<15 e y<15 Ento Escrever Nenhuma pode
Exemplo de algoritmo que l um nmero e es-
votar
creve se o mesmo ou no maior que 1000:
Algoritmo exemplo_estrutura_de_deciso_composta Fim.
Var X : inteiro O algoritmo a seguir utiliza estruturas aninhadas
ou encadeadas.
Incio
Algoritmo estruturas_aninhadas
Leia X
Var x, y : inteiro
Se X > 1000 Ento Escreva X maior que 1000
Incio
Seno Escreva X no maior que
Ler x, y
1000
Se x>15
Fim.
Ento Se y>15
Na construo de algoritmos, a correta formu-
lao de condies ou expresses lgicas, de funda- Ento Escrever Ambas podem votar
mental importncia, visto que as estruturas de seleo Seno Se y<15

LICENCIATURA EM CINCIA DA COMPUTAO 49


EaD UNIVERSIDADE DO ESTADO DA BAHIA

Ento Escrever Apenas x pode FIM


votar Basicamente, o funcionamento da estrutura de deciso
Seno Se y>15 mltipla (escolhar) o seguinte:
Ao entrar-se numa construo do tipo Escolha,
Ento Escrever Apenas y pode votar
a condio_1 testada: se for verdadeira, o coman-
Seno Escrever Nenhuma pode votar do_composto_1 executado e aps seu trmino, o
Fim. fluxo de execuo prossegue pela primeira instruo
aps o final da construo (fim).
A vantagem do uso das estruturas concatena- Porm, se a condio_1 for falsa, a condio_2
das tornar o algoritmo mais legvel, facilitando a testada: se esta for verdadeira, o comando_com-
correo do mesmo em caso de erros. O uso das posto_2 executado e ao seu trmino, a execuo
estruturas aninhadas ou encadeadas tem a vantagem prossegue normalmente pela instruo seguinte ao
de tornar o algoritmo mais rpido, pois so efetuados final da construo (fim).
menos testes e menos comparaes, o que resulta O mesmo raciocnio estendido a todas as
num menor nmero de passos para chegar ao final do condies da construo. No caso em que todas as
mesmo. condies so avaliadas como falsas, o comando_
composto_s (correspondente ao Seno da con-
VOC SABIA? struo) executado.
O caso do comando_composto_s no conter
nenhuma instruo, ocorre nas situaes em que
Geralmente as estruturas concatenadas so mais utilizadas nos
algoritmos, isso porque neste caso existe uma maior facilidade de no se deseja efetuar nenhuma ao quando todas as
entendimento das mesmas. Por outro lado, o uso das estruturas condies so falsas. Assim, pode-se dispensar o uso
aninhadas ou encadeadas aplicado em casos em que seu uso
fundamental. do Seno na construo Escolha.
Um exemplo de aplicao desta construo
o algoritmo para reajustar o salrio de acordo com a
titulao do professor. Se for Doutor, aumentar o sa-
6.3.3 Estruturas de Deciso Mltipla do Tipo
lrio 50%, se for Mestre, aumentar 30% e se for outra
Escolha (Escolha...caso...seno) titulao, aumentar 20%.
Algoritmo exemplo_estrutura_do_tipo_escolha
Neste tipo de estrutura utilizada uma generali- Var salrio, salrio_reaj : real
zao da construo Se, onde somente uma condio
era avaliada e dois caminhos podiam ser seguidos. Na prof: caracter[20]
utilizao da estrutura de deciso do tipo Escolha pode Incio
haver uma ou mais condies a serem testadas e um
Leia salrio, prof
comando diferente associado a cada uma destas.
A sintaxe da construo de Escolha : Escolha
ESCOLHA Caso prof = Doutor
CASO <condio_1>
<comando_composto_1> salrio_reaj := 1.5 * salrio
CASO <condio_2> Caso prof = Mestre
<comando_composto_2>
salrio_reaj := 1.3 * salrio
...
CASO <condio_n> Seno
<comando_composto_n> salrio_reaj := 1.2 * salrio
SENO
<comando_composto_s> Fim

50 LICENCIATURA EM CINCIA DA COMPUTAO


UNIVERSIDADE DO ESTADO DA BAHIA EaD

Escreva Salrio Reajustado = , salrio_reaj <estrutura_de_repetio>


Fim. ...
6.4 ESTRUTURAS DE REPETIO cont := cont + 1
...
As aplicaes da estrutura de repetio so in-
meras. Toda a situao em que se deseja repetir um <fim_da_estrutura_de_repetio>
determinado trecho de um programa um certo nmero ...
de vezes passvel do uso da estrutura de repetio. Varivel acumuladora uma varivel que recebe
Por exemplo, pode-se citar o caso de um algoritmo um valor inicial, geralmente 0 (zero) antes do
que calcula a soma dos nmeros primos entre 100 e incio de uma estrutura de repetio, e incre-
1000. mentada no interior da estrutura de um valor
As estruturas de repetio so muitas vezes varivel, geralmente a varivel usada na estrutura
chamadas de Laos ou tambm de Loops. de controle, conforme o exemplo abaixo:
Os algoritmos que possuem um ou mais de
seus passos repetidos um determinado nmero de Exemplo
vezes denomina-se algoritmo com repetio. ...
A classificao das estruturas de repetio
soma := 0
feito de acordo com o conhecimento prvio do nmero
de vezes que o conjunto de comandos ser executado. <estrutura_de_repetio_com_varivel_x>
Assim, os Laos se dividem em: ...
Laos Contados, quando se conhece previa-
mente quantas vezes o comando composto no soma := soma + x
interior da construo ser executado; ...
Laos Condicionais, quando no se conhece
<fim_da_estrutura_de_repetio>
de antemo o nmero de vezes que o con-
junto de comandos no interior do lao ser ...
repetido, pelo fato do mesmo estar amarrado 6.4.1 Laos Contados ( Para ... faa )
a uma condio sujeita modificao pelas
instrues do interior do lao. Os laos contados so teis quando se conhece
Com a utilizao de estruturas de repetio para previamente o nmero exato de vezes que se deseja
a elaborao de algoritmos, torna-se necessrio o uso executar um determinado conjunto de comandos.
de dois tipos de variveis para a resoluo de diversos Ento, este tipo de lao nada mais que uma estrutura
tipos de problemas: variveis contadoras e variveis dotada de mecanismos para contar o nmero de vezes
acumuladoras, conforme pode ser observado a seguir. que o corpo do lao executado.
Varivel contadora uma varivel que recebe Neste caso existem duas sintaxes possveis
um valor inicial, geralmente 0 (zero) antes do usadas em algoritmos para os laos contados. Vamos
incio de uma estrutura de repetio, e incre- utilizar um algoritmo para calcular e escrever a tabua-
mentada no interior da estrutura de um valor da de 9 de 1 at o nmero 10, para exemplificar:
constante, geralmente 1, conforme o exemplo PARA <varivel> DE <incio> AT <fi-
abaixo: nal> FAA <comando_nico>
Exemplo: Ex.: Para i De 1 At 10
Faa Escrever i, x 9 = , i * 9
...
cont := 0 PARA <varivel> DE <incio> AT <fi-
nal> FAA

LICENCIATURA EM CINCIA DA COMPUTAO 51


EaD UNIVERSIDADE DO ESTADO DA BAHIA

INCIO Escrever Tabuada:


<comando_composto> Ler tab
FIM
Escrever At que nmero:
Exemplo: somatorio := 0 Ler num
Para i De 1 At 10
Para i de 1 At num Faa
Faa
Incio Incio
somatorio := Escrever i, x , tab, = , i * tab
somatorio + i
Escrever i, x Fim
9 = , i * 9 Fim.
Escrever
Soma acumulada = , somatorio
6.4.2 Laos Condicionais
Fim
A semntica do lao contado a seguinte: no
Os Laos condicionais so aqueles cujo conjun-
incio da execuo da construo o valor incio
to de comandos em seu interior executado at que
atribudo varivel var. A seguir, o valor da varivel var
uma determinada condio seja satisfeita. Ao con-
comparado com o valor final. Se var for maior que
trrio do que acontece nos laos contados, nos laos
final, ento o comando composto no executado
condicionais no se sabe de antemo quantas vezes o
e a execuo do algoritmo prossegue pelo primeiro
corpo do lao ser executado.
comando seguinte ao comando_nico ou palavra-
As construes que programam laos condicio-
reservada fim que delimita o final da construo. Por
nais mais comuns na construo de algoritmos so:
outro lado, se o valor de var for menor ou igual a final,
Enquanto - lao condicional com teste no incio;
ento o comando composto no interior da construo
Repita - lao condicional com teste no final.
executado e, ao final do mesmo, a varivel var
Nos laos condicionais a varivel que testada, tanto
incrementada em 1 unidade. Feito isso, retorna-se
no incio quanto no final do lao, dever sempre estar
comparao entre var e final e repete-se o processo
associada a um comando que a atualize no interior do
at que var tenha um valor maior que final, quando o
lao. Caso isso no ocorra, o programa ficar repetin-
lao finalizado e a execuo do algoritmo prossegue
do indefinidamente este loop, gerando uma situao
pela instruo imediatamente seguinte construo.
conhecida como loop infinito.
Existe uma condio especial em que a conta-
gem deve ser de forma decrescente, onde o valor da
6.4.3 Laos Condicionais com Teste
varivel decrementado em uma unidade. A sintaxe
no Incio ( Enquanto ... faa )
deste lao a seguinte:
PARA <varivel> DE <incio> AT <final> Nesta estrutura efetuado um teste lgico no
PASSO -1 FAA incio de um lao, verificando se permitido ou no
INCIO executar o conjunto de comandos no interior do lao.
<comando_composto> A sintaxe mostrada a seguir:
FIM ENQUANTO <condio> FAA
Exemplo de um algoritmo que escreve a tabuada INCIO
de um nmero especfico: <comando_composto>
Algoritmo tabuada FIM
Var i, tab, num : inteiro A semntica ocorre da seguinte forma: ao incio
da construo Enquanto a condio testada. Se o
Incio
resultado for falso, ento o comando composto no seu

52 LICENCIATURA EM CINCIA DA COMPUTAO


UNIVERSIDADE DO ESTADO DA BAHIA EaD

interior no executado e a execuo prossegue nor- um teste lgico no final de um lao, verificando se
malmente pela instruo seguinte palavra-reservada permitido ou no executar novamente o conjunto de
fim que identifica o final da construo. comandos no interior do mesmo.
Se a condio for verdadeira, o comando A sintaxe do repita...at mostrada a seguir:
composto executado e ao seu trmino retorna-se REPITA
ao teste da condio. Assim, o processo acima ser <comando_composto>
repetido enquanto a condio testada for verdadeira. AT QUE <condio>
Quando esta for falsa, o fluxo de execuo prossegue O funcionamento bastante parecido com o da
normalmente pela instruo seguinte palavra-reser- construo Enquanto. O comando executado uma
vada fim que identifica o final da construo. vez. Na sequencia, a condio testada: se ela for
Uma vez dentro do corpo do lao, a execuo falsa, o comando composto executado novamente
somente abandonar o mesmo quando a condio e este processo repetido at que a condio seja
for falsa. Neste tipo de construo deve-se prestar verdadeira, quando ento a execuo prossegue pelo
muita ateno quanto necessidade de que em algum comando imediatamente seguinte ao final da con-
momento a condio dever se comportar como falsa, struo.
pois caso contrrio, o programa permanecer indefi- Esta construo difere da construo Enquanto
nidamente no interior do lao (loop infinito). Neste tipo pelo fato de o comando composto ser executado uma
de lao condicional a varivel a ser testada deve pos- ou mais vezes (pelo menos uma vez), ao passo que
suir um valor associado antes da construo do lao. na construo Enquanto o comando composto ex-
O algoritmo que escreve os nmeros maiores ecutado nenhuma ou mais vezes. Isto acontece porque
que 0 enquanto a sua soma no ultrapasse 2000 um na construo Repita o teste feito no final da con-
exemplo deste tipo de lao: struo, ao contrrio do que acontece na construo
Algoritmo exemplo_enquanto Enquanto, quando o teste da condio efetuado no
incio.
Var soma, num : inteiro
A construo Repita tambm difere da con-
Incio struo Enquanto no que se refere inicializao da
soma := 0 varivel, visto que na construo Repita a varivel
pode ser inicializada ou lida dentro do loop.
num := 1 Como exemplo: construir um algoritmo que leia
Enquanto soma < 2000 Faa um nmero no determinado de vezes um valor do
teclado e escreve o valor e o seu quadrado, at que
Incio
seja digitado o valor zero para ser finalizado:
Escreva num Algoritmo exemplo_repita
num := num + 1 Var num : inteiro
soma := soma + num Incio
Fim Repita
Fim. Ler num
Escrever num, - , num * num
6.4.4 Laos Condicionais com Teste
no Final ( Repita ... at que ) At que num mod 2 = 0
Fim.
Os laos condicionais com teste no final
caracterizam-se por possuir uma estrutura que efetua

LICENCIATURA EM CINCIA DA COMPUTAO 53


EaD UNIVERSIDADE DO ESTADO DA BAHIA

6.5 ESTRUTURAS DE CONTROLE EN-


CADEADAS OU ANINHADAS INDICAO DE LEITURA

Um encadeamento o fato de se ter qualquer SALIBA, Walter Lus Caram. Tcnicas de Programao: Uma
um dos tipos de construo apresentados anterior- Abordagem Estrutura. So Paulo: Ed. Makron Booksl, 1992.
mente dentro do conjunto de comandos de uma outra SANTANA, Joo. Algoritmos & Programao. Disponvel em:
construo, tambm chamado de aninhamento. <http://www.iesam.com.br/paginas/cursos/ec/1ano/aulas/08/joao/
APunidade-1.pdf>. Acesso em: 27 jul. 2010.
Em qualquer tipo de aninhamento necessrio
que a construo interna esteja completamente em-
butida na construo externa.
A seguir, so apresentados exemplos de aninha-
mentos vlidos e invlidos.

[Figura 7: Aninhamento
correto]
Fonte: PREUSS ( 2012)

[Figura 8: Aninhamento errado]


Fonte:PREUSS (2012)

54 LICENCIATURA EM CINCIA DA COMPUTAO


UNIVERSIDADE DO ESTADO DA BAHIA
EaD

ESTRUTURAS
DE DADOS
HOMOGNEAS

CAPTULO 7
EaD UNIVERSIDADE DO ESTADO DA BAHIA
UNIVERSIDADE DO ESTADO DA BAHIA

Anotaes
UNIVERSIDADE DO ESTADO DA BAHIA EaD

CAPTULO 7 - ESTRUTURAS DE Da mesma forma que acontece com as variveis


DADOS HOMOGNEAS simples, tambm possvel operar com as matrizes.
Contudo, no possvel operar diretamente com o
O estudo apresentado neste capitulo permitir conjunto completo, mas com cada um de seus com-
agrupar diversas informaes dentro de uma mesma ponentes isoladamente.
varivel, permitindo assim o uso de tabelas, vetores e O acesso individual a cada componente de um
matrizes no algoritmo. vetor realizado pela especificao de sua posio na
Como dito anteriormente, as estruturas de mesma por meio do seu ndice. No exemplo anterior
dados homogneas permitem agrupar diversas in- foi definida uma varivel M capaz de armazenar 10
formaes dentro de uma mesma varivel. Este tipo nmeros inteiros. Para acessar um elemento deste
de estrutura de dados recebe diversos nomes, como: vetor deve-se fornecer o nome do mesmo e o ndice
variveis indexadas, variveis compostas, variveis do componente desejado do vetor, neste exemplo um
subscritas, arranjos, vetores, matrizes, tabelas em nmero de 1 a 10.
memria ou arrays. Os nomes mais utilizados e que Por exemplo, M[1] indica o primeiro elemento
utilizaremos para estruturas homogneas so: matriz- do vetor, M[2] indica o segundo elemento do vetor e
es (genrico) e vetores (matriz de uma linha e vrias M[10] indica o ltimo elemento do vetor.
colunas). Por isso, no possvel operar diretamente
7.1 MATRIZES DE UMA DIMENSO OU VETO- sobre vetores como um todo, mas apenas sobre seus
RES componentes, um de cada vez.

A utilizao mais comum dos vetores est 7.1.2 Atribuio de Uma Matriz do Tipo Vetor
vinculada criao de tabelas. Caracteriza-se por ser
definida uma nica varivel vinculada dimensionada Quando falamos sobre as instrues anterior-
com um determinado tamanho. A dimenso de uma mente, o comando de atribuio foi definido como:
matriz constituda por constantes inteiras e positivas. <nome_da_varivel> := <expresso>
Os nomes dados s matrizes seguem as mesmas No caso de vetores, alm do nome da varivel
regras de nomes utilizados para indicar as variveis deve-se necessariamente fornecer tambm o ndice do
simples. componente do vetor onde ser armazenado o resul-
Este tipo de estrutura em particular tambm tado da avaliao da expresso.
denominado por profissionais da rea como matrizes Exemplo: m[1] := 25
unidimensionais. m[3] := 100
A sintaxe do comando de definio de vetores m[7] := 12
a seguinte: m[10] := 30
Var
<nome_da_varivel> : MATRIZ [ <coluna_ini- 7.1.3 Leitura de Dados de Uma Matriz do Tipo Vetor
cial> .. <coluna_final> ] DE <tipo_de_dado> A leitura de um vetor feita passo a passo, um
de seus componentes por vez, usando a mesma sin-
Exemplo: Var taxe da instruo da entrada, onde alm do nome da
m : Matriz [1 .. 10] De Inteiro varivel, deve ser explicitada a posio do componente
7.1.1 Operaes Bsicas com Ve- lido:
tores LEIA <nome_da_varivel> [ <ndice> ]

LICENCIATURA EM CINCIA DA COMPUTAO 57


EaD UNIVERSIDADE DO ESTADO DA BAHIA

importante observar que a utilizao da Para i de 1 at 20 faa


construo Para a fim de efetuar a operao de leitura Incio
vrias vezes, em cada uma delas lendo um determi-
nado componente do vetor. Esta construo muito Escreva numeros[i]
comum quando se opera com vetores, devido Fim
necessidade de se realizar uma mesma operao com
Fim.
os diversos componentes dos mesmos.
O algoritmo a seguir exemplifica a operao de
leitura de 20 nmeros de 1 at 20 de um vetor: Em outro exemplo, temos um vetor de dez
Algoritmo exemplo_leitura_de_vetor nmeros que lido e guardado no vetor nmeros.
Paralelamente, a soma destes nmeros calculada
Var
e mantida na varivel soma, que posteriormente
numeros : matriz[1..20] de inteiro escrita.
i : inteiro Algoritmo exemplo_escrita_de_vetor_com_soma

Incio Var

Para i de 1 at 20 faa numeros : matriz[1..10] de inteiro

Incio i : inteiro

Leia numeros[i] soma : inteiro

Fim Incio

Fim. soma := 0
Para i de 1 at 10 faa

7.1.4 Escrevendo Dados em um Vetor Incio


Leia numeros[i]
Escrever em um vetor obedece mesma sintaxe
soma := soma + numeros[i]
da instruo de sada de dados e tambm vale lembrar
que, alm do nome do vetor, deve-se tambm especifi- Fim
car por meio do ndice o componente a ser escrito: Para i de 1 at 10 faa
ESCREVA <nome_da_varivel> [ <ndice> ]
O algoritmo a seguir exemplifica a operao de Incio
leitura e escrita de um vetor, utilizando a construo Escreva numeros[i]
Para:
Fim
Algoritmo exemplo_escrita_de_vetor
Escrever Soma = , soma
Var
Fim.
numeros : matriz[1..20] de inteiro
i : inteiro
Incio A aplicao de vetores em algoritmos muito
vasta, mas normalmente os vetores so usados em
Para i de 1 at 20 faa
duas tarefas muito importantes no processamento de
Incio dados: pesquisa e classificao.
Leia numeros[i] A pesquisa consiste na verificao da existncia
de um valor dentro de um vetor. Trocando em mi-
Fim

58 LICENCIATURA EM CINCIA DA COMPUTAO


UNIVERSIDADE DO ESTADO DA BAHIA EaD

dos, pesquisar um vetor consiste em procurar Incio


dentre seus componentes um determinado valor.
Para i de 1 at j-1 faa
A classificao de um vetor consiste em arranjar
seus componentes numa determinada ordem, Incio
segundo um critrio especfico. Por exemplo, Se numeros[i] > numeros[i+1] En-
este critrio pode ser a ordem alfabtica de um to
vetor de dados caracter. H vrios mtodos de
Incio
classificao, mas o mais conhecido o mtodo
da bolha de classificao. aux := numeros[i];
numeros[i] := numeros[j];
7.1.5 Mtodo da Bolha de Classificao numeros[j] := aux;
Fim
Tambm conhecido como Bubble Sort este
Fim
mtodo no o mais eficiente, mas um dos mais
populares devido sua simplicidade. j:=j-1;
Este mtodo consiste em varrer o vetor, com- Fim
parando os elementos vizinhos entre si. Caso estejam Escreva vetor ordenado:
fora de ordem, os mesmos trocam de posio entre
si. Procede-se assim at o final do vetor. Na primeira Para i de 1 at 30 faa
varredura verifica-se que o ltimo elemento do vetor Incio
j est no seu devido lugar (no caso de ordenao
Escrever numeros[i]
crescente, ele o maior de todos). A segunda var-
redura anloga primeira e vai at o penltimo el- Fim
emento. Este processo repetido at que seja feito um Fim.
nmero de varreduras igual ao nmero de elementos a
serem ordenados menos um. Ao final do processo, o Outra forma de uso deste algoritmo, com as
vetor est classificado segundo o critrio escolhido. mesmas caractersticas, utiliza duas construes Para,
O exemplo a seguir ilustra o algoritmo bubble fazendo a comparao iniciando do primeiro elemento
sort para ordenar 30 nmero inteiros em ordem cres- at o penltimo, comparando com o imediatamente
cente: seguinte at o ltimo elemento:
Algoritmo Bubble_Sort Algoritmo Outra_forma_do_Bubble_Sort

Var Var

numeros : matriz [1..30] de inteiros numeros : matriz [1..30] de inteiros

aux, i, j: inteiro aux, i, j: inteiro

Incio Incio

Para i de 1 at 30 faa Para i de 1 at 30 faa

Incio Incio

Ler numeros[i] Ler numeros[i]

Fim Fim

j := 30 Para i de 1 at 29 faa

Enquanto j > 1 faa Incio

LICENCIATURA EM CINCIA DA COMPUTAO 59


EaD UNIVERSIDADE DO ESTADO DA BAHIA

Para j de i + 1 at 30 faa cial> .. <linha_final> , <coluna_inicial> .. <colu-


na_final> ] DE <tipo_de_dado>
Incio
Se numeros[i] > numeros[j] Ento Exemplo: Var
Incio m : Matriz [1 .. 5 , 1 .. 10] De
Inteiro
aux := numeros[i];
numeros[i] := numeros[j]; Tambm possvel definir matrizes com vrias
dimenses, por exemplo:
numeros[j] := aux;
Exemplos: Var
Fim F : Matriz [1 .. 4] De Inteiro
Fim G : Matriz [1 .. 50 , 1 .. 4] De
Inteiro
Fim H : Matriz [1 .. 5, 1 .. 50 , 1 ..
Escreva vetor ordenado: 4] De Inteiro
I : Matriz [1 .. 3 , 1 .. 5, 1 .. 50
Para i de 1 at 30 faa
, 1 .. 4] De Inteiro
Incio
Escrever numeros[i] A utilidade de matrizes desta forma muito
grande. No exemplo acima, cada matriz pode ser
Fim utilizada para armazenar uma quantidade maior de
Fim. informaes:
A matriz F pode ser utilizada para armazenar 4
VOC SABIA? idades de pessoas.
A matriz G pode ser utilizada para armazenar 4
possvel observar que para ordenar o vetor em ordem decrescente idades de 50 pessoas.
basta inverter o sinal de comparao no teste da condio lgica Se A matriz H pode ser utilizada para armazenar 4
numeros[i] > numeros[j], para: Se numeros[i] < numeros[j]
Idades de 50 pessoas de 5 bairros.
A matriz I pode ser utilizada para armazenar
7.2 MATRIZES COM MAIS DE UMA DIMENSO 4 Idades de 50 pessoas de 5 bairros, de 3
cidades.
Esta estrutura, como a anterior, tambm tem
7.2.1 Operaes Bsicas com Matrizes de Duas
sua principal utilizao vinculada criao de tabelas.
Dimenses
Caracteriza-se por ser definida uma nica varivel
vinculada dimensionada com um determinado ta-
Do mesmo modo que acontece com os vetores,
manho. A dimenso de uma matriz constituda por
no possvel operar diretamente com o conjunto
constantes inteiras e positivas. Os nomes dados s
completo, mas com cada um de seus componentes
matrizes seguem as mesmas regras de nomes utiliza-
isoladamente. Geralmente so chamadas simples-
dos para indicar as variveis simples.
mente de matrizes.
A sintaxe do comando de definio de matrizes
Cada componente de uma matriz acessado
de duas dimenses a seguinte:
de forma individual atravs da especificao de sua
Var
posio na mesma por meio do seu ndice. No ex-
<nome_da_varivel> : MATRIZ [<linha_ini-
emplo anterior foi definida uma varivel M capaz de
armazenar 10 nmero inteiros em cada uma das 5
linhas. Para acessar um elemento desta matriz deve-
se fornecer o nome da mesma e o ndice da linha e

60 LICENCIATURA EM CINCIA DA COMPUTAO


UNIVERSIDADE DO ESTADO DA BAHIA EaD

da coluna do componente desejado da matriz (um efetuar a operao de leitura repetidas vezes, em cada
nmero de 1 a 5 para a linha e um nmero de 1 a 10 uma delas lendo um determinado componente da
para a coluna, neste caso). matriz. Esse uso se faz necessrio, devido necessi-
Por exemplo, M[1,1] indica o primeiro elemento dade de se realizar uma mesma operao com os
da primeira linha da matriz, M[1,2] indica o segundo diversos componentes das mesmas.
elemento da primeira linha da matriz, M[1,10] indica o O algoritmo a seguir exemplifica a operao de
ltimo elemento da primeira linha da matriz e M[5,10] leitura de uma matriz:
indica o ltimo elemento da ltima linha da matriz Algoritmo exemplo_leitura_de_matriz
Da mesma forma como vetores, no possvel Var
operar diretamente sobre matrizes como um todo, mas
numeros : matriz[1..5, 1..10] de inteiro
apenas sobre seus componentes, um por vez. Por ex-
emplo, para somar duas matrizes necessrio somar i, j : inteiro
cada um de seus componentes dois a dois. Da mesma Incio
forma, as operaes de atribuio, leitura e escrita de
matrizes devem ser feitas elemento a elemento. Para i de 1 at 5 faa
Incio
7.2.2 Atribuio de Uma Matriz de Duas Di- Para j de 1 at 10 faa
menses
Incio
Da mesma forma vista anteriormente com os Leia numeros[i,j]
vetores, na atribuio de matrizes, alm do nome da
Fim
varivel, deve-se necessariamente fornecer tambm o
ndice do componente da matriz onde ser armazena- Fim
do o resultado da avaliao da expresso. O ndice Fim.
referente ao elemento composto por tantas infor-
maes quanto o nmero de dimenses da matriz.
Para matrizes com duas dimenses, o primeiro 7.2.4 Escrita de Dados de Uma Matriz de Duas
nmero se refere linha e o segundo nmero se refere Dimenses
coluna da matriz em que se encontra a informao
Ex.: m[1,1] := 10 A escrita de uma matriz obedece mesma
m[1,10] := 15 sintaxe da instruo de sada de dados e tambm vale
m[3,5] := 25 lembrar que, da mesma forma que com vetores, alm
m[5,10] := 35 do nome da matriz, deve-se tambm especificar por
meio do ndice o componente a ser escrito:
ESCREVA <nome_da_varivel> [ <ndice_1> , ... ,
7.2.3 Leitura de informaes de Uma Matriz <ndice_n> ]
de Duas Dimenses
O algoritmo a seguir exemplifica a operao
de leitura e escrita de uma matriz, utilizando as con-
Neste caso, a leitura de uma matriz feita passo
strues Para aninhadas ou encadeadas:
a passo, um de seus componentes por vez, usando
Algoritmo exemplo_escrita_de_matriz
a mesma sintaxe da instruo bsicas da entrada
de dados, onde alm do nome da varivel, deve ser Var
explicitada a posio do componente lido: numeros : matriz[1..5,1..10] de inteiro
LEIA <nome_da_varivel> [ <ndice_1>, ... , <
ndice_n> ] i, j : inteiro
importante ressaltar que feito o uso de Incio
construes Para aninhadas ou encadeada a fim de

LICENCIATURA EM CINCIA DA COMPUTAO 61


EaD UNIVERSIDADE DO ESTADO DA BAHIA

Para i de 1 at 5 faa Incio


Incio Para i de 1 at 10 faa
Para i de 1 at 10 faa Incio
Incio Escreva numeros[i,j]
Leia numeros[i,j] Fim
Fim Fim
Fim somal2 := 0
Para i de 1 at 5 faa somac3 := 0
Incio Para j de 1 at 10 faa
Para j de 1 at 10 faa Incio
Incio somal2 := somal2 + numeros[2,j]
Escreva numeros[i,j] Fim
Fim Para i de 1 at 5 faa
Fim Incio
Fim. somac3 := somac3 + numeros[i,3]
Fim

A exemplo, temos uma matriz de 5 linhas por Escrever Soma Linha 2 = , somal2
10 colunas que lida e guardada na matriz numeros. Escrever Soma Coluna 3 = , somac3
A seguir efetuada e escrita a soma dos elementos da
Fim.
2 linha e tambm a soma dos elementos da 3 coluna
Algoritmo exemplo_escrita_de_matriz_com_soma
INDICAO DE LEITURA
Var
numeros : matriz[1..5,1..10] de inteiro TERADA, Routo; SETZER, Valdemar W. Introduo Computao e
Construo de Algoritmos. So Paulo: Ed. Makron Books, 1992.
i, j : inteiro
somal2, somac3 : inteiro
Incio
Para i de 1 at 5 faa
Incio
Para i de 1 at 10 faa
Incio
Leia numeros[i,j]
Fim
Fim
Para i de 1 at 5 faa

62 LICENCIATURA EM CINCIA DA COMPUTAO


UNIVERSIDADE DO ESTADO DA BAHIA
EaD

SUBALGORITMOS

CAPTULO 8
EaD UNIVERSIDADE DO ESTADO DA BAHIA
UNIVERSIDADE DO ESTADO DA BAHIA

Anotaes
UNIVERSIDADE DO ESTADO DA BAHIA EaD

CAPTULO 8 - SUBALGORITMOS acrscimo de novos algoritmos. A este conjunto d-se


o nome de biblioteca.
Neste capitulo ser apresentado o conceito de Ao desenvolver sistemas, a equipe deve estar
subalgoritmos, que na verdade, contempla a diviso atenta a utilizar a concepo de subalgoritmos j
do algoritmo em partes menores para facilitar e mel- existentes na biblioteca, de modo que a quantidade de
horar o controle do mesmo. software realmente novo que deve ser desenvolvido
Quando um algoritmo se apresenta de forma seja minimizada.
extensa e complexa, existe a possibilidade de dividir Geralmente, os subalgoritmos podem ser
problemas grandes e complicados em problemas teis para encerrar em si uma certa seqncia de
menores e de soluo mais simples. Assim, pode- comandos que repetida vrias vezes num algoritmo.
se solucionar cada um destes pequenos problemas Nestes casos, os subalgoritmos proporcionam uma
separadamente, criando algoritmos para tal (subal- diminuio do tamanho de algoritmos maiores. Anti-
goritmos). Posteriormente, pela justaposio destes gamente, esta propriedade era tida como a principal
subalgoritmos, elabora-se automaticamente um utilidade dos subalgoritmos.
algoritmo mais complexo e que soluciona o problema
original. Esta metodologia de trabalho conhecida 8.1 FUNCIONAMENTO DO SUBALGO-
como Mtodo de Refinamentos Sucessivos, cujo RITMO
estudo assunto de cursos avanados sobre tcnicas
de programao. Um algoritmo completo dividido num algoritmo
O conceito de subalgoritmo contempla um tre- principal e diversos subalgoritmos (tantos quantos
cho de um algoritmo mais complexo e que, em geral, forem necessrios e/ou convenientes). O algoritmo
encerra em si prprio um pedao da soluo de um principal aquele por onde a execuo do algoritmo
problema maior. sempre se inicia. Este pode eventualmente invocar os
Em resumo, os subalgoritmos so importantes demais subalgoritmos.
na: O algoritmo principal sempre o ltimo trecho
Subdiviso de algoritmos complexos, facili- do pseudocdigo de um algoritmo. As definies dos
tando o seu entendimento; subalgoritmos esto sempre colocadas no trecho aps
Estruturao de algoritmos, facilitando princi- a definio das variveis globais e antes do corpo do
palmente a deteco de erros e a documen- algoritmo principal:
tao de sistemas; e
Modularizao de sistemas, que facilita a Algoritmo <nome do algoritmo>
manuteno de softwares e a reutilizao de Var <definio das variveis globais>
subalgoritmos j implementados.
<definies dos subalgoritmos>
A reutilizao de software tem sido adotada por
muitos grupos de desenvolvimento de sistemas de Inicio
computador, devido economia de tempo e trabalho <corpo do algoritmo principal>
que proporcionam. Seu princpio o seguinte: um
conjunto de algoritmos destinado a solucionar uma Fim.
srie de tarefas bastante corriqueiras desenvolvido e Assim, durante a execuo do algoritmo princi-
vai sendo aumentado com o passar do tempo, com o

LICENCIATURA EM CINCIA DA COMPUTAO 65


EaD UNIVERSIDADE DO ESTADO DA BAHIA

pal, quando se encontra um comando de invocao de valor ao algoritmo chamador;


um subalgoritmo, a execuo do mesmo interrom- Procedimentos: que retornam zero ou mais
pida. A seguir, passa-se execuo dos comandos do valores ao algoritmo chamador.
corpo do subalgoritmo. Ao seu trmino, retoma-se a
execuo do algoritmo principal no ponto onde foi in- 8.3 FUNES
terrompida (comando de chamada do subalgoritmo) e
prossegue-se pela instruo imediatamente seguinte. O conceito de Funo originrio da idia de
Ainda existe a possibilidade de que um subalgoritmo funo matemtica (por exemplo, raiz quadrada, seno,
chame outro atravs do mesmo mecanismo. cosseno, tangente, logaritmo, entre outras), onde um
valor calculado a partir de outro(s) fornecido(s)
8.2 ELEMENTOS DOS SUBALGORITMOS funo.
A sintaxe da definio de uma funo dada a
Nos elementos que compem um subalgoritmo seguir:
constam: Funo <nome> ( <parmetros> ) <tipo_de_
Cabealho, onde esto definidos o nome e dado>
o tipo do subalgoritmo, bem como os seus
Var <variveis locais>
parmetros e variveis locais.
o O nome de um subalgoritmo o nome Incio
simblico pelo qual ele chamado por <comando composto>
outro algoritmo. No corpo do subalgorit-
mo se encontram as instrues que so Fim
executadas cada vez que ele invocado. Assim, para uma construo de um subalgo-
o Variveis locais so aquelas definidas ritmo com funes temos:
dentro do prprio subalgoritmo e s <nome> o nome simblico pelo qual a
podem ser utilizadas pelo mesmo. funo invocada por outros algoritmos;
o Parmetros so canais por onde os <parmetros> so os parmetros da funo;
dados so transferidos pelo algoritmo <tipo de dado> o tipo de dado da infor-
chamador a um subalgoritmo, e vice- mao retornado pela funo ao algoritmo
-versa. Para que possa iniciar a execu- chamador;
o das instrues em seu corpo, um <variveis locais> consiste na definio das
subalgoritmo s vezes precisa receber variveis locais funo. Sua forma anloga
dados do algoritmo que o chamou e, ao da definio de variveis num algoritmo;
terminar sua tarefa, o subalgoritmo deve <comando composto> o conjunto de
fornecer ao algoritmo chamador os re- instrues do corpo da funo.
sultados da mesma. Esta comunicao No algoritmo, o comando de invocao de um
bidirecional pode ser feita de dois modos subalgoritmo do tipo funo sempre aparece dentro de
que sero estudados mais frente: por uma expresso do mesmo tipo que o do valor retor-
meio de variveis globais ou por meio nado pela funo.
da passagem de parmetros. A chamada de uma funo feita pelo simples
apario do nome da mesma, seguido pelos respec-
Corpo, onde se encontram as instrues
tivos parmetros entre parnteses, dentro de uma ex-
(comandos) do subalgoritmo.
presso. A funo executada e, ao seu fim, o trecho
O tipo de um subalgoritmo definido em funo
do comando que a chamou substitudo pelo valor
do nmero de valores que o subalgoritmo retorna ao
retornado pela mesma dentro da expresso em que se
algoritmo que o chamou. Segundo esta classificao,
encontra, e a avaliao desta prossegue.
os algoritmos podem ser de dois tipos:
Funes: que retornam um, e somente um,

66 LICENCIATURA EM CINCIA DA COMPUTAO


UNIVERSIDADE DO ESTADO DA BAHIA EaD

O comando Retorne <expresso>, quando mais valores ao subalgoritmo ou algoritmo chama-


dentro de uma funo, usado para retornar o valor dor. Estes valores so sempre retornados por meio
calculado pela mesma. Ao encontrar este comando, a dos parmetros ou de variveis globais, mas nunca
expresso entre parnteses avaliada, a execuo da explicitamente, como no caso de funes. Portanto,
funo concluida neste ponto e o valor da expresso a chamada de um procedimento nunca surge no
retornado ao algoritmo chamador. meio de expresses, como no caso de funes. Pelo
O algoritmo a seguir um exemplo do emprego contrrio, a chamada de procedimentos s feita em
de funo para calcular o valor de um nmero elevado comandos isolados dentro de um algoritmo, como as
ao quadrado. instrues de leitura e escrita de dados.
Algoritmo Exemplo_de_funo A sintaxe da definio de um procedimento :
Procedimento <nome> ( <parmetros> )
Var X, Y : real
Var <variveis locais>
Inicio
Funo Quad(w : real) : real
<comando composto>
Var Z : real
Fim.
Inicio
Assim para uma construo de um subalgo-
Z := w * w
ritmo com procedimentos temos:
Retorne Z <nome> o nome simblico pelo qual o pro-
Fim cedimento invocado por outros algoritmos;
<parmetros> so os parmetros do pro-
cedimento;
Incio <variveis locais> so as definies das
variveis locais ao procedimento. Sua forma
Escreva Digite um nmero
anloga da definio de variveis num
Leia X algoritmo;
Y := Quad(X) <comando composto> o conjunto de
instrues do corpo do procedimento, que
Escreva X, elevado ao quadrado = , Y executado toda vez que o mesmo invocado.
Fim. Temos a seguir um exemplo simples, onde um
procedimento usado para escrever o valor das com-
No exemplo anterior importante ressaltar
ponentes de um vetor.
que:
Algoritmo Exemplo_procedimento
A funo Quad toma W como parmetro do tipo
real, retorna um valor do tipo real e possui Z
como uma varivel local real; Var vet : matriz[1..50] de real
O comando de invocao da funo Quad apa-
rece no meio de uma expresso, no comando de
atribuio dentro do algoritmo principal. Procedimento ESC_VETOR()
Var i : inteiro
8.4 PROCEDIMENTOS
Inicio
J vimos o conceito de funo, agora, iremos Para i de 1 at 50 faa
entender sobre um procedimento. Na verdade, um Incio
procedimento um subalgoritmo que retorna zero ou
Escreva vet[i]

LICENCIATURA EM CINCIA DA COMPUTAO 67


EaD UNIVERSIDADE DO ESTADO DA BAHIA

Fim Variveis locais so aquelas definidas dentro de


um subalgoritmo e, portanto, somente visveis
Fim
(utilizveis) dentro do mesmo. Outros subalgo-
ritmos, ou mesmo o algoritmo principal, no
Procedimento LER_VETOR() podem utiliz-las.
No exemplo a seguir so aplicados os conceitos
Var i : inteiro
de variveis globais e locais:
Inicio Algoritmo Exemplo_variveis_locais_e_globais
Para i de 1 at 50 faa Var X : real
Incio I : inteiro
Leia vet[i]
Fim Funo FUNC() : real
Fim Var X : matriz[1..5] de inteiro
Y : caracter[10]
Inicio Inicio
LER_VETOR() ...
ESC_VETOR() Fim
Fim.
No exemplo vale ressaltar que: Procedimento PROC
A forma de definio dos procedimentos LER_
Var Y : 1gico
VETOR( ) e ESC_VETOR( ), que no possuem
nenhum parmetro, e usam a varivel local i Inicio
para varrer os componentes do vetor, lendo e ...
escrevendo um valor por vez; e
X := 4 * X
A forma de invocao dos procedimentos: por
meio do seu nome, seguido de seus eventuais I := I + 1
parmetros, num comando isolado dentro do ...
algoritmo principal.
Fim
8.5 VARIVEIS
Incio
O termo varivel j foi visto anteriormente,
entretanto, nesta parte, ser abordado o conceito de ...
variveis reforando o aprendizado e ampliando o X := 10.5
entendimento sobre este componente do algoritmo.
...
Existem dois tipos de variveis: as globais e as locais,
conforme podemos entender a seguir: Fim.
Variveis globais so aquelas declaradas no
incio de um algoritmo. Estas variveis so vi- importante notar no exemplo anterior que:
sveis (isto , podem ser usadas) no algoritmo As variveis X e I so globais e visveis a todos
principal e por todos os demais subalgoritmos. os subalgoritmos, exceo da funo FUNC,

68 LICENCIATURA EM CINCIA DA COMPUTAO


UNIVERSIDADE DO ESTADO DA BAHIA EaD

que redefine a varivel X localmente; Assim, os parmetros formais so teis so-


As variveis X e Y locais ao procedimento mente na formalizao do subalgoritmo, ao passo que
FUNC no so visveis ao algoritmo principal os parmetros reais substituem-nos a cada chamada
ou ao procedimento PROC. A redefinio local do subalgoritmo.
do nome simblico X como uma matriz[5] de
inteiro sobrepe (somente dentro da funo 8.7 MECANISMOS DE PASSAGEM DE
FUNC) a definio global de X como uma PARMETROS
varivel do tipo real;
A varivel Y dentro do procedimento PROC, Como foi visto anteriormente, os parmetros
que diferente daquela definida dentro da fun- reais substituem os formais no ato da invocao de
o FUNC, invisvel fora deste procedimento; um subalgoritmo. Esta substituio denominada
A instruo X := 10.5 no algoritmo principal, passagem de parmetros e pode se dar segundo dois
bem como as instrues X := 4 * X e I := I + mecanismos distintos: passagem por valor ou pas-
1 dentro do procedimento PROC, atuam sobre sagem por referncia.
8.7.1 Passagem de Parmetros por Valor
as variveis globais X e I.

Na passagem de parmetros por valor, o


8.6 PARMETROS parmetro real avaliado e uma cpia de seu valor
fornecida ao parmetro formal, no ato da invocao do
Os parmetros so canais pelos quais se subalgoritmo. A execuo do subalgoritmo prossegue
estabelece uma comunicao bidirecional entre um normalmente e todas as modificaes feitas no
subalgoritmo e o algoritmo chamador. Dados so pas- parmetro formal no afetam o parmetro real, pois
sados pelo algoritmo chamador ao subalgoritmo, ou trabalha-se apenas com uma cpia do mesmo.
retornados por este ao primeiro por meio de parmet- Algoritmo Exemplo_parametro_por_valor
ros. Os parmetros podem ser formais ou reais. Var X : inteiro
Parmetros formais so os nomes simblicos
introduzidos no cabealho de subalgoritmos, usados
na definio dos parmetros do mesmo. Dentro de Procedimento PROC(Y : inteiro)
um subalgoritmo trabalha-se com estes nomes da
Incio
mesma forma como se trabalha com variveis locais
ou globais. Y := Y + 1
Funo Mdia(X, Y : real) : real Escreva Durante Y = , Y
Inicio Fim
Retorne (X + Y) / 2
Fim Incio
No exemplo anterior, X e Y so parmetros for- X := 1
mais da funo Mdia.
J os parmetros reais so aqueles que sub- Escreva Antes X = , X
stituem os parmetros formais quando da chamada de PROC(X)
um subalgoritmo. Por exemplo, o trecho seguinte de
Escreva Depois X = , X
um algoritmo invoca a funo Mdia com os parmet-
ros reais 8 e 7 substituindo os parmetros formais X e Fim.
Y. No algoritmo anterior os seguintes resultados
Z := Mdia(8, 7) so encontrados:

LICENCIATURA EM CINCIA DA COMPUTAO 69


EaD UNIVERSIDADE DO ESTADO DA BAHIA

Antes X=1
Durante Y = 2
Procedimento PROC(Y : inteiro)
Depois X = 1
Uma observao importante que o procedi- Incio
mento no alterou o valor do parmetro real X durante Y := Y + 1
sua execuo.
Escreva Durante Y = , Y
8.7.2 Passagem de Parmetros por Referncia Fim

No exemplo anterior, na passagem de parmet-


ros por valor no existe a alterao do valor do Incio
parmetro real X, este tipo de ao possvel porque,
X := 1
neste mecanismo de passagem de parmetros, feita
uma reserva de espao em memria para os parmet- Escreva Antes X = , X
ros formais, para que neles seja armazenada uma PROC(X)
cpia dos parmetros reais.
Neste mecanismo de passagem de parmetros Escreva Depois X = , X
no feita uma reserva de espao em memria para Fim.
os parmetros formais. Quando um subalgoritmo com
O resultado do algoritmo modificado :
parmetros passados por referncia chamado, o
Antes X=1
espao de memria ocupado pelos parmetros reais
Durante Y = 2
compartilhado pelos parmetros formais correspond-
Depois X = 2
entes. Assim, as eventuais modificaes feitas nos
Como podemos observar, depois de chamar o
parmetros formais tambm afetam os parmetros
procedimento com o parmetro por referncia, o valor
reais correspondentes.
original da varivel foi alterado.
Um mesmo subalgoritmo pode utilizar difer-
entes mecanismos de passagem de parmetros,
8.8 REFINAMENTOS SUCESSIVOS
para parmetros distintos. Para diferenciar uns dos
outros, convencionou-se colocar o prefixo VAR antes Chegamos a parte final do nosso estudo. No
da definio dos parmetros formais passados por estudo do ciclo de vida de um software se encontram
referncia. Se, por exemplo, um procedimento tem o das seguintes fases:
seguinte cabealho: Anlise de requisitos,
Procedimento PROC( X, Y : inteiro; Var Z : real; J: real) Arquitetura geral,
Ento: Projeto detalhado,
X e Y so parmetros formais do tipo inteiro e Programao,
so passados por valor;
Integrao e testes, e
Z um parmetro formal do tipo real passado
por referncia; Manuteno.
J um parmetro formal do tipo real passado Posteriormente em outras disciplinas e estudos
por valor. cada fase da vida de um software ser explicada detal-
O exemplo do item anterior, alterado para que o hadamente.
parmetro Y do procedimento seja passado por refer- O conceito parecido com o de subalgoritmo,
ncia, torna-se: porm mais amplo. O Mtodo de Refinamentos Suces-
Algoritmo Exemplo_parametro_por_referencia sivos para a elaborao de algoritmos dita que um
dado problema deve ser subdividido em problemas
Var X : inteiro
menores repetidamente, at que seja possvel encon-

70 LICENCIATURA EM CINCIA DA COMPUTAO


UNIVERSIDADE DO ESTADO DA BAHIA EaD

trar um algoritmo (subalgoritmo ou comando com-


posto) para resolver cada um destes subproblemas.
Assim, o algoritmo para resolver o problema original
ser composto pela composio destes algoritmos.
O mtodo apresentado pode ser subdividido
na fase de Anlise Top-Down, que procura resolver
o problema a nvel de subalgoritmos e comandos
compostos, e na fase de Programao Estruturada,
que detalha os subalgoritmos e comandos compostos
at o nvel das instrues primitivas e construes de
controle de fluxo.
Para concluir, o uso do mtodo vantajoso
devido ao seu estmulo modularizao de sistemas,
que proporciona a criao de programas claros, sim-
ples, fceis de entender e, portanto, de manuteno
mais barata.
INDICAO DE LEITURA

SANTANA, Joo. Algoritmos & Programao. Disponvel em:


<http://www.iesam.com.br/paginas/cursos/ec/1ano/aulas/08/joao/
APunidade-1.pdf>. Acesso em: 12 jul. 2010.
TONET, Bruno; KOLIVER, Cristian. Introduo aos Algoritmos.
Disponvel em: <http://dein.ucs.br/napro/Algoritmo/manuais/Manual
20Visualg.pdf>. Acesso em: 21 mar. 2010

LICENCIATURA EM CINCIA DA COMPUTAO 71


EaD UNIVERSIDADE DO ESTADO DA BAHIA
UNIVERSIDADE DO ESTADO DA BAHIA

Anotaes
UNIVERSIDADE DO ESTADO DA BAHIA
EaD

LINGUAGEM DE
PROGRAMAO
PASCAL

CAPTULO 9
EaD
EaD UNIVERSIDADE DO
UNIVERSIDADEDO ESTADO
DOESTADO DA
ESTADODA BAHIA
DABAHIA
BAHIA
UNIVERSIDADE

Anotaes

74 LICENCIATURA EM CINCIA DA COMPUTAO


UNIVERSIDADE DO ESTADO DA BAHIA EaD

CAPTULO 9 - LINGUAGEM DE VOC SABIA?


PROGRAMAO PASCAL

Neste capitulo todos os conhecimentos estuda- VOC SABIA? O termo Pascal foi atribudo em homenagem ao
cientista e matemtico francs, Blaise Pascal (1623-1662), que se
dos anteriormente podero ser utilizados, muitos dos destacou com a inveno da primeira calculadora mecnica.
conceitos so similares na linguagem de programao A linguagem Pascal foi originalmente desenvolvida no incio dos anos
70 por Nicklaus Wirth, na Universidade Tcnica de Zurique, Sua.
Pascal. Assim, ser apresentada uma breve introduo O objetivo original foi o de desenvolver uma linguagem disciplinada
a essa linguagem que, apesar de no ser comercial, de alto nvel para ensinar programao estruturada. Esta linguagem
desenvolvida por Wirth conhecida como Pascal Padro. Nos
muito importante para o entendimento da pro- Estados Unidos, foi definido conjuntamente um padro oficial para
gramao. a linguagem, pelo American National Standarts Institute (ANSI) e
pelo Institute of Electrical and Electronics Engineers (IEEE). Este
padro oficial conhecido como ANSI Pascal. Em 1983 a Borland
9.1 A ORIGEM DO PASCAL International comeou a comercializar um compilador Pascal
relativamente barato, designado por Turbo Pascal, para ser usado em
computadores pessoais.
A linguagem de programao Pascal classifi-
cada como de alto nvel e de fins genricos, derivada
do Algol-60. 9.2 ELEMENTOS DA LINGUAGEM
PASCAL
VOC SABIA?
Geralmente uma linguagem de programao
A definio do ALGOL 60 foi um marco na histria das linguagens possui dois tipos de elementos: os elementos defi-
de programao, pois foi a primeira linguagem de Programao nidos pela linguagem e os elementos definidos pelo
estruturada.
prprio usurio:
9.2.1 Elementos definidos pela linguagem
Pascal
As suas instrues so formadas por ex-
presses do tipo algbrico e por algumas palavras
Letras (alfanumricas): A at Z
inglesas, tais como BEGIN, END, READ, WRITE, IF
THEN, REPEAT, WHILE, DO, etc. Neste aspecto o Pas- Dgitos (numricos): 0 at 9
cal assemelha-se a muitas outras linguagens de alto
nvel. Contudo, o Pascal contm ainda alguns aspec- Smbolos Especiais + - * / := ; > <
tos nicos, que foram especificamente concebidos
Palavras Reservadas ou Palavras Chave: array,
para estimular o uso de uma programao estruturada
goto, until
- um mtodo ordenado e disciplinado, do qual resul-
tam programas claros, eficientes e sem erros. Delimitadores: branco, final de linha ou comen-
trio.
A linguagem Pascal tem ainda alguns identi-
ficadores predefinidos pela linguagem conhecidos
como Identificadores Padro. Podem ser constantes,
tipos, variveis, procedimentos ou funes e podem
ser escritos tanto em minsculo como em maisculo.
Seguem abaixo algumas funes:

LICENCIATURA EM CINCIA DA COMPUTAO 75


EaD UNIVERSIDADE DO ESTADO DA BAHIA

O Turbo Pascal tem diversas categorias de


Abs arqtan boolean Char chr Cos tipos de dados padro, dos quais os mais comumente
usados so:
Eof eoln Exp False input Integer Tipos Inteiros: A linguagem Pascal oferece cin-
co tipos inteiros: INTEGER, WORD, LONGINT,
9.2.2 Elementos definidos pelo usurio SHORTINT e BYTE. Estes tipos fornecem
faixas amplas de valores de nmeros inteiros.
Quanto mais ampla a faixa, maior a memria
Identificadores: Um identificador um necessria para os valores de um determinado
smbolo definido pelo usurio que pode ser tipo.
um rtulo, uma constante, um tipo, uma Tipos de Nmeros Reais: Um tipo de nmero
varivel, um nome de programa ou subpro- real pode conter dgitos tanto antes como
grama (procedimento ou funo). No PASCAL depois do ponto decimal, e pode estar sujeito
padro somente os 8 primeiros caracteres aos limites da preciso limitada. Este tipo tam-
so vlidos; no TURBO PASCAL pode-se usar bm conhecido como ponto flutuante, pois o
identificadores de at 127 caracteres sendo Turbo Pascal armazena os nmeros reais em
todos significativos e no h distino entre duas partes distintas: os dgitos significativos
maisculas e minsculas. (chamados de mantissa) e o expoente, que
Comentrios: comentrios no tem funo indica a posio correta do ponto decimal.
nenhuma para o compilador e serve apenas Tipos de caractere: O identificador padro
para aumentar a legibilidade e clareza do CHAR define no Turbo Pascal as variveis do
programa. Um comentrio iniciado por { ou tipo caractere. Esta varivel pode armazenar
(* e encerrado por } ou *). exatamente um caractere por vez.
Tipo de string: Uma string uma seqncia
Endentao: A endentao tambm no tem de caracteres. O comprimento de uma string
nenhuma funo para o compilador e serve igual ao nmero de caracteres que ela contm.
para tornar a listagem do programa mais clara No Turbo Pascal, o comprimento mximo de
dando hierarquia e estrutura ao programa. uma string de 255 caracteres; o menor com-
primento de string possvel de 0 caracteres.
O comprimento mximo de uma varivel de-
clarada simplesmente como STRING de 255
9.3 TIPOS DE DADOS NO PASCAL
caracteres. Entretanto, voc pode especificar
um comprimento mximo menor para uma
Uma varivel pode assumir um tipo de dado
especfico, assim, o tipo de dado, alm de esta rela- varivel string
cionado a varivel ele define as operaes que podem VOC SABIA?
ser feitas sobre esta varivel.
Toda varivel em um programa deve ser as-
sociada a um e somente um tipo de dado. Esta as-
sociao feita quando a varivel declarada na parte
de declarao de variveis do programa. Uma vez
declarada uma varivel de qualquer tipo, poderemos
utilizar um comando de atribuio, tambm chamado
de operador de atribuio, para armazenar um valor
na varivel. So classificadas de duas formas com
mais outros subgrupos: Tipos definidos pela mquina
e Tipos definidos pelo usurio.

9.3.1 Tipos predefinidos pela linguagem na


Pascal

76 LICENCIATURA EM CINCIA DA COMPUTAO


UNIVERSIDADE DO ESTADO DA BAHIA EaD

Estabelece que o identificador uma constante;


O computador utiliza-se exclusivamente de estados lgicos na
representao binria. Portanto, necessrio um cdigo para Associa um elemento de informao constante.
estabelecer uma comunicao entre as solicitaes do usurio e
o computador. Esta necessidade acabou criando uma linguagem O tipo da constante ser implicitamente determi-
universal (cdigo padro). A princpio no existia um consenso e nado pelo elemento de informao.
cada fabricante de computador procurava definir seu prprio cdigo
de comunicao, tornando a comunicao difcil e complexa. Exemplo:
Assim o Instituto Americano de Normas (ANSI) estabeleceu um
cdigo denominado ASCII American Standard Code For Information CONST
Interchange que se tornou um padro aos microcomputadores
pessoais. nome = Edutec Consultoria;
A tabela ASCII fornece um padro, que pode conter pequenas
alteraes de um pas para outro, permitindo que o microcomputador
possa editar textos nas mais diversas lnguas. O cdigo ASCII original media = 7;
tem 128 caracteres.

9.4.2 Variveis
Tipos Booleanos: Uma varivel do tipo Booleano
pode ser tanto TRUE (verdadeiro) como FALSE Como tambm j foi visto anteriormente, um
(falso). O Turbo Pascal fornece um conjunto de identificador cujo valor pode ser alterado durante a
operaes lgicas e relacionais, que produzem execuo do programa denominado varivel.
expresses que resultam em valores de TRUE Sempre no Pascal todas as variveis devem
ou FALSE. ser declaradas antes de serem usadas. As variveis
devem ser declaradas no incio de cada funo, pro-
Tipos definidos pelo usurio: Os tipos definidos
cedimento ou incio do programa. No podem ocorrer
pelo usurio so aqueles que usam um grupo
declaraes de variveis aps a primeira sentena
de tipos predefinidos ou um subgrupo de al-
executvel de uma rotina.
gum tipo. Este tipo chamado de tipo enumer-
Uma declarao de varivel consiste do nome
ado de dados e representa uma escolha dentre
da varivel seguido do nome do tipo.
um pequeno nmero de alternativas. Pode ser
Como tambm j foi visto anteriormente, as
discreto ou contnuo.
variveis podem ser globais ou locais no Pascal.
Tipo enumerado discreto: Na linguagem Turbo
Pascal temos o comando TYPE para definir o Variveis globais so declaradas fora de qualquer
tipo de dados que desejamos. funo, valem em qualquer ponto do programa,
so inicializadas com zero automaticamente e
Tipo enumerado contnuo: J o tipo enumerado uma nica vez e so armazenadas na memria.
contnuo pode ser definido como um intervalo Variveis locais so declaradas dentro das fun-
de um tipo enumerado discreto j definido ou es e existem apenas enquanto a funo na
de um tipo padro. qual foi declarada est ativa. Dentro de funes
variveis locais com mesmo nome de variveis
9.4 CONSTANTES E VARIVEIS DO globais tem preferncia, no so inicializadas
PASCAL automaticamente, ou seja, deve-se informar um
valor inicial, so alocadas na pilha (stack).
9.4.1 Constante

Os parmetros das funes so tratados como se
Como j vimos anteriormente, as constantes
fossem variveis locais, so inicializados com o valor
so valores declarados no incio do programa e que
passado na chamada, so declarados na lista de parme-
no se alteram na execuo do programa.
tros, so passados por valor e, somente tipos escalares
No Pascal uma constante deve sempre ser
de dados podem ser parmetros.
definida antes de aparecer. Esta definio tem duas
VAR nome1, nome2, ... , nomen : tipo ;
finalidades:

LICENCIATURA EM CINCIA DA COMPUTAO 77


EaD UNIVERSIDADE DO ESTADO DA BAHIA

Ex:
Var
nome: string[50];
salario: real;
filhos: integer;
sexo: char;

9.4.3 Operadores

Os Operadores vistos no Pascal seguem o concei-


to de operadores j visto anteriormente. Os principais
operadores so:
Operadores aritmticos: so utilizados para
compor expresses, que podem ser formadas
por nmeros, constantes, variveis, etc.
Operadores de atribuio: serve para atribuir um
valor a uma varivel (:=)
Operadores relacionais; so operadores binrios
que devolvem os valores lgicos: verdadeiro e
falso (>, <, >=, <=, = <>).
Operadores lgicos ou booleanos so usados
para combinar expresses relacionais. Tambm
devolvem como resultado valores lgicos verda-
deiro ou falso. (and, or, not, xor, shl, shr).
Operadores sobre strings: tambm chamado
de concatenao uma operao de string que
combina duas strings. O smbolo para concate-
nao o sinal de mais (+).
Operadores sobre conjuntos: No Pascal existe
o operador IN que avalia verdadeiro se um
operando pertencer a um conjunto.

78 LICENCIATURA EM CINCIA DA COMPUTAO


UNIVERSIDADE DO ESTADO DA BAHIA
EaD

ESTRUTURA
DO PROGRAMA
DESENVOLVIDO EM
PASCAL

CAPTULO10
EaD UNIVERSIDADE DO ESTADO DA BAHIA
UNIVERSIDADE DO ESTADO DA BAHIA

Anotaes
UNIVERSIDADE DO ESTADO DA BAHIA EaD

CAPTULO 10 - ESTRUTURA DO identificadores que tero valores constantes durante


PROGRAMA DESENVOLVIDO EM toda a execuo do programa, podendo ser nmeros,
PASCAL seqncias de caracteres (strings) ou mesmo outras
constantes.
Neste captulo trataremos os programas em A declarao de constantes inicia pela palavra
pascal, seguindo os comandos e regras estudades reservada CONST, seguida po uma seqncia de:
anteriormente. identificador, um sinal de igual, o valor da constante e
Basicamente um programa desenvolvido em um ponto e vrgula:
Pascal possui trs partes distintas: CONST <identificador> = <valor>
Identificao do programa; Parte de Declaraes de Tipos: Serve para
que o usurio possa criar seus prprios tipos de
Bloco de declaraes; e
dados. A declarao dos tipos iniciadas pela palavra
Bloco de comandos. reservada TYPE, seguida de um ou mais identifica-
dores separados por vrgula, um sinal de igual, um tipo
e um ponto e vrgula:
10.1 IDENTIFICAO DO PROGRAMA TYPE <tipoident1> , ... , <tipoidentn> =
<tipo> ;
A identificao , tambm chamada de cabealho Parte de Declaraes de Variveis: A de-
do programa, em Pascal, d um nome ao programa. clarao das variveis iniciada pela palavra reser-
a primeira linha do programa. vada VAR, seguida de um ou mais identificadores,
PROGRAM <identificao>; separados por vrgula, um tipo um ponto e vrgula:
Todo identificador definido pelo usurio em um VAR < ident1> , ... , <identn> : <tipo> ;
programa deve ser declarado antes de ser usado, caso Parte de Declaraes de Subprogramas:
contrrio, o compilador acusar um erro na fase de Nesta parte so declarados e implementados os sub-
compilao por desconhecer o identificador. programas (funes e procedimentos) e devem estar
declarados e implementados antes da sua chamada
10.2 BLOCO DE DECLARAES em qualquer parte do programa principal ou de sub-
programas.
O Bloco de Declaraes define todos os identi-
ficadores utilizados pelo Bloco de Comandos, sendo 10.3 BLOCO DE COMANDOS
todos opcionais. Quando o Bloco de Declaraes
existir sempre estar antes do Bloco de Comandos. No Um Bloco de Comandos a ltima parte que
Pascal, o Bloco de Declaraes formado por cinco compe um programa em Pascal e especifica as
partes: aes a serem executadas sobre os objetos defini-
Parte de Declaraes de Rtulos: Rtulos dos no Bloco de Declaraes. O Bloco de Comandos
(labels) existem para possibilitar o uso do comando de tambm conhecido como programa principal e
desvio incondicional GOTO. Este comando comando iniciado pela palavra reservada BEGIN seguida de por
gera a desestruturao do programa e no aconsel- uma seqncia de comandos e finalizada pela palavra
hado seu uso. reservada END seguida um ponto.
LABEL <rotulo1>, ... , <rotulon>;
Parte de Declaraes de Constantes: Define os

LICENCIATURA EM CINCIA DA COMPUTAO 81


EaD UNIVERSIDADE DO ESTADO DA BAHIA

10.4 COMANDOS ou READLN subseqente possa ler dados adicionais


da mesma linha. Este comando , geralmente, mais
Os comandos simples ou no estruturados, importante em programas de manipulao de arquivos
caracterizam-se por no possurem outros comandos do que em programas que lem dados do teclado.
relacionados. Entre os principais comandos do Turbo O comando READLN provoca problemas inopo-
Pascal temos: rtunos em alguns programas interativos. O problema
surge quando um programa espera por um valor
10.4.1 Read e Readln numrico e o usurio entra inadvertidamente com uma
sequncia de caracteres que o Turbo Pascal no pode
Na sua forma mais simples, a procedure em- ler como um nmero. Quando isto acontece, a ex-
butida READLN aceita um valor de entrada a partir do ecuo do programa termina com um erro em tempo
teclado: de execuo.
READLN (NomedaVarivel)
Este comando espera que o usurio entre com 10.4.2 Write e Writeln
o dado, e depois armazena a resposta do usurio na
varivel especificada. A entrada do usurio deve se O comando WRITELN exibe uma linha de infor-
corresponder com o tipo de dado da varivel identifi- mao na tela. O WRITE tambm envia dados para a
cada no comando READLN. Quando o usurio termi- tela, mas mantm a posio final do cursor, permitindo
nar de digitar o valor de entrada e pressionar a tecla que um comando WRITE ou WRITELN subseqente
Enter, o valor ser armazenado na varivel, e a tarefa possa exibir informaes adicionais na mesma linha
do comando READLN se completa. da tela.
Em um programa interativo, um comando WRITE e WRITELN, tomam uma lista de argu-
READLN normalmente usado precedido por um mentos de dados na forma de constantes, variveis,
comando WRITE ou WRITELN, que coloca na tela uma ou expresses, separados por vrgulas.
mensagem apropriada. A mensagem geralmente in- Exemplo
forma ao usurio o tipo de informao que o programa
PROGRAM ExemploWrite
espera como entrada. Por exemplo:
USES Crt
WRITE (Nome do usurio: );
VAR
READLN (Nome);
quant, Preco_unitario: INTEGER;
Esta seqncia coloca uma mensagem na tela e
espera que o usurio entre com o nome do usurio.
READLN tambm lhe permite aceitar mais de um BEGIN
valor de entrada por vez. Podemos incluir uma lista de
quant:= 100;
variveis como argumento do comando READLN:
READLN (NomedaVarivel1, Nomeda Varivel2, Preco_unitario:=34;
NomedaVarivel3,...) WRITE (O preo de ,quant);
Esta forma do comando READLN no , ger-
almente, muito til para entradas pelo teclado. Um WRITELN ( unidades ,itens * Preco_unitario);
programa exerce um controle mais cuidadoso e har- END.
monioso sobre o processo de entrada, se cada valor
Este programa em Pascal exibe uma linha com
de entrada for tomado e aceito por comandos READLN
quatro valores de dados na tela: um valor literal string,
individuais.
o valor de uma varivel numrica, um segundo valor
O comando READ l um valor de dado de uma
string e o resultado de uma expresso aritmtica. A
linha de entrada e mantm a posio do cursor ou
tela de sada resultante :
ponteiro de arquivo, de modo que um comando READ

82 LICENCIATURA EM CINCIA DA COMPUTAO


UNIVERSIDADE DO ESTADO DA BAHIA EaD

O preo de 100 unidades 3400 10.4.5 Goto

Neste exemplo, os comandos WRITE e


Este Comando de desvio incondicional altera
WRITELN exibem todos os quatro valores de dados
a seqncia normal de execuo em um bloco de
numa nica linha de sada - as duas constantes string,
comandos, transferindo o processamento para um
o valor armazenado na varivel itens e o resultado da
ponto no programa fonte marcado com o rtulo es-
expresso itens* Precounit.
pecificado no comando GOTO. Uma dica que deve-
O dispositivo default de sada para os comandos
mos evitar, sempre que possvel, o uso de comandos
WRITE e WRITELN a tela. Quando queremos enviar a
desse tipo, pois pode acarretar problemas quando mal
sada para algum outro dispositivo, devemos especifi-
utilizado.
car um nome de arquivo como primeiro argumento do
comando WRITE ou WRITELN. Por exemplo, a unidade
Exemplo:
PRINTER define um arquivo chamado LST e associa
este arquivo ao dispositivo LPT1 do DOS. Portanto,
podemos utilizar LST para enviar dados para impres- Program exemplo_label;
sora a partir dos comandos WRITE e WRITELN. Para
fazer isso, devemos incluir o comando USES, a seguir, uses crt;
no topo do programa: label ini, fim, gre, int;

10.4.3 Uses Printer var opcao: char;

Quando especificamos subsequentemente LST


begin
como primeiro argumento de uma chamada proce-
dure WRITE ou WRITELN, a sada ser enviada para a ini:
impressora, ao invs da tela: clrscr;
Program ExemploPrinter;
writeln(Escolha o seu time: [G] Gremio [I] Inter);
USES CRT, PRINTER;
opcao:=readkey;
VAR
if upcase(opcao)=G then goto gre;
quant, Preco_unitario: INTEGER;
if upcase(opcao)=I then goto int;
BEGIN
goto ini;
quant:= 100;
gre:
Preco_unitario:=34;
writeln(Ok, Gremista!);
WRITE (LST,O preo de ,quant);
goto fim;
WRITELN (LST, unidades ,itens * Preco_unitario);
int:
END.
writeln(Muito bem, Colorado!);
10.4.4 Readkey goto fim;
fim:
O comando READKEY l um caracter do
teclado e associa a uma varivel do tipo char: var- readkey;
ivel_char := readkey; end.

LICENCIATURA EM CINCIA DA COMPUTAO 83


EaD UNIVERSIDADE DO ESTADO DA BAHIA

10.4.6 Exit end;


readkey;
O comando exit faz com que o programa ter-
mine o bloco que est sendo executado. Se esse bloco writeln(testando o continue);
for o programa principal, Exit o faz terminar. Se o bloco for i:= 1 to 10 do
corrente aninhado, Exit faz com que o prximo bloco
mais externo continue na instruo imediatamente begin
aps a que passou o controle ao bloco aninhado. if i=5 then continue;

QUADRO 10 - Tipos de interrupo com o comando exit


writeln(i);

Sintaxe Resposta end;


readkey;
Provoca a chamada do bloco para
EXIT
continuar na instruo aps o ponto em writeln(testando o exit);
BREAK que ele foi chamado. for i:= 1 to 10 do

O comando exit faz com que o pro- begin


break grama termine o bloco que est sendo if i=5 then exit;
CONTI- executado. Somente pode ser usado no
writeln(i);
NUE interior de laos for, while ou repeat..
end;
Este procedimento faz com que o pro-
cessamento de uma iterao num loop writeln(Esta frase nao sera exibida!);
CON-
for, while ou repeat seja interrompido readkey;
TINUE
e continue com a prxima iterao.
end.
Fonte: PREUSS (2012)

10.4.7 Runerror
Exemplo:
Program exemplos;
O comando RUNNERROR determina o trmino
uses crt; do programa no local onde estiver sendo executado,
gerando um erro de execuo com o mesmo valor
passado como parmetro. Caso o parmetro seja
var omitido, o valor de erro de execuo ser zero.
i: integer; Sua sintaxe : Runerror ([<valor>]: byte);

10.4.8 Clrscr
begin
Este procedimento limpa a tela e coloca o cursor
clrscr;
no canto superior esquerdo da tela. a contrao das
writeln(testando o break); palavras CLeaR SCReen. Geralmente inserido no
for i:= 1 to 10 do inicio do programa.

begin 10.4.9 GotoXY

if i=5 then break;


Permite posicionar o cursor em um ponto
writeln(i); qualquer da tela, referenciado pelos eixos X e Y (colu-

84 LICENCIATURA EM CINCIA DA COMPUTAO


UNIVERSIDADE DO ESTADO DA BAHIA EaD

na e linha), antes de um comando de entrada ou sada. writeln(O caracter 65 da tabela ASCII : ,chr(65));
Sua sintaxe : GotoXY (<coluna>, <linha>: writeln(O caracter 75 da tabela ASCII : ,#75);
byte)
readkey;
10.4.10 Delay
end.
O DELAY permite fazer uma pausa programada 10.5 ESTRUTURAS DE CONTROLE
por um determinado intervalo de tempo, antes de ser
executado o prximo comando. As estruturas de controle vistas anteriormente
Sua sintaxe : Delay ( <milissegundos>: byte) possuem aplicaes similares no Pascal, a maioria
possuem sintexa exatamente igual ao uso do algo-
ritmo.
10.4.11 CHR
10.5.1 Seqncia de comandos
Esta funo retorna o caractere ASCII corre-
spondente ao valor do parmetro passado. No Pascal a seqncia delimitada pelas pala-
Sua sintaxe : CHR(<n>: byte):char; vras reservadas BEGIN no incio e END no final e seus
comando so separados pelo delimitador ; (ponto e
10.4.12 ORD vrgula).
10.5.2 Comandos Condicionais
Esta funo retorna a posio ordinal do
parmetro passado. Sua sintaxe : ORD(<x>): Comando IF (condio) THEN (....) ELSE (...)
longint; O comando if usado para executar um seg-
mento de cdigo condicionalmente.
10.4.13 UPCASE Sua sintaxe :
IF condio THEN
O comando UPCASE retorna o caractere contido { comandos que sero executados se a con-
no parmetro em maisculo. dio for TRUE}
Sua sintaxe : Upcase(<ch>:char): char; ELSE
Exemplo { comandos que sero executados se a con-
program exemplos; dio for FALSE}
No Pascal, durante uma execuo, se inicia uma
uses crt; avaliao da a condio da clusula IF. Esta condio
deve resultar num valor do tipo Booleano, embora
possa tomar uma variedade de formas - ela pode ser
var x: char;
uma expresso de qualquer combinao de opera-
begin dores lgicos ou relacionais, ou simplesmente uma
clrscr; varivel BOOLEAN.
Caso a condio for TRUE, o comando ou
writeln(Digite uma letra minuscula: ); comandos localizados entre o IF e ELSE so executa-
x:=readkey; dos e a execuo pula a clusula ELSE. Alternati-
vamente, se a expresso for FALSE, a execuo
writeln(A letra digitada : ,x);
desviada diretamente para o comando ou comandos
writeln(O seu valor na tabela ASCII : , ord(x)); localizados aps a clusula ELSE.
writeln(A letra maiuscula : ,upcase(x)); importante observar que a estrutura do IF e
ELSE so sempre seguidas de blocos BEGIN/END, que
writeln(O seu valor na tabela ASCII : , delimitam grupos de comandos. O formato geral desta
ord(upcase(x)));

LICENCIATURA EM CINCIA DA COMPUTAO 85


EaD UNIVERSIDADE DO ESTADO DA BAHIA

estrutura : testes de comparao, sendo todos executados sobre


IF condio THEN um valor desejado.
BEGIN A forma geral da estrutura CASE a seguinte:
CASE seleo OF
{comandos da clusula IF}
ValordeCaso1:
END
{comando ou comandos executados se a
ELSE
seleo se corresponder com ValordeCaso1 }
BEGIN
ValordeCaso2:
{comandos da clusula ELSE}
{comando ou comandos executados se a se-
END; leo se corresponder com ValordeCaso2 }
VOC SABIA? ...
ELSE
Ateno deve ser dada para no esquecer dos marcadores BEGIN e {comando ou comandos executados se
END nos comandos compostos de vrias estruturas IF. Alm disso,
no devemos colocar um ponto-e-virgula entre o END e o ELSE numa nenhum dos casos anteriores produzir uma corre-
estrutura IF. O Pascal interpretar essa marcao incorreta como o spondncia }
fim do comando IF e a clusula ELSE, a seguir, resultar num erro em
tempo de compilao.
END;
Uma estrutura de deciso CASE consiste nos
Considerando que a utilizao do ELSE seguintes elementos:
opcional, a forma mais simples da estrutura IF a Uma clusula CASE OF, que fornece a expresso
seguinte: de seleo desejada
IF condio THEN Uma seqncia de ValoresdeCaso a ser compa-
{comando ou comandos executados se (if) a rada com a seleo, cada qual seguida de um
condio for TRUE (verdadeira)} ou mais comandos, que sero executados se
Desta forma , o programa executa os comandos a seleo se corresponder com o ValordeCaso
localizados aps a clusula IF somente se a condio
Um comando ELSE opcional, que fornece um
for verdadeira. Se a condio for falsa, o comando IF
comando ou grupo de comandos a serem
no ter nenhuma ao.
executados somente se no tiver ocorrido ne-
As estruturas IF e ELSE podem ser alinhadas,
nhuma correspondncia com os ValoresdeCaso
aparecer dentro de uma clusula IF ou ELSE de uma
anteriores
outra estrutura. O aninhamento de estruturas IF pode
resultar em seqncias de deciso complexas e po- Um marcador END, que identifica o fim da estru-
derosas. tura CASE.
Comando de Seleo mltipla: CASE
10.5.3 Comandos de Repetio
O comando CASE (comando de seleo mlti-
pla) utilizando quando o desenvolvedor deseja testar Os comandos de repetio so caracterizados
uma varivel ou uma expresso em relao a diversos por permitir que uma seqncia de comandos seja
valores. executada um nmero repetido de vezes.
O comando CASE divide uma sequncia de Comando For
possiveis aes em sees de cdigo individuais.
Para a execuo de um determinado comando CASE, O lao FOR , talvez, a estrutura de repetio
somente uma dessas sees ser selecionada para mais familiar e comumente usada, sendo aplicada
execuo. A seleo est baseada numa srie de para executar uma seqncia de comandos repetida-

86 LICENCIATURA EM CINCIA DA COMPUTAO


UNIVERSIDADE DO ESTADO DA BAHIA EaD

mente e com um nmero conhecido de vezes. While e Repeat Until


A representao geral da sintaxe da estrutra : Diferentemente do loop FOR, os loops WHILE e
FOR VardeControle := Valorlnicial TO ValorFinal REPEAT UNTIL dependem de uma condio expressa
DO comando; para determinar a durao do processo de repetio.
Se o bloco do loop possui comandos mltiplos, o Existem tambm algumas diferenas importantes entre
formato geral ser o seguinte: estes dois tipos de loops:
FOR VardeControle := Valorlnicial TO ValorFinal Num loop WHILE, colocamos a condio no
DO incio do loop, e as iteraes continuam enquanto a
BEGIN condio seja TRUE (verdadeira). Tendo em vista que
(comandos executados para cada iterao do a condio avaliada sempre antes de cada iterao,
loop} um loop WHILE resulta em nenhuma iterao se a
END; condio for FALSE (falsa) logo no principio.
O comando FOR identifica uma varivel de con- No REPEAT UNTIL, a condio vai para o fim
trole (VardeControle) para o loop, e indica a faixa de do loop, e o processo de repetio continua at que a
valores (Valorlnicial TO [at] ValorFinal) que a varivel condio se torne TRUE (verdadeira). Tendo em vista
receber e o Valorlnicial e o ValorFinal devem ser que a condio avaliada aps cada iterao, um
compatveis com esse tipo. Aqui est um esboo da loop REPEAT UNTIL sempre executa pelo menos uma
execuo do loop: iterao.
1. No incio da execuo, a varivel de controle recebe A sintaxe do loop WHILE :
o valor do Valorlnicial, e a primeira iterao executa- WHILE condio DO comando;
da. Se o bloco do loop possuir comandos mltiplos, a
2. Antes de cada iterao subseqente, a varivel de forma geral a seguinte:
controle recebe o prximo valor da faixa de Valorlnicial WHILE condio DO
.. ValorFinal. BEGIN
3. O loop termina aps a iterao correspondente ao {comandos que sero executados uma vez em
ValorFinal. cada iterao do loop}
Exemplo: END;
Program ExemploFor; A condio uma expresso que o Turbo Pas-
cal pode avaliar como TRUE (verdadeira) ou FALSE
Uses Crt;
(falsa). A repetio continua enquanto a condio for
Var i, j: integer; TRUE. Normalmente, em algum ponto, a ao dentro
begin do loop altera a condio para FALSE e o loop termina.
A Estrutura do Loop REPEAT UNTIL :
for i:= 1 to 10 do REPEAT
begin {comandos que sero executados uma vez
a cada iterao do loop}
writeln(Tabuada do ,i);
UNTIL condio
for j:= 1 to 10 do
begin Esta estrutura de loop sempre realiza uma
iterao antes da condio ser avaliada pela primeira
writeln(i, x , j , = , i*j); vez, e continua as suas iteraes at que a condio
end; se torne TRUE; a repetio termina quando a condio
se tornar TRUE. Os comandos mltiplos dentro de um
end;
loop REPEAT UNTIL no necessitam de marcadores
end. BEGIN e END. As palavras reservadas REPEAT e
UNTIL servem como delimitadores para os comandos

LICENCIATURA EM CINCIA DA COMPUTAO 87


EaD UNIVERSIDADE DO ESTADO DA BAHIA

dentro do loop.
Exemplo:
procedure imprimir;
Program ExemploWhile
begin
uses crt;
...
Var op: char;
end;
procedure imprimir;
begin
procedure excluir;
...
begin
end;
...
procedure excluir;
end;
begin
...
Begin
end;
repeat
Begin
clrscr;
op := 0;
write(1 - Imprimir);
while op <> 9 do
write(2 - Excluir);
begin
write(9 - Sair);
clrscr; case op of
write(1 - Imprimir); 1: imprimir;
write(2 - Excluir); 2: excluir;
write(9 - Sair); end;
case op of until op = 9
1: imprimir; end.
2: excluir;
end;
end;
end.

Program ExemploRepeat
uses crt;
Var op: char;

88 LICENCIATURA EM CINCIA DA COMPUTAO


UNIVERSIDADE DO ESTADO DA BAHIA EaD

SUGESTO DE ATIVIDADE

1. Escreva um algoritmo/programa em Pascal para ler, calcular e escrever a mdia aritmtica entre dois nmeros.

2. Escreva um algoritmo/programa em Pascal para ler um nmero positivo qualquer, calcular e escrever o quadrado e a raiz quadrada do mesmo.

3. Escrever um algoritmo/programa em Pascal que l a hora de incio de um jogo e a hora de trmino do jogo, ambas subdivididas em 2 valores
distintos, a saber: horas e minutos. Calcular e escrever a durao do jogo, tambm em horas e minutos, considerando que o tempo mximo de
durao de um jogo de 12 horas e que o jogo pode iniciar em um dia e terminar no dia seguinte.

4. Escrever um algoritmo/programa em Pascal que l 5 valores para a, um de cada vez, e conta quantos destes valores so negativos, escrevendo
esta informao.

5. Escrever um algoritmo/programa em Pascal que escreve os nmeros pares entre 100 e 200.

6. Escrever um algoritmo/programa em Pascal que escreve a soma dos nmeros entre 0 e 100.

7. Escrever um algoritmo/programa em Pascal que escreve a soma dos nmeros pares entre 0 e 100.

8. Escrever um algoritmo/programa em Pascal que escreve a soma dos nmeros mltiplos de 7 entre 100 e 200.

9. Escrever um algoritmo/programa em Pascal que l o nmero de um funcionrio, seu nmero de horas trabalhadas, o valor que recebe por hora,
e o nmero de filhos com idade menor do que 14 anos e calcula o salrio deste funcionrio.

10. Escrever um algoritmo/programa em Pascal que l o nmero de um vendedor, o seu salrio-fixo, o tota1 de vendas por ele efetuadas e o percen-
tual que ganha sobre o total de vendas. Calcular o salrio total do vendedor. Escrever nmero do vendedor e o salrio total.

11. Uma revendedora de carros usados paga a seus funcionrios vendedores, um salrio fixo por ms, mais uma comisso tambm fixa para cada
carro vendido e mais 6% do valor das vendas por ele efetuadas. Escrever um algoritmo/programa em Pascal que l o nmero do vendedor, o
nmero de carros por ele vendidos, o valor tota1 de suas vendas, o salrio fixo e o valor que recebe por carro vendido e calcula o salrio mensal
do vendedor, escrevendo-o juntamente com o seu nmero de identificao.

12. Escrever um algoritmo/programa em Pascal que l 3 valores a, b, c, e escreva os 3 valores em ordem crescente.

13. Escrever um algoritmo/programa em Pascal que l um conjunto de 4 valores i, a, b, c, onde i um valor inteiro e positivo e a, b, c, so quais-
quer valores reais e os escreva. A seguir:
Se i = 1 escrever os 3 valores a, b, c em ordem crescente.
Se i = 2 escrever os 3 valores a, b, c em ordem decrescente.
Se i = 3 escrever os 3 valores de forma que o maior valor entre a, b, c fica entre os outros 2.
14. Escrever um algoritmo/programa em Pascal que l o nmero de um vendedor de uma empresa, seu salrio fixo e o total de vendas por ele efetu-
adas. Cada vendedor recebe um salrio fixo, mais uma comisso proporcional s vendas por ele efetuadas. A comisso de 5% sobre o total
de vendas at $ 1.000,00 e 10% sobre o que ultrapassa este valor. Escrever o nmero do vendedor, o total de suas vendas, seu salrio fixo e
seu salrio total.

15. Escrever um algoritmo/programa em Pascal que l 3 comprimentos de lados a, b, c e os ordena em ordem decrescente, de modo que o a rep-
resente o maior dos 3 lados lidos. Determine, a seguir, o tipo de tringulo que estes 3 lados formam, com base nos seguintes casos escrevendo
sempre os valores lidos e uma mensagem adequada:

Se a > b + c no formam tringulo algum.


Se a2 = b2 + c2 formam um tringulo retngulo.
Se a2 > b2 + c2 formam um tringulo obtusngulo.
Se a2 < b2 + c2 formam um tringulo acutngulo.
Se forem todos iguais formam um tringulo equiltero.
Se a = b ou b = c ou a = c ento formam um tringulo issceles

16. Escrever um algoritmo/programa em Pascal que l o nmero de um funcionrio, o nmero de horas por ele trabalhadas, o valor que recebe por
hora, o nmero de filhos com idade inferior a 14 anos, a idade, o tempo de servio do funcionrio e o valor do salrio famlia por filho. Calcular
o salrio bruto, o desconto do INSS (8,5% do salrio bruto) e o salrio famlia.

Calcular o IR (Imposto de Renda) como segue:


Se Salrio Bruto > 1.500,00 ento IR = 15% do SB
Se Salrio Bruto > 500,00 e SB <= 1.500,00 ento IR = 8% do SB
Se salrio Bruto <= 500,00 ento IR = 0

LICENCIATURA EM CINCIA DA COMPUTAO 89


EaD UNIVERSIDADE DO ESTADO DA BAHIA

Calcular o adicional conforme especificado:


Se idade superior a 40 anos ADIC = 2% do SB
Se tempo de servio superior a 15 anos ADIC = 3.5% do SB
Se tempo de servio < 15 anos mas superior a 5 anos e idade maior do que 30 anos ento ADIC = 1,5% do SB.
Calcular o salrio lquido. Escrever o nmero do funcionrio, salrio bruta, total dos descontos, adicional e salrio lquido.

17. Escrever um algoritmo/programa em Pascal que escreve a soma dos nmeros que no so mltiplos de 13 entre 100 e 200.

18. Escrever um algoritmo/programa em Pascal que l 20 valores, um de cada vez, e conta quantos deles esto em cada um dos intervalos [0,
25], (25, 50], (50, 75], (75, 100], escrevendo esta informao

19. Escrever um algoritmo/programa em Pascal que l um nmero no determinados de valores a, todos inteiros e positivos, um de cada vez,
e calcule e escreva a mdia aritmtica dos valores lidos, a quantidade de valores pares, a quantidade de valores impares, a percentagem de
valores pares e a percentagem de valores mpares.

20. Escrever um algoritmo/programa em Pascal semelhante ao anterior que calcula as mdias aritmticas de cada intervalo e as escreve, junta-
mente com o nmero de valores de cada intervalo.

21. Escrever um algoritmo/programa em Pascal que l um nmero e calcula e escreve o seu fatorial.

22. Escrever um algoritmo/programa em Pascal que l um nmero e escreva se ele primo ou no primo

23. Escrever um algoritmo/programa em Pascal que escreve os nmeros mltiplos de 7 entre 100 e 200, bem como a soma destes nmeros.

24. Escrever um algoritmo/programa em Pascal que l um nmero no conhecido de valores, um de cada vez, e conta quantos deles esto em
cada um dos intervalos [0, 50], (50, 100], (100,200]. O programa deve encerrar quando for informado um valor fora dos intervalos.

25. Escrever um algoritmo/programa em Pascal que escreve os nmeros primos entre 100 e 200, bem como a soma destes nmeros.

26. Escrever um algoritmo/programa em Pascal que l 5 conjuntos de 4 valores a1, a2, a3, a4, um conjunto por vez e os escreve assim como foram
lidos. Em seguida, ordene-os em ordem decrescente e escreva-os novamente.

27. Escrever um algoritmo/programa em Pascal que l 5 pares de valores a, b, todos inteiros e positivos, um par de cada vez, e com a < b, e
escreve os inteiros pares de a at b, incluindo o a e b se forem pares.

28. Escrever um algoritmo/programa em Pascal que l 5 conjuntos de 2 valores, o primeiro representando o nmero de um aluno e o segundo
representando a sua altura em centmetros. Encontrar o aluno mais alto e o mais baixo e escrever seus nmeros, suas alturas e uma mensagem
dizendo se o mais alto ou o mais baixo.

29. Escrever um algoritmo/programa em Pascal que l 50 valores, um de cada vez, e encontra e escreve o maior deles.

30. Escrever um algoritmo/programa em Pascal que gera os nmeros de 1000 a 1999 e escreve aqueles que divididos por 11 do um resto igual
a 5.

31. Escrever um algoritmo/programa em Pascal que l um vetor V[6] e o escreve. Conte, a seguir quantos valores de V so negativos e escreva
esta informao.

32. Escrever um algoritmo/programa em Pascal que l um vetor X(100) e o escreve. Substitua, a seguir, todos os valores nulos de X por 1 e
escreva novamente o vetor x

33. Escrever um algoritmo/programa em Pascal que l um vetor C[50] e o escreve. Encontre, a seguir, o maior elemento de C e o escreva.

34. Escrever um a1goritmo que l um vetor A[15] e o escreve. Ordene, a seguir os elementos de A em ordem crescente e escreva novamente A.

35. Escrever um algoritmo/programa em Pascal que l um vetor X[20] e o escreve. Troque, a seguir, o 1 elemento com o ltimo, o 2 com o
penltimo, etc., at o 10 com o 11 e escreva o vetor X assim modificado.

36. Escrever um algoritmo/programa em Pascal que l um vetor T(20) e o escreve. Troque, a seguir, os elementos de ordem mpar com os de
ordem par imediatamente seguintes e escreva o vetor k modificado.

37. Escrever um algoritmo/programa em Pascal que l um vetor H[20] e o escreve. Troque, a seguir, o 1 elemento com 11, o 2 com o 12, etc.,
at o 10 com o 20 e escreva o vetor assim modificado.

90 LICENCIATURA EM CINCIA DA COMPUTAO


UNIVERSIDADE DO ESTADO DA BAHIA EaD

38. Escrever um algoritmo/programa em Pascal que l 2 vetores K[10] e N[10] e os escreve. Crie, a seguir, um vetor C que seja a diferena entre
K e N (C = K - N) e escreva o vetor C.

39. Escrever um algoritmo/programa em Pascal que l um vetor A[13] que o Gabarito de um teste da loteria esportiva, contendo os valores 1
(coluna 1), 2(coluna 2), e 3(coluna do meio). Ler, a seguir, para cada apostador, o n de seu carto e um vetor Resposta B[13]. Verificar
para cada apostador o n de acertos e escrever o n do apostador e seu nmero de acertos. Se tiver 13 acertos, acrescentar a mensagem:
ganhador, parabns!.

40. Escrever um algoritmo/programa em Pascal que l um vetor V(20) e o escreve. Retire, a seguir, os elementos em duplicata, compactando o
vetor Y, e escrevendo o vetor compactado.

41. Escreva um algoritmo/programa em Pascal que l um conjunto de 30 valores e os coloca em 2 vetores conforme forem pares ou impares. O
tamanho dos vetores de 5 posies. Se algum vetor estiver cheio, escreve-lo. Terminada a leitura escrever o contedo dos 2 vetores. Cada
vetor pode ser preenchido tantas vezes quantas for necessrio.

42. Escrever um algoritmo/programa em Pascal que gera os 10 primeiros nmeros primos acima de 100 e os armazena em um vetor A(10) es-
crevendo, no final, o vetor A.

43. Escrever um algoritmo/programa em Pascal que l uma matriz H(10,10) e a escreve. Troque, a seguir:
a linha 2 com a linha 8.
a coluna 4 com a coluna 10
a diagonal principal com a secundria
a linha 5 com a coluna 10
Escreva a matriz assim modificada.

44. Escrever um algoritmo/programa em Pascal que l uma matriz C(6,6) e um valor A e multiplica a matriz C pelo valor A e coloca os valores
da matriz multiplicados por A em um vetor de V(36) e escreve no final o vetor V.

45. Escrever um algoritmo/programa em Pascal que l uma matriz A(12,13) e divida todos os 13 elementos de cada uma das 12 linhas de A
pelo valor do maior elemento em mdulo daquela linha. Escrever a matriz A lida e a matriz A modificada.

INDICAO DE LEITURA

GOTTFRIED, Byron S. Programao em Pascal. Lisboa: McGraw Hill,


1994. 567p.
MECLER, Ian & MAIA, Luiz Paulo. Programao e Lgica com Turbo
Pascal. Rio de Janeiro: Campus, 1989. 223p.
PALMER, Scott D. Guia do Programador Turbo Pascal for Windows.
Rio de Janeiro: Ed. Cincia Moderna Ltda, 1992. 470p.
OSIER, Dan. Aprenda em 21 dias Delphi 2. Rio de Janeiro: Campus,
1997. 840p.

LICENCIATURA EM CINCIA DA COMPUTAO 91


EaD UNIVERSIDADE DO ESTADO DA BAHIA
UNIVERSIDADE DO ESTADO DA BAHIA

Anotaes
UNIVERSIDADE DO ESTADO DA BAHIA EaD

GLOSSRIO

ASCII: (American Standard Code for Information Inter- Dados: Qualquer tipo de informao (em um proces-
change) Padro muito usado em todo o mundo, no sador de texto, programa de imagem, etc.) processada
qual nmeros, letras maisculas e minsculas, alguns pelo computador.
sinais de pontuao, alguns smbolos e cdigos de
controle correspondem a nmeros de 0 a 127. Com o Delphi: Tipo de linguagem de programao.
ASCII, os documentos criados so facilmente trans-
feridos atravs da Internet. Inteiro: Nmeros que no possuem casas decimais,
apenas a parte inteira e podem ser positivos ou nega-
BIT: Dgito binrio, um nico 0 ou 1, ativado ou desa- tivos.
tivado, armazenado no seu computador. Quatro bits
formam um nibble (termo raramente usado), e 8 bits Linguagem de Programao: conjunto de instrues,
formam um byte, o equivalente a um nico caracter. comandos, chamado de sintaxe, que deve ser seguida
As CPUs possuem 8, 16 ou 32 bits. Isso se refere corretamente para que o programa funcione.
quantidade de informaes que podem processar de
cada vez. Pascal: Tipo de linguagem de programao.

BYTE: conjunto de 8 bits. Real: Nmeros que possuem casas decimais e tam-
bm podem ser positivos, negativos e inteiros - para
Binrio: Sistema de numerao composto por dois usar casas decimais necessrio usar o ponto ao ivs
dgitos (0 e 1) usado para representao interna de de vrgula.
informao nos computadores. Se refere tambm a
qualquer formato de arquivo cuja informao codi- String: Para escrever um texto, mais de um caracter
ficada em algum formato que no o padro character necessrio. Na programao, precisamos representar
encoding scheme (mtodo de codificao de carac- essa cadeia de caracteres de alguma forma. A palavra
teres). Um arquivo escrito em formato binrio contm cadeia em ingls string).
um tipo de informao que no mostrada como
caracteres. Um software capaz de entender o mtodo
de codificao de formato binrio necessrio para
interpretar a informao em um arquivo binrio. O for-
mato binrio normalmente utilizado para armazenar
mais informao em menos espao.

C: Tipo de linguagem de programao.

Cdigo Fonte: Durante o desenvolvimento de um pro-


grama, ele inicialmente escrito em uma linguagem
de programao (chamada neste caso de linguagem
de alto nvel) e depois traduzido, com o auxlio de um
programa especial chamado compilador, para uma
forma que pode ser entendida pelo computador. O
cdigo fonte a verso do programa na linguagem na
qual ele foi escrito. A disponibilidade do cdigo fonte
permite que um programador modifique o programa.

LICENCIATURA EM CINCIA DA COMPUTAO 93


EaD UNIVERSIDADE DO ESTADO DA BAHIA
UNIVERSIDADE DO ESTADO DA BAHIA

Anotaes
UNIVERSIDADE DO ESTADO DA BAHIA EaD

REFERNCIAS

BUFFONI, Salete. Apostila de Algoritmo Estruturado. 4. ed. Disponvel em:< http://www.saletebuffoni.hpg.


ig.com.br/algoritmos/Algoritmos.pdf>. Acesso em: 27 jul. 2010.

CHAPIN, Ned. Flowcharting with the ANSI Standard: A Tutorial. ACM Computing Surveys, v.2, n. 2, p. 119-146,
jun.1979.

CHAPIN, Ned. Maintenance of Information Systems. Disponvel em:< http://www.iceis.org/iceis2002/tutorials.


htm>. Acesso em: 21 jun. 2010.

CHAPIN, Ned. New Format for Flowcharts, SoftwarePractice and Experience. v. 4, n. 4, p. 341-357, oct.-
dec. 1974.

COLLINS, Willian J. Programao Estruturada com estudo de casos em Pascal. So Paulo: Ed. Mc Graw-Hill
do Brasil, 1988.

CORMEN, Thomas H.; LEISERSON, Charles E. & RIVEST, Ronald L. Introduction to Algorithms. New
York:McGraw-Hill, 1990.

COSTA, Renato. Apostila de Lgica de Programao - Criao de Algoritmos e Programas. Disponvel em:<
http://www.meusite.pro.br/apostilas2.htm>. Acesso em: 17 jul. 2010.

FARRER, Harry et al. Algoritmos Estruturados. Rio de Janeiro: Editora Guanabara Koogan S.A, 1989. 252p.

FARRER, Harry. Programao Estruturada de Computadores. Rio de Janeiro: Ed. LTC, 1989.

FORBELLONE, Andr. Lgica de Programao - A Construo de Algoritmos e Estruturas de Dados. So


Paulo: Ed. Makron Books, 1993.

GOMES, Abel. Algoritmos, Fluxogramas e Pseudo-cdigo - Design de Algoritmos. Disponvel em: <http://mail.
di.ubi.pt/~programacao/capitulo6.pdf>. Acesso em: 13 set. 2010.

GOTTFRIED, Byron S. Programao em Pascal. Lisboa: McGraw Hill, 1994. 567p.

GRILLO, Maria Clia Arruda. Turbo Pascal 5.0 e 5.5. Rio de Janeiro: LTC - Livros Tcnicos e Cientficos, 1990.
396p.

GUIMARES, Angelo de Moura. Algoritmos e Estruturas de Dados. Rio de Janeiro: Ed. LTC, 1985.

HERGERT, Douglas. Dominando o Turbo Pascal 5. Rio de Janeiro: Editora Cincia Moderna, 1989. 550p.

KNUTH, D. E. The Art of Computer Programming. v. 3. Sort and Searchim. Addison Wesley, Reading, Mass.,
1973

KOZAK, Dalton V. Tcnicas de Construo de Algoritmos. Disponvel em: <http://minerva.ufpel.edu.


br/~rossato/ipd/apostila_algoritmos.pdf>. Acesso em: 12 ago. 2010.

LICENCIATURA EM CINCIA DA COMPUTAO 95


EaD UNIVERSIDADE DO ESTADO DA BAHIA

MANZANO, Jos Augusto N. G.; OLIVEIRA, Jayr Figueiredo. Algoritmos: Lgica Para Desenvolvimento de Pro-
gramao. So Paulo: rica, 1996. 270p.

MARTINS, Luiz E. G.; ZLIO, Valria M. D. Apostila da Disciplina Introduo Programao. Disponvel em:<
http://www.unimep.br/~vmdzilio/apostila00.doc>. Acesso em: 14 jun. 2010.

MECLER, Ian; MAIA, Luiz Paulo. Programao e Lgica com Turbo Pascal. Rio de Janeiro: Campus, 1989.
223p.

MICHAELIS: Moderno dicionrio da lngua portuguesa. So Paulo: Companhia Melhoramentos, 1998(Dicionri-


os Michaelis). 2259p.

MULLER, Nicolas. Como fazer um fluxograma?. Disponvel em: <http://www.oficinadanet.com.br/artigo/de-


senvolvimento/como_fazer_um_fluxograma> Acesso em: 13 fev. 2012.

NASSI, Ike. Ike Nassis Home Page. Disponvel em:< http://www.nassi.com/ike.htm>. Acesso em: 11 jun.
2010.

NASSI, Ike; SHNEIDERMAN, Ben. Flowchart Techniques for Structured Programming. ACM SIGPLAN Notices,
v. 8, n. 8, p.12-26, August 1973

ORTH, Afonso Incio. Algoritmos. Porto Alegre: Editora Pallotti, 1985. 130p.

OSIER, Dan. Aprenda em 21 dias Delphi 2. Rio de Janeiro:Campus, 1997. 840p.

PALMER, Scott D. Guia do Programador Turbo Pascal for Windows. Rio de Janeiro: Ed. Cincia Moderna Ltda,
1992. 470p.

PREUSS, Evandro. Algoritmos e Estrutura de Dados I. Disponvel em: <http://pt.scribd.com/doc/55726984/7/


Diagrama-de-Chapin>. Acesso em: 21 jan. 2012.

RINALDI, Roberto, Turbo Pascal 7.0: comandos e funes. So Paulo: rica, 1993. 525p.

SALIBA, Walter Lus Caram. Tcnicas de Programao: Uma Abordagem Estrutura. So Paulo: Makron,
McGraw-Hill, 1992. 141p.

SALIBA, Walter Lus Caram. Tcnicas de Programao: Uma Abordagem Estrutura. So Paulo: Ed. Makron
Books, 1992.

SALVETTI, Dirceu Douglas e Barbosa, L. M. Algoritmos. So Paulo: Ed. Makron Books, 1998.

SANTANA, Joo. Algoritmos & Programao. Disponvel em:< http://www.iesam.com.br/paginas/cursos/


ec/1ano/aulas/08/joao/APunidade-1.pdf>. Acesso em: 15 jul. 2010.

TERADA, Routo; SETZER, Valdemar W. Introduo Computao e Construo de Algoritmos. So Paulo:


Ed. Makron Books, 1992.

TONET, Bruno; KOLIVER, Cristian. Introduo aos Algoritmos. Disponvel em:< http://dein.ucs.br/napro/Algo-
ritmo/manuais/Manual 20Visualg.pdf>. Acesso em: 21 mar. 2010.

96 LICENCIATURA EM CINCIA DA COMPUTAO