SlideShare une entreprise Scribd logo
1  sur  86
Télécharger pour lire hors ligne
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
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
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
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
SOCIESC – Sociedade Educacional de Santa Catarina 
3 _/_ a _/_ 
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 
8 
Modularização do programa 
_/_ a _/_
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.
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!
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:
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.
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.
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.
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
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. É
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
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. 
___________________________________________________________________ 
___________________________________________________________________ 
___________________________________________________________________ 
___________________________________________________________________
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,
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.
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.
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 
Interpretador 
Linguagem de 
Máquina 
Computador 
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
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 
Compilador 
Linguagem de 
Máquina 
Computador 
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.
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.
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.
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
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
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? 
___________________________________________________________________ 
___________________________________________________________________
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? 
___________________________________________________________________ 
___________________________________________________________________ 
___________________________________________________________________ 
___________________________________________________________________
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!
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
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
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
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).
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
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
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).
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.
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
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.
SOCIESC – Sociedade Educacional de Santa Catarina 
Algoritmos 
38 
Figura 13 – Ambiente de visualização/construção de Fluxogramas
SOCIESC – Sociedade Educacional de Santa Catarina 
Algoritmos 
39 
Figura 14 – Exemplo de Fluxograma
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.
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.
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!
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.
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
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.
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
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
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.
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).
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”
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
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!
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
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
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.
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
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:
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%.
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:
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
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:
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?
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
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).
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
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.
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
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):
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
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
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
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.
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.
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
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.
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!
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
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:
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
Apostila lã³gica de programaã§ã£o
Apostila lã³gica de programaã§ã£o
Apostila lã³gica de programaã§ã£o
Apostila lã³gica de programaã§ã£o
Apostila lã³gica de programaã§ã£o
Apostila lã³gica de programaã§ã£o
Apostila lã³gica de programaã§ã£o

Contenu connexe

Tendances

Livro%20 ila%20edicao%202
Livro%20 ila%20edicao%202Livro%20 ila%20edicao%202
Livro%20 ila%20edicao%202Ueliton Saint
 
Desenvolvimento do protótipo de uma ferramenta para Engenharia de Requisitos ...
Desenvolvimento do protótipo de uma ferramenta para Engenharia de Requisitos ...Desenvolvimento do protótipo de uma ferramenta para Engenharia de Requisitos ...
Desenvolvimento do protótipo de uma ferramenta para Engenharia de Requisitos ...Diego Lusa
 
Tcc magno ronan ritzmann
Tcc magno ronan ritzmannTcc magno ronan ritzmann
Tcc magno ronan ritzmannMagno Ritzmann
 
Arquitectura de computadores
Arquitectura de computadoresArquitectura de computadores
Arquitectura de computadoresRui Raposo
 
O uso de frameworks em aplicações desktop baseadas na metodologia de desenvol...
O uso de frameworks em aplicações desktop baseadas na metodologia de desenvol...O uso de frameworks em aplicações desktop baseadas na metodologia de desenvol...
O uso de frameworks em aplicações desktop baseadas na metodologia de desenvol...Rogério Batista
 
PDF - Projeto de Pesquisa: MELHORIA DE PROCESSO DE SOFTWARE BRASILEIRO APLICA...
PDF - Projeto de Pesquisa: MELHORIA DE PROCESSO DE SOFTWARE BRASILEIRO APLICA...PDF - Projeto de Pesquisa: MELHORIA DE PROCESSO DE SOFTWARE BRASILEIRO APLICA...
PDF - Projeto de Pesquisa: MELHORIA DE PROCESSO DE SOFTWARE BRASILEIRO APLICA...Adson Wendel
 
Curso Gestão de Processos, Projetos e TI p/ APPGG-SP
Curso Gestão de Processos, Projetos e TI p/ APPGG-SPCurso Gestão de Processos, Projetos e TI p/ APPGG-SP
Curso Gestão de Processos, Projetos e TI p/ APPGG-SPEstratégia Concursos
 
Prova Comentada de Analista para TRE-SP
Prova Comentada de Analista para TRE-SPProva Comentada de Analista para TRE-SP
Prova Comentada de Analista para TRE-SPEstratégia Concursos
 
Curso Tecnologia da Informação (I) p/ SMG/SP - APDO
Curso Tecnologia da Informação (I) p/ SMG/SP - APDOCurso Tecnologia da Informação (I) p/ SMG/SP - APDO
Curso Tecnologia da Informação (I) p/ SMG/SP - APDOEstratégia Concursos
 
