Você está na página 1de 86

LGICA DE PROGRAMAO

EDIO N 1 - 2007

LARCIO DA CRUZ LOUREIRO


___________________________________________________________________
Apoio

Gesto e Execuo

Contedo e Tecnologia

SOCIESC Sociedade Educacional de Santa Catarina

SUMRIO

AULA 1 - INTRODUO LGICA E AO PROCESSO DE PROGRAMAO .. 7


AULA 2 - LINGUAGENS DE PROGRAMAO .................................................. 16
AULA 3 - FORMAS DE REPRESENTAO DE UM ALGORITMO .................... 27
AULA 4 - VARIVEIS E CONSTANTES .............................................................. 42
AULA 5 - ESTRUTURAS DE PROGRAMAO - CONDICIONAIS .................... 52
AULA 6 - ESTRUTURAS DE PROGRAMAO - REPETIO.......................... 68
AULA 7 - MODULARIZAO DE ALGORITMOS ............................................... 77

Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

Apresentao

Este livro didtico contm a disciplina de Lgica de Programao.


O material apresenta aos alunos do EAD os fundamentos da lgica de
programao de sistemas informatizados, estimulando o desenvolvimento de um
bom estilo de construo de sistemas e o pensamento lgico. Os tpicos
apresentados esto distribudos em aulas, e cada uma avana gradativamente nas
tcnicas essenciais para a elaborao de programas de computadores.
importante ressaltar que o livro foi desenvolvido com o objetivo de oferecer
um aprendizado independente, que est inerente aos estudos do EAD, e o contedo
foi revisado com o intuito de oferecer uma linguagem simples, objetiva e estimulante.
Lembre-se de que a sua passagem por esta disciplina ser tambm
acompanhada pelo Sistema de Ensino Tupy Virtual, seja por correio postal, fax,
telefone, e-mail ou Ambiente Virtual de Aprendizagem.
Entre sempre em contato conosco quando surgir alguma dvida ou
dificuldade.
Toda a equipe ter a maior alegria em atend-lo, pois a sua aquisio de
conhecimento nessa jornada o nosso maior objetivo.
Acredite no seu sucesso e bons momentos de estudo!
Equipe Tupy Virtual.

Carta do Professor
Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

Apesar do que voc possa ter ouvido, programar um computador no difcil. a


habilidade que qualquer um pode desenvolver, dedicando prtica, pacincia e muito
caf.

Wang (2007)

Caro aluno,
Desde o advento dos computadores, as comunidades de
programadores de software vm crescendo no somente para a criao de solues
para atender s novas necessidades do mercado, mas tambm uma resposta para
acompanhar as mudanas dos negcios empresariais. Esta constante evoluo (ou
transformao) nos oferece hoje recursos poderosos e ao mesmo tempo simples,
para a construo de sistemas.
A criao de programa para computadores uma atividade que sofre do
mesmo sentimento de aprender matemtica: h pessoas que adoram e h pessoas
que odeiam. Muitos especialistas tentam encontrar meios para melhorar as
abordagens didticas, que facilitem a conquista de novos adeptos, mas ainda se
percebe que h uma mistura de sentimento e vocao. Porm, diferente da
matemtica, a programao de sistemas uma atividade interativa que fornece
feedback imediato, como resultado de explorao, investigao e auto-avaliao do
programador.
importante observarmos que lgica uma prtica comum em nossas
atividades dirias, desde a deciso em qual local almoar at aceitar um emprego.
Por isso, acredita-se que os obstculos da lgica de programao no esto nos
conceitos e sim nas linguagens de programao utilizadas, bem como na utilidade
do trabalho de construo que est sendo realizado.
Por outro lado, ao conquistar sua posio como programador, voc poder
sentir a grande satisfao de um artista, j que utilizar seus conhecimentos e
habilidades para construir solues que sero utilizadas por outras pessoas, para
resolver problemas.
Ento, eis a proposta deste trabalho: oferecer uma abordagem simples e
construtiva para minimizar os desafios que a disciplina exige do aluno. Incentivlo(a) a persistir na evoluo dos seus estudos de lgica de programao, e faz-lo(a)
perceber que a prtica trar os resultados esperados.
Professor Larcio da Cruz Loureiro

Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

Cronograma de Estudo
Acompanhe no cronograma abaixo os contedos das aulas e atualize as
possveis datas de realizao de aprendizagem e avaliaes.
Semana

Carga horria

Aula

Data / Avaliao

Introduo Lgica de
Programao e ao Processo
de Programao

_/_ a _/_

1
12

Linguagens de
Programao

_/_ a _/_

Variveis e Constantes

_/_ a _/_

12

Estruturas de Programao
Condicionais

_/_ a _/_

12

Estruturas de Programao
Repetio

_/_ a _/_

Modularizao do programa

_/_ a _/_

Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

Plano de Estudo
Ementa
Fundamentos da lgica de programao, motivadores e histrico, processo e os
passos

que

envolvem

programao

de

computadores,

linguagens

de

programao, interpretadores e compiladores, conceitos bsicos sobre algoritmos e


suas representaes, construir algoritmos com variveis, constantes, operadores,
estruturas condicionais e de repetio.

Objetivos da Disciplina

Geral
.Transmitir ao aluno os conhecimentos essenciais para a programao de
computadores, aprendendo termos de lgica de programao e seus componentes.
Incentivar no aluno a capacidade de interpretao de problemas e a composio de
solues usando regras lgicas.

Especficos

- Conhecer os principais componentes para a programao de computadores;


- Desenvolver programas usando algoritmos, representados atravs de
pseudocdigos e fluxogramas;
- Acostumar-se com as regras de sintaxe utilizadas em linguagem de programao.
Carga Horria: 60 horas.

Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

Aula 1

INTRODUO LGICA E AO
PROCESSO DE PROGRAMAO

Objetivos da aula

Ao final desta aula, voc dever ser capaz de:

Descrever os fundamentos lgicos associados ao


desenvolvimento de software;

Descrever o processo de desenvolvimento de software;

Descrever as tcnicas para a resoluo de problemas;

Identificar as fases de execuo de um programa.

Contedos da aula

Acompanhe os assuntos desta aula e, se preferir, ao


trmino, assinale o contedo j estudado.


Histria do desenvolvimento de sistemas

Terminologias

O processo de desenvolvimento de software

Fases de execuo de um programa

Tcnicas para resoluo de problemas

Exerccios propostos.
Prezado aluno, seja bem vindo a nossa primeira
aula. Vamos conhecer as bases da lgica de
programao, como surgiu e sua evoluo.

Boa Aula!

Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

1 HISTRIA DO DESENVOLVIMENTO DE SISTEMAS

As linguagens de programao de hoje so o resultado de desenvolvimentos


que iniciaram em 1950. Conceitos numricos foram inventados, testados e
aprimorados a partir da incorporao de sucessivas linguagens de programao.
Com raras excees, os fundamentos de uma linguagem de programao so
fortemente influenciados pela experincia com linguagens anteriores. medida que
as linguagens evoluram, novos conceitos e paradigmas continuam a ser criados e o
cenrio de linguagens de programao daqui a dez anos ir ser, provavelmente,
muito diferente da experincia atual.
Uma das linguagens antigas de alto nvel que foi um grande sucesso, a
Fortran, introduziu expresses simblicas e a capacidade do programador criar
procedimentos modulares. A ltima verso do padro da linguagem foi publicado em
1997.
A linguagem COBOL tambm foi uma linguagem de grande adeso pelos
programadores e empresas (e ainda considerada uma opo importante), e sua
principal contribuio foi o conceito de descrio de dados.
A linguagem Fortran foi amplamente adotada pela computao numrica e a
linguagem COBOL, para o processamento de dados comerciais.
Nos dois casos, trs necessidades influenciaram no aprimoramento das
linguagens:
A constante necessidade de aprimorar a capacidade da linguagem para
atender s complexidades dos problemas apresentados;
Aumentar a velocidade na construo de programas e com isto fazer mais com
menos;
Facilitar a adoo da linguagem por profissionais que possuam um nvel
mnimo de conhecimento, necessrio para a construo de programas.
Atualmente, podemos considerar que as linguagens esto mais prximas das
trs

necessidades

descritas

anteriormente,

mas

apresentaram medida que essa abordagem evolui:


Algoritmos

alguns

incovenientes

se

SOCIESC Sociedade Educacional de Santa Catarina

Com uma construo cada vez mais fcil, reduz o nvel de domnio do
programador sobre o conhecimento da linguagem. Em caso de problema na
construo do programa, o programador pode ter dificuldades para resolv-lo,
j que no possui um amplo controle sobre as peculiaridades da linguagem;
Com a necessidade de velocidade na construo de sistemas, os aplicativos
utilizados acabam gerando maior importncia que a prpria linguagem. Isso
exige do programador domnio sobre a linguagem, como tambm, sobre o
prprio programa que ser utilizado para implementar a linguagem;
Com o volume cada vez maior de recursos disponveis na linguagem, exige-se
cada vez mais a atualizao do programador em novas tecnologias, sem
conseguir obter o domnio completo de recursos essenciais;
Com a insero de mais recursos linguagem, para que o programador
esteja no topo da tecnologia, precisar dedicar cada vez mais tempo para
aprender e construir recursos, que antes poderiam ser realizados de forma
mais simples.
PERCEBEU O DESAFIO?
medida que evolumos as linguagens de programao, melhoramos
a capacidade e velocidade na construo de programas, mas tambm
geramos cada vez mais opes para se resolver um problema,
aumentando a complexidade para a elaborao de solues.
Ento, diante desse desafio, imprescindvel ao programador perceber as
nuances que se apresentam nas linguagens de hoje. Por isso a grande importncia
que a Lgica de Programao desempenha sobre o programador, formando uma
slida base de discernimento a ser aplicada na adoo de uma linguagem
especfica. Com uma forte base de lgica de programao, o programador ter
maiores chances em dominar qualquer linguagem de desenvolvimento de sistemas.

Algoritmos

10

SOCIESC Sociedade Educacional de Santa Catarina

2 TERMINOLOGIAS NO DESENVOLVIMENTO DE SISTEMAS

Como todo segmento profissional, desenvolver sistemas possui um amplo


conjunto de termos tcnicos. Esses termos so o reflexo de anos de mudanas e
particularidades aplicadas nas linguagens de programao, mas podem variar de
acordo com o contexto em que so utilizadas. Nesse momento do curso
importante voc entender os seguintes termos:
Termo

Significado

Programa de computador

um conjunto de instrues que orientam o


computador para o que fazer e quando fazer.

Especificao

Documento que descreve como o problema deve


ser resolvido, fazendo-se uso da linguagem de
programao.

Implementar

Ato de escrever o cdigo de programao para


atender a uma especificao de soluo para um
problema.

Cdigo de Programao

o contedo da linguagem de programao,


inserido pelo programador, de acordo com as
regras da linguagem

Processo de desenvolvimento

Compreende todas as fases e atividades para a


construo de um sistema.

Compilar o programa

Traduzir

cdigo

de

programao

para

linguagem de mquina do computador.

Depurar o programa

Utilizar uma ferramenta para verificar se o cdigo


de programao est construdo de acordo com as
regras da linguagem de programao.

Sintaxe da linguagem

So

as

regras

implcitas

na

linguagem

de

programao que o programador precisa respeitar


para que o programa funcione adequadamente.

Processamento

o momento em que o programa est realizando a


execuo do cdigo inserido pelo programador.

Algoritmos

11

SOCIESC Sociedade Educacional de Santa Catarina

3 O PROCESSO DE DESENVOLVIMENTO DE SOFTWARE

Uma medida de sucesso no desenvolvimento de software a capacidade em


produzir bons produtos, com bons processos e de forma consistente. Para atender
esse tipo de consistncia, depende primariamente da presena de dois fatores:

Pessoas que sabem como construir programas;

Entendimento claro do que precisa ser feito e qual o problema que precisa ser
solucionado, estabelecendo limites objetivos e claros.

Segundo Donaldson e Siegel (2000), os seguintes princpios determinam um bom


