86
LÓGICA DE PROGRAMAÇÃO EDIÇÃO Nº 1 - 2007 LAÉRCIO DA CRUZ LOUREIRO ___________________________________________________________________ Apoio Gestão e Execução Conteúdo e Tecnologia

Apostila lã³gica de programaã§ã£o

Embed Size (px)

DESCRIPTION

programação

Citation preview

Page 1: Apostila lã³gica de programaã§ã£o

LÓGICA DE PROGRAMAÇÃO

EDIÇÃO Nº 1 - 2007

LAÉRCIO DA CRUZ LOUREIRO

___________________________________________________________________

Apoio Gestão e Execução Conteúdo e Tecnologia

Page 2: Apostila lã³gica de programaã§ã£o

SOCIESC – Sociedade Educacional de Santa Catarina

Algoritmos

2

SUMÁRIO

AULA 1 - INTRODUÇÃO À LÓGICA E AO PROCESSO DE PROGRAMAÇÃO .. 7

AULA 2 - LINGUAGENS DE PROGRAMAÇÃO .................................................. 16

AULA 3 - FORMAS DE REPRESENTAÇÃO DE UM ALGORITMO .................... 27

AULA 4 - VARIÁVEIS E CONSTANTES.............................................................. 42

AULA 5 - ESTRUTURAS DE PROGRAMAÇÃO - CONDICIONAIS .................... 52

AULA 6 - ESTRUTURAS DE PROGRAMAÇÃO - REPETIÇÃO.......................... 68

AULA 7 - MODULARIZAÇÃO DE ALGORITMOS ............................................... 77

Page 3: Apostila lã³gica de programaã§ã£o

SOCIESC – Sociedade Educacional de Santa Catarina

Algoritmos

3

Apresentação

Este livro didático contém a disciplina de Lógica de Programação.

O material apresenta aos alunos do EAD os fundamentos da lógica de

programação de sistemas informatizados, estimulando o desenvolvimento de um

bom estilo de construção de sistemas e o pensamento lógico. Os tópicos

apresentados estão distribuídos em aulas, e cada uma avança gradativamente nas

técnicas essenciais para a elaboração 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 conteúdo

foi revisado com o intuito de oferecer uma linguagem simples, objetiva e estimulante.

Lembre-se de que a sua passagem por esta disciplina será também

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 dúvida ou

dificuldade.

Toda a equipe terá a maior alegria em atendê-lo, pois a sua aquisição de

conhecimento nessa jornada é o nosso maior objetivo.

Acredite no seu sucesso e bons momentos de estudo!

Equipe Tupy Virtual.

Carta do Professor

Page 4: Apostila lã³gica de programaã§ã£o

SOCIESC – Sociedade Educacional de Santa Catarina

Algoritmos

4

Apesar do que você possa ter ouvido, programar um computador não é difícil. É a

habilidade que qualquer um pode desenvolver, dedicando prática, paciência e muito

café. Wang (2007)

Caro aluno,

Desde o advento dos computadores, as comunidades de

programadores de software vêm crescendo não somente para a criação de soluções

para atender às novas necessidades do mercado, mas também uma resposta para

acompanhar as mudanças dos negócios empresariais. Esta constante evolução (ou

transformação) nos oferece hoje recursos poderosos e ao mesmo tempo simples,

para a construção de sistemas.

A criação de programa para computadores é uma atividade que sofre do

mesmo sentimento de aprender matemática: há pessoas que adoram e há pessoas

que odeiam. Muitos especialistas tentam encontrar meios para melhorar as

abordagens didáticas, que facilitem a conquista de novos adeptos, mas ainda se

percebe que há uma mistura de sentimento e vocação. Porém, diferente da

matemática, a programação de sistemas é uma atividade interativa que fornece

feedback imediato, como resultado de exploração, investigação e auto-avaliação do

programador.

É importante observarmos que lógica é uma prática comum em nossas

atividades diárias, desde a decisão em qual local almoçar até aceitar um emprego.

Por isso, acredita-se que os obstáculos da lógica de programação não estão nos

conceitos e sim nas linguagens de programação utilizadas, bem como na utilidade

do trabalho de construção que está sendo realizado.

Por outro lado, ao conquistar sua posição como programador, você poderá

sentir a grande satisfação de um artista, já que utilizará seus conhecimentos e

habilidades para construir soluções que serão utilizadas por outras pessoas, para

resolver problemas.

Então, eis a proposta deste trabalho: oferecer uma abordagem simples e

construtiva para minimizar os desafios que a disciplina exige do aluno. Incentivá-

lo(a) a persistir na evolução dos seus estudos de lógica de programação, e fazê-lo(a)

perceber que a prática trará os resultados esperados.

Professor Laércio da Cruz Loureiro

Page 5: Apostila lã³gica de programaã§ã£o

SOCIESC – Sociedade Educacional de Santa Catarina

Algoritmos

5

Cronograma de Estudo

Acompanhe no cronograma abaixo os conteúdos das aulas e atualize as

possíveis datas de realização de aprendizagem e avaliações.

Semana Carga horária Aula Data / Avaliação 8

Introdução à Lógica de Programação e ao Processo

de Programação _/_ a _/_

1

12

Linguagens de Programação

_/_ a _/_

8

Variáveis e Constantes

_/_ a _/_

2

12

Estruturas de Programação

– Condicionais

_/_ a _/_

12

Estruturas de Programação

– Repetição

_/_ a _/_ 3

8

Modularização do programa

_/_ a _/_

Page 6: Apostila lã³gica de programaã§ã£o

SOCIESC – Sociedade Educacional de Santa Catarina

Algoritmos

6

Plano de Estudo

Ementa Fundamentos da lógica de programação, motivadores e histórico, processo e os

passos que envolvem a programação de computadores, linguagens de

programação, interpretadores e compiladores, conceitos básicos sobre algoritmos e

suas representações, construir algoritmos com variáveis, constantes, operadores,

estruturas condicionais e de repetição.

Objetivos da Disciplina

• Geral

.Transmitir ao aluno os conhecimentos essenciais para a programação de

computadores, aprendendo termos de lógica de programação e seus componentes.

Incentivar no aluno a capacidade de interpretação de problemas e a composição de

soluções usando regras lógicas.

• Específicos

- Conhecer os principais componentes para a programação de computadores;

- Desenvolver programas usando algoritmos, representados através de

pseudocódigos e fluxogramas;

- Acostumar-se com as regras de sintaxe utilizadas em linguagem de programação.

Carga Horária: 60 horas.

Page 7: Apostila lã³gica de programaã§ã£o

SOCIESC – Sociedade Educacional de Santa Catarina

Algoritmos

7

Aula 1

INTRODUÇÃO À LÓGICA E AO

PROCESSO DE PROGRAMAÇÃO

Objetivos da aula

Ao final desta aula, você deverá ser capaz de:

• Descrever os fundamentos lógicos associados ao

desenvolvimento de software;

• Descrever o processo de desenvolvimento de software;

• Descrever as técnicas para a resolução de problemas;

• Identificar as fases de execução de um programa.

Conteúdos da aula

Acompanhe os assuntos desta aula e, se preferir, ao

término, assinale o conteúdo já estudado.

� História do desenvolvimento de sistemas

� Terminologias

� O processo de desenvolvimento de software

� Fases de execução de um programa

� Técnicas para resolução de problemas

� Exercícios propostos.

Prezado aluno, seja bem vindo a nossa primeira

aula. Vamos conhecer as bases da lógica de

programação, como surgiu e sua evolução.

Boa Aula!

Page 8: Apostila lã³gica de programaã§ã£o

SOCIESC – Sociedade Educacional de Santa Catarina

Algoritmos

8

1 HISTÓRIA DO DESENVOLVIMENTO DE SISTEMAS

As linguagens de programação de hoje são o resultado de desenvolvimentos

que iniciaram em 1950. Conceitos numéricos foram inventados, testados e

aprimorados a partir da incorporação de sucessivas linguagens de programação.

Com raras exceções, os fundamentos de uma linguagem de programação são

fortemente influenciados pela experiência com linguagens anteriores. À medida que

as linguagens evoluíram, novos conceitos e paradigmas continuam a ser criados e o

cenário de linguagens de programação daqui a dez anos irá ser, provavelmente,

muito diferente da experiência atual.

Uma das linguagens antigas de alto nível que foi um grande sucesso, a

Fortran, introduziu expressões simbólicas e a capacidade do programador criar

procedimentos modulares. A última versão do padrão da linguagem foi publicado em

1997.

A linguagem COBOL também foi uma linguagem de grande adesão pelos

programadores e empresas (e ainda é considerada uma opção importante), e sua

principal contribuição foi o conceito de descrição de dados.

A linguagem Fortran foi amplamente adotada pela computação numérica e a

linguagem COBOL, para o processamento de dados comerciais.

Nos dois casos, três 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 construção de programas e com isto fazer mais com

menos;

• Facilitar a adoção da linguagem por profissionais que possuam um nível

mínimo de conhecimento, necessário para a construção de programas.

Atualmente, podemos considerar que as linguagens estão mais próximas das

três necessidades descritas anteriormente, mas alguns incovenientes se

apresentaram à medida que essa abordagem evolui:

Page 9: Apostila lã³gica de programaã§ã£o

SOCIESC – Sociedade Educacional de Santa Catarina

Algoritmos

9

• Com uma construção cada vez mais fácil, reduz o nível de domínio do

programador sobre o conhecimento da linguagem. Em caso de problema na

construção do programa, o programador pode ter dificuldades para resolvê-lo,

já que não possui um “amplo” controle sobre as peculiaridades da linguagem;

• Com a necessidade de velocidade na construção de sistemas, os aplicativos

utilizados acabam gerando maior importância que a própria linguagem. Isso

exige do programador domínio sobre a linguagem, como também, sobre o

próprio programa que será utilizado para implementar a linguagem;

• Com o volume cada vez maior de recursos disponíveis na linguagem, exige-se

cada vez mais a atualização do programador em novas tecnologias, sem

conseguir obter o domínio completo de recursos essenciais;

• Com a inserção 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 evoluímos as linguagens de programação, melhoramos

a capacidade e velocidade na construção de programas, mas também

geramos cada vez mais opções para se resolver um problema,

aumentando a complexidade para a elaboração de soluções.

Então, diante desse desafio, é imprescindível ao programador “perceber” as

nuances que se apresentam nas linguagens de hoje. Por isso a grande importância

que a Lógica de Programação desempenha sobre o programador, formando uma

sólida base de discernimento a ser aplicada na adoção de uma linguagem

específica. Com uma forte base de lógica de programação, o programador terá

maiores chances em dominar qualquer linguagem de desenvolvimento de sistemas.

Page 10: Apostila lã³gica de programaã§ã£o

SOCIESC – Sociedade Educacional de Santa Catarina

Algoritmos

10

2 TERMINOLOGIAS NO DESENVOLVIMENTO DE SISTEMAS

Como todo segmento profissional, desenvolver sistemas possui um amplo

conjunto de termos técnicos. Esses termos são o reflexo de anos de mudanças e

particularidades aplicadas nas linguagens de programação, mas podem variar de

acordo com o contexto em que são utilizadas. Nesse momento do curso é

importante você entender os seguintes termos:

Termo Significado

Programa de computador É um conjunto de instruções que orientam o

computador para o que fazer e quando fazer.

Especificação Documento que descreve como o problema deve

ser resolvido, fazendo-se uso da linguagem de

programação.

Implementar Ato de escrever o código de programação para

atender a uma especificação de solução para um

problema.

Código de Programação É o conteúdo da linguagem de programação,

inserido pelo programador, de acordo com as

regras da linguagem

Processo de desenvolvimento Compreende todas as fases e atividades para a

construção de um sistema.

Compilar o programa Traduzir o código de programação para a

linguagem de máquina do computador.

Depurar o programa Utilizar uma ferramenta para verificar se o código

de programação está construído de acordo com as

regras da linguagem de programação.

Sintaxe da linguagem São as regras implícitas na linguagem de

programação que o programador precisa respeitar

para que o programa funcione adequadamente.

Processamento É o momento em que o programa está realizando a

execução do código inserido pelo programador.

Page 11: Apostila lã³gica de programaã§ã£o