Resumo de Ciências da Administração p/ Concurso TCM-RJ
Resumo de Ciências da Administração p/ Concurso TCM-RJResumo de Ciências da Administração p/ Concurso TCM-RJ
Resumo de Ciências da Administração p/ Concurso TCM-RJEstratégia Concursos
 
Projeto de Pesquisa: MELHORIA DE PROCESSO DE SOFTWARE BRASILEIRO APLICADO NO ...
Projeto de Pesquisa: MELHORIA DE PROCESSO DE SOFTWARE BRASILEIRO APLICADO NO ...Projeto de Pesquisa: MELHORIA DE PROCESSO DE SOFTWARE BRASILEIRO APLICADO NO ...
Projeto de Pesquisa: MELHORIA DE PROCESSO DE SOFTWARE BRASILEIRO APLICADO NO ...Adson Wendel
 
MELHORIA DE PROCESSO DE SOFTWARE BRASILEIRO APLICADO NO NÍVEL DE MATURIDADE F...
MELHORIA DE PROCESSO DE SOFTWARE BRASILEIRO APLICADO NO NÍVEL DE MATURIDADE F...MELHORIA DE PROCESSO DE SOFTWARE BRASILEIRO APLICADO NO NÍVEL DE MATURIDADE F...
MELHORIA DE PROCESSO DE SOFTWARE BRASILEIRO APLICADO NO NÍVEL DE MATURIDADE F...Adson Wendel
 
Coding-Dojo: Uma forma rápida, eficiente e divertida de ensinar e aprender
Coding-Dojo: Uma forma rápida, eficiente e divertida de ensinar e aprenderCoding-Dojo: Uma forma rápida, eficiente e divertida de ensinar e aprender
Coding-Dojo: Uma forma rápida, eficiente e divertida de ensinar e aprenderSerge Rehem
 
Programa referencial de comunicação e tecnologias da informação
Programa  referencial de comunicação e tecnologias da informaçãoPrograma  referencial de comunicação e tecnologias da informação
Programa referencial de comunicação e tecnologias da informaçãosandra alfaiate
 

Tendances (18)

Livro%20 ila%20edicao%202
Livro%20 ila%20edicao%202Livro%20 ila%20edicao%202
Livro%20 ila%20edicao%202
 
Desenvolvimento do protótipo de uma ferramenta para Engenharia de Requisitos ...
Desenvolvimento do protótipo de uma ferramenta para Engenharia de Requisitos ...Desenvolvimento do protótipo de uma ferramenta para Engenharia de Requisitos ...
Desenvolvimento do protótipo de uma ferramenta para Engenharia de Requisitos ...
 
210705386
210705386210705386
210705386
 
Tcc magno ronan ritzmann
Tcc magno ronan ritzmannTcc magno ronan ritzmann
Tcc magno ronan ritzmann
 
Arquitectura de computadores
Arquitectura de computadoresArquitectura de computadores
Arquitectura de computadores
 
O uso de frameworks em aplicações desktop baseadas na metodologia de desenvol...
O uso de frameworks em aplicações desktop baseadas na metodologia de desenvol...O uso de frameworks em aplicações desktop baseadas na metodologia de desenvol...
O uso de frameworks em aplicações desktop baseadas na metodologia de desenvol...
 
Syllabus ibqts-atc-nf
Syllabus ibqts-atc-nfSyllabus ibqts-atc-nf
Syllabus ibqts-atc-nf
 
PDF - Projeto de Pesquisa: MELHORIA DE PROCESSO DE SOFTWARE BRASILEIRO APLICA...
PDF - Projeto de Pesquisa: MELHORIA DE PROCESSO DE SOFTWARE BRASILEIRO APLICA...PDF - Projeto de Pesquisa: MELHORIA DE PROCESSO DE SOFTWARE BRASILEIRO APLICA...
PDF - Projeto de Pesquisa: MELHORIA DE PROCESSO DE SOFTWARE BRASILEIRO APLICA...
 
Curso Gestão de Processos, Projetos e TI p/ APPGG-SP
Curso Gestão de Processos, Projetos e TI p/ APPGG-SPCurso Gestão de Processos, Projetos e TI p/ APPGG-SP
Curso Gestão de Processos, Projetos e TI p/ APPGG-SP
 
Prova Comentada de Analista para TRE-SP
Prova Comentada de Analista para TRE-SPProva Comentada de Analista para TRE-SP
Prova Comentada de Analista para TRE-SP
 