processo de desenvolvimento de software:

Planejar o trabalho antes de realiz-lo;

Obter o acordo na definio de responsabilidades;

Estabelecer e incentivar equipes autogerenciveis;

Determinar pontos de verificao;

Manter uma contnua interao com o cliente do sistema;

Monitorar o progresso do trabalho;

Orientar o responsvel pelo trabalho e treinar as equipes;

Fornecer avaliaes intermedirias dos trabalhos;

Fornecer um feedback das entregas realizadas pelos profissionais envolvidos;

Melhorar constantemente o processo de desenvolvimento, ajustando os erros


enfrentados nos processos anteriores.

Desse modo, podemos afirmar que o trabalho de desenvolvimento de sistemas


tambm

recebe

premissas

que

facilitam

entrega

de

produtos

e,

conseqentemente, asseguram sua qualidade.


Um ciclo de desenvolvimento de software parte de princpios. Chama-se ciclo
porque um conjunto de etapas que, juntas, giram de acordo com um sentido lgico
de seqncia a ser executada, durante o trabalho de construo de um sistema.
Mostramos um exemplo de ciclo na figura 1.

Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

12

Figura 1 Ciclo de Desenvolvimento de Software


Dessa forma, podemos descrever sete passos para atender um ciclo de vida
de desenvolvimento:
1. Definio do Problema;
2. Desenho da soluo;
3. Refinamento da soluo;
4. Estratgia de testes do desenvolvimento;
5. Codificao do programa e testes;
6. Documentao;
7. Manuteno do programa.
A construo de cdigo de programao tambm possui seu prprio ciclo de
elaborao (figura 2), que faz parte do ciclo maior para o desenvolvimento da
soluo apresentada anteriormente.

Figura 2 Ciclo de Construo de Cdigo do Programa

Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

13

4 AS FASES DE EXECUO DE UM PROGRAMA

Um programa de computador possui trs fases distintas:

Entrada

Processamento

Sada

Na fase de entrada de dados, voc fornece os dados para o computador, no


momento em que o programa solicita informaes. A fase de entrada de dados a
primeira fase de execuo de um programa de computador.
A segunda fase a de processamento, na qual o programa realiza aes com
os dados digitados, de acordo com a programao implementada.
A terceira fase a de sada, em que o computador apresenta o resultado do
processamento tambm de acordo com a programao realizada (sada em tela ou
na impressora).
O processo de construo de programas deve considerar as trs fases,
principalmente quando a especificao envolve o usurio do computador. Tambm
importante ressaltar que, em cada uma das fases, h um conjunto de orientaes
que o programador precisa seguir e a linguagem de programao em uso, suporta
as trs fases de forma diferente, mas apresenta os mesmos resultados esperados
em cada fase.

5 TCNICAS PARA A RESOLUO DE PROBLEMAS

O matemtico George Polya (1945), uma autoridade na resoluo de


problemas, dividiu a soluo de problemas em quatro passos:
1. Entender o problema: este primeiro passo o mais complexo e o mais
importante. O objetivo obter o maior nmero de informaes sobre o
problema, usando tcnicas como entrevistas e observaes, e elaborando
modelos representativos que facilitem o entendimento do problema.

Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

14

tambm importante verificar a fonte de informaes para obter o


entendimento do problema;
2. Elaborando um plano: uma vez entendido o problema, necessrio elaborar
uma viso sobre a soluo para o problema. Um plano composto de um
conjunto de atividades que devero ser realizadas para a soluo do
problema. Nesta fase importante:
a. Localizar se problemas semelhantes j foram solucionados e obter a
informao necessria para reproduzir a soluo para o novo
problema;
b. Restringir o problema em uma forma simples que possa ser
solucionado. Caso se apresente um grande problema, dividir em partes
para facilitar a soluo;
c. Generalizar o problema para garantir que futuros problemas
semelhantes possam ser resolvidos da mesma forma (ou com
pequenos ajustes);
3. Executar o plano: uma vez o plano definido, deve ser acompanhado para
que o resultado esperado seja atingido. Cada elemento do plano dever ser
verificado aps ser aplicado. Se partes do plano se apresentaram
insatisfatrias, o plano dever ser revisado;
4. Avaliao: finalmente, o resultado dever ser avaliado para garantir que est
vlido e o problema est resolvido.

SNTESE

Nesta aula voc pde perceber como a lgica de programao uma


disciplina fundamental para o programador, baseando-se nos desafios e nas
tcnicas atuais para a resoluo de problemas.
Como toda atividade sempre possui uma histria, voc aprendeu que a
histria da programao de computadores um fato relevante a ser observado, e

Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

15

permite que possamos entender como as linguagens de programao chegaram at


a atualidade.
Falamos sobre as tcnicas para o desenvolvimento de software e quais os
elementos fundamentais para essas tcnicas, desde a terminologia bsica at os
passos que devem ser seguidos para um resultado final de sucesso.
Espero que voc esteja gostando e obtendo o sentimento de segurana nos
tpicos que estamos abordando. Vamos em frente!

EXERCCIOS PROPOSTOS

1) De acordo com seus estudos, descreva quais so os principais desafios do


programador da atualidade.
___________________________________________________________________
___________________________________________________________________
___________________________________________________________________
___________________________________________________________________
___________________________________________________________________
___________________________________________________________________

2) O que cdigo de programao?


___________________________________________________________________
___________________________________________________________________
___________________________________________________________________
___________________________________________________________________

3) Liste os passos para o ciclo de desenvolvimento de um sistema.


___________________________________________________________________
___________________________________________________________________
___________________________________________________________________
___________________________________________________________________
Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

16

Aula 2

LINGUAGENS DE PROGRAMAO

Objetivos da aula

Ao final desta aula, voc dever ser capaz de:

Entender as similaridades entre a linguagem humana e as linguagens


utilizadas para programar um computador;

Relacionar as caractersticas que envolvem a construo de um programa;

Fornecer orientaes para selecionar uma linguagem de programao para


uso;

Definir algoritmo e reconhecer seus elementos essenciais.

Contedos da aula

Acompanhe os assuntos desta aula, se preferir, ao


trmino, assinale o contedo j estudado.


Lngua vs. Linguagem de programao

Compiladores vs. Interpretadores

Programao e o sistema operacional

Programao e a Internet

Escolhendo uma linguagem de programao

O que so algoritmos?

Exerccios propostos

Prezado aluno, nesta segunda aula, voc aprender quais so os


componentes de uma linguagem de programao de computadores,
Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

17

quais so os elementos que influenciam o desenvolvimento de programas e o


principal assunto em lgica de programao: algoritmos.
Vamos em frente e boa aula!

1 LNGUA VS. LINGUAGEM DE PROGRAMAO

A linguagem humana baseada em smbolos, que fornecem um meio para a


comunicao entre as pessoas. constituda por elementos que determinam as
regras e devem ser seguidas para que se mantenha uma comunicao adequada.
Uma linguagem de programao de computador recebe as mesmas premissas, ou
seja, constituda por um conjunto de regras que determinam a forma como o
computador ir executar atividades especficas.
O Novo Dicionrio Aurlio da Lngua Portuguesa define linguagem como: o uso
da palavra articulada ou escrita como meio de expresso e de comunicao entre as
pessoas. O Dicionrio tambm descreve a Linguagem de Programao como:
linguagem que se expressa um conjunto de aes de forma aceitvel pelo
computador.
importante percebermos essa semelhana para que tenhamos a primeira
absoro das regras associadas a uma linguagem de computador e, com isso,
possamos obter uma adaptao construtiva na programao de computadores.
Hoje vivemos um nvel de uso das linguagens de computador muito prximas
da linguagem humana. Usando ainda a referncia ao Novo Dicionrio Aurlio, as
linguagens atuais so consideradas Linguagem de Programao de Alto Nvel, ou
seja, a linguagem de programao que se assemelha ao ingls comum, o que
torna mais fcil seu aprendizado e uso na definio de programas de computador.
Fica ento a mensagem de que no h nada de complicado associado s
linguagens de programao de computadores. Na verdade um constante exerccio
da memria humana que, no momento da construo de um programa, o
programador precisa lembrar-se das regras e dos elementos disponveis na
linguagem para atingir o seu objetivo.

Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

18

Tambm preciso lembrar que se aplica, na construo dos programas, a


lgica booleana, necessria para condicion-lo de acordo com validaes, regras e
orientaes que desejamos aplicar no computador.
Conforme observamos na aula anterior, a evoluo das linguagens de
computador gerou uma grande variao, que foram conseqncias no apenas de
revises e aprimoramentos, como tambm, a orientao de uma linguagem
especfica para problemas particulares. Dessa forma, centenas de linguagens de
programao surgiram e hoje so classificadas em quatro geraes:
Linguagens de primeira gerao (1GL): so linguagens totalmente
dependentes do computador, so conhecidas como linguagem de mquina,
e exigem o mais baixo nvel de abstrao que um programa pode ser
construdo. Seu uso est cada vez mais restrito na atualidade;
Linguagens de segunda gerao (2GL): com o objetivo de melhorar a
produtividade na construo dos programas para computador, a primeira
reviso das linguagens e a construo de novas, tinham por finalidade
fornecer elementos de programao mais abstratos e com um grande
nmero de funcionalidades pr-construdas. As funcionalidades eram
organizadas na forma de bibliotecas, que podiam ser reutilizadas nos
programas, acelerando a sua construo;
Linguagens de terceira gerao (3GL): tambm conhecidas como linguagens
estruturadas, so reconhecidas pela grande capacidade procedural e
estrutural dos dados. Isso significa que programas grandes podiam ser
divididos em pedaos integrados, facilitando a manuteno dos mesmos;
Linguagens de quarta gerao (4GL): so as conhecidas linguagens de alto
nvel destinadas construo de programas para finalidades especficas.
Alm de usufruir das caractersticas de modularizao e bibliotecas das
linguagens de terceira gerao, oferecem um meio ainda mais poderoso na
construo de programas, principalmente no que se refere reutilizao de
bibliotecas de programas. Com o uso cada vez mais comum de bancos de
dados relacionais, essas linguagens foram potencializadas para a construo
e manipulao de dados. So as linguagens amplamente utilizadas na
atualidade.

Algoritmos

19

SOCIESC Sociedade Educacional de Santa Catarina

2 COMPILADORES VS. INTERPRETADORES

Como vimos, atualmente, as linguagens de quarta gerao so as mais


utilizadas. Significa que trabalhamos em um nvel de construo de programas que o
computador no entende. A isto chamamos de abstrao de cdigo, ou seja, no
sabemos como o computador resolver o programa que construmos, por ser
linguagem de mquina, mas sabemos todas as regras de alto nvel que devem ser
seguidas.
nesse cenrio que ferramentas especficas, chamadas compiladores e
interpretadores, so utilizadas para converter o programa construdo em linguagem
de alto nvel para a linguagem de baixo nvel do computador. Essa converso,
tambm muito conhecida como traduo, gera o nvel de facilidade que as
linguagens atuais necessitam para manter a produtividade que os negcios exigem
hoje.
A primeira abordagem de traduo a interpretao. A ferramenta de
interpretao de programas (interpretador) realiza a traduo do programa
construdo em alto nvel, em tempo de execuo do programa. Conforme vimos na
aula anterior, sempre que voc executar o programa, precisar que o interpretador
realize a traduo, tal qual mostramos na figura 3.
Construir, testar e executar o programa
Programa de
Computador

Interpretador

Linguagem de
Mquina

Computador

Figura 3 Etapas na construo e execuo de programas interpretados

A segunda abordagem de traduo a compilao (figura 4). A ferramenta de


compilao (compilador) interpreta o programa construdo em linguagem de alto

Algoritmos

20

SOCIESC Sociedade Educacional de Santa Catarina

nvel e gera um programa equivalente em linguagem de mquina. A traduo


realizada de vrias formas e sua abordagem depende do compilador em uso.

Construir o programa e primeira compilao


Programa de
Computador

Compilador

Linguagem de
Mquina

Computador

Testar e executar o programa compilado