SOCIESC – Sociedade Educacional de Santa Catarina

Algoritmos

11

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 consistência, depende primariamente da presença 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 princípios determinam um bom

processo de desenvolvimento de software:

• Planejar o trabalho antes de realizá-lo;

• Obter o acordo na definição de responsabilidades;

• Estabelecer e incentivar equipes autogerenciáveis;

• Determinar pontos de verificação;

• Manter uma contínua interação com o cliente do sistema;

• Monitorar o progresso do trabalho;

• Orientar o responsável pelo trabalho e treinar as equipes;

• Fornecer avaliações intermediárias 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

também recebe premissas que facilitam a entrega de produtos e,

conseqüentemente, asseguram sua qualidade.

Um ciclo de desenvolvimento de software parte de princípios. Chama-se ciclo

porque é um conjunto de etapas que, juntas, giram de acordo com um sentido lógico

de seqüência a ser executada, durante o trabalho de construção de um sistema.

Mostramos um exemplo de ciclo na figura 1.

Page 12: Apostila lã³gica de programaã§ã£o

SOCIESC – Sociedade Educacional de Santa Catarina

Algoritmos

12

Figura 1 – Ciclo de Desenvolvimento de Software

Dessa forma, podemos descrever sete passos para atender um ciclo de vida

de desenvolvimento:

1. Definição do Problema;

2. Desenho da solução;

3. Refinamento da solução;

4. Estratégia de testes do desenvolvimento;

5. Codificação do programa e testes;

6. Documentação;

7. Manutenção do programa.

A construção de código de programação também possui seu próprio ciclo de

elaboração (figura 2), que faz parte do ciclo maior para o desenvolvimento da

solução apresentada anteriormente.

Figura 2 – Ciclo de Construção de Código do Programa

Page 13: Apostila lã³gica de programaã§ã£o

SOCIESC – Sociedade Educacional de Santa Catarina

Algoritmos

13

4 AS FASES DE EXECUÇÃO DE UM PROGRAMA

Um programa de computador possui três fases distintas:

• Entrada

• Processamento

• Saída

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

momento em que o programa solicita informações. A fase de entrada de dados é a

primeira fase de execução de um programa de computador.

A segunda fase é a de processamento, na qual o programa realiza ações com

os dados digitados, de acordo com a programação implementada.

A terceira fase é a de saída, em que o computador apresenta o resultado do

processamento também de acordo com a programação realizada (saída em tela ou

na impressora).

O processo de construção de programas deve considerar as três fases,

principalmente quando a especificação envolve o usuário do computador. Também é

importante ressaltar que, em cada uma das fases, há um conjunto de orientações

que o programador precisa seguir e a linguagem de programação em uso, suporta

as três fases de forma diferente, mas apresenta os mesmos resultados esperados

em cada fase.

5 TÉCNICAS PARA A RESOLUÇÃO DE PROBLEMAS

O matemático George Polya (1945), uma autoridade na resolução de

problemas, dividiu a solução de problemas em quatro passos:

1. Entender o problema: este primeiro passo é o mais complexo e é o mais

importante. O objetivo é obter o maior número de informações sobre o

problema, usando técnicas como entrevistas e observações, e elaborando

modelos representativos que facilitem o entendimento do problema. É

Page 14: Apostila lã³gica de programaã§ã£o

SOCIESC – Sociedade Educacional de Santa Catarina

Algoritmos

14

também importante verificar a fonte de informações para obter o

entendimento do problema;

2. Elaborando um plano: uma vez entendido o problema, é necessário elaborar

uma visão sobre a solução para o problema. Um plano é composto de um

conjunto de atividades que deverão ser realizadas para a solução do

problema. Nesta fase é importante:

a. Localizar se problemas semelhantes já foram solucionados e obter a

informação necessária para reproduzir a solução 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 solução;

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 após ser aplicado. Se partes do plano se apresentaram

insatisfatórias, o plano deverá ser revisado;

4. Avaliação: finalmente, o resultado deverá ser avaliado para garantir que está

válido e o problema está resolvido.

SÍNTESE

Nesta aula você pôde perceber como a lógica de programação é uma

disciplina fundamental para o programador, baseando-se nos desafios e nas

técnicas atuais para a resolução de problemas.

Como toda atividade sempre possui uma história, você aprendeu que a

história da programação de computadores é um fato relevante a ser observado, e

Page 15: Apostila lã³gica de programaã§ã£o

SOCIESC – Sociedade Educacional de Santa Catarina

Algoritmos

15

permite que possamos entender como as linguagens de programação chegaram até

a atualidade.

Falamos sobre as técnicas para o desenvolvimento de software e quais os

elementos fundamentais para essas técnicas, desde a terminologia básica até os

passos que devem ser seguidos para um resultado final de sucesso.

Espero que você esteja gostando e obtendo o sentimento de segurança nos

tópicos que estamos abordando. Vamos em frente!

EXERCÍCIOS PROPOSTOS

1) De acordo com seus estudos, descreva quais são os principais desafios do

programador da atualidade.

___________________________________________________________________

___________________________________________________________________

___________________________________________________________________

___________________________________________________________________

___________________________________________________________________

___________________________________________________________________

2) O que é código de programação?

___________________________________________________________________

___________________________________________________________________

___________________________________________________________________

___________________________________________________________________

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

___________________________________________________________________

___________________________________________________________________

___________________________________________________________________

___________________________________________________________________

Page 16: Apostila lã³gica de programaã§ã£o

SOCIESC – Sociedade Educacional de Santa Catarina

Algoritmos

16

Aula 2

LINGUAGENS DE PROGRAMAÇÃO

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 características que envolvem a construção de um programa;

• Fornecer orientações para selecionar uma linguagem de programação para

uso;

• Definir algoritmo e reconhecer seus elementos essenciais.

Conteúdos da aula

Acompanhe os assuntos desta aula, se preferir, ao

término, assinale o conteúdo já estudado.

� Língua vs. Linguagem de programação

� Compiladores vs. Interpretadores

� Programação e o sistema operacional

� Programação e a Internet

� Escolhendo uma linguagem de programação

� O que são algoritmos?

� Exercícios propostos

Prezado aluno, nesta segunda aula, você aprenderá quais são os

componentes de uma linguagem de programação de computadores,

Page 17: Apostila lã³gica de programaã§ã£o

SOCIESC – Sociedade Educacional de Santa Catarina

Algoritmos

17

quais são os elementos que influenciam o desenvolvimento de programas e o

principal assunto em lógica de programação: algoritmos.

Vamos em frente e boa aula!

1 LÍNGUA VS. LINGUAGEM DE PROGRAMAÇÃO

A linguagem humana é baseada em símbolos, que fornecem um meio para a

comunicação entre as pessoas. É constituída por elementos que determinam as

regras e devem ser seguidas para que se mantenha uma comunicação adequada.

Uma linguagem de programação de computador recebe as mesmas premissas, ou

seja, é constituída por um conjunto de regras que determinam a forma como o

computador irá executar atividades específicas.

O Novo Dicionário Aurélio da Língua Portuguesa define linguagem como: o uso

da palavra articulada ou escrita como meio de expressão e de comunicação entre as

pessoas. O Dicionário também descreve a Linguagem de Programação como:

linguagem que se expressa um conjunto de ações de forma aceitável pelo

computador.

É importante percebermos essa semelhança para que tenhamos a primeira

absorção das regras associadas a uma linguagem de computador e, com isso,

possamos obter uma adaptação construtiva na programação de computadores.

Hoje vivemos um nível de uso das linguagens de computador muito próximas

da linguagem humana. Usando ainda a referência ao Novo Dicionário Aurélio, as

linguagens atuais são consideradas “Linguagem de Programação de Alto Nível”, ou

seja, é a linguagem de programação que se assemelha ao inglês comum, o que

torna mais fácil seu aprendizado e uso na definição de programas de computador.

Fica então a mensagem de que não há nada de complicado associado às

linguagens de programação de computadores. Na verdade é um constante exercício

da memória humana que, no momento da construção de um programa, o

programador precisa lembrar-se das regras e dos elementos disponíveis na

linguagem para atingir o seu objetivo.

Page 18: Apostila lã³gica de programaã§ã£o

SOCIESC – Sociedade Educacional de Santa Catarina

Algoritmos

18

Também é preciso lembrar que se aplica, na construção dos programas, a

lógica booleana, necessária para condicioná-lo de acordo com validações, regras e

orientações que desejamos aplicar no computador.

Conforme observamos na aula anterior, a evolução das linguagens de

computador gerou uma grande variação, que foram conseqüências não apenas de

revisões e aprimoramentos, como também, a orientação de uma linguagem

específica para problemas particulares. Dessa forma, centenas de linguagens de

programação surgiram e hoje são classificadas em quatro gerações:

• Linguagens de primeira geração (1GL): são linguagens totalmente

dependentes do computador, são conhecidas como “linguagem de máquina”,

e exigem o mais baixo nível de abstração que um programa pode ser

construído. Seu uso está cada vez mais restrito na atualidade;

• Linguagens de segunda geração (2GL): com o objetivo de melhorar a

produtividade na construção dos programas para computador, a primeira

revisão das linguagens e a construção de novas, tinham por finalidade

fornecer elementos de programação mais abstratos e com um grande

número de funcionalidades pré-construídas. As funcionalidades eram

organizadas na forma de “bibliotecas”, que podiam ser reutilizadas nos

programas, acelerando a sua construção;

• Linguagens de terceira geração (3GL): também conhecidas como linguagens

estruturadas, são reconhecidas pela grande capacidade procedural e

estrutural dos dados. Isso significa que programas grandes podiam ser

divididos em pedaços integrados, facilitando a manutenção dos mesmos;

• Linguagens de quarta geração (4GL): são as conhecidas “linguagens de alto

nível” destinadas à construção de programas para finalidades específicas.

Além de usufruir das características de modularização e bibliotecas das

linguagens de terceira geração, oferecem um meio ainda mais poderoso na

construção de programas, principalmente no que se refere à reutilização de

bibliotecas de programas. Com o uso cada vez mais comum de bancos de

dados relacionais, essas linguagens foram potencializadas para a construção

e manipulação de dados. São as linguagens amplamente utilizadas na

atualidade.

Page 19: Apostila lã³gica de programaã§ã£o

SOCIESC – Sociedade Educacional de Santa Catarina

Algoritmos

19

2 COMPILADORES VS. INTERPRETADORES

Como vimos, atualmente, as linguagens de quarta geração são as mais

utilizadas. Significa que trabalhamos em um nível de construção de programas que o

computador não entende. A isto chamamos de “abstração de código”, ou seja, não

sabemos como o computador resolverá o programa que construímos, por ser

linguagem de máquina, mas sabemos todas as regras de alto nível que devem ser

seguidas.

É nesse cenário que ferramentas específicas, chamadas compiladores e

interpretadores, são utilizadas para converter o programa construído em linguagem

de alto nível para a linguagem de baixo nível do computador. Essa conversão,

também muito conhecida como “tradução”, gera o nível de facilidade que as

linguagens atuais necessitam para manter a produtividade que os negócios exigem

hoje.

A primeira abordagem de tradução é a interpretação. A ferramenta de

interpretação de programas (interpretador) realiza a tradução do programa

construído em alto nível, em tempo de execução do programa. Conforme vimos na

aula anterior, sempre que você executar o programa, precisará que o interpretador

realize a tradução, tal qual mostramos na figura 3.

Programa de Computador

InterpretadorLinguagem de

MáquinaComputador

Construir, testar e executar o programa

Figura 3 – Etapas na construção e execução de programas interpretados

A segunda abordagem de tradução é a compilação (figura 4). A ferramenta de

compilação (compilador) interpreta o programa construído em linguagem de alto

Page 20: Apostila lã³gica de programaã§ã£o

SOCIESC – Sociedade Educacional de Santa Catarina

Algoritmos

20

nível e gera um programa equivalente em linguagem de máquina. A tradução é

realizada de várias formas e sua abordagem depende do compilador em uso.

Programa de Computador

CompiladorLinguagem de

MáquinaComputador

Construir o programa e primeira compilação

Programa de Computador

(em linguagem de máquina)

Computador