Meu fasciculo
Meu fasciculoMeu fasciculo
Meu fasciculo
 
Curso Tecnologia da Informação (I) p/ SMG/SP - APDO
Curso Tecnologia da Informação (I) p/ SMG/SP - APDOCurso Tecnologia da Informação (I) p/ SMG/SP - APDO
Curso Tecnologia da Informação (I) p/ SMG/SP - APDO
 
Resumo de Ciências da Administração p/ Concurso TCM-RJ
Resumo de Ciências da Administração p/ Concurso TCM-RJResumo de Ciências da Administração p/ Concurso TCM-RJ
Resumo de Ciências da Administração p/ Concurso TCM-RJ
 
Plano de ensino para ead_paulo_lógica
Plano de ensino para ead_paulo_lógicaPlano de ensino para ead_paulo_lógica
Plano de ensino para ead_paulo_lógica
 
Projeto de Pesquisa: MELHORIA DE PROCESSO DE SOFTWARE BRASILEIRO APLICADO NO ...
Projeto de Pesquisa: MELHORIA DE PROCESSO DE SOFTWARE BRASILEIRO APLICADO NO ...Projeto de Pesquisa: MELHORIA DE PROCESSO DE SOFTWARE BRASILEIRO APLICADO NO ...
Projeto de Pesquisa: MELHORIA DE PROCESSO DE SOFTWARE BRASILEIRO APLICADO NO ...
 
MELHORIA DE PROCESSO DE SOFTWARE BRASILEIRO APLICADO NO NÍVEL DE MATURIDADE F...
MELHORIA DE PROCESSO DE SOFTWARE BRASILEIRO APLICADO NO NÍVEL DE MATURIDADE F...MELHORIA DE PROCESSO DE SOFTWARE BRASILEIRO APLICADO NO NÍVEL DE MATURIDADE F...
MELHORIA DE PROCESSO DE SOFTWARE BRASILEIRO APLICADO NO NÍVEL DE MATURIDADE F...
 
Coding-Dojo: Uma forma rápida, eficiente e divertida de ensinar e aprender
Coding-Dojo: Uma forma rápida, eficiente e divertida de ensinar e aprenderCoding-Dojo: Uma forma rápida, eficiente e divertida de ensinar e aprender
Coding-Dojo: Uma forma rápida, eficiente e divertida de ensinar e aprender
 
Programa referencial de comunicação e tecnologias da informação
Programa  referencial de comunicação e tecnologias da informaçãoPrograma  referencial de comunicação e tecnologias da informação
Programa referencial de comunicação e tecnologias da informação
 

En vedette

Do alto para o baixo nível - Entendendo as Diferenças
Do alto para o baixo nível - Entendendo as DiferençasDo alto para o baixo nível - Entendendo as Diferenças
Do alto para o baixo nível - Entendendo as DiferençasWelington Sampaio
 
Aulas 13 e 14 - Algoritmos
Aulas 13 e 14 - AlgoritmosAulas 13 e 14 - Algoritmos
Aulas 13 e 14 - AlgoritmosJocelma Rios
 
LIVRO PROPRIETÁRIO - FUNDAMENTOS DE REDES DE COMPUTADORES
LIVRO PROPRIETÁRIO - FUNDAMENTOS DE REDES DE COMPUTADORESLIVRO PROPRIETÁRIO - FUNDAMENTOS DE REDES DE COMPUTADORES
LIVRO PROPRIETÁRIO - FUNDAMENTOS DE REDES DE COMPUTADORESOs Fantasmas !
 
Linguagens de Programação
Linguagens de ProgramaçãoLinguagens de Programação
Linguagens de Programação12anogolega
 
Processo de Desenvolvimento de Software - Programação e Linguagens Fortemente...
Processo de Desenvolvimento de Software - Programação e Linguagens Fortemente...Processo de Desenvolvimento de Software - Programação e Linguagens Fortemente...
Processo de Desenvolvimento de Software - Programação e Linguagens Fortemente...Natanael Simões
 
Lógica de programação com visu alg
Lógica de programação com visu algLógica de programação com visu alg
Lógica de programação com visu algLeandro Santos
 
Apostila 2 conceitos de hardware e software
Apostila 2   conceitos de hardware e softwareApostila 2   conceitos de hardware e software
Apostila 2 conceitos de hardware e softwarePaulo Fonseca
 
Algoritmo - Fluxograma
Algoritmo - FluxogramaAlgoritmo - Fluxograma
Algoritmo - FluxogramaVictoralm Blog
 