Programa de
Computador
(em linguagem de
mquina)

Computador

Figura 4 Etapas na construo e execuo de programas compilados

3 PROGRAMAO E O SISTEMA OPERACIONAL

Segundo Custer (1993), um sistema operacional um programa de


computador que fornece um ambiente no qual outros programas de computador
possam ser executados, permitindo-lhes tirar vantagem fcil do processador e de
dispositivos de entrada e sada, como os discos.
Como todo dispositivo computacional necessita de um sistema operacional,
bem como as variaes que existem atualmente no mercado (Windows, Linux e
suas vrias compilaes), importante voc perceber a importncia que o software
bsico possui na construo de programas.
Como o sistema operacional responsvel pela disponibilidade de vrios
recursos do computador, as atuais linguagens de programao se utilizam das
bibliotecas fornecidas pelo sistema operacional para realizar suas principais tarefas.

Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

21

As potencialidades de um programa so derivadas das capacidades que o sistema


operacional oferece para a linguagem de programao.
Por exemplo, dessa forma que o Windows e as interfaces grficas
fornecidas com o Linux oferecem ao programador a facilidade para a construo de
programas que utilizam janelas. Quando um programador insere o comando para
desenhar uma janela, a linguagem, aps interpretada ou compilada, realiza o
desenho atravs do dilogo entre a linguagem e os recursos do sistema operacional,
que, por sua vez, se utiliza das caractersticas fsicas do computador.
Isso tambm vale para armazenar informaes, imprimir dados e outras
atividades que um programa pode realizar.
Nesse momento, o importante voc reconhecer a importncia em conhecer
as potencialidades do sistema operacional para conseguir explor-las ao mximo e
com isto obter resultados ricos e poderosos na construo de seus programas.

4 PROGRAMAO E A INTERNET

Da mesma forma que o sistema operacional oferece recursos e influencia na


construo de programas, a Internet oferece um novo nvel de oferta de recursos. A
Internet de hoje disponibiliza um conjunto de funcionalidades que o programador
pode explorar para construir programas a serem utilizadas por dezenas ou milhares
de pessoas, com a ajuda de trs elementos fundamentais:

Um meio comum de acesso s informaes (rede de comunicao pblica


Internet);

Uma interface grfica comum para manipular as informaes (pginas


apresentadas em um nico aplicativo - Navegador);

Uso de uma linguagem de programao comum, independente do


computador utilizado pelo usurio.
O desenvolvimento para a Internet tambm se baseia nas mesmas premissas

de construo de programas, mas possui particularidades que exigem do


programador algumas preocupaes que a programao para Windows ou Linux
no exigem. A maioria dessas particularidades est associada aos elementos
fundamentais acima mencionados.
Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

22

5 ESCOLHENDO UMA LINGUAGEM DE PROGRAMAO

Alm das geraes das linguagens de programao de computadores, h


uma categoria atual que fornece uma nova abordagem para a construo de
programas: as ferramentas de desenvolvimento rpido de sistemas, ou RAD (rapid
application development). Com o maior nmero de necessidades das solues
baseadas em interfaces grficas, um novo conjunto de ferramentas de software
explora essas oportunidades, na forma de um processo interativo para o
programador no desenvolvimento da soluo.
As linguagens RAD, como so conhecidas, permitem ao programador
desenhar como o programa dever se apresentar (interface com o usurio) e ento
escrever o cdigo de programao para fazer com que a janela desenhada tenha
alguma funcionalidade para o usurio. Com este mtodo, houve certo nivelamento
das ferramentas utilizadas para construir programas, liberando o programador para
manter o foco na linguagem e na lgica empregada em resolver o problema.
Dessa forma, a escolha de uma linguagem de programao recebe um
conjunto de avaliaes que, de acordo com o objetivo, determina qual deve ser a
melhor aplicada. No existe a melhor linguagem. O que existe so algumas variveis
que podem ser consideradas na escolha de uma linguagem:

Prazo para o desenvolvimento do programa e a experincia do programador


na linguagem, que favoream a produtividade de execuo dos trabalhos de
programao;

Sistema operacional onde o programa ser executado;

Necessidades tecnolgicas especficas que favoream uma linguagem em


particular;

Evoluo da linguagem, compatibilidade com novas tecnologias e viso de


crescimento futuro;

Tamanho da equipe envolvida na construo do sistema;

Suporte do fabricante ou de uma comunidade constituda, que fornea um


nvel mnimo de segurana na construo de programas.

Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

23

Nesse contexto, a importncia de um bom entendimento e conhecimento sobre


lgica de programao, objeto desse livro didtico, fundamental para que a
elaborao de um programa possa ser utilizada em qualquer linguagem.
H um site independente na Internet que procura realizar uma pesquisa mensal
de popularidade das atuais linguagens de programao
(http://www.tiobe.com/index.htm?tiobe_index). A tabela 1, a mais atual publicada,
apresenta o seguinte resultado para as 10 primeiras.
Tabela 1 Ranking de Linguagens
Ranking Linguagem
1

Java

C++

PHP

Visual Basic

Perl

Python

JavaScript

C#

10

Ruby

6 O QUE SO ALGORITMOS?

Segundo Ximenes (1993), um algoritmo qualquer conjunto finito de


instrues que possa ser seguido para a realizao de uma tarefa especfica ou
resoluo de um determinado problema. J na rea de Informtica, tambm de
acordo com Ximenes (1993), um algoritmo definido como uma seqncia
ordenada e finita de passos, independente da linguagem de programao a ser
utilizada para codific-lo, que leva soluo de um dado problema.
provvel que voc j tenha ouvido falar em algoritmos. Na verdade, a
palavra pode ser aplicada a qualquer atividade que aplique o conceito acima
Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

24

descrito. Receitas de bolo, manuais com procedimentos de execuo e roteiros para


atendimentos especficos so alguns exemplos de algoritmos.
Aplicamos o conceito de algoritmo diariamente, a partir do momento que
estabelecemos um planejamento mental para realizar uma determinada tarefa,
considerando que deveremos executar um conjunto de passos at a concluso do
objetivo a ser atingido.
Por exemplo:
Incio
1. Colocar a chave na ignio;
2. Virar a chave;
3. Se o carro pegar
3.1. Pressionar o pedal de embreagem;
3.2. Posicionar a primeira marcha;
3.3. Acelerar o carro;
4. Seno
4.1. Repetir;
Fim
Um algoritmo possui quatro propriedades essenciais:

Completo: para que um algoritmo seja considerado completo, todas as


aes precisam ser descritas e devem ser nicas;

No pode haver redundncia: um conjunto de instrues s pode ter


uma nica forma de ser interpretada. Conforme nosso exemplo acima, o
algoritmo s permite uma forma de ligar o carro usando a chave de
ignio;

Determinstico: esta terceira propriedade significa que se as instrues


forem executadas, certo que o resultado esperado ser sempre atingido;

Finito: significa que as instrues precisam terminar aps um nmero


limitado de passos.

SNTESE

Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

25

Nesta segunda aula avanamos um pouco mais no mundo da programao


de sistemas de computador. Comeamos entendendo as razes que definem a
linguagem de computador como um meio para o programador realizar suas
atividades e percebemos a grande similaridade com a linguagem humana.
Aprendemos tambm quais os agentes internos e externos que influenciam
na tarefa de programar um computador e ressaltamos a importncia que o contexto
de execuo do programa determina os primeiros passos na sua construo.
E j que falamos tanto de linguagem, obtivemos o primeiro contato com as
geraes de linguagens de computador, suas caractersticas e os elementos
essenciais para escolher a linguagem a ser utilizada.
Finalmente, fizemos nossa primeira incurso sobre o termo algoritmo.
Perceba que muitos conceitos aqui apresentados encaixam-se com as
informaes tratadas na primeira aula, sendo uma abordagem estruturada e
construtiva na elaborao de seu conhecimento para o desenvolvimento de
sistemas.
Espero que voc tenho chegado at aqui motivado pelo conhecimento at
agora absorvido e tenha certeza que muito mais vm por a. Fique firme, pratique os
exerccios sugeridos e vamos seguindo em frente.

EXERCCIOS PROPOSTOS

2) Quais so as geraes das linguagens de programao?


___________________________________________________________________
___________________________________________________________________
Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

26

___________________________________________________________________
___________________________________________________________________
___________________________________________________________________
___________________________________________________________________

2) Cite a diferena entre o compilador e um interpretador.


___________________________________________________________________
___________________________________________________________________
___________________________________________________________________
___________________________________________________________________

3) Descreva com as suas prprias palavras o que um algoritmo.


___________________________________________________________________
___________________________________________________________________
___________________________________________________________________
___________________________________________________________________
___________________________________________________________________
___________________________________________________________________

4) Quais so as propriedades essenciais de um algoritmo?


___________________________________________________________________
___________________________________________________________________
___________________________________________________________________
___________________________________________________________________

Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

27

Aula 3

FORMAS DE REPRESENTAO DE
UM ALGORITMO
Objetivos da aula

Ao final desta aula, voc dever ser capaz de:

Entender as opes de representao de um algoritmo;

Fornecer as orientaes nas tcnicas de representao de algoritmos;

Construir um algoritmo usando pseudocdigo;

Apresentar graficamente um algoritmo usando um fluxograma.

Contedo da aula

Acompanhe os assuntos desta aula, se preferir, ao


trmino, assinale o contedo j estudado.


Formas de representao de um algoritmo

O que um pseudocdigo?

Interpretador de Linguagem Algortmica

Regras para construo de um pseudocdigo

O que um fluxograma?

Regras para representao grfica de um algoritmo

Exerccios propostos
Nesta terceira aula, voc conhecer detalhes tcnicos envolvidos na
construo de algoritmos e aprender como represent-los.
Como voc ver nesta unidade a representao de algoritmos e o

uso de um software para apoio, so recursos comuns que o programador iniciante


obtm para melhor entendimento e prtica na lgica de programao.
Boa aula!
Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

28

1 FORMAS DE REPRESENTAO DE UM
ALGORITMO

Os algoritmos podem ser representados de vrias formas, como:


Usando uma lngua comum (portugus, ingls, espanhol e etc.) meio utilizado
para a descrio de receitas, manuais de procedimentos, etc., sendo a forma
mais espontnea na representao de algoritmos;
Usando uma linguagem de portugus estruturado, que tambm conhecida
como pseudocdigo ou pseudo linguagem. O pseudocdigo tambm recebe
variaes de nomes, como: Portugol, PDL (Program Design Language),
pascalide, linguagem algortmica e outros. Nesse curso vamos utilizar o
termo pseudocdigo, considerando ser a forma mais pura de objetivo desse
mtodo;
Usando representaes grficas, como diagramas e fluxogramas.
Cada uma das formas de representao possui vantagens e desvantagens e
cabe ao programador escolher qual oferece as melhores caractersticas para atender
suas necessidades. Tambm comum a combinao das representaes,
principalmente quando h necessidade de um nvel de entendimento de vrias
pessoas. As trs formas mais comuns para representar um algoritmo so:
Diagrama de Nassi-Shneiderman (Diagrama de Chapin);
Pseudocdigo;
Fluxogramas (Diagrama de Fluxo).
Nesse curso focalizaremos os pseudocdigos e fluxogramas.

2 O QUE UM PSEUDOCDIGO?

uma forma especial de linguagem, bem mais restrita que a lingua portuguesa
e com significados bem definidos para todas as palavras utilizadas nas instrues
inseridas em um programa. O objetivo principal dessa abordagem permitir ao
programador pensar no problema em si e no nas regras particulares de uma
Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

29

linguagem de programao ou em qual equipamento/sistema operacional ir


executar o algoritmo.
No pesudocdigo, assim como nas linguagens de programao, basicamente
utilizamos comandos que compem a execuo do algoritmo. So comandos
executados seqencialmente, de forma que um comando somente ser executado
ao trmino da execuo do comando anterior.
Um exemplo de pseudocdigo :
Inicio
<declaraes de variveis>
<comandos>
fim
Nas prximas pginas, vamos explorar os principais componentes dessa
linguagem e, medida que o curso evoluir, novos elementos da linguagem sero
apresentados, para representar a soluo do problema que ser proposto.