Testar e executar o programa compilado

Figura 4 – Etapas na construção e execução de programas compilados

3 PROGRAMAÇÃO 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 fácil do processador e de

dispositivos de entrada e saída, como os discos.

Como todo dispositivo computacional necessita de um sistema operacional,

bem como as variações que existem atualmente no mercado (Windows, Linux e

suas várias compilações), é importante você perceber a importância que o software

básico possui na construção de programas.

Como o sistema operacional é responsável pela disponibilidade de vários

recursos do computador, as atuais linguagens de programação se utilizam das

bibliotecas fornecidas pelo sistema operacional para realizar suas principais tarefas.

Page 21: Apostila lã³gica de programaã§ã£o

SOCIESC – Sociedade Educacional de Santa Catarina

Algoritmos

21

As potencialidades de um programa são derivadas das capacidades que o sistema

operacional oferece para a linguagem de programação.

Por exemplo, é dessa forma que o Windows e as interfaces gráficas

fornecidas com o Linux oferecem ao programador a facilidade para a construção de

programas que utilizam janelas. Quando um programador insere o comando para

desenhar uma janela, a linguagem, após interpretada ou compilada, realiza o

desenho através do diálogo entre a linguagem e os recursos do sistema operacional,

que, por sua vez, se utiliza das características físicas do computador.

Isso também vale para armazenar informações, imprimir dados e outras

atividades que um programa pode realizar.

Nesse momento, o importante é você reconhecer a importância em conhecer

as potencialidades do sistema operacional para conseguir explorá-las ao máximo e

com isto obter resultados ricos e poderosos na construção de seus programas.

4 PROGRAMAÇÃO E A INTERNET

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

construção de programas, a Internet oferece um novo nível 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 três elementos fundamentais:

• Um meio comum de acesso às informações (rede de comunicação pública –

Internet);

• Uma interface gráfica comum para manipular as informações (páginas

apresentadas em um único aplicativo - Navegador);

• Uso de uma linguagem de programação comum, independente do

computador utilizado pelo usuário.

O desenvolvimento para a Internet também se baseia nas mesmas premissas

de construção de programas, mas possui particularidades que exigem do

programador algumas preocupações que a programação para Windows ou Linux

não exigem. A maioria dessas particularidades está associada aos elementos

fundamentais acima mencionados.

Page 22: Apostila lã³gica de programaã§ã£o

SOCIESC – Sociedade Educacional de Santa Catarina

Algoritmos

22

5 ESCOLHENDO UMA LINGUAGEM DE PROGRAMAÇÃO

Além das gerações das linguagens de programação de computadores, há

uma categoria atual que fornece uma nova abordagem para a construção de

programas: as ferramentas de desenvolvimento rápido de sistemas, ou RAD (rapid

application development). Com o maior número de necessidades das soluções

baseadas em interfaces gráficas, um novo conjunto de ferramentas de software

explora essas oportunidades, na forma de um processo interativo para o

programador no desenvolvimento da solução.

As linguagens RAD, como são conhecidas, permitem ao programador

desenhar como o programa deverá se apresentar (interface com o usuário) e então

escrever o código de programação para fazer com que a janela desenhada tenha

alguma funcionalidade para o usuário. Com este método, houve certo nivelamento

das ferramentas utilizadas para construir programas, liberando o programador para

manter o foco na linguagem e na lógica empregada em resolver o problema.

Dessa forma, a escolha de uma linguagem de programação recebe um

conjunto de avaliações que, de acordo com o objetivo, determina qual deve ser a

melhor aplicada. Não existe a melhor linguagem. O que existe são algumas variáveis

que podem ser consideradas na escolha de uma linguagem:

• Prazo para o desenvolvimento do programa e a experiência do programador

na linguagem, que favoreçam a produtividade de execução dos trabalhos de

programação;

• Sistema operacional onde o programa será executado;

• Necessidades tecnológicas específicas que favoreçam uma linguagem em

particular;

• Evolução da linguagem, compatibilidade com novas tecnologias e visão de

crescimento futuro;

• Tamanho da equipe envolvida na construção do sistema;

• Suporte do fabricante ou de uma comunidade constituída, que forneça um

nível mínimo de segurança na construção de programas.

Page 23: Apostila lã³gica de programaã§ã£o

SOCIESC – Sociedade Educacional de Santa Catarina

Algoritmos

23

Nesse contexto, a importância de um bom entendimento e conhecimento sobre

lógica de programação, objeto desse livro didático, é fundamental para que a

elaboração 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 programação

(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

2 C

3 C++

4 PHP

5 Visual Basic

6 Perl

7 Python

8 JavaScript

9 C#

10 Ruby

6 O QUE SÃO ALGORITMOS?

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

instruções que possa ser seguido para a realização de uma tarefa específica ou

resolução de um determinado problema. Já na área de Informática, também de

acordo com Ximenes (1993), um algoritmo é definido como uma seqüência

ordenada e finita de passos, independente da linguagem de programação a ser

utilizada para codificá-lo, que leva à solução de um dado problema.

É provável que você já tenha ouvido falar em algoritmos. Na verdade, a

palavra pode ser aplicada a qualquer atividade que aplique o conceito acima

Page 24: Apostila lã³gica de programaã§ã£o

SOCIESC – Sociedade Educacional de Santa Catarina

Algoritmos

24

descrito. Receitas de bolo, manuais com procedimentos de execução e roteiros para

atendimentos específicos são 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 conclusão do

objetivo a ser atingido.

Por exemplo:

Início

1. Colocar a chave na ignição;

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. Senão

4.1. Repetir;

Fim

Um algoritmo possui quatro propriedades essenciais:

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

ações precisam ser descritas e devem ser únicas;

• Não pode haver redundância: um conjunto de instruções 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

ignição;

• Determinístico: esta terceira propriedade significa que se as instruções

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

• Finito: significa que as instruções precisam terminar após um número

limitado de passos.

SÍNTESE

Page 25: Apostila lã³gica de programaã§ã£o

SOCIESC – Sociedade Educacional de Santa Catarina

Algoritmos

25

Nesta segunda aula avançamos um pouco mais no mundo da programação

de sistemas de computador. Começamos entendendo as razões 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 também quais os agentes internos e externos que influenciam

na tarefa de programar um computador e ressaltamos a importância que o contexto

de execução do programa determina os primeiros passos na sua construção.

E já que falamos tanto de linguagem, obtivemos o primeiro contato com as

gerações de linguagens de computador, suas características e os elementos

essenciais para escolher a linguagem a ser utilizada.

Finalmente, fizemos nossa primeira incursão sobre o termo algoritmo.

Perceba que muitos conceitos aqui apresentados encaixam-se com as

informações tratadas na primeira aula, sendo uma abordagem estruturada e

construtiva na elaboração 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 vêm por aí. Fique firme, pratique os

exercícios sugeridos e vamos seguindo em frente.

EXERCÍCIOS PROPOSTOS

2) Quais são as gerações das linguagens de programação?

___________________________________________________________________

___________________________________________________________________

Page 26: Apostila lã³gica de programaã§ã£o

SOCIESC – Sociedade Educacional de Santa Catarina

Algoritmos

26

___________________________________________________________________

___________________________________________________________________

___________________________________________________________________

___________________________________________________________________

2) Cite a diferença entre o compilador e um interpretador.

___________________________________________________________________

___________________________________________________________________

___________________________________________________________________

___________________________________________________________________

3) Descreva com as suas próprias palavras o que é um algoritmo.

___________________________________________________________________

___________________________________________________________________

___________________________________________________________________

___________________________________________________________________

___________________________________________________________________

___________________________________________________________________

4) Quais são as propriedades essenciais de um algoritmo?

___________________________________________________________________

___________________________________________________________________

___________________________________________________________________

___________________________________________________________________

Page 27: Apostila lã³gica de programaã§ã£o

SOCIESC – Sociedade Educacional de Santa Catarina

Algoritmos

27

Aula 3

FORMAS DE REPRESENTAÇÃO DE

UM ALGORITMO

Objetivos da aula

Ao final desta aula, você deverá ser capaz de:

• Entender as opções de representação de um algoritmo;

• Fornecer as orientações nas técnicas de representação de algoritmos;

• Construir um algoritmo usando pseudocódigo;

• Apresentar graficamente um algoritmo usando um fluxograma.

Conteúdo da aula

Acompanhe os assuntos desta aula, se preferir, ao

término, assinale o conteúdo já estudado.

� Formas de representação de um algoritmo

� O que é um pseudocódigo?

� Interpretador de Linguagem Algorítmica

� Regras para construção de um pseudocódigo

� O que é um fluxograma?

� Regras para representação gráfica de um algoritmo

� Exercícios propostos

Nesta terceira aula, você conhecerá detalhes técnicos envolvidos na

construção de algoritmos e aprender como representá-los.

Como você verá nesta unidade a representação de algoritmos e o

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

obtém para melhor entendimento e prática na lógica de programação.

Boa aula!

Page 28: Apostila lã³gica de programaã§ã£o

SOCIESC – Sociedade Educacional de Santa Catarina

Algoritmos

28

1 FORMAS DE REPRESENTAÇÃO DE UM

ALGORITMO

Os algoritmos podem ser representados de várias formas, como:

• Usando uma língua comum (português, inglês, espanhol e etc.) meio utilizado

para a descrição de receitas, manuais de procedimentos, etc., sendo a forma

mais espontânea na representação de algoritmos;

• Usando uma linguagem de português estruturado, que também é conhecida

como pseudocódigo ou pseudo linguagem. O pseudocódigo também recebe

variações de nomes, como: Portugol, PDL (Program Design Language),

pascalóide, linguagem algorítmica e outros. Nesse curso vamos utilizar o

termo “pseudocódigo”, considerando ser a forma mais pura de objetivo desse

método;

• Usando representações gráficas, como diagramas e fluxogramas.

Cada uma das formas de representação possui vantagens e desvantagens e

cabe ao programador escolher qual oferece as melhores características para atender

suas necessidades. Também é comum a combinação das representações,

principalmente quando há necessidade de um nível de entendimento de várias

pessoas. As três formas mais comuns para representar um algoritmo são:

• Diagrama de Nassi-Shneiderman (Diagrama de Chapin);

• Pseudocódigo;

• Fluxogramas (Diagrama de Fluxo).

Nesse curso focalizaremos os pseudocódigos e fluxogramas.

2 O QUE É UM PSEUDOCÓDIGO?

É uma forma especial de linguagem, bem mais restrita que a lingua portuguesa

e com significados bem definidos para todas as palavras utilizadas nas instruções

inseridas em um programa. O objetivo principal dessa abordagem é permitir ao

programador pensar no problema em si e não nas regras particulares de uma

Page 29: Apostila lã³gica de programaã§ã£o

SOCIESC – Sociedade Educacional de Santa Catarina

Algoritmos

29

linguagem de programação ou em qual equipamento/sistema operacional irá

executar o algoritmo.

No pesudocódigo, assim como nas linguagens de programação, basicamente

utilizamos comandos que compõem a execução do algoritmo. São comandos

executados seqüencialmente, de forma que um comando somente será executado

ao término da execução do comando anterior.

Um exemplo de pseudocódigo é:

Inicio

<declarações de variáveis>

<comandos>

fim

Nas próximas páginas, vamos explorar os principais componentes dessa

linguagem e, à medida que o curso evoluir, novos elementos da linguagem serão

apresentados, para representar a solução do problema que será proposto.

3 INTERPRETADOR DE LINGUAGEM ALGORÍTMICA

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

tarefas para a construção de algoritmos. Tradicionalmente, aprende-se lógica de

programação usando-se uma linguagem particular, dessa forma, o iniciante aprende

lógica já inserido na linguagem de programação 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 não atender a todos. Coisas como experiência anterior com a

informática, interesse natural em programação de computadores e capacidade de

autodesenvolvimento, fornecem um contexto adequado para essa abordagem.

Para os programadores iniciantes, que possuem alguma limitação no

aprendizado sobre lógica de programação, é necessária uma abordagem mais clara,

comum e gradual.

Assim, surgiram as iniciativas dos projetos de Interpretador de Linguagem

Algorítmica (ILA). De forma geral, são necessidades percebidas na área acadêmica