Aula 3 compiladores e interpretadores
Aula 3   compiladores e interpretadoresAula 3   compiladores e interpretadores
Aula 3 compiladores e interpretadoresLCCIMETRO
 
Linguagem de programação
Linguagem de programação Linguagem de programação
Linguagem de programação Marcos Gregorio
 
Algoritmo e lógica de programação - Aula 1
Algoritmo e lógica de programação - Aula 1Algoritmo e lógica de programação - Aula 1
Algoritmo e lógica de programação - Aula 1engenhariadecomputacao
 
Aula 3 - Algoritmos computacionais - parte 1
Aula 3 - Algoritmos computacionais - parte 1Aula 3 - Algoritmos computacionais - parte 1
Aula 3 - Algoritmos computacionais - parte 1Pacc UAB
 
Aula 4 - Teste de mesa
Aula 4 - Teste de mesaAula 4 - Teste de mesa
Aula 4 - Teste de mesaPacc UAB
 

En vedette (19)

Do alto para o baixo nível - Entendendo as Diferenças
Do alto para o baixo nível - Entendendo as DiferençasDo alto para o baixo nível - Entendendo as Diferenças
Do alto para o baixo nível - Entendendo as Diferenças
 
Aulas 13 e 14 - Algoritmos
Aulas 13 e 14 - AlgoritmosAulas 13 e 14 - Algoritmos
Aulas 13 e 14 - Algoritmos
 
LIVRO PROPRIETÁRIO - FUNDAMENTOS DE REDES DE COMPUTADORES
LIVRO PROPRIETÁRIO - FUNDAMENTOS DE REDES DE COMPUTADORESLIVRO PROPRIETÁRIO - FUNDAMENTOS DE REDES DE COMPUTADORES
LIVRO PROPRIETÁRIO - FUNDAMENTOS DE REDES DE COMPUTADORES
 
Modbus apostila
Modbus apostilaModbus apostila
Modbus apostila
 
Apostila algoritmos
Apostila algoritmosApostila algoritmos
Apostila algoritmos
 
Linguagens de Programação
Linguagens de ProgramaçãoLinguagens de Programação
Linguagens de Programação
 
Processo de Desenvolvimento de Software - Programação e Linguagens Fortemente...
Processo de Desenvolvimento de Software - Programação e Linguagens Fortemente...Processo de Desenvolvimento de Software - Programação e Linguagens Fortemente...
Processo de Desenvolvimento de Software - Programação e Linguagens Fortemente...
 
Lógica de programação com visu alg
Lógica de programação com visu algLógica de programação com visu alg
Lógica de programação com visu alg
 
Apostila 2 conceitos de hardware e software
Apostila 2   conceitos de hardware e softwareApostila 2   conceitos de hardware e software
Apostila 2 conceitos de hardware e software
 
Algoritmo - Fluxograma
Algoritmo - FluxogramaAlgoritmo - Fluxograma
Algoritmo - Fluxograma
 
Software
SoftwareSoftware
Software
 
Aula 3 compiladores e interpretadores
Aula 3   compiladores e interpretadoresAula 3   compiladores e interpretadores
Aula 3 compiladores e interpretadores
 
Linguagem de programação
Linguagem de programação Linguagem de programação
Linguagem de programação
 
Algoritmo e lógica de programação - Aula 1
Algoritmo e lógica de programação - Aula 1Algoritmo e lógica de programação - Aula 1
Algoritmo e lógica de programação - Aula 1
 
Aula 3 - Algoritmos computacionais - parte 1
Aula 3 - Algoritmos computacionais - parte 1Aula 3 - Algoritmos computacionais - parte 1
Aula 3 - Algoritmos computacionais - parte 1
 
Linguagem assembly
Linguagem assemblyLinguagem assembly
Linguagem assembly
 
Aula 4 - Teste de mesa
Aula 4 - Teste de mesaAula 4 - Teste de mesa
Aula 4 - Teste de mesa
 
Logica Programação. ...
Logica Programação. ...Logica Programação. ...
Logica Programação. ...
 
Fluxogramas
FluxogramasFluxogramas
Fluxogramas
 

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

Apostila lógica de programação
Apostila lógica de programaçãoApostila lógica de programação
Apostila lógica de programaçãoMarcos Nori
 