3 INTERPRETADOR DE LINGUAGEM ALGORTMICA

Um dos grandes desafios do programador iniciante acostumar-se com as


tarefas para a construo de algoritmos. Tradicionalmente, aprende-se lgica de
programao usando-se uma linguagem particular, dessa forma, o iniciante aprende
lgica j inserido na linguagem de programao final que ser utilizada (Pascal, C,
C++ e etc.). Alguns autores acreditam que essa abordagem acelera o processo de
aprendizagem, mas exige do iniciante um grau de entendimentos dos elementos
envolvidos, que pode no atender a todos. Coisas como experincia anterior com a
informtica, interesse natural em programao de computadores e capacidade de
autodesenvolvimento, fornecem um contexto adequado para essa abordagem.
Para os programadores iniciantes, que possuem alguma limitao no
aprendizado sobre lgica de programao, necessria uma abordagem mais clara,
comum e gradual.
Assim, surgiram as iniciativas dos projetos de Interpretador de Linguagem
Algortmica (ILA). De forma geral, so necessidades percebidas na rea acadmica
Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

30

para envolver os alunos nos primeiros passos no mundo da programao. Vrios


programas foram lanados com esta finalidade, mas, infelizmente, no se mantm
um padro mnimo da linguagem de pseudocdigo utilizada.
Nesse curso utilizaremos um ILA projetado no mundo acadmico de Portugal,
um software chamado Portugol, construdo usando a linguagem Java para seu
desenvolvimento. Os exemplos e exerccios apresentados sero todos compatveis
com o ambiente desse sistema.
A grande vantagem no uso dessa ferramenta a simplicidade da linguagem
utilizada e a capacidade de relacionamento em gerar cdigo e fluxograma em um
ambiente nico. De todos os programas que testei, este se apresenta com a melhor
abordagem dos elementos necessrios da ferramenta para um programador
iniciante.

3.1 INSTALAO DO ILA - Portugol


Efetue o download do programa Portugol a partir da Biblioteca do curso,
identificado pelo seguinte nome:
Portugol233.zip
Ao terminar o download, acesse a pasta onde o arquivo foi salvo e
descompacte-o. Ao terminar a descompactao, uma subpasta ser apresentada
com o nome de dist (figura 5). Abra-a e observe que haver um arquivo com o nome
run.bat, efetue um duplo-clique sobre esse arquivo para executar o programa.

Figura 5 Lista de Arquivos da pasta dist do software Portugol

Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

31

importante verificar que, para executar o programa, necessrio que uma


Mquina Virtual Java (JVM ou Java Virtual Machine) esteja instalada no sistema
operacional. Caso contrrio, a execuo do arquivo acima apresentar um erro.
Caso voc precise instalar uma JVM, acesse novamente a pgina da
biblioteca do curso, verifique que h dois arquivos que podero ser baixados:
plataforma Windows e plataforma Linux. Efetue o download do programa de acordo
com o seu sistema operacional. So eles:
Plataforma Windows - jre-6u1-windows-i586-p.exe
Plataforma Linux - jre-6u1-linux-i586-rpm.bin
Execute o programa baixado e siga as instrues da instalao.
Caso tudo funcione adequadamente, ao executar o arquivo run.bat, ser
apresentada uma janela conforme a figura 6.

Figura 6 Janela de entrada no sistema Portugol


O sistema oferece dois ambientes para construo de algoritmos: editor de
texto, para a construo usando pseudocdigo ou o editor de fluxogramas, para a
construo usando uma abordagem grfica.
3.2 AMBIENTE DO EDITOR DE PSEUDOCDIGO DO PORTUGOL
Ao executar o programa de Editor de Texto (Portugol IDE), um ambiente de
construo de pseudocdigo apresentado (figura 7).
Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

32

Figura 7 Janela principal do sistema Portugol


O programa possui elementos visuais como todo software para Windows,
possui um menu de comandos, uma barra de ferramentas, e dois painis principais:
editor de cdigo e informaes.
No painel de informaes, h uma diviso em guias que oferece trs reas de
contedo, conforme mostra a figura 8.

Guia

Descrio/Objetivo

Ecran

Apresenta os resultados do algoritmo

Informaes

Apresenta informaes sobre o sistema


e pontos de observao sobre a
execuo do programa.

Ajuda da Linguagem

Manual com as regras da linguagem de


pseudocdigo utilizada na ferramenta.

Figura 8 Pginas do painel de informaes

Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

33

4 REGRAS BSICAS PARA A CONSTRUO DE UM


PSEUDOCDIGO
Conforme vimos, um pseudocdigo recebe regras da mesma forma que uma
linguagem convencional. Possui regras de sintaxe (forma como os comandos devem
ser escritos) e regras de semntica (conjunto de aes que sero exercidas pelo
computador durante a execuo do referido comando).
Todo programa escrito em pseudocdigo deve conter a estrutura do blo0co
principal de comandos, que deve comear com a palavra inicio e terminar com a
palavra fim (sem as aspas). Os comandos para a execuo do programa so
inseridos dentro do bloco inicio-fim.
Observe o programa abaixo escrito em pseudocdigo:
inicio
variavel texto nome
variavel inteiro nota1, nota2, media
enquanto nome =/= "fim" faz
escrever "Digite o nome do aluno"
ler nome
escrever "Informe a nota da primeira prova"
ler nota1
escrever "Informe a nota da segunda prova"
ler nota2
media <- (nota1 + nota2) / 2
se media >= 7 ento
escrever "Aluno aprovado = ", nome
seno
escrever "Aluno reprovado = ", nome
fimse
Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

34

ler nome
fimEnquanto
fim
Observe que as palavras em negrito so os comandos em conformidade com a
sintaxe da linguagem de pseudocdigo, que aplicada no Interpretador da
Linguagem. Perceba tambm que algumas linhas possuem recuos em relao
linha anterior. A essa distribuio de recuos chamamos indentao, significando
que os elementos possuem uma hierarquia facilitando a leitura do programa por
outras pessoas.
4.1 DIGITANDO O ALGORITMO NO SOFTWARE PORTUGOL
Ao digitar um programa no PORTUGOL IDE (figura 9), para verificar se o
programa funciona de acordo com suas expectativas, clique no boto Executar, ou
pressionar a tecla F3, ou executar o comando Executar do menu Algoritmo.

Figura 9 Comando Executar


Aps a execuo do algoritmo, observe que o painel de informaes apresentar
contedo nas guias ecran e informaes. No ecran, so apresentadas as
mensagens do comando ESCREVER e LER (Entrada e Sada do algoritmo).

Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

35

Quando a instruo LER executada, uma caixa de dilogo apresentada


solicitando a informao para a entrada de dados pelo usurio (figura 10).

Figura 10 Programa em execuo no painel de informaes


Em Informaes, so apresentados dados sobre a execuo do algoritmo
(figura 11), os horrios de execuo e os passos realizados.

Figura 11 0 painel de informaes apresenta um resumo

5 O QUE UM FLUXOGRAMA?

O fluxograma, ou diagrama de fluxo, foi por muito tempo a representao


preferida dos programadores para a construo de algoritmos. Um fluxograma
uma representao grfica da seqncia de aes que podem ocorrer em um
programa.
Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

36

O fluxograma utiliza-se de smbolos especficos para a representao grfica


dos algoritmos, e sofrem algumas variaes de acordo com o autor ou ferramenta
em uso. A tabela 2 mostra a simbologia tradicionalmente utilizada por fluxogramas.
Tabela 2 Elementos grficos utilizados em fluxogramas

Processos Utilizado na atribuio de


valores para variveis

Deciso Representa as decises que


ocorrem no programa

Leitura Para ler o contedo das variveis

Escrita Utilizado para a escrita de dados e


contedos de variveis

Conector Muito utilizado para conectar


partes do fluxo ou na integrao com outros
fluxos
Terminal Normalmente utilizado para Inicio
e Fim do fluxo.
Setas de fluxo de controle

Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

37

Com esses elementos visuais o programador representa cada passo que o


programa deve executar, obtendo uma viso grfica do fluxo do programa.
Existe um grande nmero de ferramentas baseadas em computador para
apoiar a construo de fluxogramas, tanto para Windows como tambm para Linux.
Em nosso curso, vamos utilizar a ferramenta Portugol para a representao
grfica em fluxogramas. Esse software permite a converso direta entre o programa
construdo em pseudocdigo e sua correspondncia representativa em fluxograma,
segundo nos mostra a figura 12.

Figura 12 Converter o algoritmo em fluxogrma

Mas possvel tambm realizar a operao contrria, ou seja, iniciar a


construo de um algoritmo pelo fluxograma e converter o diagrama para
pseudocdigo. Veja as figuras 13 e 14.

Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

Figura 13 Ambiente de visualizao/construo de Fluxogramas

Algoritmos

38

SOCIESC Sociedade Educacional de Santa Catarina

Figura 14 Exemplo de Fluxograma

Algoritmos

39

SOCIESC Sociedade Educacional de Santa Catarina

40

SNTESE

Agora sim!
Comeamos a ter uma viso prtica sobre a construo de programas de
computador. Nesta aula voc aprendeu as duas principais representaes que
podem ser utilizadas para a construo de algoritmos. So as ferramentas principais
do curso e servem como principal base para acelerar no conhecimento de
linguagens de programao.
Cabe ressaltar que o uso dessas ferramentas tem como principal objetivo
facilitar a descrio do seu entendimento para a soluo de um problema e a opo
entre pseudocdigo ou fluxograma depender do contexto do problema a ser
resolvido.
Nas prximas aulas voc conhecer os comandos utilizados em cada
representao de um algoritmo, estudando detalhadamente cada exemplo.
At a prxima aula.

Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

41

EXERCCIOS PROPOSTOS

3) Descreva as diferenas entre um pseudocdigo e um fluxograma.


___________________________________________________________________
___________________________________________________________________
___________________________________________________________________
___________________________________________________________________
___________________________________________________________________
___________________________________________________________________

2) Execute o software Portugol e construa em pseudocdigo e/ou fluxograma os


algoritmos abaixo (no se preocupe nesse momento em utilizar desvios
condicionais):

Troca de pneu de um carro;

Troca de lmpada de um cmodo da casa;

Realizar uma ligao e conversar por um telefone celular;

Verificao do nvel de leo do carro.

Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

42

Aula 4

VARIVEIS E CONSTANTES
Objetivos da aula

Ao final desta aula, voc dever ser capaz de:

Conceituar variveis e constantes em um algoritmo;

Declarar variveis, determinar o tipo de dados a ser armazenado e comentar


algoritmos;

Atribuir valores s variveis;

Trabalhar com expresses matemticas.

Contedos da aula

Acompanhe os assuntos desta aula, se preferir, ao


trmino, assinale o contedo j estudado.


Variveis e constantes

Tipos de dados e Atribuio de valores

Comentando algoritmos

Operadores aritmticos e relacionais

Expresses aritmticas e relacionais

Instrues Ler e Escrever (pseudocdigo)

Exerccios propostos
As variveis e constantes so elementos fundamentais de um
programa de computador. Nesta aula voc obter o conhecimento
necessrio para construir algoritmos usando estes elementos de
programao.

Boa aula!

Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

43

1 VARIVEIS E CONSTANTES

As variveis e constantes so conceitos fundamentais para a construo de


algoritmos, pois so atravs deles que um algoritmo armazena os dados dos
problema.

1.1 VARIVEIS
Quando uma determinada informao do problema tem a possibilidade de
sofrer alteraes (ou variaes) no decorrer da execuo do programa, essa
informao dever ser tratada como uma varivel do problema e deve ser
representada no algoritmo. Como o prprio nome sugere, as variveis podem conter
valores diferentes a cada instante do programa, segundo as instrues do algoritmo.
Do ponto de vista tcnico, uma varivel um espao de memria do
computador que reservamos para guardar os dados elementares do problema a
ser resolvido.
Quando descrevemos uma varivel no algoritmo, utilizamos um nome (ou
identificador) para represent-la e seu contedo pode ser alterado, consultado ou
apagado quantas vezes forem necessrias, pois a varivel sempre armazenar o
ltimo valor atribudo para o seu contedo. A ao de descrever uma varivel no
algortimo chamada de declarao ou declarar uma varivel.