Page 30: Apostila lã³gica de programaã§ã£o

SOCIESC – Sociedade Educacional de Santa Catarina

Algoritmos

30

para envolver os alunos nos primeiros passos no mundo da programação. Vários

programas foram lançados com esta finalidade, mas, infelizmente, não se mantém

um padrão mínimo da linguagem de pseudocódigo utilizada.

Nesse curso utilizaremos um ILA projetado no mundo acadêmico de Portugal,

um software chamado Portugol, construído usando a linguagem Java para seu

desenvolvimento. Os exemplos e exercícios apresentados serão todos compatíveis

com o ambiente desse sistema.

A grande vantagem no uso dessa ferramenta é a simplicidade da linguagem

utilizada e a capacidade de relacionamento em gerar código e fluxograma em um

ambiente único. De todos os programas que testei, este se apresenta com a melhor

abordagem dos elementos necessários da ferramenta para um programador

iniciante.

3.1 INSTALAÇÃO 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 descompactação, 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

Page 31: Apostila lã³gica de programaã§ã£o

SOCIESC – Sociedade Educacional de Santa Catarina

Algoritmos

31

É importante verificar que, para executar o programa, é necessário que uma

Máquina Virtual Java (JVM ou Java Virtual Machine) esteja instalada no sistema

operacional. Caso contrário, a execução do arquivo acima apresentará um erro.

Caso você precise instalar uma JVM, acesse novamente a página da

biblioteca do curso, verifique que há dois arquivos que poderão ser baixados:

plataforma Windows e plataforma Linux. Efetue o download do programa de acordo

com o seu sistema operacional. São eles:

Plataforma Windows - jre-6u1-windows-i586-p.exe

Plataforma Linux - jre-6u1-linux-i586-rpm.bin

Execute o programa baixado e siga as instruções da instalação.

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 construção de algoritmos: editor de

texto, para a construção usando pseudocódigo ou o editor de fluxogramas, para a

construção usando uma abordagem gráfica.

3.2 AMBIENTE DO EDITOR DE PSEUDOCÓDIGO DO PORTUGOL

Ao executar o programa de Editor de Texto (Portugol IDE), um ambiente de

construção de pseudocódigo é apresentado (figura 7).

Page 32: Apostila lã³gica de programaã§ã£o

SOCIESC – Sociedade Educacional de Santa Catarina

Algoritmos

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 painéis principais:

editor de código e informações.

No painel de informações, há uma divisão em guias que oferece três áreas de

conteúdo, conforme mostra a figura 8.

Guia Descrição/Objetivo

Ecran Apresenta os resultados do algoritmo

Informações Apresenta informações sobre o sistema

e pontos de observação sobre a

execução do programa.

Ajuda da Linguagem Manual com as regras da linguagem de

pseudocódigo utilizada na ferramenta.

Figura 8 – Páginas do painel de informações

Page 33: Apostila lã³gica de programaã§ã£o

SOCIESC – Sociedade Educacional de Santa Catarina

Algoritmos

33

4 REGRAS BÁSICAS PARA A CONSTRUÇÃO DE UM

PSEUDOCÓDIGO

Conforme vimos, um pseudocódigo recebe regras da mesma forma que uma

linguagem convencional. Possui regras de sintaxe (forma como os comandos devem

ser escritos) e regras de semântica (conjunto de ações que serão exercidas pelo

computador durante a execução do referido comando).

Todo programa escrito em pseudocódigo deve conter a estrutura do blo0co

principal de comandos, que deve começar com a palavra “inicio” e terminar com a

palavra “fim” (sem as aspas). Os comandos para a execução do programa são

inseridos dentro do bloco inicio-fim.

Observe o programa abaixo escrito em pseudocódigo:

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 então

escrever "Aluno aprovado = ", nome

senão

escrever "Aluno reprovado = ", nome

fimse

Page 34: Apostila lã³gica de programaã§ã£o

SOCIESC – Sociedade Educacional de Santa Catarina

Algoritmos

34

ler nome

fimEnquanto

fim

Observe que as palavras em negrito são os comandos em conformidade com a

sintaxe da linguagem de pseudocódigo, que é aplicada no Interpretador da

Linguagem. Perceba também que algumas linhas possuem recuos em relação à

linha anterior. A essa distribuição de recuos chamamos indentação, 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 botão Executar, ou

pressionar a tecla F3, ou executar o comando Executar do menu Algoritmo.

Figura 9 – Comando Executar

Após a execução do algoritmo, observe que o painel de informações apresentará

conteúdo nas guias ecran e informações. No ecran, são apresentadas as

mensagens do comando ESCREVER e LER (Entrada e Saída do algoritmo).

Page 35: Apostila lã³gica de programaã§ã£o

SOCIESC – Sociedade Educacional de Santa Catarina

Algoritmos

35

Quando a instrução LER é executada, uma caixa de diálogo é apresentada

solicitando a informação para a entrada de dados pelo usuário (figura 10).

Figura 10 – Programa em execução no painel de informações

Em Informações, são apresentados dados sobre a execução do algoritmo

(figura 11), os horários de execução e os passos realizados.

Figura 11 – 0 painel de informações apresenta um resumo

5 O QUE É UM FLUXOGRAMA?

O fluxograma, ou diagrama de fluxo, foi por muito tempo a representação

preferida dos programadores para a construção de algoritmos. Um fluxograma é

uma representação gráfica da seqüência de ações que podem ocorrer em um

programa.

Page 36: Apostila lã³gica de programaã§ã£o

SOCIESC – Sociedade Educacional de Santa Catarina

Algoritmos

36

O fluxograma utiliza-se de símbolos específicos para a representação gráfica

dos algoritmos, e sofrem algumas variações de acordo com o autor ou ferramenta

em uso. A tabela 2 mostra a simbologia tradicionalmente utilizada por fluxogramas.

Tabela 2 – Elementos gráficos utilizados em fluxogramas

Processos – Utilizado na atribuição de

valores para variáveis

Decisão – Representa as decisões que

ocorrem no programa

Leitura – Para ler o conteúdo das variáveis

Escrita – Utilizado para a escrita de dados e

conteúdos de variáveis

Conector – Muito utilizado para conectar

partes do fluxo ou na integração com outros

fluxos

Terminal – Normalmente utilizado para Inicio

e Fim do fluxo.

Setas de fluxo de controle

Page 37: Apostila lã³gica de programaã§ã£o

SOCIESC – Sociedade Educacional de Santa Catarina

Algoritmos

37

Com esses elementos visuais o programador representa cada passo que o

programa deve executar, obtendo uma visão gráfica do fluxo do programa.

Existe um grande número de ferramentas baseadas em computador para

apoiar a construção de fluxogramas, tanto para Windows como também para Linux.

Em nosso curso, vamos utilizar a ferramenta Portugol para a representação

gráfica em fluxogramas. Esse software permite a conversão direta entre o programa

construído em pseudocódigo e sua correspondência representativa em fluxograma,

segundo nos mostra a figura 12.

Figura 12 – Converter o algoritmo em fluxogrma

Mas é possível também realizar a operação contrária, ou seja, iniciar a

construção de um algoritmo pelo fluxograma e converter o diagrama para

pseudocódigo. Veja as figuras 13 e 14.

Page 38: Apostila lã³gica de programaã§ã£o

SOCIESC – Sociedade Educacional de Santa Catarina

Algoritmos

38

Figura 13 – Ambiente de visualização/construção de Fluxogramas

Page 39: Apostila lã³gica de programaã§ã£o

SOCIESC – Sociedade Educacional de Santa Catarina

Algoritmos

39

Figura 14 – Exemplo de Fluxograma

Page 40: Apostila lã³gica de programaã§ã£o

SOCIESC – Sociedade Educacional de Santa Catarina

Algoritmos

40

SÍNTESE

Agora sim!

Começamos a ter uma visão prática sobre a construção de programas de

computador. Nesta aula você aprendeu as duas principais representações que

podem ser utilizadas para a construção de algoritmos. São as ferramentas principais

do curso e servem como principal base para acelerar no conhecimento de

linguagens de programação.

Cabe ressaltar que o uso dessas ferramentas tem como principal objetivo

facilitar a descrição do seu entendimento para a solução de um problema e a opção

entre pseudocódigo ou fluxograma dependerá do contexto do problema a ser

resolvido.

Nas próximas aulas você conhecerá os comandos utilizados em cada

representação de um algoritmo, estudando detalhadamente cada exemplo.

Até a próxima aula.

Page 41: Apostila lã³gica de programaã§ã£o

SOCIESC – Sociedade Educacional de Santa Catarina

Algoritmos

41

EXERCÍCIOS PROPOSTOS

3) Descreva as diferenças entre um pseudocódigo e um fluxograma.

___________________________________________________________________

___________________________________________________________________

___________________________________________________________________

___________________________________________________________________

___________________________________________________________________

___________________________________________________________________

2) Execute o software Portugol e construa em pseudocódigo e/ou fluxograma os

algoritmos abaixo (não se preocupe nesse momento em utilizar desvios

condicionais):

• Troca de pneu de um carro;

• Troca de lâmpada de um cômodo da casa;

• Realizar uma ligação e conversar por um telefone celular;

• Verificação do nível de óleo do carro.

Page 42: Apostila lã³gica de programaã§ã£o

SOCIESC – Sociedade Educacional de Santa Catarina

Algoritmos

42

Aula 4

VARIÁVEIS E CONSTANTES

Objetivos da aula

Ao final desta aula, você deverá ser capaz de:

• Conceituar variáveis e constantes em um algoritmo;

• Declarar variáveis, determinar o tipo de dados a ser armazenado e comentar

algoritmos;

• Atribuir valores às variáveis;

• Trabalhar com expressões matemáticas.

Conteúdos da aula

Acompanhe os assuntos desta aula, se preferir, ao

término, assinale o conteúdo já estudado.

� Variáveis e constantes

� Tipos de dados e Atribuição de valores

� Comentando algoritmos

� Operadores aritméticos e relacionais

� Expressões aritméticas e relacionais

� Instruções Ler e Escrever (pseudocódigo)

� Exercícios propostos

As variáveis e constantes são elementos fundamentais de um

programa de computador. Nesta aula você obterá o conhecimento

necessário para construir algoritmos usando estes elementos de

programação.

Boa aula!

Page 43: Apostila lã³gica de programaã§ã£o

SOCIESC – Sociedade Educacional de Santa Catarina

Algoritmos

43

1 VARIÁVEIS E CONSTANTES

As variáveis e constantes são conceitos fundamentais para a construção de

algoritmos, pois são através deles que um algoritmo “armazena” os dados dos

problema.

1.1 VARIÁVEIS

Quando uma determinada informação do problema tem a possibilidade de

sofrer alterações (ou variações) no decorrer da execução do programa, essa

informação deverá ser tratada como uma variável do problema e deve ser

representada no algoritmo. Como o próprio nome sugere, as variáveis podem conter

valores diferentes a cada instante do programa, segundo as instruções do algoritmo.

Do ponto de vista técnico, uma variável é um espaço de memória do

computador que “reservamos” para guardar os dados elementares do problema a

ser resolvido.

Quando descrevemos uma variável no algoritmo, utilizamos um nome (ou

identificador) para representá-la e seu conteúdo pode ser alterado, consultado ou

apagado quantas vezes forem necessárias, pois a variável sempre armazenará o

último valor atribuído para o seu conteúdo. A ação de descrever uma variável no

algortimo é chamada de declaração ou declarar uma variável.

1.2 CONSTANTES

Quando uma informação não tem qualquer possibilidade de alteração, ou

variar, no decorrer da execução do programa, deve ser tratada como uma

constante.

Do ponto de vista técnico, uma constante é uma área de armazenamento do

computador que manterá seu conteúdo durante toda a execução do programa. Esta

área possui um nome (ou identificador) e poderá ser recuperada (lida) a qualquer

momento no algoritmo.

Page 44: Apostila lã³gica de programaã§ã£o

SOCIESC – Sociedade Educacional de Santa Catarina

Algoritmos

44

2 TIPOS DE DADOS E ATRIBUIÇÃO DE VALORES

Toda variável ou constante precisa receber um tipo de dado, que determinará