Livro Algoritmos e Programação de Computadores Autores JR., Dilermando
Livro Algoritmos e Programação de Computadores Autores JR., DilermandoLivro Algoritmos e Programação de Computadores Autores JR., Dilermando
Livro Algoritmos e Programação de Computadores Autores JR., DilermandoOs Fantasmas !
 
Apostila sistemas operacionais
Apostila sistemas operacionaisApostila sistemas operacionais
Apostila sistemas operacionaisfernandao777
 
Apostila algoritmos mar2007
Apostila algoritmos mar2007Apostila algoritmos mar2007
Apostila algoritmos mar2007orvel
 
Curso de Computação Gráfica 3D
Curso de Computação Gráfica 3DCurso de Computação Gráfica 3D
Curso de Computação Gráfica 3DLuiz Avelar
 
LIVRO PROPRIETÁRIO - METODOLOGIAS DE DESENVOLVIMENTO DE SISTEMAS
LIVRO PROPRIETÁRIO - METODOLOGIAS DE DESENVOLVIMENTO DE SISTEMASLIVRO PROPRIETÁRIO - METODOLOGIAS DE DESENVOLVIMENTO DE SISTEMAS
LIVRO PROPRIETÁRIO - METODOLOGIAS DE DESENVOLVIMENTO DE SISTEMASOs Fantasmas !
 
Apostila algorítimos
Apostila algorítimosApostila algorítimos
Apostila algorítimosLuis Luisao
 
Apostila algorítimos
Apostila algorítimosApostila algorítimos
Apostila algorítimosMarcos Nori
 
Lógica de programação algoritmos em pseudo codigos pela facat
Lógica de programação   algoritmos em pseudo codigos pela facatLógica de programação   algoritmos em pseudo codigos pela facat
Lógica de programação algoritmos em pseudo codigos pela facatJoão moreira
 
Apostila algoritmos mar2007
Apostila algoritmos mar2007Apostila algoritmos mar2007
Apostila algoritmos mar2007Lucas Amorim
 
Apostila algoritmos - Lógica de Programação
Apostila algoritmos - Lógica de ProgramaçãoApostila algoritmos - Lógica de Programação
Apostila algoritmos - Lógica de ProgramaçãoLucas Mendes
 
Apostila algoritmos mar2007
Apostila algoritmos mar2007Apostila algoritmos mar2007
Apostila algoritmos mar2007José Junior
 
Apostila algoritmos mar2007
Apostila algoritmos mar2007Apostila algoritmos mar2007
Apostila algoritmos mar2007Paulino Macedo
 
387555062-analise-sistemas-pdf.pdf
387555062-analise-sistemas-pdf.pdf387555062-analise-sistemas-pdf.pdf
387555062-analise-sistemas-pdf.pdfNickMartinsgaspar
 
Metodologias ágeis de desenvolvimento trabalho
Metodologias ágeis de desenvolvimento   trabalhoMetodologias ágeis de desenvolvimento   trabalho
Metodologias ágeis de desenvolvimento trabalhoRuan Pozzebon
 
Tecnico de informatica de gestão lp
Tecnico de informatica de gestão lpTecnico de informatica de gestão lp
Tecnico de informatica de gestão lpLarrylimapires
 

Similaire à Apostila lã³gica de programaã§ã£o (20)

Apostila lógica de programação
Apostila lógica de programaçãoApostila lógica de programação
Apostila lógica de programação
 
Livro Algoritmos e Programação de Computadores Autores JR., Dilermando
Livro Algoritmos e Programação de Computadores Autores JR., DilermandoLivro Algoritmos e Programação de Computadores Autores JR., Dilermando
Livro Algoritmos e Programação de Computadores Autores JR., Dilermando
 
Apostila sistemas operacionais
Apostila sistemas operacionaisApostila sistemas operacionais
Apostila sistemas operacionais
 
Apostila algoritmos mar2007
Apostila algoritmos mar2007Apostila algoritmos mar2007
Apostila algoritmos mar2007
 
Curso de Computação Gráfica 3D
Curso de Computação Gráfica 3DCurso de Computação Gráfica 3D
Curso de Computação Gráfica 3D
 
LIVRO PROPRIETÁRIO - METODOLOGIAS DE DESENVOLVIMENTO DE SISTEMAS
LIVRO PROPRIETÁRIO - METODOLOGIAS DE DESENVOLVIMENTO DE SISTEMASLIVRO PROPRIETÁRIO - METODOLOGIAS DE DESENVOLVIMENTO DE SISTEMAS
LIVRO PROPRIETÁRIO - METODOLOGIAS DE DESENVOLVIMENTO DE SISTEMAS
 