1.2 CONSTANTES
Quando uma informao no tem qualquer possibilidade de alterao, ou
variar, no decorrer da execuo do programa, deve ser tratada como uma
constante.
Do ponto de vista tcnico, uma constante uma rea de armazenamento do
computador que manter seu contedo durante toda a execuo do programa. Esta
rea possui um nome (ou identificador) e poder ser recuperada (lida) a qualquer
momento no algoritmo.
Algoritmos

44

SOCIESC Sociedade Educacional de Santa Catarina

2 TIPOS DE DADOS E ATRIBUIO DE VALORES

Toda varivel ou constante precisa receber um tipo de dado, que determinar


qual o domnio de seu contedo. Os tipos mais comuns de dados so conhecidos
como tipos primitivos, descritos na tabela 3.
Tabela 3 Tipos de dados usados em Pseudocdigo
Tipo

Descrio

Inteiro

Todo e qualquer dado numrico


que pertena ao conjunto de
nmeros inteiros relativos

Domnio
-2.147.483.648
2.147.483.647

(negativo, nulo ou positivo)

Real

Todo e qualquer dado numrico


que pertena ao conjunto de
nmeros reais (negativo, nulo ou

-1.7 E 308
1.7 E 308

positivo)

Lgico

Todo e qualquer dado que s pode


assumir duas situaes (dados
biestveis, algo como verdadeiro ou
falso)

Texto

Todo e qualquer dado composto


por um conjunto de caracteres

Verdadeiro ou Falso,
normalmente entre pontos.
Por exemplo, .verdadeiro.
ou .f.
Seqncias de caracteres
entre aspas.

alfanumricos (nmeros, letras e


caracteres especiais)

Toda varivel possui algum contedo que ser armazenado e manipulado pelo
algoritmo. As variveis que sero utilizadas nos algoritmos devem ser declaradas
inicialmente. A declarao de uma varivel indica o tipo de dado que ela pode
guardar no decorrer da execuo do algoritmo (ou no decorrer da execuo do
programa que futuramente ser construdo).
Para declararmos uma varivel, temos que criar-lhe um identificador, que ser
o nome da varivel no algoritmo e tambm temos que definir o tipo de dado que a
Algoritmos

45

SOCIESC Sociedade Educacional de Santa Catarina

varivel pode armazenar. Faremos a declarao de variveis obedecendo ao


seguinte padro:
variavel [tipo] [nome]
Onde tipo pode ser uma das palavras: inteiro, real, lgico ou texto; o nome
deve seguir as seguintes regras:
Deve comear por um caractere alfabtico;
Pode ser seguido por mais caracteres alfabticos e/ou numricos;
No permitido o uso de caracteres especiais, como: @, #, &, *, +, ? etc.
(exceto o sublinhado).
Exemplos de nomes corretos de variveis:
Agencia

Nome_Aluno

Endereco

Salario

Data_Venda

Sexo

Nr_Nota_Fiscal

Nr_Tentativas

2.1 CASE SENSITIVE


Algumas linguagens possuem regras particulares para os nomes das variveis.
Mas h uma observao importante e que pode variar de uma linguagem para outra,
a sensibilidade por letras maisculas e minsculas utilizadas no nome da varivel.
Por exemplo, Nome diferente de NOME.
Por isso, para que voc no tenha problemas futuros, neste curso declare
sempre as variveis em letras maisculas.

2.2 ATRIBUIO DE VALORES


Conforme vimos, cada varivel deve armazenar e determinar um tipo de dado.
A definio de tipos de dados diferentes oferece uma srie de vantagens para a
programao de computadores. As duas mais importantes so:
A economia no armazenamento de dados na memria;
Velocidade nas operaes aritmticas e lgicas.

Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

46

A forma de atribuir um valor para uma varivel utilizando o sinal de igual


acompanhado do valor a ser atribudo. Em pseudocdigo utilizado o smbolo de
seta:
X2

3 COMENTANDO ALGORITMOS

Um tpico importante, mas pouco explorado nas linguagens de programao


a necessidade de inserir comentrios no algoritmo construdo. Toda linguagem de
programao, bem como um pseudocdigo fornecem uma forma simples (e
normalmente padronizada) para inserir comentrios no programa.
O aspecto importante em inserir comentrios est na capacidade de leitura que
forneceremos para outros programadores que, porventura, venham a reutilizar o
programa construdo. As solues lgicas que construmos para um problema pode
variar de programador para programador, por isso trabalhar com comentrios uma
prtica saudvel para o relacionamento com outros profissionais.
Ao fazer uso dos comentrios, voc estar documentando o programa para seu
prprio uso. No incomum um programador esquecer quais foram as bases que
utilizou para construir o algoritmo e, caso necessite revisar um programa h muito
tempo sem ser acessado, como proceder se o esqueceu?
Para inserir um comentrio, inicie a frase com duas barras comuns. Por
exemplo:
//Exemplo de comentrio

4 OPERADORES ARITMTICOS E RELACIONAIS

Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

47

4.1 OPERADORES ARITMTICOS


Quando construmos algoritmos, comum trabalharmos com expresses
matemticas para a resoluo de alguns problemas. As expresses matemticas
podem fazer uso de operadores aritmticos e lgicos. As operaes so aes
executadas sobre os operandos (variveis ou constantes) que foram previamente
definidos.
Chamamos de operadores aritmticos o conjunto de smbolos que representa
as operaes bsicas da matemtica e podem ser aplicadas a nmeros inteiros e/ou
reais, conforme tabela 4.
Tabela 4 Operadores Aritmticos
Operao

Operador

Adio

Subtrao

Multiplicao

Diviso

Potenciao

Radiciao

Os smbolos utilizados como operador na tabela 4, so representativos na


ferramenta de pseudocdigo utilizada neste curso. Algumas linguagens possuem
variaes nos smbolos utilizados para potenciao e radiciao.
Um aspecto importante no uso de operadores aritmticos sua prioridade
matemtica, ou seja, um operador de maior prioridade realizar sua operao antes
de um operador de menor prioridade. A tabela 5 apresenta as regras de prioridade e
que podem ser alteradas com o uso de parnteses.
Tabela 5 Prioridade de clculo dos operadores aritmticos
Operador

Operao

^, **

Exponenciao

Algoritmos

Prioridade
1

SOCIESC Sociedade Educacional de Santa Catarina

Diviso

Multiplicao

Adio

Subtrao

48

4.2 OPERADORES RELACIONAIS


Um outro grupo importante de operadores formado pelos operadores
relacionais (tabela 6). Quando queremos fazer comparaes entre valores ou entre
expresses (tanto matemticas como lgicas), precisamos utilizar essa categoria de
operadores.

Tabela 6 Operadores relacionais


Comparao
Igual

Operador
=

Diferente

=/=

Maior que

>

Menor que

<

Maior ou igual a

>=

Menor ou igual a

<=

O resultado de uma comparao sempre um valor lgico (verdadeiro ou


falso).
Os smbolos utilizados como operador na tabela acima, tambm so
representativos na ferramenta de pseudocdigo utilizada neste curso. Algumas
linguagens possuem variaes no smbolo utilizado para a comparao Diferente.

Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

49

5 INSTRUES LER E ESCREVER

Na construo de algoritmos, conveniente que o usurio possa informar


dados externos para serem operados pelo programa. Assim, um programa pode
receber um dado informado por um operador atravs de um comando de leitura. Da
mesma forma, pode ser necessrio conhecer o resultado de determinada operao
executada pelo computador, ento ser necessria uma forma de exibir os dados.
Cada linguagem tem uma forma especfica para entrada e sada de dados. Em
algoritmos usaremos os comandos genricos Ler e Escrever, para realizar a
interface com o usurio, conforme mostra a figura 15.

Figura 15 Exemplo de algoritmo de entrada e sada de dados

A instruo Ler utilizada quando se deseja obter informaes do teclado do


computador, ou seja, um comando de entrada de dados. Para simplificar, usa-se
a instruo Ler, quando se necessita que o usurio do algoritmo digite algum dado
(e posteriormente do programa).
A instruo Escrever utilizada quando se deseja mostrar informaes na tela
do computador, ou seja, um comando de sada de dados. Para simplificar, usase a instruo Escrever, quando se necessita mostrar algum dado para o usurio do
algoritmo (e posteriormente do programa).

Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

50

Algumas sugestes importantes para escrever algoritmos em pseudocdigo,


para realizar operaes de entrada e sada:
Incluir comentrios nas linhas mais importantes do programa;
Utilizar nomes significativos para as variveis e constantes, que possam
identificar o seu contedo;
Efetuar a indentao das linhas para facilitar a leitura.

SNTESE

Nesta aula estudamos os primeiros elementos para o desenvolvimento de um


algoritmo, principalmente no que se refere entrada e sada de dados. Um processo
comum de execuo de um programa entrar com uma informao, process-la e
apresentar o resultado obtido, processo descrito nesta aula.
Tambm conhecemos a importncia das variveis e constantes na
programao de computadores. Na verdade, todo trabalho realizado por um
computador baseado na manipulao de informaes contidas em sua memria.
Parte desta aula sabermos classificar os dados de acordo com o tipo de
informao contida neles.
Finalmente, procuramos compreender como trabalhar com expresses
aritmticas e lgicas, componentes necessrios para a construo de algoritmos.

EXERCCIOS PROPOSTOS

4) Considerando as variveis abaixo, assinale N para numrico, C para texto e L


para lgico:
(

) 1000

Algoritmos

4,56

SOCIESC Sociedade Educacional de Santa Catarina

) 12

.Verdadeiro.

) .v.

cinco

) Casa 8

) -456

456

) -4.56

45.876

51

2) Supondo que as variveis Nota1, Nota2, Matrcula e Sexo sero utilizadas para
armazenar as notas de um aluno, o nmero da matrcula do aluno e o sexo do aluno,
respectivamente, efetue abaixo a declarao das variveis e seus tipos
corretamente.
___________________________________________________________________
___________________________________________________________________
___________________________________________________________________
___________________________________________________________________

3) Encontre os erros da seguinte declarao de variveis:


Variveis
Numrico endereo, nfilhos, valor$, xpto, c, peso
Texto idade, x
Lgico NomeDoPai
___________________________________________________________________
___________________________________________________________________
4) Desenvolva algoritmos para os problemas abaixo, usando a ferramenta Portugol:
a. Calcular a mdia entre 4 valores informados pelo usurio e apresentar
o resultado;
b. Calcular o resultado de xy, onde x e y sero fornecidos pelo usurio e
apresentar o resultado.
Aula 5
Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

52

ESTRUTURAS DE PROGRAMAO CONDICIONAIS

Objetivos da aula

Ao final desta aula, voc dever ser capaz de:

Utilizar os operadores lgicos;

Utilizar uma estrutura de controle seqencial e condicional;

Detectar os erros comuns de programao.

Contedos da aula

Acompanhe os assuntos desta aula, se preferir, ao


trmino, assinale o contedo j estudado.


Estruturas de controle

Usando expresses lgicas

Desvios condicionais simples e compostos

Bloco SE-ENTO-SENO

Bloco ESCOLHE-CASO

Identificando erros comuns de lgica


A proposta desta aula lhe apresentar e lhe ensinar uma abordagem
comum na construo de programas, o que so chamados de
estruturas de controle. A lgica condicional e seus elementos sero
tratados.

Boa aula e vamos adiante!

Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

53

1 ESTRUTURAS DE CONTROLE

Os exemplos de algoritmos que vimos at agora j nos deram uma viso