qual o domínio de seu conteúdo. Os tipos mais comuns de dados são conhecidos

como tipos primitivos, descritos na tabela 3.

Tabela 3 – Tipos de dados usados em Pseudocódigo

Tipo Descrição Domínio

Inteiro Todo e qualquer dado numérico

que pertença ao conjunto de

números inteiros relativos

(negativo, nulo ou positivo)

-2.147.483.648

2.147.483.647

Real Todo e qualquer dado numérico

que pertença ao conjunto de

números reais (negativo, nulo ou

positivo)

-1.7 E 308

1.7 E 308

Lógico Todo e qualquer dado que só pode

assumir duas situações (dados

biestáveis, algo como verdadeiro ou

falso)

Verdadeiro ou Falso,

normalmente entre pontos.

Por exemplo, .verdadeiro.

ou .f.

Texto Todo e qualquer dado composto

por um conjunto de caracteres

alfanuméricos (números, letras e

caracteres especiais)

Seqüências de caracteres

entre aspas.

Toda variável possui algum conteúdo que será armazenado e manipulado pelo

algoritmo. As variáveis que serão utilizadas nos algoritmos devem ser declaradas

inicialmente. A declaração de uma variável indica o tipo de dado que ela pode

guardar no decorrer da execução do algoritmo (ou no decorrer da execução do

programa que futuramente será construído).

Para declararmos uma variável, temos que criar-lhe um identificador, que será

o nome da variável no algoritmo e também temos que definir o tipo de dado que a

Page 45: Apostila lã³gica de programaã§ã£o

SOCIESC – Sociedade Educacional de Santa Catarina

Algoritmos

45

variável pode armazenar. Faremos a declaração de variáveis obedecendo ao

seguinte padrão:

variavel [tipo] [nome]

Onde tipo pode ser uma das palavras: inteiro, real, lógico ou texto; o nome

deve seguir as seguintes regras:

• Deve começar por um caractere alfabético;

• Pode ser seguido por mais caracteres alfabéticos e/ou numéricos;

• Não é permitido o uso de caracteres especiais, como: @, #, &, *, +, ? etc.

(exceto o sublinhado).

Exemplos de nomes corretos de variáveis:

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 variáveis.

Mas há uma observação importante e que pode variar de uma linguagem para outra,

é a sensibilidade por letras maiúsculas e minúsculas utilizadas no nome da variável.

Por exemplo, Nome é diferente de NOME.

Por isso, para que você não tenha problemas futuros, neste curso declare

sempre as variáveis em letras maiúsculas.

2.2 ATRIBUIÇÃO DE VALORES

Conforme vimos, cada variável deve armazenar e determinar um tipo de dado.

A definição de tipos de dados diferentes oferece uma série de vantagens para a

programação de computadores. As duas mais importantes são:

• A economia no armazenamento de dados na memória;

• Velocidade nas operações aritméticas e lógicas.

Page 46: Apostila lã³gica de programaã§ã£o

SOCIESC – Sociedade Educacional de Santa Catarina

Algoritmos

46

A forma de atribuir um valor para uma variável é utilizando o sinal de igual

acompanhado do valor a ser atribuído. Em pseudocódigo é utilizado o símbolo de

seta:

X � 2

3 COMENTANDO ALGORITMOS

Um tópico importante, mas pouco explorado nas linguagens de programação é

a necessidade de inserir comentários no algoritmo construído. Toda linguagem de

programação, bem como um pseudocódigo fornecem uma forma simples (e

normalmente padronizada) para inserir comentários no programa.

O aspecto importante em inserir comentários está na capacidade de leitura que

forneceremos para outros programadores que, porventura, venham a reutilizar o

programa construído. As soluções lógicas que construímos para um problema pode

variar de programador para programador, por isso trabalhar com comentários é uma

prática saudável para o relacionamento com outros profissionais.

Ao fazer uso dos comentários, você estará documentando o programa para seu

próprio uso. Não é 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 comentário, inicie a frase com duas barras comuns. Por

exemplo:

//Exemplo de comentário

4 OPERADORES ARITMÉTICOS E RELACIONAIS

Page 47: Apostila lã³gica de programaã§ã£o

SOCIESC – Sociedade Educacional de Santa Catarina

Algoritmos

47

4.1 OPERADORES ARITMÉTICOS

Quando construímos algoritmos, é comum trabalharmos com expressões

matemáticas para a resolução de alguns problemas. As expressões matemáticas

podem fazer uso de operadores aritméticos e lógicos. As operações são ações

executadas sobre os operandos (variáveis ou constantes) que foram previamente

definidos.

Chamamos de operadores aritméticos o conjunto de símbolos que representa

as operações básicas da matemática e podem ser aplicadas a números inteiros e/ou

reais, conforme tabela 4.

Tabela 4 – Operadores Aritméticos

Operação Operador

Adição +

Subtração -

Multiplicação *

Divisão /

Potenciação ^

Radiciação %

Os símbolos utilizados como operador na tabela 4, são representativos na

ferramenta de pseudocódigo utilizada neste curso. Algumas linguagens possuem

variações nos símbolos utilizados para potenciação e radiciação.

Um aspecto importante no uso de operadores aritméticos é sua prioridade

matemática, ou seja, um operador de maior prioridade realizará sua operação antes

de um operador de menor prioridade. A tabela 5 apresenta as regras de prioridade e

que podem ser alteradas com o uso de parênteses.

Tabela 5 – Prioridade de cálculo dos operadores aritméticos

Operador Operação Prioridade

^, ** Exponenciação 1

Page 48: Apostila lã³gica de programaã§ã£o

SOCIESC – Sociedade Educacional de Santa Catarina

Algoritmos

48

/ Divisão 2

* Multiplicação 2

+ Adição 3

- Subtração 3

4.2 OPERADORES RELACIONAIS

Um outro grupo importante de operadores é formado pelos operadores

relacionais (tabela 6). Quando queremos fazer comparações entre valores ou entre

expressões (tanto matemáticas como lógicas), precisamos utilizar essa categoria de

operadores.

Tabela 6 – Operadores relacionais

Comparação Operador

Igual =

Diferente =/=

Maior que >

Menor que <

Maior ou igual a >=

Menor ou igual a <=

O resultado de uma comparação é sempre um valor lógico (verdadeiro ou

falso).

Os símbolos utilizados como operador na tabela acima, também são

representativos na ferramenta de pseudocódigo utilizada neste curso. Algumas

linguagens possuem variações no símbolo utilizado para a comparação Diferente.

Page 49: Apostila lã³gica de programaã§ã£o

SOCIESC – Sociedade Educacional de Santa Catarina

Algoritmos

49

5 INSTRUÇÕES LER E ESCREVER

Na construção de algoritmos, é conveniente que o usuário possa informar

dados externos para serem operados pelo programa. Assim, um programa pode

receber um dado informado por um operador através de um comando de leitura. Da

mesma forma, pode ser necessário conhecer o resultado de determinada operação

executada pelo computador, então será necessária uma forma de exibir os dados.

Cada linguagem tem uma forma específica para entrada e saída de dados. Em

algoritmos usaremos os comandos genéricos Ler e Escrever, para realizar a

interface com o usuário, conforme mostra a figura 15.

Figura 15 – Exemplo de algoritmo de entrada e saída de dados

A instrução Ler é utilizada quando se deseja obter informações do teclado do

computador, ou seja, é um comando de entrada de dados. Para simplificar, usa-se

a instrução Ler, quando se necessita que o usuário do algoritmo digite algum dado

(e posteriormente do programa).

A instrução Escrever é utilizada quando se deseja mostrar informações na tela

do computador, ou seja, é um comando de saída de dados. Para simplificar, usa-

se a instrução Escrever, quando se necessita mostrar algum dado para o usuário do

algoritmo (e posteriormente do programa).

Page 50: Apostila lã³gica de programaã§ã£o

SOCIESC – Sociedade Educacional de Santa Catarina

Algoritmos

50

Algumas sugestões importantes para escrever algoritmos em pseudocódigo,

para realizar operações de entrada e saída:

• Incluir comentários nas linhas mais importantes do programa;

• Utilizar nomes significativos para as variáveis e constantes, que possam

identificar o seu conteúdo;

• Efetuar a indentação das linhas para facilitar a leitura.

SÍNTESE

Nesta aula estudamos os primeiros elementos para o desenvolvimento de um

algoritmo, principalmente no que se refere à entrada e saída de dados. Um processo

comum de execução de um programa é entrar com uma informação, processá-la e

apresentar o resultado obtido, processo descrito nesta aula.

Também conhecemos a importância das variáveis e constantes na

programação de computadores. Na verdade, todo trabalho realizado por um

computador é baseado na manipulação de informações contidas em sua memória.

Parte desta aula é sabermos classificar os dados de acordo com o tipo de

informação contida neles.

Finalmente, procuramos compreender como trabalhar com expressões

aritméticas e lógicas, componentes necessários para a construção de algoritmos.

EXERCÍCIOS PROPOSTOS

4) Considerando as variáveis abaixo, assinale N para numérico, C para texto e L

para lógico:

( ) 1000 ( ) “4,56”

Page 51: Apostila lã³gica de programaã§ã£o

SOCIESC – Sociedade Educacional de Santa Catarina

Algoritmos

51

( ) “12” ( ) .Verdadeiro.

( ) .v. ( ) “cinco”

( ) “Casa 8” ( ) “5”

( ) -456 ( ) 456

( ) -4.56 ( ) 45.876

2) Supondo que as variáveis Nota1, Nota2, Matrícula e Sexo serão utilizadas para

armazenar as notas de um aluno, o número da matrícula do aluno e o sexo do aluno,

respectivamente, efetue abaixo a declaração das variáveis e seus tipos

corretamente.

___________________________________________________________________

___________________________________________________________________

___________________________________________________________________

___________________________________________________________________

3) Encontre os erros da seguinte declaração de variáveis:

Variáveis

Numérico endereço, nfilhos, valor$, xpto, c, peso

Texto idade, x

Lógico NomeDoPai

___________________________________________________________________

___________________________________________________________________

4) Desenvolva algoritmos para os problemas abaixo, usando a ferramenta Portugol:

a. Calcular a média entre 4 valores informados pelo usuário e apresentar

o resultado;

b. Calcular o resultado de xy, onde x e y serão fornecidos pelo usuário e

apresentar o resultado.

Aula 5

Page 52: Apostila lã³gica de programaã§ã£o

SOCIESC – Sociedade Educacional de Santa Catarina

Algoritmos

52

ESTRUTURAS DE PROGRAMAÇÃO -

CONDICIONAIS

Objetivos da aula

Ao final desta aula, você deverá ser capaz de:

• Utilizar os operadores lógicos;

• Utilizar uma estrutura de controle seqüencial e condicional;

• Detectar os erros comuns de programação.

Conteúdos da aula

Acompanhe os assuntos desta aula, se preferir, ao

término, assinale o conteúdo já estudado.

� Estruturas de controle

� Usando expressões lógicas

� Desvios condicionais simples e compostos

� Bloco SE-ENTÃO-SENÃO

� Bloco ESCOLHE-CASO

� Identificando erros comuns de lógica

A proposta desta aula é lhe apresentar e lhe ensinar uma abordagem

comum na construção de programas, o que são chamados de

estruturas de controle. A lógica condicional e seus elementos serão

tratados.

Boa aula e vamos adiante!

Page 53: Apostila lã³gica de programaã§ã£o

SOCIESC – Sociedade Educacional de Santa Catarina

Algoritmos

53

1 ESTRUTURAS DE CONTROLE

Os exemplos de algoritmos que vimos até agora já nos deram uma visão

simples do que é um bloco de código de programação. Quando um algoritmo é

executado e todos os seus passos (instruções) são processados em seqüência, sem

desvios e sem repetir ou omitir nenhuma linha, é chamado de algoritmo seqüencial