Apostila algorítimos
Apostila algorítimosApostila algorítimos
Apostila algorítimos
 
Apostila algorítimos
Apostila algorítimosApostila algorítimos
Apostila algorítimos
 
Apostila algoritimos
Apostila algoritimosApostila algoritimos
Apostila algoritimos
 
Lógica de programação algoritmos em pseudo codigos pela facat
Lógica de programação   algoritmos em pseudo codigos pela facatLógica de programação   algoritmos em pseudo codigos pela facat
Lógica de programação algoritmos em pseudo codigos pela facat
 
Apostila algoritmos mar2007
Apostila algoritmos mar2007Apostila algoritmos mar2007
Apostila algoritmos mar2007
 
Apostila algoritmos mar2007
Apostila algoritmos mar2007Apostila algoritmos mar2007
Apostila algoritmos mar2007
 
Apostila algoritmos - Lógica de Programação
Apostila algoritmos - Lógica de ProgramaçãoApostila algoritmos - Lógica de Programação
Apostila algoritmos - Lógica de Programação
 
Apostila algoritmos mar2007
Apostila algoritmos mar2007Apostila algoritmos mar2007
Apostila algoritmos mar2007
 
Apostila algoritmos mar2007
Apostila algoritmos mar2007Apostila algoritmos mar2007
Apostila algoritmos mar2007
 
ideias de programação
ideias de programaçãoideias de programação
ideias de programação
 
Poo frank
Poo frankPoo frank
Poo frank
 
387555062-analise-sistemas-pdf.pdf
387555062-analise-sistemas-pdf.pdf387555062-analise-sistemas-pdf.pdf
387555062-analise-sistemas-pdf.pdf
 
Metodologias ágeis de desenvolvimento trabalho
Metodologias ágeis de desenvolvimento   trabalhoMetodologias ágeis de desenvolvimento   trabalho
Metodologias ágeis de desenvolvimento trabalho
 
Tecnico de informatica de gestão lp
Tecnico de informatica de gestão lpTecnico de informatica de gestão lp
Tecnico de informatica de gestão lp
 

Dernier

Poesiamodernismo fase dois. 1930 prosa e poesiapptx
Poesiamodernismo fase dois. 1930 prosa e poesiapptxPoesiamodernismo fase dois. 1930 prosa e poesiapptx
Poesiamodernismo fase dois. 1930 prosa e poesiapptxPabloGabrielKdabra
 
Currículo - Ícaro Kleisson - Tutor acadêmico.pdf
Currículo - Ícaro Kleisson - Tutor acadêmico.pdfCurrículo - Ícaro Kleisson - Tutor acadêmico.pdf
Currículo - Ícaro Kleisson - Tutor acadêmico.pdfTutor de matemática Ícaro
 
O que é arte. Definição de arte. História da arte.
O que é arte. Definição de arte. História da arte.O que é arte. Definição de arte. História da arte.
O que é arte. Definição de arte. História da arte.denisecompasso2
 
Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!
Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!
Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!Centro Jacques Delors
 
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...azulassessoria9
 
Pesquisa Ação René Barbier Livro acadêmico
Pesquisa Ação René Barbier Livro  acadêmicoPesquisa Ação René Barbier Livro  acadêmico
Pesquisa Ação René Barbier Livro acadêmicolourivalcaburite
 
3 2 - termos-integrantes-da-oracao-.pptx
3 2 - termos-integrantes-da-oracao-.pptx3 2 - termos-integrantes-da-oracao-.pptx
3 2 - termos-integrantes-da-oracao-.pptxMarlene Cunhada
 
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptx
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptxSlides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptx
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptxLuizHenriquedeAlmeid6
 
M0 Atendimento – Definição, Importância .pptx
M0 Atendimento – Definição, Importância .pptxM0 Atendimento – Definição, Importância .pptx
M0 Atendimento – Definição, Importância .pptxJustinoTeixeira1
 
Texto dramático com Estrutura e exemplos.ppt
Texto dramático com Estrutura e exemplos.pptTexto dramático com Estrutura e exemplos.ppt
Texto dramático com Estrutura e exemplos.pptjricardo76
 
Slides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptx
Slides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptxSlides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptx
Slides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptxLuizHenriquedeAlmeid6
 