simples do que um bloco de cdigo de programao. Quando um algoritmo
executado e todos os seus passos (instrues) so processados em seqncia, sem
desvios e sem repetir ou omitir nenhuma linha, chamado de algoritmo seqencial
(figura 16).
Por exemplo:
inicio
real soma, numero1, numero2
escrever "Digite um numero: "
ler numero1
escrever "Digite outro numero: "
ler numero2
soma <- numero1 + numero2
escrever "O resultado da soma : "
escrever soma
fim
Quando o algoritmo permite a escolha de um conjunto de aes e/ou estruturas
que sero executadas a partir do resultado de uma condio (simples ou composta),
chamado de algoritmo condicional (figura 16). Esta uma estrutura de controle
muito comum na programao de computadores, pois normalmente tomamos
decises dentro do programa, esperando que se faa uma atividade ou outra, de
acordo com determinado resultado de algum processamento.
Por exemplo:
inicio
real soma, numero1, numero2
escrever "Digite um numero: "
ler numero1
escrever "Digite outro numero: "
ler numero2
soma <- numero1 + numero2
Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

54

se soma <= 10 ento


escrever "O resultado da soma : "
escrever soma
seno
escrever "A operao est acima do esperado!"
fimse
fim
Observe que, nessa estrutura, antes de enviarmos o resultado para a tela do
usurio, estamos realizando uma avaliao do valor obtido na operao aritmtica
do algoritmo. Utilizamos a palavra SE para realizarmos a instruo de teste do
resultado e depois informamos qual a expresso que deve ser testada (soma <=10,
ou seja, o contedo da varivel soma menor ou igual a dez?). Esse um exemplo
de expresso lgica que veremos mais adiante na aula. O resultado deste teste s
pode ser um: positivo ou negativo. Caso positivo (a varivel soma igual ou menor
que dez), o primeiro bloco de instrues ser executado. Caso o resultado seja
negativo (a varivel soma maior que 10), o segundo bloco, iniciado com a palavra
SENO, ser executado.

Figura 16 Comparao entre algoritmos seqenciais e condicionais

Algoritmos

55

SOCIESC Sociedade Educacional de Santa Catarina

2 USANDO EXPRESSES LGICAS

Como vimos na aula anterior, foram apresentados os operadores aritmticos


(soma, subtrao, etc.) com eles formamos EXPRESSES ARITMTICAS, por
exemplo B = A * C2. Tambm foram apresentados os operadores relacionais (maior
que, menor que, igual e etc.), com eles construmos EXPRESSES RELACIONAIS,
ou seja, estamos relacionando elementos para realizar uma comparao, por
exemplo B <= 10.
Neste tpico voc estudar um outro grupo de operadores, chamados lgicos.
A principal finalidade desses operadores UNIR duas expresses, sejam relacionais
ou aritmticas, e com isto estender as capacidades de lgica condicional no
algoritmo.
Os principais operadores lgicos so os que aparecem na tabela 7.
Tabela 7 Operadores Lgicos
Operao
Conjuno

Operador
E

Exemplo de expresso lgica


SE X > 10 E X <20 ENTO
(s h uma possibilidade)

Disjuno

OU

(no-exclusiva)

SE X > 10 OU Y > 20 ENTO


Neste caso, retornar verdadeiro se X
for maior que 10 OU se Y for maior que
20. Uma das expresses for verdadeira,
o retorno do teste ser verdadeiro.
(h trs possibilidades)

Negao

NO

SE NO A = Y ENTO
Este operador inverte o resultado, neste
exemplo, se A for igual a Y retornar
FALSO.
(somente h uma possibilidade)

Disjuno
(Exclusiva)

XOU

SE X > 10 XOU Y > 20 ENTO


Somente se X > 10 ou Y > 20 retornar
verdadeiro, um ou outro.

Algoritmos

56

SOCIESC Sociedade Educacional de Santa Catarina

Operao

Operador

Exemplo de expresso lgica


(h duas possibilidades)

Dessa forma, estamos revisitando a tabela verdade, que apresenta os


resultados possveis dos operadores lgicos (tabela 8).
Tabela 8 Resumo de possibilidades usando os operadores lgicos
Retorno de cada expresso

OU

NO

XOU

Expresso A

Expresso B

AeB

A ou B

No A

A xou B

3 DESVIOS CONDICIONAIS SIMPLES E


COMPOSTOS
Para que a execuo do algoritmo seja desviada para um caminho especfico,
com um conjunto de instrues especficas, necessrio um comando de desvio. O
comando de desvio dado pela palavra SE, que inicia um bloco de instrues e
deve terminar com a palavra FIMSE.
Dentro deste bloco haver instrues que sero executadas de acordo com o
resultado do teste lgico inserido no desvio.
Esse desvio precisa conter um teste lgico, para que determine se as
instrues dentro do bloco SE devero ser executadas ou no. O teste lgico
composto de expresses aritmticas, relacionais e lgicas.
A estrutura de um bloco SE-ENTO :
SE expresso (es) lgicas ENTO
Instrues de comando
FIMSE

Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

57

A diferena entre o desvio condicional simples e desvio composto est na


resposta que deve ser dada, caso no existam instrues para o outro resultado da
expresso aplicada na palavra SE. Quando se deseja incluir as instrues para o
outro resultado, dever ser utilizada a palavra SENO, dentro do bloco SE.
A estrutura de um bloco SE-ENTO-SENO :
SE expresso (es) lgicas ENTO
Instrues de comando
SENO
Instrues de comando
FIMSE
Destaquemos tambm que existem casos em que necessrio se estabelecer
um conjunto de verificaes de condies sucessivas. Essa estrutura chamada de
estrutura de desvio condicional encadeado (ou aninhado), significa permitir que,
a partir de uma condio atendida, poder estabelecer novas condies e, dessa
forma, teremos condies dentro de condies.
A estrutura de um bloco de desvio condicional encadeado :
SE expresso (es) lgicas ENTO
SE expresso (es) lgicas ENTO
Instrues de comando
FIMSE
SENO
Instrues de comando
FIMSE
Programadores mais experientes preocupam-se com o uso de blocos
condicionais encadeados. No h limite de encadeamento de blocos, mas uma
combinao muito grande poder gerar grande dificuldade ao programador em
localizar um problema de lgica. Diante disso, h uma prtica comum de limitar at
sete encadeamentos e, acima disso, utiliza-se da estrutura ESCOLHE-CASO, que
veremos mais adiante nesta aula.
Por exemplo:
Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

58

Considere o problema exposto na figura 17, em que se estabelecem trs


condies para calcular o reajuste do salrio de um funcionrio:
o Quando o salrio for menor do que 500, o reajuste ser de 15%;
o Quando o salrio for maior ou igual que 500 e menor ou igual a 1000, o
reajuste ser de 10%;
o Quando o salrio for maior que 1000, o reajuste ser de 5%.

Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

59

Figura 17 Fluxograma com desvio condicional composto

4 BLOCO SE-SENO-ENTO

Em pseudocdigo, as instrues de desvios condicionais devem tambm


seguir regras especficas. Um exemplo de Desvio Simples:
inicio
inteiro A
inteiro B
escrever "Digite um valor para A:"
ler A
escrever "Digite um valor para B:"
Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

60

ler B
se A < B ENTO
escrever "A menor que B!!"
fimse
fim
Observe que, no exemplo, caso o usurio digitar o valor de B maior do que A,
nada ir acontecer no programa. Se desejarmos apresentar alguma instruo para o
B ser maior que A, precisamos utilizar a palavra SENO. Por exemplo:
inicio
inteiro A
inteiro B
escrever "Digite um valor para A:"
ler A
escrever "Digite um valor para B:"
ler B
se A < B ENTO
escrever "A menor que B!!"
SENO
escrever "B menor que A!!"
fimse
fim

5 BLOCO ESCOLHE-CASO

Quando h um conjunto de testes lgicos a serem realizados em um mesmo


momento do programa, exigindo que vrios blocos SE-ENTO sejam construdos,
poder haver certo desconforto para o programador constru-lo e para outros
programadores interpretarem. Nesses casos, se houver erro, o programador ter
grande dificuldade de localiz-lo, j que h um conjunto muito grande de testes que
devem ser feitos.
Nessa situao, um outro bloco de desvio pode ser utilizado: ESCOLHECASO. Essa abordagem uma excelente potencializao dos desvios compostos
Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

61

que algumas linguagens disponibilizam e geram algumas dificuldades para sua


utilizao.
A estrutura de um bloco ESCOLHE-CASO :
ESCOLHE expresso (es)
CASO expresso (es)
Instrues
CASO expresso (es)
Instrues
DEFEITO
FIMESCOLHE
Por exemplo:
inicio
real a, b, resposta
inteiro escolha
a <- 20
b <- 5
resposta <- 0
escrever "O que voc quer ver: 1 = soma 2 = multiplicao 3 = diviso"
ler escolha
escolhe escolha
caso 1:
resposta <- a + b
escrever "A resposta "
escrever resposta
caso 2:
resposta <- a * b
escrever "A resposta "
escrever resposta
caso 3:
resposta <- a / b
escrever "A resposta "
escrever resposta
defeito:
Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

escrever "Voc no digitou uma opo vlida"


fimescolhe
fim
E como ficaria a representao do algoritmo em fluxograma? Veja a figura 18.

Figura 18 Fluxograma baseado no algoritmo

6 IDENTIFICANDO ERROS COMUNS DE LGICA

6.1 O que so erros de programao?


Algoritmos

62

SOCIESC Sociedade Educacional de Santa Catarina

63

Este um excelente momento para voc refletir sobre uma caracterstica


inerente aos trabalhos de programao de computadores: os erros de programao,
ou bugs.
Conforme vimos nas primeiras aulas, o desafio do programador construir o
melhor conjunto de lgica e instrues para entregar a soluo para um problema.
Por isso, fundamental um excelente entendimento de qual o problema a ser
resolvido e quais so as variveis que devem ser consideradas para sua resoluo.
Segundo Behring (1989), bug um erro ou um defeito na construo de um
programa, ou ainda um engano na instalao do equipamento de processamento de
dados, provocando seu mau funcionamento.
Nesse contexto, um algoritmo pode conter dois tipos de erros na sua
construo:

Erros de sintaxe;

Erros de lgica.

6.2 Erros de sintaxe


Os erros de sintaxe ocorrem quando a instruo foi digitada fora dos padres
que a linguagem exige, por exemplo, em pseudocdigo utilizado neste curso, a
criao de um bloco SE, sem terminar com a palavra FIMSE, ou a palavra ENTO,
sem o til na letra A. Todos os softwares mais atuais de mercado para programao
de computadores, j fornecem um aviso aps a digitao de uma sintaxe errada,
orientando o programador para corrigir o problema antes de executar o programa
(apesar desse comportamento ser uma opo para o programador, dentro do
software em uso).
No caso do software que estamos utilizando neste curso (Portugol), quando o
programador digita uma palavra que est correta no pseudocdigo, o editor destaca
a palavra em negrito figura 19).

Figura 19 Exemplos de reconhecimento dos elementos construdos


Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

64

Alm disso, o editor tambm apresenta cores diferentes para os elementos que
compem as instrues digitadas, exemplo: valores em vermelho e smbolo de
atribuio de valor em azul.
6.3 Erros de lgica
Os erros de lgica so mais complexos de resolver. Nesses casos, o programa
foi construdo com a sintaxe correta e executado tranqilamente, mas o resultado
apresentado no foi o esperado. Dessa forma, os erros de lgica no apresentam
mensagem de erro especfica e resolv-los , muitas vezes, uma tarefa trabalhosa
para o programador.
Diante desse grande desafio, os fabricantes de software para programadores
ampliaram o potencial das ferramentas para analisar cdigo. So ferramentas
conhecidas como debugger ou depuradores de cdigo de programao. Existem
as mais variadas ferramentas disponveis no mercado, pagas e gratuitas.
Normalmente as mais comuns utilizadas so as fornecidas em conjunto com alguma
ferramenta de desenvolvimento. A ferramenta Portugol tambm oferece um recurso
de depurao do pseudocdigo criado pelo programador figura 20).

Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

65

Figura 20 Menu Algoritmo do software Portugol


A janela de monitoramento apresenta o contedo das variveis figura 21).