(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 ações e/ou estruturas

que serão executadas a partir do resultado de uma condição (simples ou composta),

é chamado de algoritmo condicional (figura 16). Esta é uma estrutura de controle

muito comum na programação de computadores, pois normalmente tomamos

decisões dentro do programa, esperando que se faça 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

Page 54: Apostila lã³gica de programaã§ã£o

SOCIESC – Sociedade Educacional de Santa Catarina

Algoritmos

54

se soma <= 10 então

escrever "O resultado da soma é: "

escrever soma

senão

escrever "A operação está acima do esperado!"

fimse

fim

Observe que, nessa estrutura, antes de enviarmos o resultado para a tela do

usuário, estamos realizando uma avaliação do valor obtido na operação aritmética

do algoritmo. Utilizamos a palavra SE para realizarmos a instrução de teste do

resultado e depois informamos qual a expressão que deve ser testada (soma <=10,

ou seja, o conteúdo da variável soma é menor ou igual a dez?). Esse é um exemplo

de expressão lógica que veremos mais adiante na aula. O resultado deste teste só

pode ser um: positivo ou negativo. Caso positivo (a variável soma é igual ou menor

que dez), o primeiro bloco de instruções será executado. Caso o resultado seja

negativo (a variável soma é maior que 10), o segundo bloco, iniciado com a palavra

SENÃO, será executado.

Figura 16 – Comparação entre algoritmos seqüenciais e condicionais

Page 55: Apostila lã³gica de programaã§ã£o

SOCIESC – Sociedade Educacional de Santa Catarina

Algoritmos

55

2 USANDO EXPRESSÕES LÓGICAS

Como vimos na aula anterior, foram apresentados os operadores aritméticos

(soma, subtração, etc.) com eles formamos EXPRESSÕES ARITMÉTICAS, por

exemplo B = A * C2. Também foram apresentados os operadores relacionais (maior

que, menor que, igual e etc.), com eles construímos EXPRESSÕES RELACIONAIS,

ou seja, estamos relacionando elementos para realizar uma comparação, por

exemplo B <= 10.

Neste tópico você estudará um outro grupo de operadores, chamados lógicos.

A principal finalidade desses operadores é UNIR duas expressões, sejam relacionais

ou aritméticas, e com isto estender as capacidades de lógica condicional no

algoritmo.

Os principais operadores lógicos são os que aparecem na tabela 7.

Tabela 7 – Operadores Lógicos

Operação Operador Exemplo de expressão lógica

Conjunção E SE X > 10 E X <20 ENTÃO

(só há uma possibilidade)

Disjunção

(não-exclusiva)

OU SE X > 10 OU Y > 20 ENTÃO

Neste caso, retornará verdadeiro se X

for maior que 10 OU se Y for maior que

20. Uma das expressões for verdadeira,

o retorno do teste será verdadeiro.

(há três possibilidades)

Negação NÃO SE NÃO A = Y ENTÃO

Este operador inverte o resultado, neste

exemplo, se A for igual a Y retornará

FALSO.

(somente há uma possibilidade)

Disjunção

(Exclusiva)

XOU SE X > 10 XOU Y > 20 ENTÃO

Somente se X > 10 ou Y > 20 retornará

verdadeiro, um ou outro.

Page 56: Apostila lã³gica de programaã§ã£o

SOCIESC – Sociedade Educacional de Santa Catarina

Algoritmos

56

Operação Operador Exemplo de expressão lógica

(há duas possibilidades)

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

resultados possíveis dos operadores lógicos (tabela 8).

Tabela 8 – Resumo de possibilidades usando os operadores lógicos

Retorno de cada expressão E OU NÃO XOU

Expressão A Expressão B A e B A ou B Não A A xou B

F F F F V F

F V F V V V

V F F V F V

V V V V F F

3 DESVIOS CONDICIONAIS SIMPLES E

COMPOSTOS

Para que a execução do algoritmo seja desviada para um caminho específico,

com um conjunto de instruções específicas, é necessário um comando de desvio. O

comando de desvio é dado pela palavra SE, que inicia um bloco de instruções e

deve terminar com a palavra FIMSE.

Dentro deste bloco haverá instruções que serão executadas de acordo com o

resultado do teste lógico inserido no desvio.

Esse desvio precisa conter um teste lógico, para que determine se as

instruções dentro do bloco SE deverão ser executadas ou não. O teste lógico é

composto de expressões aritméticas, relacionais e lógicas.

A estrutura de um bloco SE-ENTÃO é:

SE expressão (ões) lógicas ENTÃO

Instruções de comando

FIMSE

Page 57: Apostila lã³gica de programaã§ã£o

SOCIESC – Sociedade Educacional de Santa Catarina

Algoritmos

57

A diferença entre o desvio condicional simples e desvio composto está na

resposta que deve ser dada, caso não existam instruções para o outro resultado da

expressão aplicada na palavra SE. Quando se deseja incluir as instruções para o

outro resultado, deverá ser utilizada a palavra SENÃO, dentro do bloco SE.

A estrutura de um bloco SE-ENTÃO-SENÃO é:

SE expressão (ões) lógicas ENTÃO

Instruções de comando

SENÃO

Instruções de comando

FIMSE

Destaquemos também que existem casos em que é necessário se estabelecer

um conjunto de verificações de condições sucessivas. Essa estrutura é chamada de

estrutura de desvio condicional encadeado (ou aninhado), significa permitir que,

a partir de uma condição atendida, poderá estabelecer novas condições e, dessa

forma, teremos condições dentro de condições.

A estrutura de um bloco de desvio condicional encadeado é:

SE expressão (ões) lógicas ENTÃO

SE expressão (ões) lógicas ENTÃO

Instruções de comando

FIMSE

SENÃO

Instruções de comando

FIMSE

Programadores mais experientes preocupam-se com o uso de blocos

condicionais encadeados. Não há limite de encadeamento de blocos, mas uma

combinação muito grande poderá gerar grande dificuldade ao programador em

localizar um problema de lógica. Diante disso, há uma prática comum de limitar até

sete encadeamentos e, acima disso, utiliza-se da estrutura ESCOLHE-CASO, que

veremos mais adiante nesta aula.

Por exemplo:

Page 58: Apostila lã³gica de programaã§ã£o

SOCIESC – Sociedade Educacional de Santa Catarina

Algoritmos

58

• Considere o problema exposto na figura 17, em que se estabelecem três

condições para calcular o reajuste do salário de um funcionário:

o Quando o salário for menor do que 500, o reajuste será de 15%;

o Quando o salário for maior ou igual que 500 e menor ou igual a 1000, o

reajuste será de 10%;

o Quando o salário for maior que 1000, o reajuste será de 5%.

Page 59: Apostila lã³gica de programaã§ã£o

SOCIESC – Sociedade Educacional de Santa Catarina

Algoritmos

59

Figura 17 – Fluxograma com desvio condicional composto

4 BLOCO SE-SENÃO-ENTÃO

Em pseudocódigo, as instruções de desvios condicionais devem também

seguir regras específicas. Um exemplo de Desvio Simples:

inicio

inteiro A

inteiro B

escrever "Digite um valor para A:"

ler A

escrever "Digite um valor para B:"

Page 60: Apostila lã³gica de programaã§ã£o

SOCIESC – Sociedade Educacional de Santa Catarina

Algoritmos

60

ler B

se A < B ENTÃO

escrever "A é menor que B!!"

fimse

fim

Observe que, no exemplo, caso o usuário digitar o valor de B maior do que A,

nada irá acontecer no programa. Se desejarmos apresentar alguma instrução para o

B ser maior que A, precisamos utilizar a palavra SENÃO. 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 ENTÃO

escrever "A é menor que B!!"

SENÃO

escrever "B é menor que A!!"

fimse

fim

5 BLOCO ESCOLHE-CASO

Quando há um conjunto de testes lógicos a serem realizados em um mesmo

momento do programa, exigindo que vários blocos SE-ENTÃO sejam construídos,

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 situação, um outro bloco de desvio pode ser utilizado: ESCOLHE-

CASO. Essa abordagem é uma excelente potencialização dos desvios compostos

Page 61: Apostila lã³gica de programaã§ã£o

SOCIESC – Sociedade Educacional de Santa Catarina

Algoritmos

61

que algumas linguagens disponibilizam e geram algumas dificuldades para sua

utilização.

A estrutura de um bloco ESCOLHE-CASO é:

ESCOLHE expressão (ões)

CASO expressão (ões)

Instruções

CASO expressão (ões)

Instruções

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 = multiplicação 3 = divisão"

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:

Page 62: Apostila lã³gica de programaã§ã£o

SOCIESC – Sociedade Educacional de Santa Catarina

Algoritmos

62

escrever "Você não digitou uma opção válida"

fimescolhe

fim

E como ficaria a representação do algoritmo em fluxograma? Veja a figura 18.

Figura 18 – Fluxograma baseado no algoritmo

6 IDENTIFICANDO ERROS COMUNS DE LÓGICA

6.1 O que são erros de programação?

Page 63: Apostila lã³gica de programaã§ã£o

SOCIESC – Sociedade Educacional de Santa Catarina

Algoritmos

63

Este é um excelente momento para você refletir sobre uma característica

inerente aos trabalhos de programação de computadores: os erros de programação,

ou bugs.

Conforme vimos nas primeiras aulas, o desafio do programador é construir o

melhor conjunto de lógica e instruções para entregar a solução para um problema.

Por isso, é fundamental um excelente entendimento de qual é o problema a ser

resolvido e quais são as variáveis que devem ser consideradas para sua resolução.

Segundo Behring (1989), bug é um erro ou um defeito na construção de um

programa, ou ainda um engano na instalação do equipamento de processamento de

dados, provocando seu mau funcionamento.

Nesse contexto, um algoritmo pode conter dois tipos de erros na sua

construção:

• Erros de sintaxe;

• Erros de lógica.

6.2 Erros de sintaxe

Os erros de sintaxe ocorrem quando a instrução foi digitada fora dos padrões

que a linguagem exige, por exemplo, em pseudocódigo utilizado neste curso, a

criação de um bloco SE, sem terminar com a palavra FIMSE, ou a palavra ENTÃO,

sem o til na letra A. Todos os softwares mais atuais de mercado para programação

de computadores, já fornecem um aviso após a digitação de uma sintaxe errada,

orientando o programador para corrigir o problema antes de executar o programa

(apesar desse comportamento ser uma opção 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 pseudocódigo, o editor destaca

a palavra em negrito figura 19).

Figura 19 – Exemplos de reconhecimento dos elementos construídos

Page 64: Apostila lã³gica de programaã§ã£o

SOCIESC – Sociedade Educacional de Santa Catarina

Algoritmos

64

Além disso, o editor também apresenta cores diferentes para os elementos que

compõem as instruções digitadas, exemplo: valores em vermelho e símbolo de

atribuição de valor em azul.

6.3 Erros de lógica

Os erros de lógica são mais complexos de resolver. Nesses casos, o programa

foi construído com a sintaxe correta e executado tranqüilamente, mas o resultado

apresentado não foi o esperado. Dessa forma, os erros de lógica não apresentam

mensagem de erro específica 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 código. São ferramentas

conhecidas como debugger ou depuradores de código de programação. Existem

as mais variadas ferramentas disponíveis no mercado, pagas e gratuitas.

Normalmente as mais comuns utilizadas são as fornecidas em conjunto com alguma

ferramenta de desenvolvimento. A ferramenta Portugol também oferece um recurso

de depuração do pseudocódigo criado pelo programador figura 20).

Page 65: Apostila lã³gica de programaã§ã£o

SOCIESC – Sociedade Educacional de Santa Catarina

Algoritmos

65

Figura 20 – Menu Algoritmo do software Portugol

A janela de monitoramento apresenta o conteúdo das variáveis figura 21).

Figura 21 – Janela de depuração de código no software Portugol

SÍNTESE

Nesta aula você iniciou a construção de programas que possuem desvios

condicionais. Aprendeu a diferença entre programas seqüências e condicionais, e

entendeu a diferença entre um programa condicional simples e composto.

Também deve ter percebido a diferença entre o uso de desvios usando a

palavra SE e os desvios através da palavra SELECIONAR-CASO. Esta última é uma

opção adequada para atender a um grande número de condições em um mesmo

programa.

As regras de pseudocódigo para a construção de algoritmos com desvios

foram apresentadas, inclusive com exemplos simples.

Finalmente, você obteve contato com um tópico fundamental da programação

de computadores: erros. Você percebeu que a máxima “Errar é humano”, também se