A Revolução Francesa. Liberdade, Igualdade e Fraternidade são os direitos que...
A Revolução Francesa. Liberdade, Igualdade e Fraternidade são os direitos que...A Revolução Francesa. Liberdade, Igualdade e Fraternidade são os direitos que...
A Revolução Francesa. Liberdade, Igualdade e Fraternidade são os direitos que...DirceuNascimento5
 
Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...
Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...
Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...marcelafinkler
 
Sistema de Bibliotecas UCS - Cantos do fim do século
Sistema de Bibliotecas UCS  - Cantos do fim do séculoSistema de Bibliotecas UCS  - Cantos do fim do século
Sistema de Bibliotecas UCS - Cantos do fim do séculoBiblioteca UCS
 
Responde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptx
Responde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptxResponde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptx
Responde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptxAntonioVieira539017
 
Monoteísmo, Politeísmo, Panteísmo 7 ANO2.pptx
Monoteísmo, Politeísmo, Panteísmo 7 ANO2.pptxMonoteísmo, Politeísmo, Panteísmo 7 ANO2.pptx
Monoteísmo, Politeísmo, Panteísmo 7 ANO2.pptxFlviaGomes64
 
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...azulassessoria9
 
Aula 1 - Psicologia Cognitiva, aula .ppt
Aula 1 - Psicologia Cognitiva, aula .pptAula 1 - Psicologia Cognitiva, aula .ppt
Aula 1 - Psicologia Cognitiva, aula .pptNathaliaFreitas32
 
TCC_MusicaComoLinguagemNaAlfabetização-ARAUJOfranklin-UFBA.pdf
TCC_MusicaComoLinguagemNaAlfabetização-ARAUJOfranklin-UFBA.pdfTCC_MusicaComoLinguagemNaAlfabetização-ARAUJOfranklin-UFBA.pdf
TCC_MusicaComoLinguagemNaAlfabetização-ARAUJOfranklin-UFBA.pdfamarianegodoi
 
Artigo Científico - Estrutura e Formatação.ppt
Artigo Científico - Estrutura e Formatação.pptArtigo Científico - Estrutura e Formatação.ppt
Artigo Científico - Estrutura e Formatação.pptRogrioGonalves41
 

Dernier (20)

Poesiamodernismo fase dois. 1930 prosa e poesiapptx
Poesiamodernismo fase dois. 1930 prosa e poesiapptxPoesiamodernismo fase dois. 1930 prosa e poesiapptx
Poesiamodernismo fase dois. 1930 prosa e poesiapptx
 
Currículo - Ícaro Kleisson - Tutor acadêmico.pdf
Currículo - Ícaro Kleisson - Tutor acadêmico.pdfCurrículo - Ícaro Kleisson - Tutor acadêmico.pdf
Currículo - Ícaro Kleisson - Tutor acadêmico.pdf
 
O que é arte. Definição de arte. História da arte.
O que é arte. Definição de arte. História da arte.O que é arte. Definição de arte. História da arte.
O que é arte. Definição de arte. História da arte.
 
Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!
Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!
Apresentação | Dia da Europa 2024 - Celebremos a União Europeia!
 
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
O estudo do controle motor nada mais é do que o estudo da natureza do movimen...
 
Pesquisa Ação René Barbier Livro acadêmico
Pesquisa Ação René Barbier Livro  acadêmicoPesquisa Ação René Barbier Livro  acadêmico
Pesquisa Ação René Barbier Livro acadêmico
 
3 2 - termos-integrantes-da-oracao-.pptx
3 2 - termos-integrantes-da-oracao-.pptx3 2 - termos-integrantes-da-oracao-.pptx
3 2 - termos-integrantes-da-oracao-.pptx
 
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptx
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptxSlides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptx
Slides Lição 6, CPAD, As Nossas Armas Espirituais, 2Tr24.pptx
 
M0 Atendimento – Definição, Importância .pptx
M0 Atendimento – Definição, Importância .pptxM0 Atendimento – Definição, Importância .pptx
M0 Atendimento – Definição, Importância .pptx
 
Texto dramático com Estrutura e exemplos.ppt
Texto dramático com Estrutura e exemplos.pptTexto dramático com Estrutura e exemplos.ppt
Texto dramático com Estrutura e exemplos.ppt
 
Slides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptx
Slides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptxSlides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptx
Slides Lição 6, Betel, Ordenança para uma vida de obediência e submissão.pptx
 