Figura 21 Janela de depurao de cdigo no software Portugol

SNTESE

Nesta aula voc iniciou a construo de programas que possuem desvios


condicionais. Aprendeu a diferena entre programas seqncias e condicionais, e
entendeu a diferena entre um programa condicional simples e composto.
Tambm deve ter percebido a diferena entre o uso de desvios usando a
palavra SE e os desvios atravs da palavra SELECIONAR-CASO. Esta ltima uma
opo adequada para atender a um grande nmero de condies em um mesmo
programa.
As regras de pseudocdigo para a construo de algoritmos com desvios
foram apresentadas, inclusive com exemplos simples.
Finalmente, voc obteve contato com um tpico fundamental da programao
de computadores: erros. Voc percebeu que a mxima Errar humano, tambm se
Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

66

aplica no desenvolvimento de sistemas, e existem ferramentas e recursos para que


voc procure localizar e eliminar erros.
Voc pde perceber, no h grandes dificuldades na construo de
programas e os desvios condicionais realizam um papel fundamental em
programao de computadores.
Voc chegou at aqui de forma muito construtiva.
At a prxima aula.

EXERCCIOS PROPOSTOS

1) Numa festa, foi feito um sorteio para distribuir um prmio. Cinco pessoas foram
sorteadas e deveriam pegar uma bola numerada de 1 a 5, Conforme o algarismo
sorteado o prmio ser:
Nmero da Bola

% do prmio

10%

25%

15%

20%

30%

O usurio dever informar o valor do prmio e qual o nmero da bola que tirou.
Calcule o valor do prmio e escreva na tela, utilizando o desvio ESCOLHE- CASO.
Construa o algoritmo usando o software PORTUGOL.
Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

67

2) Quais so os dois tipos de erros na construo de algoritmos?


___________________________________________________________________
___________________________________________________________________
___________________________________________________________________
3) Crie um algoritmo que receba o nome e a nota de um determinado aluno. Caso a
nota seja maior ou igual a sete, imprima aprovado, caso negativo, imprima
reprovado.
4) Faa um algoritmo que aps receber dois valores numricos, calcule a mdia e
imprima o resultado se, e somente se for maior que 33.

Aula 6

ESTRUTURAS DE PROGRAMAO REPETIO

Objetivos da aula

Ao final desta aula, voc dever ser capaz de:

Construir algoritmos usando estruturas de controle de repetio;

Construir lgica adequada para atender estrutura de repetio.

Contedos da aula

Acompanhe os assuntos desta aula, se preferir, ao


Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

68

trmino, assinale o contedo j estudado.




Estruturas de repetio

Bloco ENQUANTO-FAZ

Bloco FAZ-ENQUANTO

Bloco PARA-AT-PASSO
Bem vindo a mais esta aula do curso. Veja que agora vamos evoluir o
conceito de lgica condicional, usando blocos de repetio e
entender quando utilizar uma condio ou outra, de acordo com o

problema a ser resolvido.


Boa aula!

1 ESTRUTURAS DE REPETIO

Os algoritmos estudados at agora lhe apresentaram problemas de


programao envolvidos com entrada, sada, atribuio e seleo. Este o
momento de damos uma passo adiante, considerando que voc j obteve
experincia suficiente para avanarmos nos assuntos.
Muitos problemas requerem um mecanismo de repetio, no qual algum
clculo ou seqncia de instrues repetida, muitas vezes, usando diferentes
condies.
Esta aula ir explorar as alternativas para a construo de repeties e seus
diferentes mtodos de uso. comum alguns autores descrevem os blocos de
repetio de laos (ou loopings) porque, aps a execuo do ltimo comando de
instruo, h uma avaliao (ou teste) e, de acordo com o resultado, o programa
termina a repetio ou retorna ao primeiro comando, reiniciando a execuo das
instrues dentro do lao.
Cada repetio chamada de iterao ou passagem pelo lao.
Para se construir uma seo repetitiva em um algoritmo necessrio a
presena de quatro elementos (figura 22):

Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

69

O primeiro um comando de repetio, que define os limites da seo de


cdigo a ser repetida e controla se o cdigo deve ser repetido ou no. Neste
curso vamos estudar trs diferentes estruturas de repetio: repita-at,
enquanto-faz e para-at-passo;
Cada uma destas estruturas necessita de uma condio que deve ser avaliada,
vem a ser o segundo elemento da construo de uma seo repetitiva de
cdigo. As condies vlidas aqui so idnticas s usadas em comandos de
seleo;
O terceiro um comando que, inicialmente, torna a condio verdadeira. Esse
comando deve ser posicionado de forma a ser executado antes da condio
ser avaliada pela primeira vez, para assegurar a correta execuo do lao na
primeira vez em que a condio for avaliada;
Finalmente, deve haver um comando dentro da seo repetitiva de cdigo que
permita condio se tornar falsa. Isto necessrio para garantir que, em
algum momento, a repetio pare.

Figura 22 Elementos de uma estrutura de repetio


Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

70

2 BLOCO ENQUANTO-FAZ

O bloco ENQUANTO-FAZ a estrutura de repetio mais simples. Repete a


execuo de um bloco de instrues enquanto a condio for verdadeira. Na
primeira vez que a condio tornar-se falsa, o bloco no ser executado e entregar
o controle do programa para a prxima instruo, logo aps o bloco de repetio.
A estrutura de um bloco ENQUANTO-FAZ (figura 23) :

ENQUANTO expresso (es) lgicas FAZ


Instrues de comando
FIMENQUANTO

Figura 23 Exemplos de repetio ENQUANTO-FAZ

Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

71

O fluxo de execuo de um algoritmo com a estrutura ENQUANTO-FAZ o


seguinte:
1. O algoritmo avalia a expresso inserida na linha que contm a palavra
ENQUANTO. A expresso utiliza os mesmos operadores estudados at o
momento;
2. Caso o resultado da expresso seja VERDADEIRO, ento todo o bloco de
instrues ser executado, at encontrar a palavra FIMENQUANTO;
3. Ao encontrar a palavra FIMENQUANTO, o algoritmo retorna para a primeira
linha do bloco, que contm a palavra ENQUANTO e realiza um novo teste na
expresso associada;
4. Caso a expresso permanea VERDADEIRA, o bloco executado novamente,
caso contrrio, o bloco no executado e o algoritmo passa para a prxima
linha de instruo. importante ressaltar nesse bloco que a expresso
sempre avaliada antes do bloco de instrues.

3 BLOCO FAZ-ENQUANTO

Este bloco tem muita semelhana com ENQUANTO-FAZ, com a diferena


fundamental: a expresso verificada aps a execuo do bloco de instrues.
A primeira vez que o algoritmo executado e passa pelo bloco, o contedo do bloco
ser executado independente da condio estabelecida na expresso. Somente
depois da execuo do bloco que a expresso ser testada e o bloco de
instrues se repete at que a expresso retorne FALSO.
As diferenas entre as estruturas ENQUANTO-FAZ e FAZ-ENQUANTO muito
leve. uma deciso que o programador deve tomar de acordo com a soluo que se
deseja implementar e determina se a expresso deve ser testada antes ou depois do
bloco de instrues.
A estrutura de um bloco FAZ- ENQUANTO (figura 24) :
FAZ
Instrues de comando
ENQUANTO expresso (es) lgicas

Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

72

Figura 24 Exemplos de repetio faz-enquanto

4 BLOCO PARA-AT-PASSO

Na maioria dos casos de repetio, os algoritmos precisam executar um bloco


de instrues por um nmero limitado de vezes, para isso, normalmente se utiliza
uma varivel para controlar o nmero de repeties. Foi o caso nos dois tipos de
repeties anteriores. Essas situaes sempre apresentam uma varivel contadora e
quatro etapas:
1. Inicializao: atribui um valor inicial varivel contadora;
2. Teste: verifica a condio da varivel contadora;
3. Execuo: realizar a execuo do bloco de instrues;
4. Atualizao: incrementa o valor contido na varivel contadora.
O grande nmero de situao que requer a lgica justifica a prxima estrutura
de repetio, pois resume as etapas de repetio, otimizando a execuo do
algoritmo.
Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

73

PARA varivel DE valorinicial ATE valorfinal PASSO incremento


Instrues de comando
PRXIMO

Figura 25 Exemplos de repetio para-de-ate-passo


Uma estrutura de repetio PARA-DE-AT-PASSO sempre vem acompanhada
de uma varivel contadora que armazena quantas vezes o bloco de instrues foi
executado. Alm de condensar uma lgica recorrente de criao de algoritmo em
poucas linhas, possui mais algumas vantagens:
A primeira linha do bloco de cdigo, contendo a palavra PARA, agrupa todas as
instrues que controlam a repetio: a inicializao, o teste e a atualizao.
Dessa forma, o programador obrigado a declarar todos os elementos para
realizar a repetio. Na repetio ENQUANTO-FAA o programador precisa
lembrar de inserir todos os elementos separadamente;
Esse tipo de repetio separa claramente as instrues de controle da
repetio, das instrues de execuo, oferecendo uma forma mais elegante
de construo e minimizando problemas bsicos na construo de algoritmos.

Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

74

5 CONTADOR E ACUMULADOR

Dizemos que uma varivel considerada contador, quando utilizada para


controlar quantas vezes um determinado trecho de programa foi executado. Esse
tipo de uso de varivel muito comum em laos, pois normalmente h necessidade
de contar o nmero de vezes que um conjunto de instrues foi executado.
Uma varivel identificada como acumulador quando utilizada para
acumular um valor dentro de um lao. Por exemplo, podemos precisar acumular um
determinado valor at chegar ao nvel desejado dentro de um lao e somente sair
do bloco de instrues do lao quando o nvel for atingido.

SNTESE

Voc acaba de avanar mais um passo na direo do conhecimento na


programao de computadores. Agora voc descobriu o recurso de maior potencial
na construo de algoritmos: os blocos de repetio, que elevam de forma clara o
uso da lgica condicional para desenvolver sistemas.
Primeiramente voc identificou o que um bloco de repetio e seus
elementos fundamentais. Viu que cada execuo do bloco de repetio chamada
de iterao e que um elemento fundamental no uso de repeties o amplo
conhecimento sobre as expresses aritmticas, lgicas e relacionais.
Logo em seguida voc aprendeu que, para atender solues que exijam uma
repetio cujo teste lgico ocorre antes do bloco ser executado, a instruo
ENQUANTO-FAA para esta finalidade.
Depois fizemos uma inverso no bloco de repetio e, com o uso do FAAENQUANTO, temos uma condio contrria ao ENQUANTO-FAA. Nesse bloco de

Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

75

repetio o teste lgico realizado depois que as instrues contidas no bloco so


executadas.
Nos dois casos, o programador tem a responsabilidade de avaliar qual melhor
atender a necessidade especfica de uma soluo.
Finalmente, voc aprendeu a repetio PARA-AT-PASSO, que uma
abordagem otimizada dos outros dois modos de construo de blocos de repetio.
Nesse tipo de repetio, os elementos so mais agrupados e fornecem uma
abordagem mais clara para a construo de um cdigo de programao.
isso! Chegamos juntos a um outro nvel de pensamento sobre a
programao de computadores. Prepare-se que ainda vem mais na prxima aula.

EXERCCIOS PROPOSTOS

1) Escreva um algoritmo para apresentar cinco vezes na tela a frase Curso de


Lgica de Programao.
2) Escreva um algoritmo para ler dois valores. Aps a leitura deve-se calcular a
soma dos valores lidos e armazen-la em uma varivel. Aps o clculo da soma,
escrever o resultado e escrever tambm a pergunta 'Novo Clculo (S/N)?'. Devese ler a resposta e se a resposta for 'S' (sim), deve-se repetir todos os comandos
(instrues) novamente, mas se a resposta for 'N' (no), o algoritmo deve ser
finalizado escrevendo a mensagem 'Fim dos Clculos'.
3) Escreva um algoritmo para ler a nota de 5 alunos e contar quantos foram
aprovados, sendo que, para ser aprovado, a nota deve ser maior ou igual a 6,0.
Escrever o nmero de aprovados.
4) Escreva um algoritmo que solicite um nmero e apresente todos os nmeros de 0
(zero) at o nmero digitado.

Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