Page 66: Apostila lã³gica de programaã§ã£o

SOCIESC – Sociedade Educacional de Santa Catarina

Algoritmos

66

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

você procure localizar e eliminar erros.

Você pôde perceber, não há grandes dificuldades na construção de

programas e os desvios condicionais realizam um papel fundamental em

programação de computadores.

Você chegou até aqui de forma muito construtiva.

Até a próxima aula.

EXERCÍCIOS PROPOSTOS

1) Numa festa, foi feito um sorteio para distribuir um prêmio. Cinco pessoas foram

sorteadas e deveriam pegar uma bola numerada de 1 a 5, Conforme o algarismo

sorteado o prêmio será:

Número da Bola % do prêmio

1 10%

2 25%

3 15%

4 20%

5 30%

O usuário deverá informar o valor do prêmio e qual o número da bola que tirou.

Calcule o valor do prêmio e escreva na tela, utilizando o desvio ESCOLHE- CASO.

Construa o algoritmo usando o software PORTUGOL.

Page 67: Apostila lã³gica de programaã§ã£o

SOCIESC – Sociedade Educacional de Santa Catarina

Algoritmos

67

2) Quais são os dois tipos de erros na construção 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) Faça um algoritmo que após receber dois valores numéricos, calcule a média e

imprima o resultado se, e somente se for maior que 33.

Aula 6

ESTRUTURAS DE PROGRAMAÇÃO -

REPETIÇÃO

Objetivos da aula

Ao final desta aula, você deverá ser capaz de:

• Construir algoritmos usando estruturas de controle de repetição;

• Construir lógica adequada para atender à estrutura de repetição.

Conteúdos da aula

Acompanhe os assuntos desta aula, se preferir, ao

Page 68: Apostila lã³gica de programaã§ã£o

SOCIESC – Sociedade Educacional de Santa Catarina

Algoritmos

68

término, assinale o conteúdo já estudado.

� Estruturas de repetição

� 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 lógica condicional, usando blocos de repetição e

entender quando utilizar uma condição ou outra, de acordo com o

problema a ser resolvido.

Boa aula!

1 ESTRUTURAS DE REPETIÇÃO

Os algoritmos estudados até agora lhe apresentaram problemas de

programação envolvidos com entrada, saída, atribuição e seleção. Este é o

momento de damos uma passo adiante, considerando que você já obteve

experiência suficiente para avançarmos nos assuntos.

Muitos problemas requerem um mecanismo de repetição, no qual algum

cálculo ou seqüência de instruções é repetida, muitas vezes, usando diferentes

condições.

Esta aula irá explorar as alternativas para a construção de repetições e seus

diferentes métodos de uso. É comum alguns autores descrevem os blocos de

repetição de laços (ou loopings) porque, após a execução do último comando de

instrução, há uma avaliação (ou teste) e, de acordo com o resultado, o programa

termina a repetição ou retorna ao primeiro comando, reiniciando a execução das

instruções dentro do laço.

Cada repetição é chamada de iteração ou passagem pelo laço.

Para se construir uma seção repetitiva em um algoritmo é necessário a

presença de quatro elementos (figura 22):

Page 69: Apostila lã³gica de programaã§ã£o

SOCIESC – Sociedade Educacional de Santa Catarina

Algoritmos

69

• O primeiro é um comando de repetição, que define os limites da seção de

código a ser repetida e controla se o código deve ser repetido ou não. Neste

curso vamos estudar três diferentes estruturas de repetição: repita-até,

enquanto-faz e para-até-passo;

• Cada uma destas estruturas necessita de uma condição que deve ser avaliada,

vem a ser o segundo elemento da construção de uma seção repetitiva de

código. As condições válidas aqui são idênticas às usadas em comandos de

seleção;

• O terceiro é um comando que, inicialmente, torna a condição verdadeira. Esse

comando deve ser posicionado de forma a ser executado antes da condição

ser avaliada pela primeira vez, para assegurar a correta execução do laço na

primeira vez em que a condição for avaliada;

• Finalmente, deve haver um comando dentro da seção repetitiva de código que

permita à condição se tornar falsa. Isto é necessário para garantir que, em

algum momento, a repetição pare.

Figura 22 – Elementos de uma estrutura de repetição

Page 70: Apostila lã³gica de programaã§ã£o

SOCIESC – Sociedade Educacional de Santa Catarina

Algoritmos

70

2 BLOCO ENQUANTO-FAZ

O bloco ENQUANTO-FAZ é a estrutura de repetição mais simples. Repete a

execução de um bloco de instruções enquanto a condição for verdadeira. Na

primeira vez que a condição tornar-se falsa, o bloco não será executado e entregará

o controle do programa para a próxima instrução, logo após o bloco de repetição.

A estrutura de um bloco ENQUANTO-FAZ (figura 23) é:

ENQUANTO expressão (ões) lógicas FAZ

Instruções de comando

FIMENQUANTO

Figura 23 – Exemplos de repetição ENQUANTO-FAZ

Page 71: Apostila lã³gica de programaã§ã£o

SOCIESC – Sociedade Educacional de Santa Catarina

Algoritmos

71

O fluxo de execução de um algoritmo com a estrutura ENQUANTO-FAZ é o

seguinte:

1. O algoritmo avalia a expressão inserida na linha que contém a palavra

ENQUANTO. A expressão utiliza os mesmos operadores estudados até o

momento;

2. Caso o resultado da expressão seja VERDADEIRO, então todo o bloco de

instruções será executado, até encontrar a palavra FIMENQUANTO;

3. Ao encontrar a palavra FIMENQUANTO, o algoritmo retorna para a primeira

linha do bloco, que contém a palavra ENQUANTO e realiza um novo teste na

expressão associada;

4. Caso a expressão permaneça VERDADEIRA, o bloco é executado novamente,

caso contrário, o bloco não é executado e o algoritmo passa para a próxima

linha de instrução. É importante ressaltar nesse bloco que a expressão é

sempre avaliada antes do bloco de instruções.

3 BLOCO FAZ-ENQUANTO

Este bloco tem muita semelhança com ENQUANTO-FAZ, com a diferença

fundamental: a expressão é verificada após a execução do bloco de instruções.

A primeira vez que o algoritmo é executado e passa pelo bloco, o conteúdo do bloco

será executado independente da condição estabelecida na expressão. Somente

depois da execução do bloco é que a expressão será testada e o bloco de

instruções se repete até que a expressão retorne FALSO.

As diferenças entre as estruturas ENQUANTO-FAZ e FAZ-ENQUANTO é muito

leve. É uma decisão que o programador deve tomar de acordo com a solução que se

deseja implementar e determina se a expressão deve ser testada antes ou depois do

bloco de instruções.

A estrutura de um bloco FAZ- ENQUANTO (figura 24) é:

FAZ

Instruções de comando

ENQUANTO expressão (ões) lógicas

Page 72: Apostila lã³gica de programaã§ã£o

SOCIESC – Sociedade Educacional de Santa Catarina

Algoritmos

72

Figura 24 – Exemplos de repetição faz-enquanto

4 BLOCO PARA-ATÉ-PASSO

Na maioria dos casos de repetição, os algoritmos precisam executar um bloco

de instruções por um número limitado de vezes, para isso, normalmente se utiliza

uma variável para controlar o número de repetições. Foi o caso nos dois tipos de

repetições anteriores. Essas situações sempre apresentam uma variável contadora e

quatro etapas:

1. Inicialização: atribui um valor inicial à variável contadora;

2. Teste: verifica a condição da variável contadora;

3. Execução: realizar a execução do bloco de instruções;

4. Atualização: incrementa o valor contido na variável contadora.

O grande número de situação que requer a lógica justifica a próxima estrutura

de repetição, pois resume as etapas de repetição, otimizando a execução do

algoritmo.

Page 73: Apostila lã³gica de programaã§ã£o

SOCIESC – Sociedade Educacional de Santa Catarina

Algoritmos

73

PARA variável DE valorinicial ATE valorfinal PASSO incremento

Instruções de comando

PRÓXIMO

Figura 25 – Exemplos de repetição para-de-ate-passo

Uma estrutura de repetição PARA-DE-ATÉ-PASSO sempre vem acompanhada

de uma variável contadora que armazena quantas vezes o bloco de instruções foi

executado. Além de condensar uma lógica recorrente de criação de algoritmo em

poucas linhas, possui mais algumas vantagens:

• A primeira linha do bloco de código, contendo a palavra PARA, agrupa todas as

instruções que controlam a repetição: a inicialização, o teste e a atualização.

Dessa forma, o programador é obrigado a declarar todos os elementos para

realizar a repetição. Na repetição ENQUANTO-FAÇA o programador precisa

lembrar de inserir todos os elementos separadamente;

• Esse tipo de repetição separa claramente as instruções de controle da

repetição, das instruções de execução, oferecendo uma forma mais elegante

de construção e minimizando problemas básicos na construção de algoritmos.

Page 74: Apostila lã³gica de programaã§ã£o

SOCIESC – Sociedade Educacional de Santa Catarina

Algoritmos

74

5 CONTADOR E ACUMULADOR

Dizemos que uma variável é considerada contador, quando é utilizada para

controlar quantas vezes um determinado trecho de programa foi executado. Esse

tipo de uso de variável é muito comum em laços, pois normalmente há necessidade

de contar o número de vezes que um conjunto de instruções foi executado.

Uma variável é identificada como acumulador quando é utilizada para

acumular um valor dentro de um laço. Por exemplo, podemos precisar acumular um

determinado valor até chegar ao nível desejado dentro de um laço e somente sairá

do bloco de instruções do laço quando o nível for atingido.

SÍNTESE

Você acaba de avançar mais um passo na direção do conhecimento na

programação de computadores. Agora você descobriu o recurso de maior potencial

na construção de algoritmos: os blocos de repetição, que elevam de forma clara o

uso da lógica condicional para desenvolver sistemas.

Primeiramente você identificou o que é um bloco de repetição e seus

elementos fundamentais. Viu que cada execução do bloco de repetição é chamada

de iteração e que um elemento fundamental no uso de repetições é o amplo

conhecimento sobre as expressões aritméticas, lógicas e relacionais.

Logo em seguida você aprendeu que, para atender soluções que exijam uma

repetição cujo teste lógico ocorre antes do bloco ser executado, a instrução

ENQUANTO-FAÇA é para esta finalidade.

Depois fizemos uma inversão no bloco de repetição e, com o uso do FAÇA-

ENQUANTO, temos uma condição contrária ao ENQUANTO-FAÇA. Nesse bloco de

Page 75: Apostila lã³gica de programaã§ã£o

SOCIESC – Sociedade Educacional de Santa Catarina

Algoritmos

75

repetição o teste lógico é realizado depois que as instruções contidas no bloco são

executadas.

Nos dois casos, o programador tem a responsabilidade de avaliar qual melhor

atenderá a necessidade específica de uma solução.

Finalmente, você aprendeu a repetição PARA-ATÉ-PASSO, que é uma

abordagem otimizada dos outros dois modos de construção de blocos de repetição.

Nesse tipo de repetição, os elementos são mais agrupados e fornecem uma

abordagem mais clara para a construção de um código de programação.

É isso! Chegamos juntos a um outro nível de pensamento sobre a

programação de computadores. Prepare-se que ainda vem mais na próxima aula.

EXERCÍCIOS PROPOSTOS

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

Lógica de Programação”.

2) Escreva um algoritmo para ler dois valores. Após a leitura deve-se calcular a

soma dos valores lidos e armazená-la em uma variável. Após o cálculo da soma,

escrever o resultado e escrever também a pergunta 'Novo Cálculo (S/N)?'. Deve-

se ler a resposta e se a resposta for 'S' (sim), deve-se repetir todos os comandos

(instruções) novamente, mas se a resposta for 'N' (não), o algoritmo deve ser

finalizado escrevendo a mensagem 'Fim dos Cálculos'.

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 número de aprovados.

4) Escreva um algoritmo que solicite um número e apresente todos os números de 0

(zero) até o número digitado.

Page 76: Apostila lã³gica de programaã§ã£o

SOCIESC – Sociedade Educacional de Santa Catarina

Algoritmos

76

Aula 7

MODULARIZAÇÃO DE ALGORITMOS