A Revolução Francesa. Liberdade, Igualdade e Fraternidade são os direitos que...
A Revolução Francesa. Liberdade, Igualdade e Fraternidade são os direitos que...A Revolução Francesa. Liberdade, Igualdade e Fraternidade são os direitos que...
A Revolução Francesa. Liberdade, Igualdade e Fraternidade são os direitos que...
 
Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...
Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...
Introdução às Funções 9º ano: Diagrama de flexas, Valor numérico de uma funçã...
 
Sistema de Bibliotecas UCS - Cantos do fim do século
Sistema de Bibliotecas UCS  - Cantos do fim do séculoSistema de Bibliotecas UCS  - Cantos do fim do século
Sistema de Bibliotecas UCS - Cantos do fim do século
 
Responde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptx
Responde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptxResponde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptx
Responde ou passa na HISTÓRIA - REVOLUÇÃO INDUSTRIAL - 8º ANO.pptx
 
Monoteísmo, Politeísmo, Panteísmo 7 ANO2.pptx
Monoteísmo, Politeísmo, Panteísmo 7 ANO2.pptxMonoteísmo, Politeísmo, Panteísmo 7 ANO2.pptx
Monoteísmo, Politeísmo, Panteísmo 7 ANO2.pptx
 
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
Considerando as pesquisas de Gallahue, Ozmun e Goodway (2013) os bebês até an...
 
Aula 1 - Psicologia Cognitiva, aula .ppt
Aula 1 - Psicologia Cognitiva, aula .pptAula 1 - Psicologia Cognitiva, aula .ppt
Aula 1 - Psicologia Cognitiva, aula .ppt
 
TCC_MusicaComoLinguagemNaAlfabetização-ARAUJOfranklin-UFBA.pdf
TCC_MusicaComoLinguagemNaAlfabetização-ARAUJOfranklin-UFBA.pdfTCC_MusicaComoLinguagemNaAlfabetização-ARAUJOfranklin-UFBA.pdf
TCC_MusicaComoLinguagemNaAlfabetização-ARAUJOfranklin-UFBA.pdf
 
Artigo Científico - Estrutura e Formatação.ppt
Artigo Científico - Estrutura e Formatação.pptArtigo Científico - Estrutura e Formatação.ppt
Artigo Científico - Estrutura e Formatação.ppt
 

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

  • 1. 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
  • 2. 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
  • 3. 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
  • 4. 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
  • 5. SOCIESC – Sociedade Educacional de Santa Catarina 3 _/_ a _/_ 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 8 Modularização do programa _/_ a _/_
  • 6. 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.
  • 7. 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!
  • 8. 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:
  • 9. 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.
  • 10. 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.
  • 11. 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.
  • 12. 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
  • 13. 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. É
  • 14. 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
  • 15. 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. ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________
  • 16. 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,
  • 17. 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.
  • 18. 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.
  • 19. 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 Interpretador Linguagem de Máquina Computador 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
  • 20. 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 Compilador Linguagem de Máquina Computador 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.
  • 21. 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.
  • 22. 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.
  • 23. 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
  • 24. 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
  • 25. 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? ___________________________________________________________________ ___________________________________________________________________
  • 26. 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? ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________ ___________________________________________________________________
  • 27. 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!
  • 28. 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
  • 29. 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
  • 30. 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
  • 31. 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).
  • 32. 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
  • 33. 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
  • 34. 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).
  • 35. 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.
  • 36. 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
  • 37. 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.
  • 38. SOCIESC – Sociedade Educacional de Santa Catarina Algoritmos 38 Figura 13 – Ambiente de visualização/construção de Fluxogramas
  • 39. SOCIESC – Sociedade Educacional de Santa Catarina Algoritmos 39 Figura 14 – Exemplo de Fluxograma
  • 40. 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.
  • 41. 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.
  • 42. 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!
  • 43. 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.
  • 44. 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
  • 45. 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.
  • 46. 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
  • 47. 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
  • 48. 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.
  • 49. 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).
  • 50. 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”
  • 51. 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
  • 52. 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!
  • 53. 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
  • 54. 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
  • 55. 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.
  • 56. 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
  • 57. 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:
  • 58. 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%.
  • 59. 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:
  • 60. 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
  • 61. 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:
  • 62. 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?
  • 63. 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
  • 64. 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).
  • 65. 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
  • 66. 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.
  • 67. 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
  • 68. 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):
  • 69. 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
  • 70. 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
  • 71. 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
  • 72. 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.
  • 73. 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.
  • 74. 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
  • 75. 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.
  • 76. 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!
  • 77. 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
  • 78. 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:
  • 79. 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