76

Aula 7

MODULARIZAO DE ALGORITMOS
Objetivos da aula

Ao final desta aula, voc dever ser capaz de:

Simplificar algoritmos muito grandes, usando o mtodo da modularizao;

Entender o uso de subrotinas e seus tipos de construo.

Contedos da aula

Acompanhe os assuntos desta aula, se preferir, ao


trmino, assinale o contedo j estudado.


Modularizao

Mdulos

Funes

Passagem de parmetros
Chegamos na ltima aula do curso. Voc percebeu que a cada aula,
os conhecimentos obtidos foram sendo relacionados e evoluindo a
complexidade de um algoritmo.
Nesta aula, vamos ver uma abordagem para simplificar algoritmos e

melhorar a manuteno de nossos programas. Este assunto parte importante e


tambm comum na construo de programas.
Boa aula e vamos em frente!

Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

77

1 MODULARIZAO

A abordagem famosa dividir para conquistar muito utilizada na programao


de computadores. H um estudo psicolgico afirmando que o ser humano consegue
resolver problemas contendo menos de sete variveis simultneas. Se um problema
possui acima de nove variveis simultneas, considerado um problema complexo,
desta forma, a tcnica de dividir para conquistar utilizada para quebrar um
problema complexo em vrios pedaos, ou pequenos problemas simples.
Neste sentido, medida que construmos um algoritmo, as necessidades e os
problemas so resolvidos complementando cada vez mais a soluo original.
comum que um algoritmo seja extenso e proporcional complexidade que o
problema apresenta, pois o conjunto de instrues ampliado para atender
complexidade exigida, apresentando-se um tamanho cada vez maior.
Em resumo, problemas complexos normalmente exigem algoritmos extensos.
Em contrapartida, o principal objetivo da programao de computadores
escrever um programa o menor possvel, para que se utilize um menor nmero de
recursos (memria, espao no disco rgido, etc.), enquanto se resolve o problema de
forma objetiva.
Nesse cenrio, o volume de instrues e estruturas condicionais no algoritmo
geram grande dificuldade de leitura e, em caso de problema, levar muito tempo
para localizar sua origem. A soluo quebrar ou dividir o algoritmo em vrias e
pequenas partes que, juntas, formaro um grande algoritmo.
Esses pedaos de instrues de programao so conhecidos por mdulos
ou

subalgoritmos. Ao modularizar um algoritmo, buscamos aumentar a

funcionalidade das partes do conjunto, facilitando o seu entendimento e


possibilitando a reutilizao das partes.
Todo programa modularizado contm um algoritmo principal (figura 26), o
primeiro conjunto de instrues que sero executadas quando o programa for
iniciado. A partir do algoritmo principal, so chamados os demais mdulos que
compem o programa.
Um subalgoritmo normalmente resolve problemas simples, como a operao
aritmtica especfica ou verifica se uma determinada entrada de dados foi realizada
Algoritmos

78

SOCIESC Sociedade Educacional de Santa Catarina

pelo usurio. Um subalgoritmo pode ser chamado pelo algoritmo principal ou por
outros subalgoritmos que compem o programa. Quando ocorre a chamada ao
subalgoritmo, as instrues contidas sero executadas e, aps sua execuo, o
processamento do programa retornar para o ponto de chamada.
Algumas

caractersticas

de

um

algoritmo

refletem

abordagem

de

modularizao:
Confiabilidade: pela diviso do problema em pequenas partes simples,
aumenta a possibilidade da soluo correta;
Legibilidade: o programa fcil de ser lido e entendido por um programador
de nvel mdio;
Facilidade de manuteno: o programa fcil de ser modificado. Quando
houver necessidade de mudana, a alterao ser facilmente implementada.
Na verdade, apenas pequenas partes recebero modificaes;
Flexibilidade: o programa fcil de ser reutilizado.
Por exemplo:

Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

79

Figura 26 Chamando um subalgoritmo


Os programadores utilizam subalgoritmos por dois motivos:

Para facilitar a construo de algoritmos grandes: com a quebra do


problema, usando pequenos conjuntos de instrues, mais fcil
realizar a manuteno no programa;

Para armazenar instrues repetitivas em uma nica localizao:


algumas vezes voc precisar realizar uma tarefa mais de uma vez em
seu algoritmo. Ao invs de escrever as instrues repetidas vezes,
voc pode escrev-las em um subalgoritmo, que far parte do seu
programa e poder ser chamado vrias vezes, em pontos diferentes do
algoritmo;

Para delimitar o escopo (nvel de abrangncia) de variveis:


atravs da modularizao, uma varivel poder consumir recursos do

Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

80

computador somente em determinados momentos do programa,


otimizando a execuo do mesmo.
Existem dois tipos de subalgoritmos: mdulos (ou procedimentos) e funes.
Vamos conhecer cada um deles.

2 MDULOS

Conforme vimos, ao dividirmos um algoritmo em pequenas partes


interdependentes, esses pedaos so chamados subalgoritmos, mas a
identificao dos subalgoritmos pode variar de acordo com a linguagem em uso.
Algumas linguagens chamam subalgoritmos de mdulos e outras chamam de
procedimentos (podem tambm ser referenciados como desvios). Neste curso,
vamos utilizar o termo mdulo ao pedao de programa que contm instrues que
aceitam dados e utilizam estes dados para executar tarefas especficas.
Os mdulos podem ser chamados em qualquer parte do algoritmo principal,
como tambm podem ser chamados por outros mdulos que estejam presentes no
mesmo programa.
A chamada ao mdulo representa a execuo das aes contidas, em
seguida, a execuo retorna ao ponto da chamada (poder ser o mdulo principal ou
outros mdulos). No existe ordem para definio dos mdulos.
Um mdulo composto por duas ou trs partes:

Nome do mdulo;

Uma ou mais instrues que devero ser executadas no mdulo;

(Opcional) Dados fornecidos pelo algoritmo de origem, que sero utilizados


para o processamento e execuo das instrues contidas no mdulo. (Este
assunto ser tratado no tpico Passagem de Parmetros.)

Veja na figura 27 um exemplo de construo de algoritmo com subalgoritmos,


usando mdulo.

Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

81

Figura 27 Pseudocdigo para chamar um mdulo

3 FUNES

As funes compreendem as mesmas caractersticas de um mdulo. A


diferena est no retorno do processamento do subalgoritmo. Em um mdulo, o
processamento ocorre manipulando variveis do algoritmo principal e pode realizar
vrias transformaes ao retornar ao ponto principal de chamada. As funes
permitem o retorno de apenas um resultado e podem ser utilizadas como parte de
uma expresso no algoritmo.
Dessa forma, uma funo um bloco de instrues que computa e devolve
um valor, semelhante s funes matemticas.
Veja na figura 28 um exemplo de construo de algoritmo com subalgoritmos,
neste caso usando Funo.

Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

82

Figura 28 Pseudocdigo para chamar uma funo

4 PASSAGEM DE PARMETROS

Parmetros so canais para se estabelecer uma comunicao bidirecional


entre um mdulo e outro (mdulo principal ou outros mdulos). As informaes de
um mdulo podem ser enviadas para um outro mdulo que, por sua vez, poder
utilizar as informaes e alter-las ou no. Esse mecanismo chamado passagem
de parmetros ou argumentos e pode ser de dois tipos: passagem de parmetros
por valor (ou cpia) e passagem de parmetros por referncia.
Essa abordagem complementa a construo de programas modularizados, ou
seja, permite que as vrias partes possam comunicar-se por um mecanismo simples
e direto de manipulao de parmetros.
Com base nos exemplos apresentados anteriormente, veja a figura 29.

Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

83

Figura 29 Passagem de parmetros


Vejamos agora quais so os tipos de parmetros que podemos utilizar na
comunicao entre as partes de um programa:

Passagem de parmetros por valor: faz-se uma cpia do contedo das


variveis locais para um outro mdulo. As modificaes efetuadas nos
dados do parmetro no retornam ao mdulo chamador. Esse tipo de
mecanismo reserva um espao diferente em memria para os parmetros
serem copiados e no causarem modificaes nos dados originais;

Passagem de parmetros por referncia: faz-se a cpia do endereo da


memria onde a varivel est armazenada. Nesse mecanismo, uma outra
varivel ocupando um outro espao diferente na memria no armazena o
dado em si, mas o endereo onde ele se localiza na memria. Sendo
assim, todas as modificaes efetuadas nos dados do parmetro sero
feitas no contedo original da varivel.

Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

84

SNTESE

Chegamos ultima aula do curso. Nesta aula voc aprendeu a importncia da


modularizao de programas, percebendo que ser uma abordagem comum no diaa-dia como programador. Este o principal tpico da chamada Programao
Estruturada, que identificada como um mtodo para desenvolvimento de software
e hoje a base para o programador iniciante.
Vimos tambm quais os instrumentos de linguagem, utilizados para a
construo de programas estruturados, que so os mdulos e as funes.
Finalmente, falamos sobre os parmetros, que so os elementos utilizados
para manter a comunicao entre as vrias partes de um programa modularizado.

Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

85

EXERCCIOS PROPOSTOS

1) Explique a diferena entre mdulo e funo.


___________________________________________________________________
___________________________________________________________________
___________________________________________________________________
___________________________________________________________________

2) Qual a importncia da modularizao de um programa?


___________________________________________________________________
___________________________________________________________________
___________________________________________________________________
___________________________________________________________________

3) Quais so as vantagens da modularizao de um programa?


___________________________________________________________________
___________________________________________________________________
___________________________________________________________________
___________________________________________________________________

Algoritmos

SOCIESC Sociedade Educacional de Santa Catarina

REFERNCIAS
LOGICA DE PROGRAMAAO
A CONSTRUO DE ALGORITMOS E ESTRUTURA DE DADOS
Autor: FORBELLONE, A. e EBERSPACHER, H.
Editora: MAKRON
APRENDA EM 24 HORAS ESTRUTURA DE DADOS E ALGORITMO
Autor: LAFORE, ROBERT
Editora: CAMPUS
ESTRUTURAS DE DADOS - CONCEITOS E TCNICAS DE IMPLEMENTAO
Autor: VILLAS, MARCOS VIANNA
Editora: CAMPUS - BB
INTRODUO A ESTRUTURA DE DADOS - UMA INTRODUO COM TCNICAS DE
PROGRAMAO EM C
Coleo: CAMPUS/SOCIEDADE BRASILEIRA DE COMPUTAO (SBC)
Autores: CELES, WALDEMAR, CERQUEIRA, RENATO e RANGEL, JOSE LUCAS
Editora: CAMPUS
ALGORITMOS E LGICA DE PROGRAMAO
Autores: SOUZA, MARCO ANTONIO FURLAN DE, GOMES, MARCELO MARQUES, SOARES,
MARCIO VIEIRA e CONCILIO, RICARDO
Editora: THOMSON PIONEIRA
LGICA DE PROGRAMAO
Autor: FORBELLONE, ANDRE LUIZ
Editora: PRENTICE HALL BRASIL
LGICA DE PROGRAMAO
Autor: XAVIER, GLEY FABIANO CARDOSO
Editora: SENAC SO PAULO
LGICA DE PROGRAMAO E ESTRUTURAS DE DADOS
Autor: PUGA, SANDRA / RISSETTI, GERSON
Editora: PRENTICE HALL BRASIL
LGICA DE PROGRAMAO - ENSINO PRTICO
Autor: MAGRI, JOAO ALEXANDRE
Editora: ERICA
LGICA DE PROGRAMAO
Autores: BERG, ALEXANDRE CRUZ e FIGUEIRO, JOICE PAVEK
Editora: ULBRA
LGICA ESTRUTURADA PARA PROGRAMAO DE COMPUTADORES
Autores: MANZANO, JOSE AUGUSTO NAVARRO GARCIA
Editora: ERICA

Algoritmos

86

Você também pode gostar