Objetivos da aula

Ao final desta aula, você deverá ser capaz de:

• Simplificar algoritmos muito grandes, usando o método da modularização;

• Entender o uso de subrotinas e seus tipos de construção.

Conteúdos da aula

Acompanhe os assuntos desta aula, se preferir, ao

término, assinale o conteúdo já estudado.

� Modularização

� Módulos

� Funções

� Passagem de parâmetros

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 manutenção de nossos programas. Este assunto é parte importante e

também comum na construção de programas.

Boa aula e vamos em frente!

Page 77: Apostila lã³gica de programaã§ã£o

SOCIESC – Sociedade Educacional de Santa Catarina

Algoritmos

77

1 MODULARIZAÇÃO

A abordagem famosa “dividir para conquistar” é muito utilizada na programação

de computadores. Há um estudo psicológico afirmando que o ser humano consegue

resolver problemas contendo menos de sete variáveis simultâneas. Se um problema

possui acima de nove variáveis simultâneas, é considerado um problema complexo,

desta forma, a técnica de “dividir para conquistar” é utilizada para quebrar um

problema complexo em vários pedaços, ou pequenos problemas simples.

Neste sentido, à medida que construímos um algoritmo, as necessidades e os

problemas são resolvidos complementando cada vez mais a solução original. É

comum que um algoritmo seja extenso e proporcional à complexidade que o

problema apresenta, pois o conjunto de instruções é 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 programação de computadores é

escrever um programa o menor possível, para que se utilize um menor número de

recursos (memória, espaço no disco rígido, etc.), enquanto se resolve o problema de

forma objetiva.

Nesse cenário, o volume de instruções e estruturas condicionais no algoritmo

geram grande dificuldade de leitura e, em caso de problema, levará muito tempo

para localizar sua origem. A solução é quebrar ou dividir o algoritmo em várias e

pequenas partes que, juntas, formarão um grande algoritmo.

Esses pedaços de instruções de programação são conhecidos por módulos

ou subalgoritmos. Ao modularizar um algoritmo, buscamos aumentar a

funcionalidade das partes do conjunto, facilitando o seu entendimento e

possibilitando a reutilização das partes.

Todo programa modularizado contém um algoritmo principal (figura 26), o

primeiro conjunto de instruções que serão executadas quando o programa for

iniciado. A partir do algoritmo principal, são chamados os demais módulos que

compõem o programa.

Um subalgoritmo normalmente resolve problemas simples, como a operação

aritmética específica ou verifica se uma determinada entrada de dados foi realizada

Page 78: Apostila lã³gica de programaã§ã£o

SOCIESC – Sociedade Educacional de Santa Catarina

Algoritmos

78

pelo usuário. Um subalgoritmo pode ser chamado pelo algoritmo principal ou por

outros subalgoritmos que compõem o programa. Quando ocorre a chamada ao

subalgoritmo, as instruções contidas serão executadas e, após sua execução, o

processamento do programa retornará para o ponto de chamada.

Algumas características de um algoritmo refletem a abordagem de

modularização:

• Confiabilidade: pela divisão do problema em pequenas partes simples,

aumenta a possibilidade da solução correta;

• Legibilidade: o programa é fácil de ser lido e entendido por um programador

de nível médio;

• Facilidade de manutenção: o programa é fácil de ser modificado. Quando

houver necessidade de mudança, a alteração será facilmente implementada.

Na verdade, apenas pequenas partes receberão modificações;

• Flexibilidade: o programa é fácil de ser reutilizado.

Por exemplo:

Page 79: Apostila lã³gica de programaã§ã£o

SOCIESC – Sociedade Educacional de Santa Catarina

Algoritmos

79

Figura 26 – Chamando um subalgoritmo

Os programadores utilizam subalgoritmos por dois motivos:

• Para facilitar a construção de algoritmos grandes: com a quebra do

problema, usando pequenos conjuntos de instruções, é mais fácil

realizar a manutenção no programa;

• Para armazenar instruções repetitivas em uma única localização:

algumas vezes você precisará realizar uma tarefa mais de uma vez em

seu algoritmo. Ao invés de escrever as instruções repetidas vezes,

você pode escrevê-las em um subalgoritmo, que fará parte do seu

programa e poderá ser chamado várias vezes, em pontos diferentes do

algoritmo;

• Para delimitar o escopo (nível de abrangência) de variáveis:

através da modularização, uma variável poderá consumir recursos do

Page 80: Apostila lã³gica de programaã§ã£o

SOCIESC – Sociedade Educacional de Santa Catarina

Algoritmos

80

computador somente em determinados momentos do programa,

otimizando a execução do mesmo.

Existem dois tipos de subalgoritmos: módulos (ou procedimentos) e funções.

Vamos conhecer cada um deles.

2 MÓDULOS

Conforme vimos, ao dividirmos um algoritmo em pequenas partes

interdependentes, esses pedaços são chamados subalgoritmos, mas a

identificação dos subalgoritmos pode variar de acordo com a linguagem em uso.

Algumas linguagens chamam subalgoritmos de módulos e outras chamam de

procedimentos (podem também ser referenciados como desvios). Neste curso,

vamos utilizar o termo módulo ao pedaço de programa que contém instruções que

aceitam dados e utilizam estes dados para executar tarefas específicas.

Os módulos podem ser chamados em qualquer parte do algoritmo principal,

como também podem ser chamados por outros módulos que estejam presentes no

mesmo programa.

A chamada ao módulo representa a execução das ações contidas, em

seguida, a execução retorna ao ponto da chamada (poderá ser o módulo principal ou

outros módulos). Não existe ordem para definição dos módulos.

Um módulo é composto por duas ou três partes:

• Nome do módulo;

• Uma ou mais instruções que deverão ser executadas no módulo;

• (Opcional) Dados fornecidos pelo algoritmo de origem, que serão utilizados

para o processamento e execução das instruções contidas no módulo. (Este

assunto será tratado no tópico Passagem de Parâmetros.)

Veja na figura 27 um exemplo de construção de algoritmo com subalgoritmos,

usando módulo.

Page 81: Apostila lã³gica de programaã§ã£o

SOCIESC – Sociedade Educacional de Santa Catarina

Algoritmos

81

Figura 27 – Pseudocódigo para chamar um módulo

3 FUNÇÕES

As funções compreendem as mesmas características de um módulo. A

diferença está no retorno do processamento do subalgoritmo. Em um módulo, o

processamento ocorre manipulando variáveis do algoritmo principal e pode realizar

várias transformações ao retornar ao ponto principal de chamada. As funções

permitem o retorno de apenas um resultado e podem ser utilizadas como parte de

uma expressão no algoritmo.

Dessa forma, uma função é um bloco de instruções que computa e devolve

um valor, semelhante às funções matemáticas.

Veja na figura 28 um exemplo de construção de algoritmo com subalgoritmos,

neste caso usando Função.

Page 82: Apostila lã³gica de programaã§ã£o

SOCIESC – Sociedade Educacional de Santa Catarina

Algoritmos

82

Figura 28 – Pseudocódigo para chamar uma função

4 PASSAGEM DE PARÂMETROS

Parâmetros são canais para se estabelecer uma comunicação bidirecional

entre um módulo e outro (módulo principal ou outros módulos). As informações de

um módulo podem ser enviadas para um outro módulo que, por sua vez, poderá

utilizar as informações e alterá-las ou não. Esse mecanismo é chamado passagem

de parâmetros ou argumentos e pode ser de dois tipos: passagem de parâmetros

por valor (ou cópia) e passagem de parâmetros por referência.

Essa abordagem complementa a construção de programas modularizados, ou

seja, permite que as várias partes possam comunicar-se por um mecanismo simples

e direto de manipulação de parâmetros.

Com base nos exemplos apresentados anteriormente, veja a figura 29.

Page 83: Apostila lã³gica de programaã§ã£o

SOCIESC – Sociedade Educacional de Santa Catarina

Algoritmos

83

Figura 29 – Passagem de parâmetros

Vejamos agora quais são os tipos de parâmetros que podemos utilizar na

comunicação entre as partes de um programa:

• Passagem de parâmetros por valor: faz-se uma cópia do conteúdo das

variáveis locais para um outro módulo. As modificações efetuadas nos

dados do parâmetro não retornam ao módulo chamador. Esse tipo de

mecanismo reserva um espaço diferente em memória para os parâmetros

serem copiados e não causarem modificações nos dados originais;

• Passagem de parâmetros por referência: faz-se a cópia do endereço da

memória onde a variável está armazenada. Nesse mecanismo, uma outra

variável ocupando um outro espaço diferente na memória não armazena o

dado em si, mas o endereço onde ele se localiza na memória. Sendo

assim, todas as modificações efetuadas nos dados do parâmetro serão

feitas no conteúdo original da variável.

Page 84: Apostila lã³gica de programaã§ã£o

SOCIESC – Sociedade Educacional de Santa Catarina

Algoritmos

84

SÍNTESE

Chegamos à ultima aula do curso. Nesta aula você aprendeu a importância da

modularização de programas, percebendo que será uma abordagem comum no dia-

a-dia como programador. Este é o principal tópico da chamada Programação

Estruturada, que é identificada como um método para desenvolvimento de software

e hoje é a base para o programador iniciante.

Vimos também quais os instrumentos de linguagem, utilizados para a

construção de programas estruturados, que são os módulos e as funções.

Finalmente, falamos sobre os parâmetros, que são os elementos utilizados

para manter a comunicação entre as várias partes de um programa modularizado.

Page 85: Apostila lã³gica de programaã§ã£o

SOCIESC – Sociedade Educacional de Santa Catarina

Algoritmos

85

EXERCÍCIOS PROPOSTOS

1) Explique a diferença entre módulo e função.

___________________________________________________________________

___________________________________________________________________

___________________________________________________________________

___________________________________________________________________

2) Qual a importância da modularização de um programa?

___________________________________________________________________

___________________________________________________________________

___________________________________________________________________

___________________________________________________________________

3) Quais são as vantagens da modularização de um programa?

___________________________________________________________________

___________________________________________________________________

___________________________________________________________________

___________________________________________________________________

Page 86: Apostila lã³gica de programaã§ã£o

SOCIESC – Sociedade Educacional de Santa Catarina

Algoritmos

86

REFERÊNCIAS

LOGICA DE PROGRAMAÇAO A CONSTRUÇÃO 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 TÉCNICAS DE IMPLEMENTAÇÃO Autor: VILLAS, MARCOS VIANNA Editora: CAMPUS - BB INTRODUÇÃO A ESTRUTURA DE DADOS - UMA INTRODUÇÃO COM TÉCNICAS DE PROGRAMAÇÃO EM C Coleção: CAMPUS/SOCIEDADE BRASILEIRA DE COMPUTAÇÃO (SBC) Autores: CELES, WALDEMAR, CERQUEIRA, RENATO e RANGEL, JOSE LUCAS Editora: CAMPUS ALGORITMOS E LÓGICA DE PROGRAMAÇÃO Autores: SOUZA, MARCO ANTONIO FURLAN DE, GOMES, MARCELO MARQUES, SOARES, MARCIO VIEIRA e CONCILIO, RICARDO Editora: THOMSON PIONEIRA LÓGICA DE PROGRAMAÇÃO Autor: FORBELLONE, ANDRE LUIZ Editora: PRENTICE HALL BRASIL LÓGICA DE PROGRAMAÇÃO Autor: XAVIER, GLEY FABIANO CARDOSO Editora: SENAC SÃO PAULO LÓGICA DE PROGRAMAÇÃO E ESTRUTURAS DE DADOS Autor: PUGA, SANDRA / RISSETTI, GERSON Editora: PRENTICE HALL BRASIL LÓGICA DE PROGRAMAÇÃO - ENSINO PRÁTICO Autor: MAGRI, JOAO ALEXANDRE Editora: ERICA LÓGICA DE PROGRAMAÇÃO Autores: BERG, ALEXANDRE CRUZ e FIGUEIRO, JOICE PAVEK Editora: ULBRA LÓGICA ESTRUTURADA PARA PROGRAMAÇÃO DE COMPUTADORES Autores: MANZANO, JOSE AUGUSTO NAVARRO GARCIA Editora: ERICA