46
ALGORITMOS E PROGRAMAÇÃO

Algoritmos e Programação

Embed Size (px)

DESCRIPTION

Claretiano

Citation preview

Page 1: Algoritmos e Programação

ALGORITMOS E PROGRAMAÇÃO

Page 2: Algoritmos e Programação

CURSOS DE GRADUAÇÃO – EADAlgoritmos e Programação – Prof. Dr. Rodrigo de Oliveira Plotze

Meu nome é Rodrigo Plotze. Sou doutor na área de Computação Gráfica e Processamento de Imagens pelo Instituto de Ciências Matemáticas e de Computação da USP – São Carlos. Desenvolvo pesquisas na área de Visão Computacional aplicada à Biologia e à Medicina, na qual tenho diversos trabalhos publicados em periódicos nacionais e internacionais. Trabalho como docente dos cursos de pós-graduação em Desenvolvimento de Software (Java e .NET) no Centro Universitário Claretiano, e, também, em cursos de graduação em Ciência da Computação, Engenharia da Computação e Sistemas de Informações em outras instituições de ensino superior. e-mail: [email protected]

Fazemos parte do Claretiano - Rede de Educação

Page 3: Algoritmos e Programação

ALGORITMOS E PROGRAMAÇÃO

Rodrigo de Oliveira Plotze

Batatais

Claretiano

2013

Page 4: Algoritmos e Programação

© Ação Educacional Claretiana, 2012 – Batatais (SP)Versão: dez./2013

 

005 P786a

Plotze, Rodrigo de Oliveira Algoritmos e programação / Rodrigo de Oliveira Plotze – Batatais, SP : Claretiano, 2013. 322 p.

ISBN: 978-85-8377-122-7

1. Conceitos de algoritmos. 2. Estrutura sequencial. 3. Estrutura Condicional. 4. Estrutura de dados homogêneas e heterogêneas. 5. Programação Modular. I. Algoritmos e programação.

CDD 005

Corpo Técnico Editorial do Material Didático MediacionalCoordenador de Material Didático Mediacional: J. Alves

Preparação Aline de Fátima Guedes

Camila Maria Nardi Matos Carolina de Andrade Baviera

Cátia Aparecida RibeiroDandara Louise Vieira Matavelli

Elaine Aparecida de Lima MoraesJosiane Marchiori Martins

Lidiane Maria MagaliniLuciana A. Mani Adami

Luciana dos Santos Sançana de MeloPatrícia Alves Veronez MonteraRaquel Baptista Meneses Frata

Rosemeire Cristina Astolphi BuzzelliSimone Rodrigues de Oliveira

Bibliotecária Ana Carolina Guimarães – CRB7: 64/11

RevisãoCecília Beatriz Alves TeixeiraEduardo Henrique MarinheiroFelipe AleixoFilipi Andrade de Deus SilveiraJuliana BiggiPaulo Roberto F. M. Sposati OrtizRafael Antonio MorottiRodrigo Ferreira DaverniSônia Galindo MeloTalita Cristina BartolomeuVanessa Vergani Machado

Projeto gráfico, diagramação e capa Eduardo de Oliveira AzevedoJoice Cristina Micai Lúcia Maria de Sousa FerrãoLuis Antônio Guimarães Toloi Raphael Fantacini de OliveiraTamires Botta Murakami de SouzaWagner Segato dos Santos

Todos os direitos reservados. É proibida a reprodução, a transmissão total ou parcial por qualquer forma e/ou qualquer meio (eletrônico ou mecânico, incluindo fotocópia, gravação e distribuição na web), ou o arquivamento em qualquer sistema de banco de dados sem a permissão por escrito do autor e da Ação Educacional Claretiana.

Centro Universitário Claretiano Rua Dom Bosco, 466 - Bairro: Castelo – Batatais SP – CEP 14.300-000

[email protected]: (16) 3660-1777 – Fax: (16) 3660-1780 – 0800 941 0006

www.claretiano.edu.br

Fazemos parte do Claretiano - Rede de Educação

Page 5: Algoritmos e Programação

SUMÁRIO

CADERNO DE REFERÊNCIA DE CONTEÚDO

1 INTRODUÇÃO ..............................................................................................................................................72 ORIENTAÇÕES PARA ESTUDO .....................................................................................................................83 REFERÊNCIA BIBLIOGRÁFICA .....................................................................................................................21

UNIDADE 1 – INTRODUÇÃO À CONSTRUÇÃO DE ALGORITMOS

1 OBJETIVOS ...................................................................................................................................................232 CONTEÚDOS ................................................................................................................................................233 ORIENTAÇÕES PARA O ESTUDO DA UNIDADE ..........................................................................................234 INTRODUÇÃO À UNIDADE ..........................................................................................................................245 INTRODUÇÃO À LÓGICA .............................................................................................................................246 ELABORAÇÃO E REPRESENTAÇÃO DE ALGORITMOS ...............................................................................317 AMBIENTE PARA CONSTRUÇÃO DE ALGORITMOS ...................................................................................418 QUESTÕES AUTOAVALIATIVAS ...................................................................................................................459 CONSIDERAÇÕES .........................................................................................................................................4510 REFERÊNCIAS BIBLIOGRÁFICAS .................................................................................................................46

UNIDADE 2 – FUNDAMENTOS DA CONSTRUÇÃO DE ALGORITMOS

1 OBJETIVOS ...................................................................................................................................................472 CONTEÚDOS ................................................................................................................................................473 ORIENTAÇÕES PARA O ESTUDO DA UNIDADE ..........................................................................................474 INTRODUÇÃO À UNIDADE ..........................................................................................................................485 ESTRUTURA SEQUENCIAL ...........................................................................................................................486 EXPRESSÕES ARITMÉTICAS ........................................................................................................................557 EXERCÍCIOS RESOLVIDOS ...........................................................................................................................648 QUESTÕES AUTOAVALIATIVAS ...................................................................................................................859 CONSIDERAÇÕES .........................................................................................................................................8610 REFERÊNCIA BIBLIOGRÁFICA .....................................................................................................................86

UNIDADE 3 – ESTRUTURAS DE CONTROLE

1 OBJETIVOS ...................................................................................................................................................872 CONTEÚDOS ................................................................................................................................................873 ORIENTAÇÕES PARA O ESTUDO DA UNIDADE ..........................................................................................874 INTRODUÇÃO À UNIDADE ..........................................................................................................................885 ESTRUTURA CONDICIONAL ........................................................................................................................886 ESTRUTURA DE REPETIÇÃO ........................................................................................................................1007 EXERCÍCIOS RESOLVIDOS ...........................................................................................................................1208 QUESTÕES AUTOAVALIATIVAS ...................................................................................................................1909 CONSIDERAÇÕES ........................................................................................................................................19110 REFERÊNCIA BIBLIOGRÁFICA .....................................................................................................................191

UNIDADE 4 – ESTRUTURA DE DADOS

1 OBJETIVOS ...................................................................................................................................................1932 CONTEÚDOS ................................................................................................................................................1933 ORIENTAÇÕES PARA O ESTUDO DA UNIDADE ..........................................................................................1934 INTRODUÇÃO À UNIDADE ..........................................................................................................................1945 ESTRUTURAS DE DADOS HOMOGÊNEAS ..................................................................................................1956 ESTRUTURAS DE DADOS HETEROGÊNEAS ................................................................................................2137 EXERCÍCIOS RESOLVIDOS ...........................................................................................................................2218 QUESTÕES AUTOAVALIATIVAS ...................................................................................................................2729 CONSIDERAÇÕES ........................................................................................................................................27310 REFERÊNCIA BIBLIOGRÁFICA .....................................................................................................................273

Page 6: Algoritmos e Programação

UNIDADE 5 – PROGRAMAÇÃO MODULAR

1 OBJETIVOS ...................................................................................................................................................2752 CONTEÚDOS ................................................................................................................................................2753 ORIENTAÇÕES PARA O ESTUDO DA UNIDADE ..........................................................................................2754 INTRODUÇÃO À UNIDADE ..........................................................................................................................2765 PROCEDIMENTOS ........................................................................................................................................2786 FUNÇÕES ......................................................................................................................................................2897 RECURSIVIDADE ..........................................................................................................................................2948 EXERCÍCIOS RESOLVIDOS ...........................................................................................................................2969 QUESTÕES AUTOAVALIATIVAS ..................................................................................................................32110 CONSIDERAÇÕES FINAIS .............................................................................................................................32211 REFERÊNCIA BIBLIOGRÁFICA .....................................................................................................................322

Page 7: Algoritmos e Programação

CRC

Caderno de Referência de Conteúdo

Conteúdo ––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––Introdução à Lógica. Introdução ao conceito de algoritmos e suas representações fundamentais. Estrutura sequencial para construção de algoritmos. Estruturas Condicionais. Estruturas de Repetição. Estruturas de dados homogêneas (vetores e matrizes) e heterogêneas (registros). Programação modular: procedimentos, funções e recursividade.–––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––––

1. INTRODUÇÃO

Neste Caderno de Referência de Conteúdo, você terá o primeiro contato com os principais conceitos relacionados à programação de computadores.

Para facilitar o seu estudo, o conteúdo foi dividido em cinco unidades. Nelas, você terá a oportunidade de aprender como elaborar algoritmos capazes de solucionar não só os problemas computacionais, mas também os do cotidiano.

Estudará, ainda, tópicos fundamentais para a construção dos algoritmos, explicitando desde os tipos de dados até as estruturas sequenciais e de repetição, passando, inclusive, pelas variáveis. Além disso, você poderá estudar as estruturas de dados para armazenamento de grandes conjuntos de informações, como, por exemplo, as variáveis compostas homogêneas e as variáveis compostas heterogêneas.

Por fim, você terá a possibilidade de aprender como organizar eficientemente seus algoritmos por meio de técnicas de programação modular.

Dessa forma, é essencial que, para um bom aproveitamento de seus estudos, você pratique. Para isso, não deixe de realizar os exercícios propostos. Não se esqueça de que também é fundamental que você compartilhe seus conhecimentos na Sala de Aula Virtual.

Uma vez que este Caderno de Referência de Conteúdo é apenas uma referência, é importante que você complemente seu estudo por meio de outras fontes de informações, como livros, revistas e internet.

Page 8: Algoritmos e Programação

© Algoritmos e Programação8

Após esta introdução aos conceitos principais, apresentamos, a seguir, no tópico Orientações para estudo, algumas orientações de caráter motivacional, dicas e estratégias de aprendizagem que poderão facilitar o seu estudo.

2. ORIENTAÇÕES PARA ESTUDO

Abordagem Geral

Neste tópico, apresenta-se uma visão geral do que será estudado. Aqui, você entrará em contato com os assuntos principais deste conteúdo de forma breve e geral e terá a oportunidade de aprofundar essas questões no estudo de cada unidade. Desse modo, essa Abordagem Geral visa fornecer-lhe o conhecimento básico necessário a partir do qual você possa construir um referencial teórico com base sólida – científica e cultural – para que, no futuro exercício de sua profissão, você a exerça com competência cognitiva, ética e responsabilidade social.

O estudo de Algoritmos e Programação tem caráter fundamental para formação do aluno. Ela apresenta os aspectos teóricos e práticos do projeto e construção de algoritmos. Nesse contexto, você terá a possibilidade de estudar os principais aspectos relacionados à elaboração de algoritmos, os quais são fundamentais para o desenvolvimento de qualquer tipo de sistema computacional, independentemente da linguagem de programação utilizada.

O início do estudo de programação aborda conceitos relacionados à lógica matemática. No dia a dia, utilizamos a todo o momento a palavra lógica para referenciar ou descrever algum tipo de evento ocorrido, como por exemplo, "É lógico que vai chover", "Se tudo correr bem, é lógico que vou ao cinema", ou ainda "Como você estudou muito para prova, é lógico que acertará todas as questões".

No entanto, é fundamental definirmos a palavra lógica. Segundo Aristóteles, que foi considerado o pai da lógica, ela representa as leis do pensamento. Assim, em todas as nossas atividades, precisamos utilizá-la. Quando, por exemplo, estamos escrevendo uma mensagem eletrônica ou falando ao telefone, precisamos da lógica para ordenar nossos pensamentos.

Para realizar tarefas mais simples, também utilizamos o raciocínio lógico. Por exemplo, suponha que você deseja preparar um leite com achocolatado. Uma possível ordem lógica para a solução do problema seria: (1) Abrir a geladeira; (2) Retirar o litro de leite; (3) Abrir o armário; (3) Retirar o pote de achocolatado; (5) Pegar um copo vazio; (6) Adicionar leite no copo; (7) Adicionar achocolatado no copo com leite, e por fim, (8) Misturar.

Neste momento, você provavelmente deve estar se perguntando: o que isso tem a ver com algoritmos e programação? É simples. A lógica auxiliará você na compreensão dos conceitos fundamentais para a construção de algoritmos. Além disso, com ela, você estará preparado para analisar a formalidade e a coerência dos programas.

Alguns conceitos da lógica matemática são essenciais para o estudo de algorítmos e programação, como, por exemplo, as proposições. Uma das aplicações da lógica é a representação simbólica de raciocínios. Desse modo, podemos dizer que as afirmações que realizamos diariamente são transformadas em símbolos para demonstrar fatos ou transmitir informações.

Uma proposição representa uma afirmação (ou sentença), que pode assumir o valor lógico verdadeiro ou o valor falso. As proposições são sempre simbolizadas por letras minúsculas {a,b,c,...x,y,z}.

Page 9: Algoritmos e Programação

Claretiano - Centro Universitário

9© Caderno de Referência de Conteúdo

Os conectivos lógicos são símbolos utilizados para combinar proposições. No dia a dia, utilizamos esses conectivos ao falar e também ao escrever. As proposições formadas por meio da combinação de conectivos são chamadas proposições compostas.

Utilizando as proposições simples (p, q), podemos formar algumas proposições compostas com os conectivos (e, ou, se ... então). Considerando a proposição p como, por exemplo, na sentença "Os cachorros possuem quatro patas" e a proposição q, como na sentença "Os gatos adoram leite", podemos formar as seguintes proposições compostas: "Os cachorros possuem quatro patas e os gatos adoram leite"; "Os cachorros possuem quatro patas ou os gatos adoram leite"; "Se os cachorros possuem quatro patas, então os gatos adoram leite".

Na lógica matemática, cada conectivo é representado por um símbolo, conforme apresentado na Tabela 1.

Tabela 1 Conectivos lógicos.Conectivo Lógico Significado Símbolo

Negação não ∼

Conjunção e ∧

Disjunção ou ∨

Disjunção Exclusiva ou exclusivo ∨

Condicional se ... então →

Bicondicional se, somente se ↔

As tabelas-verdade são um recurso muito utilizado na avaliação de proposições lógicas. Elas permitem avaliar uma proposição em função de todas as entradas possíveis. Para isso, são utilizados os conectivos descritos anteriormente. Esses conectivos e seus respectivos valores são expressos resumidamente na Tabela 2.

Tabela 2 Valores dos conectivos lógicos.p q p ∧ q p ∨ q p ∨ q p → q p ↔ q

V V V V F V V

V F F V V F F

F V F V V V F

F F F F F V V

Para demonstrar a construção de tabelas-verdade, consideremos a proposição (a ∨ b) → a. A resolução por meio da tabela-verdade é apresentada na Tabela 3.

Tabela 3 Tabela-verdade da proposição (a ∨ b) → a.

Entrada

a b (a ∨ b) → a

1 V V V V

2 V F V V

3 F V V F

4 F F F V

Resultado

No exemplo anterior, você pôde notar que as colunas 1 e 2 representam as possíveis en-tradas para as proposições a e b. A coluna 3 representa o resultado da avaliação da proposição composta (a ∨ b). Para facilitar o entendimento, a coluna 3 foi nomeada como .

Page 10: Algoritmos e Programação

© Algoritmos e Programação10

Por fim, a coluna 4 contém o resultado da coluna 3 () combinada com o conectivo → e a coluna 1. É sempre importante destacar a coluna que representa o resultado final da tabela--verdade. Além disso, você pôde observar que essa tabela possui um total de quatro linhas, pois o número de proposições (ou variáveis) é igual a 2, ou seja, 22 = 4.

Os conceitos de lógica apresentados anteriormente tiveram como objetivo a formalização e a representação dos pensamentos. Por meio da lógica, você pôde perceber que é possível definir, de maneira organizada e coerente, uma sequência de raciocínio e, com isso, atingir os objetivos propostos.

Todo esse ferramental apresentado pode ser empregado na construção de algoritmos e programas. Assim, quando você for escrever programas para computador, um dos primeiros passos é a criação de algoritmos. Por meio deles, você pode esboçar todos os passos necessários para a resolução de um determinado problema.

Segundo Ascencio (1999), o algoritmo é a descrição de uma sequência de passos que deve ser seguida para a realização de uma tarefa.

Dessa forma, em nosso cotidiano, utilizamos algoritmos a todo instante para realizar ati-vidades como, por exemplo, ir ao supermercado, trocar o pneu do carro, limpar a casa, passear com o cachorro, ir ao trabalho, dentre outros. A seguir, serão apresentados alguns exemplos de algoritmos do cotidiano, tais como: trocar o pneu do carro e ir ao trabalho. Veja:

Algoritmo 1 – Trocar o pneu do carro1 Desparafusar a roda.

2 Levantar o carro com o macaco.

3 Retirar a roda com o pneu furado.

4 Colocar o estepe.

5 Abaixar o carro.

6 Parafusar a roda.

A maneira mais simples de representação é chamada de descrição narrativa. Além desse tipo de descrição, os algoritmos também podem ser representados por meio de fluxogramas e pseudocódigos (ou portugol) (ASCENCIO & CAMPOS, 2008).

Independentemente da forma de elaboração dos algoritmos (descrição narrativa, fluxo-grama ou pseudocódigo), todas visam à construção de programas. Assim, um programa de com-putador pode ser definido como a tradução de um algoritmo para uma linguagem que apenas o computador entenda, também conhecida como linguagem de programação.

O exemplo a seguir apresenta a solução algorítmica para o problema de somar três núme-ros e apresentar na tela o resultado. Essa solução foi elaborada com base nas três abordagens: descrição narrativa, fluxogramas e pseudocódigos.

Descrição narrativa:1 Receber o primeiro número.

2 Receber o segundo número.

3 Receber o terceiro número.

4 Somar os três números.

5 Apresentar o resultado obtido com a soma.

Page 11: Algoritmos e Programação

Claretiano - Centro Universitário

11© Caderno de Referência de Conteúdo

Fluxograma:

início

num1, num2 e num3

soma= (num1+num2+num3) cálculo da soma

leitura dos números

exibição do resultadosoma

fim

Figura 1 Fluxograma de uma soma.

Pseudocódigo:

1 algoritmo "soma três números"

2 {Algoritmo elaborado para somar três números

3 e apresentar o resultado }

4

5 Declare

6 num1, num2, num3 : inteiro

7 Soma : inteiro

8

9 Inicio

10

11 escreva("Entre com o primeiro número:")

12 leia(num1)

13 escreva("Entre com o segundo número:")

14 leia(num2)

15 escreva("Entre com o terceiro número:")

16 leia(num3)

17 Soma <- num1+num2+num3

18 escreva("Resultado = ", soma)

19

20 fimalgoritmo

Para construir e testar seus algoritmos, você pode utilizar programas específicos. Esses programas permitem elaborar algoritmos por meio da metodologia do pseudocódigo e visuali-zar seu funcionamento. Um dos programas mais utilizados para esse propósito é o VisuAlg, que pode ser obtido gratuitamente na internet.

Page 12: Algoritmos e Programação

© Algoritmos e Programação12

Fundamentos da construção de algoritmos

A construção de um algoritmo depende da organização lógica e coerente de um conjunto de passos. Esses passos devem ser executados de maneira sequencial, e, no caso dos algoritmos, sempre do início para o fim. Os algoritmos computacionais possuem uma estrutura básica na qual são definidos, por exemplo, o nome do algoritmo, as variáveis utilizadas e o bloco principal.

Um algoritmo que não manipula informações pode não ter nenhuma utilidade. A grande essência da construção de algoritmos e programas é a possibilidade de manipulação de grandes volumes de informação. Essas informações manipuladas pelos algoritmos são chamadas de ti-pos abstratos de dados.

Os tipos abstratos de dados, ou, simplesmente, tipos de dados, definem quais tipos de in-formações podem ser processadas pelo computador. Todo tipo abstrato de dados é um conjunto de valores específicos e, também, um conjunto de operações.

O tipo abstrato de dados inteiro permite a manipulação de valores numéricos que não pos-suem a parte decimal. São exemplos de números inteiros: 10, 8, -23, 183, 3245, 0, -12345. Para manipular valores numéricos com parte decimal, é utilizado o tipo abstrato de dados real. Alguns exemplos de números reais são: 10,32, 943,03, -32,25, 0,43, 41234,98. Os tipos abstratos de dados também permitem a manipulação de informações textuais, esse tipo é conhecido como caractere ou literal. Com o tipo caractere é possível manipular números (0...9), letras (A...Z, a...z) e, também, caracteres especiais (por exemplo, #,@,!,$,%,*). O tipo de dados abstrato lógico permite a mani-pulação de informações que pode assumir apenas dois valores: verdadeiro ou falso.

Quando construímos algoritmos, podemos definir que uma determinada informação não poderá ser alterada ao longo da execução. Esse conceito é chamado de constante. Também é pos-sível definir dados que podem ter seu valor alterado durante a execução do algoritmo; esses dados recebem o nome de variáveis. O nome de uma variável é denominado identificador, o qual possui regras muito bem definidas para a especificação de nomes. Além dos nomes das variáveis, os no-mes dos algoritmos, das constantes e das sub-rotinas também são considerados identificadores.

A elaboração de programas não teria sentido se não houvesse a possibilidade de leitura de informações dos usuários. Para que um programa ou algoritmo seja capaz de receber dados digitados pelo usuário, são utilizados os comandos de entrada.

Desse modo, quando utilizamos um comando de entrada em um algoritmo, o valor infor-mado pelo usuário é armazenado em uma variável. Em linguagem algorítmica, o comando de entrada é representado pela palavra leia. A instrução leia(nome) faz que o valor digitado pelo usuário seja armazenado na variável nome.

Outra característica essencial na elaboração de um algoritmo é a capacidade de exibir informações para o usuário na tela ou na impressora. Para isso, são utilizados comandos espe-cíficos, que são chamados de comandos de saída. Um comando de saída tem como objetivo a apresentação de uma informação ou de um conteúdo de uma variável para o usuário. Esse comando é definido pela palavra escreva. Por exemplo: a instrução escreva("Seja bem-vindo!") exibe na tela do usuário a mensagem definida entre aspas.

Estruturas de controle

A execução de um algoritmo sempre segue um fluxo sequencial, que vai do início para o fim. Assim, com as estruturas de controle, podemos determinar como esse fluxo deverá ser executado.

Page 13: Algoritmos e Programação

Claretiano - Centro Universitário

13© Caderno de Referência de Conteúdo

Estruturas condicionais

As estruturas condicionais possibilitam ao programador definir se um determinado bloco do algoritmo deve ou não ser executado. A execução do bloco dependerá da avaliação de uma expressão lógica.

Já as estruturas de repetição permitem ao programador executar um bloco de comandos um determinado número de vezes, ou, até mesmo, executar esse bloco até que uma condição aconteça.

Quando você utiliza uma estrutura condicional na elaboração de um algoritmo, é possível selecionar, com base em uma ou mais condições, qual parte do algoritmo deverá ser executa-da. Há dois tipos de estruturas condicionais: a estrutura condicional simples e a estrutura con-dicional composta. Essas estruturas são representadas em linguagem algorítmica pela palavra reservada se.

Uma estrutura condicional simples permite ao programador definir que um bloco do al-goritmo será executado se uma determinada condição ocorrer. Para definirmos uma estrutura condicional se, utilizamos um bloco do tipo: se (condição) então {bloco de comandos} fimse.

Há outra maneira de controlar o fluxo de execução de um algoritmo, que é por meio de uma estrutura condicional composta. Ao contrário das estruturas condicionais simples, que exe-cutam um bloco de instruções apenas quando o valor da condição é verdadeiro, as estruturas condicionais compostas podem executar um determinado bloco de comandos quando a condi-ção for verdadeira ou executar outro bloco de comandos quando a condição for falsa. Uma con-dicional composta é definida pela seguinte estrutura: se (condição) então {bloco de comandos} senão {bloco de comandos} fimse.

Além das estruturas condicionais simples e compostas, é possível controlar o fluxo de exe-cução de um algoritmo por meio de um recurso conhecido como estrutura de seleção múltipla ou estrutura de seleção de múltipla escolha.

Essa estrutura permite ao programador testar o valor de uma determinada variável (que pode ser inteiro ou caractere) contra um conjunto de valores. Caso o valor da variável seja igual a um valor presente no conjunto, o bloco de comandos associado ao valor do conjunto é executado. Essa estru-tura é definida pela sintaxe a seguir: escolha(expressão) caso 1, caso 2, ... caso n, fim escolha.

Estruturas de repetição

As estruturas de repetição são recursos utilizados na construção de algoritmos e progra-mas e permitem ao programador definir quais blocos de instruções serão repetidos até que ocorra certa condição.

Essas estruturas têm muitas aplicações. Podemos dizer, inclusive, que quase todos os al-goritmos possuem pelo menos uma estrutura de repetição. Como exemplo, suponha a seguinte situação: você precisa criar um algoritmo que escreva dez vezes na tela um nome informado pelo usuário. Há três tipos de estruturas de repetição: estrutura para; estrutura enquanto; es-trutura repita.

A estrutura para permite que o programador defina o número de vezes que um bloco de comandos deve ser repetido. O controle do número de repetições é realizado por uma variável que é conhecida como contador. A sintaxe da estrutura é representada por: para <contador> de <valor inicial> até <valor final> faça {bloco de comandos} fimpara.

Page 14: Algoritmos e Programação

© Algoritmos e Programação14

Quando utilizamos uma estrutura de repetição, é comum precisarmos acumular uma va-riável ao longo dos laços de repetição. Assim, na maioria das vezes, acumulamos a soma dessa variável. Porém, também podemos acumular a subtração, a multiplicação ou a divisão.

Um fato importante do qual devemos nos lembrar ao usarmos acumuladores é que a variável utilizada como acumulador sempre será inicializada com o valor zero. Isso garante que nenhum valor prévio afetará o processo do acumulador.

Para exemplificar o funcionamento do acumulador, calcularemos a soma dos números de um até cinco. Para tanto, utilizaremos uma estrutura de repetição para que o acumulador seja definido em uma variável nomeada soma. A aplicação de acumuladores para somar números é conhecida como somatório. Como resultado da execução do algoritmo, a variável soma terá o valor de 1+2+3+4+5, que é igual a 15.

A estrutura de repetição enquanto é outra maneira de produzir um laço de repetição em um algoritmo. Essa estrutura permite ao programador especificar a repetição de um bloco de comandos enquanto uma condição permanecer verdadeira.

Ao contrário da estrutura para, que pode ser aplicada apenas em problemas envolvendo contadores, a estrutura de repetição enquanto pode ser utilizada para laços de repetição com ou sem contadores. Isso permite que a estrutura enquanto seja utilizada em problemas nos quais não sabemos o número de vezes que o bloco de comandos será repetido. A sintaxe da estrutura de repetição enquanto é definida como se segue: enquanto <expressão lógica> faça {bloco de comandos} fimenquanto.

Na estrutura repita, o bloco de comandos é repetido até que uma determinada condição se torne verdadeira. Ao contrário da estrutura de repetição enquanto, em que a condição de parada é testada no início da estrutura, na estrutura repita, a condição de parada é testada no final. A sintaxe é definida como se segue: repita {bloco de comandos} até <expressão lógica>.

Estrutura de dados

As estruturas de dados estabelecem mecanismos para a organização dos dados, de forma que podemos trabalhar com as informações de maneira prática e eficiente. Além disso, elas são capazes de manipular grandes quantidades de informações. As estruturas de dados também são conhecidas como variáveis compostas e são divididas em dois grupos: estruturas de dados homogêneas e estruturas de dados heterogêneas.

As estruturas de dados homogêneas são utilizadas na manipulação de dados do mesmo tipo. De maneira prática e simples, podemos entender que uma estrutura homogênea é uma sequência de variáveis do mesmo tipo.

Imagine, por exemplo, que você precisa manipular uma grande quantidade de notas de alunos. Ao invés de declarar uma variável para armazenar cada nota, você pode criar uma es-trutura de dados homogênea capaz de armazenar uma sequência de notas. Há dois tipos de estruturas homogêneas: vetores; matrizes.

O vetor, também conhecido como array, pode ser definido como um conjunto de elemen-tos do mesmo tipo armazenado sequencialmente na memória.

Para entender melhor esse conceito, imagine um problema em que devemos elaborar um algoritmo que calcule a média de preço entre cinco produtos fornecidos pelo usuário. Se utilizar-mos cinco variáveis para armazenar os preços, elas estarão distribuídas em posições aleatórias

Page 15: Algoritmos e Programação

Claretiano - Centro Universitário

15© Caderno de Referência de Conteúdo

da memória. Entretanto, se utilizarmos um vetor de preços contendo cinco posições, cada posi-ção desse vetor será definida sequencialmente na memória.

Como os vetores organizam as informações do mesmo tipo sequencialmente na memória, precisamos de um mecanismo para armazenar ou recuperar as informações de cada posição. Para isso, são utilizados valores inteiros, conhecidos como índice.

Um índice é um valor inteiro, maior ou igual a zero, utilizado para fazer referência a uma determinada posição do vetor.

As matrizes são outro tipo de estrutura de dados homogênea e permitem a manipulação de informações em muitas dimensões. Como vimos anteriormente, os vetores manipulam da-dos em uma única dimensão, e, por isso, são conhecidos como estruturas de dados unidimen-sionais. Já as matrizes permitem a manipulação de informações em muitas dimensões, e, dessa forma, são conhecidas como estruturas multidimensionais.

Desse modo, a matriz mais simples é chamada de matriz bidimensional, e, nela, os dados são representados em duas dimensões. Entretanto, nas matrizes bidimensionais, os dados são dispostos em linhas e colunas, como em uma tabela, e o acesso às informações é realizado por meio de dois índices: um índice para representar a linha e outro para representar a coluna.

Uma estrutura de dados heterogênea é uma estrutura de dados capaz de agrupar con-juntos de dados de tipos diferentes. Imagine uma situação em que você necessita elaborar um algoritmo que armazene o nome e a idade de cinquenta pessoas. Como já aprendemos a uti-lizar vetores, podemos criar um vetor para armazenar os nomes e outro para armazenar as idades. Essa solução funciona perfeitamente; no entanto, precisamos declarar duas estruturas diferentes. Além disso, durante a construção do algoritmo, devemos referenciar cada vetor. Por exemplo: atribuir o nome "João da Silva", com idade igual a 22 anos, na Posição 6 dos vetores. Acompanhe:

vet_nomes[6] = "João da Silva"

vet_idade[6] = 22

A ideia de uma estrutura heterogênea é criar um mecanismo único para a manipulação das informações, assim, teríamos uma estrutura do tipo:

dados[6].nome = "João da Silva"

dados[6].idade = 22

A principal estrutura de dados para a manipulação de informações heterogêneas, ou seja, de tipos diferentes, é conhecida como registro.

Um registro permite que variáveis de tipos diferentes sejam agrupadas em uma mesma estrutura. A grande vantagem da utilização do registro é que todas essas variáveis são referen-ciadas a partir de um único nome. Quando definimos um registro, é possível realizar a combina-ção de qualquer tipo de dados, assim, esses dados serão logicamente relacionados.

Todas essas informações serão agrupadas por meio de um registro. Por exemplo, a decla-ração de um registro para armazenar informações cadastrais de um funcionário é apresentada como se segue: funcionário: registro{ nome literal, sexo caractere, idade inteiro, salário real).

A atribuição de informações ao registro pode ser realizada sempre referenciando o nome da estrutura, e em seguida o nome do campo, por exemplo: funcionário.nome="João da Silva".

Page 16: Algoritmos e Programação

© Algoritmos e Programação16

Uma das principais utilizações da estrutura de dados registro é a possibilidade de criar-mos vetores de registros. Assim, podemos definir uma estrutura de dados composta contendo inúmeros elementos. Por exemplo, para um conjunto de informações de produtos de um super-mercado, temos a seguinte declaração: produto: registro(código inteiro, descrição literal, preço real, ativo lógico), e em seguida o vetor de registros é definido como se segue: vetor_de_produ-tos: vetor[0...99] de produto. Nesse caso, temos um vetor de registro com cem posições, onde cada posição é capaz de armazenar informações a respeito dos produtos.

Programação modular

A complexidade do desenvolvimento dos algoritmos aumenta, e, assim, dois problemas tornam-se evidentes: o aumento significante do número de linhas e a dificuldade para a organi-zação do código.

Para solucionar tais problemas, aprenderemos uma técnica muito interessante para a reu-tilização e organização dos blocos de comandos presentes nos algoritmos. Essa técnica é co-nhecida como programação modular. O objetivo da programação modular é dividir o algoritmo em pequenas partes, ou módulos, que são chamadas de sub-rotinas. Ao utilizar as sub-rotinas, temos a vantagem de poder reaproveitar partes do código ao longo de todo o algoritmo, com isso, não precisamos reescrever trechos do código novamente. Como resultado, teremos um algoritmo mais organizado e com um número menor de linhas.

Vale ressaltar, também, outro aspecto importante das sub-rotinas: é por meio delas que divi-dimos o problema da construção do algoritmo em pequenas partes, tornando-o mais fácil de ser re-solvido. Essa abordagem para a resolução de problemas é conhecida como dividir-para-conquistar.

As técnicas de modularização de programas permitem a definição de dois tipos de sub--rotinas, que são conhecidas como procedimentos e funções.

Os procedimentos são a maneira mais simples de criação de sub-rotinas. Um procedimen-to é um módulo dentro do algoritmo utilizado para executar um conjunto de instruções. A prin-cipal característica de um procedimento é que ele executa instruções. Porém, ele não retorna nenhum tipo de resultado para o programa principal.

As funções também são um mecanismo para a modularização de algoritmos. A principal característica de uma função é que ela sempre retorna um valor para o bloco principal do algo-ritmo. As funções sempre retornam informações. De modo geral, podemos pensar nas funções como algo que executa uma determinada tarefa e retorna o resultado da execução.

Uma característica interessante das sub-rotinas (tanto procedimentos quanto funções) é a possibilidade de haver a passagem de parâmetros. Os parâmetros permitem que as variáveis do bloco principal do algoritmo sejam passadas para as sub-rotinas. Esse conceito pode ser aplica-do aos procedimentos e também às funções.

Quando passamos um parâmetro para uma sub-rotina, ele tem a função de uma variável, que pode ser manipulada ao longo da sub-rotina.

Chegamos ao fim da síntese da Abordagem Geral, e esperamos que você tenha aproveitado ao máximo os conceitos apresentados e que serão detalhados no decorrer das unidades. Não podemos esquecer que apenas o estudo teórico de algoritmos e programação não é suficiente. Portanto, é fundamental que você pratique! Para isso, instale o ambiente de desenvolvimento VisuAlg em seu computador, caso ainda não tenha feito, e não perca tempo para começar a elaboração dos algorit-mos.

Um grande abraço e bons estudos!

Page 17: Algoritmos e Programação

Claretiano - Centro Universitário

17© Caderno de Referência de Conteúdo

Glossário de Conceitos

O Glossário de Conceitos permite a você uma consulta rápida e precisa das definições con-ceituais, possibilitando-lhe um bom domínio dos termos técnico-científicos utilizados na área de conhecimento dos temas tratados em Algoritmos e Programação. Veja, a seguir, a definição dos principais conceitos:

1) Algoritmo: é a descrição de uma sequência de passos que deve ser seguida para a realização de uma tarefa (ASCENCIO, 1999).

2) Comandos de atribuição: os utilizamos para inserir os valores ou operações em uma variável. Assim, por meio do comando de atribuição, adicionamos um determinado valor à posição de memória reservada pela variável.

3) Comentários: são um recurso imprescindível para uma boa prática de programação. Por meio deles, o programador pode documentar o algoritmo e, com isso, aumentar a clareza do código. Um aspecto importante a ser destacado a respeito dos comentários é que eles são desconsiderados durante a execução do algoritmo ou do programa. Isso significa que eles não interferem no conteúdo do algoritmo, por isso, podemos escrever qualquer tipo de informação para facilitar o entendimento.

4) Constante: o conceito de constante é que uma determinada informação não poderá ser alterada ao longo da execução. Assim, uma constante é um dado definido no algo-ritmo que não pode ter seu valor modificado.

5) Estrutura condicional: quando você utiliza uma estrutura condicional na elaboração de um algoritmo, é possível selecionar, com base em uma ou mais condições, qual parte do algoritmo deverá ser executada.

6) Estrutura de repetição: é um recurso utilizado na construção de algoritmos e progra-mas que permite ao programador definir quais blocos de instruções serão repetidos até que ocorra certa condição.

7) Estruturas de dados: estabelecem mecanismos para a organização dos dados, de for-ma que podemos trabalhar com as informações de maneira prática e eficiente. Além disso, elas são capazes de manipular grandes quantidades de informações. As estru-turas de dados também são conhecidas como variáveis compostas e são divididas em dois grupos: estruturas de dados homogêneas e estruturas de dados heterogêneas.

8) Identificador: o nome de uma variável é denominado "identificador", o qual possui regras muito bem definidas para a especificação de nomes. Além dos nomes das variáveis, os nomes dos algoritmos, das constantes e das sub-rotinas também são considerados identificadores.

9) Lógica matemática – conectivos lógicos: os conectivos lógicos são símbolos utilizados para combinar proposições. No dia a dia, utilizamos esses conectivos ao falar e, tam-bém, ao escrever. As proposições formadas por meio da combinação de conectivos são chamadas proposições compostas.

10) Lógica matemática – proposições: uma das aplicações da lógica é a representação simbólica de raciocínios. Desse modo, podemos dizer que as afirmações que realizamos diariamente são transformadas em símbolos para demonstrar fatos ou transmitir informações. Uma pro-posição representa uma afirmação (ou sentença), que pode assumir o valor lógico verdadeiro ou o valor falso. As proposições são sempre simbolizadas por letras minúsculas {a,b,c,...x,y,z}.

11) Lógica matemática – tabelas-verdade: as tabelas-verdade são um recurso muito uti-lizado na avaliação de proposições lógicas. Elas permitem avaliar uma proposição em função de todas as entradas possíveis.

12) Programação modular: tem como objetivo dividir o algoritmo em pequenas partes, ou módulos, que são chamadas de sub-rotinas.

13) Tipos Abstratos de Dados (TAD): um algoritmo que não manipula informações pode não ter nenhuma utilidade. A grande essência da construção de algoritmos e pro-gramas é a possibilidade de manipulação de grandes volumes de informação. Essas informações que são manipuladas pelos algoritmos são chamadas de Tipos de Dados.

Page 18: Algoritmos e Programação

© Algoritmos e Programação18

14) Variáveis: dados que podem ter seu valor alterado durante a execução do algoritmo. Quando você declara uma variável em um programa, significa que você está reser-vando um espaço da memória principal (RAM) para o armazenamento de uma de-terminada informação. O tamanho do espaço reservado depende do tipo de dados utilizado na variável.

Esquema dos Conceitos-chave

Para que você tenha uma visão geral dos conceitos mais importantes deste estudo, apre-sentamos, a seguir (Figura 2), um Esquema dos Conceitos-chave. O mais aconselhável é que você mesmo faça o seu esquema de conceitos-chave ou até mesmo o seu mapa mental. Esse exercício é uma forma de você construir o seu conhecimento, ressignificando as informações a partir de suas próprias percepções.

É importante ressaltar que o propósito desse Esquema dos Conceitos-chave é representar, de maneira gráfica, as relações entre os conceitos por meio de palavras-chave, partindo dos mais complexos para os mais simples. Esse recurso pode auxiliar você na ordenação e na se-quenciação hierarquizada dos conteúdos de ensino.

Com base na teoria de aprendizagem significativa, entende-se que, por meio da organiza-ção das ideias e dos princípios em esquemas e mapas mentais, o indivíduo pode construir o seu conhecimento de maneira mais produtiva e obter, assim, ganhos pedagógicos significativos no seu processo de ensino e aprendizagem.

Aplicado a diversas áreas do ensino e da aprendizagem escolar (tais como planejamentos de currículo, sistemas e pesquisas em Educação), o Esquema dos Conceitos-chave baseia-se, ainda, na ideia fundamental da Psicologia Cognitiva de Ausubel, que estabelece que a apren-dizagem ocorre pela assimilação de novos conceitos e de proposições na estrutura cognitiva do aluno. Assim, novas ideias e informações são aprendidas, uma vez que existem pontos de ancoragem.

Tem-se de destacar que "aprendizagem" não significa, apenas, realizar acréscimos na es-trutura cognitiva do aluno; é preciso, sobretudo, estabelecer modificações para que ela se con-figure como uma aprendizagem significativa. Para isso, é importante considerar as entradas de conhecimento e organizar bem os materiais de aprendizagem. Além disso, as novas ideias e os novos conceitos devem ser potencialmente significativos para o aluno, uma vez que, ao fixar esses conceitos nas suas já existentes estruturas cognitivas, outros serão também relembrados.

Nessa perspectiva, partindo-se do pressuposto de que é você o principal agente da cons-trução do próprio conhecimento, por meio de sua predisposição afetiva e de suas motivações internas e externas, o Esquema dos Conceitos-chave tem por objetivo tornar significativa a sua aprendizagem, transformando o seu conhecimento sistematizado em conteúdo curricular, ou seja, estabelecendo uma relação entre aquilo que você acabou de conhecer com o que já fazia parte do seu conhecimento de mundo (adaptado do site disponível em: <http://penta2.ufrgs.br/edutools/mapasconceituais/utilizamapasconceituais.html>. Acesso em: 11 mar. 2010).

Page 19: Algoritmos e Programação

Claretiano - Centro Universitário

19© Caderno de Referência de Conteúdo

Lógica Matemática

Proposições

Conectivos Tabelas-Verdade

Algoritmos

Estrutura Sequencial

Estrutura de Controle

Estrutura de Dados

Tipos de Dados

Constantes e Variáveis

Comandos de Entrada e Saída

ExpressõesMatemáticas e Lógicas

se e escolha

para, enquanto e repita

vetores e matrizes

registros

Modularização

Figura 2 Esquema dos Conceitos-chave do Caderno de Referência de Conteúdo de Algoritmos e Programação.

Como pode observar, esse Esquema oferece a você, como dissemos anteriormente, uma visão geral dos conceitos mais importantes deste estudo. Ao segui-lo, será possível transitar entre os principais conceitos e descobrir o caminho para construir o seu processo de ensino--aprendizagem.

O Esquema dos Conceitos-chave é mais um dos recursos de aprendizagem que vem se somar àqueles disponíveis no ambiente virtual, por meio de suas ferramentas interativas, bem

Page 20: Algoritmos e Programação

20 © Algoritmos e Programação

como àqueles relacionados às atividades didático-pedagógicas realizadas presencialmente no polo. Lembre-se de que você, aluno EaD, deve valer-se da sua autonomia na construção de seu próprio conhecimento.

Questões Autoavaliativas

No final de cada unidade, você encontrará algumas questões autoavaliativas sobre os con-teúdos ali tratados.

Responder, discutir e comentar estas questões e relacioná-las com a prática do ensino de Algoritmos e Programação pode ser uma forma de você avaliar o seu conhecimento. Assim, mediante a resolução de questões pertinentes ao assunto tratado, você estará se preparando para a avaliação final, que será dissertativa. Além disso, essa é uma maneira privilegiada de você testar seus conhecimentos e adquirir uma formação sólida para a sua prática profissional.

Bibliografia Básica

É fundamental que você use a Bibliografia Básica em seus estudos, mas não se prenda só a ela. Consulte, também, as bibliografias complementares.

Figuras (ilustrações, quadros...)

Neste material instrucional, as ilustrações fazem parte integrante dos conteúdos, ou seja, elas não são meramente ilustrativas, pois esquematizam e resumem conteúdos explicitados no texto. Não deixe de observar a relação dessas figuras com os conteúdos, pois relacionar aquilo que está no campo visual com o conceitual faz parte de uma boa formação intelectual.

Dicas (motivacionais)

Este estudo convida você a olhar, de forma mais apurada, a Educação como processo de emancipação do ser humano. É importante que você se atente às explicações teóricas, práticas e científicas que estão presentes nos meios de comunicação, bem como partilhe suas descobertas com seus colegas, pois, ao compartilhar com outras pessoas aquilo que você observa, permite-se descobrir algo que ainda não se conhece, aprendendo a ver e a notar o que não havia sido perce-bido antes. Observar é, portanto, uma capacidade que nos impele à maturidade.

Você, como aluno dos Cursos de Graduação na modalidade EaD, necessita de uma forma-ção conceitual sólida e consistente. Para isso, você contará com a ajuda do tutor a distância, do tutor presencial e, sobretudo, da interação com seus colegas. Sugerimos, pois, que organize bem o seu tempo, realize as atividades nas datas estipuladas.

É importante, ainda, que você anote suas reflexões em seu caderno ou no Bloco de Ano-tações, pois, no futuro, elas poderão ser utilizadas na elaboração de sua monografia ou de pro-duções científicas.

Leia os livros da bibliografia indicada, para que você amplie seus horizontes teóricos. Co-teje-os com o material didático, discuta a unidade com seus colegas e com o tutor e assista às videoaulas.

No final de cada unidade, você encontrará algumas questões autoavaliativas, que são im-portantes para a sua análise sobre os conteúdos desenvolvidos e para saber se estes foram significativos para sua formação. Indague, reflita, conteste e construa resenhas, pois esses pro-cedimentos serão importantes para o seu amadurecimento intelectual.

Page 21: Algoritmos e Programação

Claretiano - Centro Universitário

21© Caderno de Referência de Conteúdo

Lembre-se de que o segredo do sucesso em um curso na modalidade a distância é parti-cipar, ou seja, interagir, procurando sempre cooperar e colaborar com seus colegas e tutores.

Caso precise de auxilio sobre algum assunto relacionado a este Caderno de Referência de Conteúdo, entre em contato com seu tutor. Ele estará pronto para ajudar você.

3. REFERÊNCIA BIBLIOGRÁFICA

ASCENCIO, A. F. G.; CAMPOS, E. A. V. Fundamentos da programação de computadores. 2. ed. São Paulo: Pearson, 2008.

Page 22: Algoritmos e Programação

Claretiano - Centro Universitário

Page 23: Algoritmos e Programação

1

EAD

Introdução à Construção de Algoritmos

1. OBJETIVOS

• Compreender os principais conceitos relativos à lógica matemática.• Elaborar e representar algoritmos.

2. CONTEÚDOS

• Fundamentos da lógica.• Elaboração e representação de algoritmos.

3. ORIENTAÇÕES PARA O ESTUDO DA UNIDADE

Antes de iniciar o estudo desta unidade, é importante que você leia as orientações a seguir:1) Leia os livros da bibliografia indicada, especialmente aqueles que tratam sobre os

conceitos relativos à lógica matemática. Algumas sugestões para leitura são as obras: Introdução à lógica para a ciência da computação e Fundamentos matemáticos para ciência da computação.

2) Os principais termos discutidos ao longo da unidade estão sintetizados no Glossário de Conceitos. Por isso, sempre que possível, consulte-o.

3) Para o estudo de conectivos lógicos e tabelas-verdade, você poderá utilizar um "cons-trutor de tabelas-verdade" disponível em: <http://www.brian-borowski.com/Software/Truth/>. Acesso em: 6 nov. 2012.

Page 24: Algoritmos e Programação

© Algoritmos e Programação24

4. INTRODUÇÃO À UNIDADE

Nesta primeira unidade, você terá a oportunidade de conhecer os conceitos fundamentais para a construção e representação de algoritmos.

Inicialmente, serão descritos os fundamentos da lógica de programação e suas principais terminologias. É fundamental que você se dedique aos seus estudos, pois a lógica de programa-ção será essencial para a compreensão e análise dos algoritmos e programas.

Estudaremos, em seguida, os conceitos preliminares a respeito dos algoritmos e as princi-pais técnicas de elaboração e representação.

Bons estudos!

5. INTRODUÇÃO À LÓGICA

Provavelmente, você já utilizou a palavra lógica para referenciar algum tipo de evento ocorrido no seu dia a dia, como, por exemplo:

• É lógico que hoje irá chover.• Se tudo correr bem, é lógico que vou ao cinema.• Como você estudou muito para prova, é lógico que acertará todas as questões.

No entanto, como podemos definir a palavra lógica?

Na maioria das vezes, a palavra lógica está relacionada ao pensamento, porém, não a pensamentos desordenados ou confusos, mas a pensamentos coerentes e racionais. Para Aris-tóteles, considerado o pai da lógica, ela representa as leis do pensamento (GERSTING, 2004).

Assim, em todas as nossas atividades, precisamos utilizar a lógica. Quando, por exemplo, estamos escrevendo uma mensagem eletrônica ou falando ao telefone, precisamos dela para ordenar nossos pensamentos.

Também utilizamos a lógica para agir corretamente. Imagine que você precisa sair da sua casa e ir ao supermercado comprar leite. Apesar de realizar essa tarefa facilmente, você, incons-cientemente, utiliza conceitos lógicos para determinar quais passos ou quais caminhos deverão ser seguidos até chegar ao seu destino (o supermercado). Caso contrário, você poderia ficar "andando em círculos" e nunca encontrar o supermercado. Além disso, você ficaria sem o leite.

Você sabia que, para realizar tarefas mais simples, também utilizamos o raciocínio lógico?

Como exemplo, suponha que você deseja preparar um leite com achocolatado. Uma pos-sível ordem lógica para a solução do problema seria:

Algoritmo 1 – Preparar um leite com achocolatado

1 Abrir a geladeira.

2 Retirar o litro de leite.

3 Abrir o armário.

4 Retirar o pote de achocolatado.

5 Pegar um copo vazio.

6 Adicionar leite no copo.

7 Adicionar achocolatado no copo com o leite.

8 Misturar.

Page 25: Algoritmos e Programação

Claretiano - Centro Universitário

25© U1 – ntrodução à Construção de Algoritmos

Apesar de ser considerada uma tarefa extremamente simples, veja quantos passos são necessários para alcançar o objetivo.

Outro fato importante que deve ser destacado é a ordem dos acontecimentos. A correta organização do raciocínio faz com que o resultado seja facilmente alcançado. Em contrapartida, imagine o seguinte raciocínio, desordenado logicamente:

Algoritmo 2 – Preparar um leite com achocolatado

1 Pegar um copo vazio.

2 Retirar o litro de leite.

3 Abrir a geladeira.

4 Misturar.

5 Retirar o pote de achocolatado.

6 Adicionar leite no copo.

7 Abrir o armário.

8 Adicionar achocolatado no copo com o leite.

Observe que os passos são exatamente os mesmos. No entanto, estão de maneira desor-denada. Dessa forma, seria difícil alcançarmos o objetivo proposto.

Neste momento, você provavelmente deve estar se perguntado: o que isso tem a ver com algoritmos e programação? É simples. A lógica auxiliará você na compreensão dos conceitos fundamentais para a construção de algoritmos. Além disso, com ela, você estará preparado para analisar a formalidade e a coerência dos programas.

Inicialmente, você terá a possibilidade de estudar as proposições lógicas, que são essen-ciais para a construção do raciocínio lógico organizado. Em seguida, aprenderá os conectivos lógicos, responsáveis pelo agrupamento das proposições. E, finalmente, poderá explorar uma ferramenta importante para a lógica matemática, que é conhecida como tabela-verdade.

Proposições

Uma das aplicações da lógica é a representação simbólica de raciocínios. Desse modo, podemos dizer que as afirmações que realizamos diariamente são transformadas em símbolos para demonstrar fatos ou transmitir informações.

Uma proposição representa uma afirmação (ou sentença), que pode assumir o valor lógi-co verdadeiro ou o valor falso. As proposições são sempre simbolizadas por letras minúsculas {a,b,c,...x,y,z}. Observe a Tabela 1:

Tabela 1 Valores lógicos.

Sentença Valor Lógico Símbolo

As bolas de futebol são redondas. Verdadeiro p

O sol é azul. Falso q

Dez é menor que sete. Falso r

A neve é branca. Verdadeiro s

Há sentenças que não possuem valor lógico, e, por isso, não são consideradas proposi-ções. Por exemplo:

• Como está você?• Ela é muito talentosa.• Existe vida em outros planetas.

Page 26: Algoritmos e Programação

© Algoritmos e Programação26

Conectivos Lógicos

Os conectivos lógicos são símbolos utilizados para combinar proposições. No dia a dia, uti-lizamos esses conectivos ao falar ao escrever. As proposições formadas por meio da combinação de conectivos são chamadas proposições compostas (GERSTING, 2004).

Observe o exemplo na Tabela 2:

Tabela 2 Proposições.

Sentença Valor Lógico Símbolo

Os cachorros possuem quatro patas. Verdadeiro p

Os gatos adoram leite. Verdadeiro q

Utilizando as proposições simples (p, q), podemos formar algumas proposições compostas com os conectivos e, ou, se ... então. Observe na Tabela 3.

Tabela 3 Proposições Compostas.Proposição Conectivo Proposição Proposição Composta

P e q Os cachorros possuem quatro patas e os gatos adoram leite.

P ou q Os cachorros possuem quatro patas ou os gatos adoram leite.

P se ... então q Se os cachorros possuem quatro patas, então os gatos adoram leite.

É importante notar que o valor lógico de uma proposição composta depende dos valores lógicos das proposições simples que a compõem.

Na lógica matemática, cada conectivo é representado por um símbolo, conforme é apre-sentado na Tabela 4.

Tabela 4 Conectivos.

Conectivo Lógico Significado Símbolo

Negação não ∼

Conjunção e ∧

Disjunção ou ∨

Disjunção Exclusiva ou exclusivo ∨

Condicional se ... então →

Bicondicional se, somente se ↔

Na formulação de proposições compostas, podemos utilizar diversos conectivos, porém, lembre-se de que é necessário inserir um conectivo entre as duas proposições. Por exemplo:

• (a b) → c à incorreto, falta um conectivo entre a e b;• (a ∧ b) → c à correto.

Tabelas-verdade

As tabelas-verdade são um recurso muito utilizado na avaliação de proposições lógicas. Elas permitem avaliar uma proposição em função de todas as entradas possíveis.

Desse modo, o número de linhas de uma tabela-verdade depende do número de proposições simples da proposição composta, assumindo sempre a seguinte regra: 2n (lê-se dois elevado a n), em que n representa o número de proposições simples.

Page 27: Algoritmos e Programação

Claretiano - Centro Universitário

27© U1 – ntrodução à Construção de Algoritmos

Alternativamente, podemos considerar as proposições simples como variáveis e as propo-sições compostas como expressões. Veja um exemplo na Tabela 5.

Tabela 5 Variáveis e expressões.

Expressões Número de variáveis Número de linhas da tabela verdade (2n)

(a ∧ b) 2 22 = 4

(a ∧ b) ↔ c 3 23 = 8

(a ∧ b) ↔ (c ∨ d) 4 24 = 16

Para construir a tabela-verdade, é necessário avaliar todas as possibilidades de entradas para cada proposição simples. Observe, na Tabela 6, uma possível tabela-verdade para proposi-ção (a ∧ b):

Tabela 6 Tabela-verdade para proposição (a ∧ b).

Entrada Saída

a b ...

1 Verdadeiro Verdadeiro ...

2 Verdadeiro Falso ...

3 Falso Verdadeiro ...

4 Falso Falso ...

Para simplificar, podemos representar o valor lógico verdadeiro como V e o valor lógico falso como F. Dessa forma, para a proposição composta (a ∧ b) ↔ c, temos a tabela-verdade descrita na Tabela 7.

Tabela 7 Tabela-verdade da proposição composta (a ∧ b) ↔ c.

Entrada Saída

a b c ...

1 V V V ...

2 V V F ...

3 V F V ...

4 V F F ...

5 F V V ...

6 F V F ...

7 F F V ...

8 F F F ...

Cada conectivo lógico possui sua tabela-verdade. Assim, a tabela-verdade do conectivo lógico negação, simbolizado por ∼p (leia-se "não p"), é representada conforme a Tabela 8.

Tabela 8 Tabela-verdade do conectivo ∼p.

p ∼p

V F

F V

Exemplo• p = Hoje está frio.• ∼p = Hoje não está frio.

Page 28: Algoritmos e Programação

© Algoritmos e Programação28

As proposições compostas do tipo p ∧ q são chamadas de conjunção, que é entendida como p e q, e sua tabela-verdade é representada na forma encontrada na Tabela 9.

Tabela 9 Tabela-verdade da conjunção.

p q p ∧ q

V V V

V F F

F V F

F F F

Exemplo• p = Fernanda é estudiosa.• q = Fernanda tem um bom rendimento nas provas.• p ∧ q = Fernanda é estudiosa e tem um bom rendimento nas provas.

A disjunção representa a combinação ou, expressa pelo símbolo ∨ (leia-se "p ou q"), e sua tabela-verdade está representada na Tabela 10.

Tabela 10 Tabela-verdade da disjunção.

p q p ∨ q

V V V

V F V

F V V

F F F

Exemplo• p = Hoje vou ao clube.• q = Hoje vou trabalhar.• p ∨ q = Hoje vou ao clube ou hoje vou trabalhar.

A disjunção exclusiva, também conhecida como ou exclusivo, é representada pelo símbolo ∨, e a tabela-verdade é demonstrada conforme a Tabela 11. Veja:

Tabela 11 Tabela-verdade da disjunção exclusiva.

p q p ∨ q

V V F

V F V

F V V

F F F

Exemplo• p = Lúcia é bonita.• q = Lúcia é inteligente.• p ∨ q = Ou Lúcia é bonita ou é inteligente.

As proposições também podem ser combinadas na forma "se proposição p, então pro-posição q", e são representadas pelo símbolo →. A proposição composta é denotada por p → q (leia-se "p implica q") e o seu conectivo é chamado condicional, ou implicação. Observe, na Tabela 12, a tabela-verdade expressa na forma condicional.

Page 29: Algoritmos e Programação

Claretiano - Centro Universitário

29© U1 – ntrodução à Construção de Algoritmos

Tabela 12 Tabela-verdade do condicional.

p q p → qV V VV F FF V VF F V

Exemplo• p = Hoje é sábado.• q = Hoje vou sair.• p→q = Se hoje é sábado, então vou sair.

O conectivo bicondicional, ou equivalência, é simbolizado por ↔. A expressão p ↔ q é uma abreviatura de (p→q) ∧ (q→p); assim, a tabela-verdade pode ser definida como é mostra-do na Tabela 13:

Tabela 13 Tabela-verdade do bicondicional.

p q p ↔ qV V VV F FF V FF F V

Exemplo• p = João ganhará presentes no Natal.• q = João é um bom menino.• p↔q = João ganhará presentes no Natal, se e somente se for um bom menino.

Veja resumidamente, na Tabela 14, as tabelas-verdade para os principais conectivos.

Tabela 14 Tabela do resumo das tabelas-verdade dos principais conectivos.

p q p ∧ q p ∨ q p ∨ q p → q p ↔ qV V V V F V VV F F V V F FF V F V V V FF F F F F V V

Conforme comentado anteriormente, podemos utilizar as tabelas-verdade para avaliar proposições compostas. Desse modo, vamos a alguns exemplos:

Exemplo 1: (a ∨ b) → a

Tabela 15 Tabela-verdade da proposição (a ∨ b) → a.Entradaa b (a ∨ b) → a

1 V V V V2 V F V V3 F V V F4 F F F V

Resultado

Page 30: Algoritmos e Programação

© Algoritmos e Programação30 e

No Exemplo 1, você pôde notar que as colunas 1 e 2 representam as possíveis entradas para as proposições a e b. A coluna 3 representa o resultado da avaliação da proposição com-posta (a ∨ b). Para facilitar o entendimento, a coluna 3 foi nomeada .

Por fim, a coluna 4 contém o resultado da coluna 3 () combinada com o conectivo → e a coluna 1. É sempre importante destacar a coluna que representa o resultado final da tabela--verdade. Além disso, você pôde observar que essa tabela possui um total de quatro linhas, pois o número de proposições (ou variáveis) é igual a 2, ou seja, 22 = 4.

Exemplo 2: (a ↔ b) ∨ (a ↔ c)

Tabela 16 Tabela-verdade da proposição (a ↔ b) ∨ (a ↔ c).Entrada

a b c (a ↔ b) ∨ (a ↔ c)V V V V F VV V F V V FV F V F V VV F F F F FF V V F F FF V F F V VF F V V V F

F F F V F V

Resultado

No Exemplo 2, inicialmente são resolvidas as expressões que estão dentro dos parênteses. O resultado da expressão (a ↔ b) é expresso na coluna , enquanto o resultado da expressão (a ↔ c) é representado na coluna . Finalmente, a coluna em destaque recebe a disjunção exclusiva entre as colunas e .

Exemplo 3: ∼(a ∨ b) → ( (b ∧ c) ↔ (b ∧ d) )

Tabela 17 Tabela-verdade da proposição ∼(a ∨ b) → ( (b ∧ c) ↔ (b ∧ d) ).Entrada

a b c d (a ∨ b) ∼ → (b ∧ c) ↔ (b ∧ d)

1 V V V V V F V V V V

2 V V V F V F V V F F

3 V V F V V F V F F V

4 V V F F V F V F V F

5 V F V V V F V F V F

6 V F V F V F V F V F

7 V F F V V F V F V F

8 V F F F V F V F V F

9 F V V V V F V V V V

10 F V V F V F V V F F

11 F V F V V F V F F V

12 F V F F V F V F V F

13 F F V V F V V F V F

14 F F V F F V V F V F

15 F F F V F V V F V F

16 F F F F F V V F V F

Resultado

Page 31: Algoritmos e Programação

Claretiano - Centro Universitário

31© U1 – ntrodução à Construção de Algoritmos e

Tautologias, contradições e contingências

Os resultados das tabelas-verdade podem ser classificados considerando três critérios, a saber: tautologias, contradições e contingências. Observe, a seguir, a explicação de cada critério:

• Tautologia: quando o resultado da tabela-verdade apresenta apenas valores verdadeiros (V).• Contradição: para tabelas-verdade contendo todos os valores resultantes falsos (F).• Contingência: para tabelas-verdade com valores tanto verdadeiros (V) quanto falsos (F).

Exemplo1) Seja p a proposição "Chove" e ∼p sua negação "Não chove".

• "Chove ou não chove" é uma tautologia, pois o resultado da tabela-verdade é sem-pre verdadeiro.

Tabela 18 Tabela-verdade da proposição (p ∨ ∼p).

p ∼p (p ∨ ∼p)

V F V

F V V

• "Chove e não chove" é uma contradição, pois a tabela verdade possui apenas valores falsos no resultado.

Tabela 19 Tabela-verdade da proposição (p ∧ ∼p).

p ∼p (p ∧ ∼p)

V F F

F V F

• "Se chove, então não chove" é uma contingência, uma vez que o resultado da tabela possui valores verdadeiros e falsos.

Tabela 20 Tabela-verdade da proposição (p → ∼p).p ∼p (p → ∼p)

V F F

F V F

6. ELABORAÇÃO E REPRESENTAÇÃO DE ALGORITMOS

Os conceitos de lógica apresentados no tópico 5 tiveram como objetivo a formalização e a representação dos pensamentos. Por meio da lógica, você pôde perceber que é possível definir, de maneira organizada e coerente, uma sequência de raciocínio e, com isso, atingir os objetivos propostos.

Todo esse ferramental apresentado pode ser empregado na construção de algoritmos e programas.

Assim, quando você for escrever programas para computador, um dos primeiros passos é a criação de algoritmos. Por meio deles, você pode esboçar todos os passos necessários para a resolução de um determinado problema.

Segundo Ascencio (1999), o algoritmo é a descrição de uma sequência de passos que deve ser seguida para a realização de uma tarefa.

Page 32: Algoritmos e Programação

© Algoritmos e Programação32

Dessa forma, em nosso cotidiano, utilizamos algoritmos a todo instante para realizar ati-vidades, como, por exemplo, ir ao supermercado, trocar o pneu do carro, limpar a casa, passear com o cachorro, ir ao trabalho, dentre outros. A seguir, serão apresentados alguns exemplos de algoritmos do cotidiano, tais como: trocar o pneu do carro e ir ao trabalho. Veja:

Algoritmo 3 – Trocar o pneu do carro

1 Desparafusar a roda.

2 Levantar o carro com o macaco.

3 Retirar a roda com o pneu furado.

4 Colocar o estepe.

5 Abaixar o carro.

6 Parafusar a roda.

Algoritmo 4 – Ir ao trabalho1 Acordar cedo.

2 Levantar da cama.

3 Ir ao banheiro.

4 Vestir as roupas.

5 Tomar café.

6 Ir para o trabalho.

A Figura 1 ilustra graficamente o fluxo de execução de um algoritmo. O estado inicial repre-senta o ponto de partida do algoritmo, ou seja, o ponto em que a primeira ação será executada. A sequência lógica define o conjunto de passos, desde o início, que devem ser seguidos para atingir os objetivos. É imprescindível que esses passos sejam claros e precisos, caso contrário, o objetivo pode não ser atingido. Por último, o estado final determina qual será o resultado da execução do algoritmo.

estado inicial

estado final

sequência lógica

Figura 1 Fluxo de execução de um algoritmo.

Quando pensamos em programação de computadores, utilizamos os algoritmos para abs-trair o raciocínio em um conjunto de passos que devem ser executados pelo computador. Esses passos solucionam um determinado problema.

Podemos, por exemplo, criar um algoritmo computacional para determinar a soma entre dois números. Observe o algoritmo a seguir:

Page 33: Algoritmos e Programação

Claretiano - Centro Universitário

33© U1 – ntrodução à Construção de Algoritmos

Algoritmo 5 – Soma entre dois números

1 Receber o primeiro número.

2 Receber o segundo número.

3 Calcular a soma entre o primeiro e o segundo número.

4 Exibir o resultado na tela.

Outro exemplo de algoritmo pode ser elaborado para determinar se uma pessoa pode ou não votar. Observe:

Algoritmo 6 – Votar

1 Receber a idade.

2 Se a idade for maior ou igual a 16 exibir "Você já pode votar."

3 Se a idade for menor que 16 exibir "Você não pode votar."

Os exemplos de algoritmos apresentados até o momento utilizam a maneira mais sim-ples de representação, que é chamada de descrição narrativa. Além dessa representação, os algoritmos também podem ser representados por meio de fluxogramas e pseudocódigos (ou portugol) (ASCENCIO, 2002).

Desse modo, podemos dizer que a descrição narrativa é a forma mais simples de elabo-ração de algoritmos. Esse método tem como objetivo a abstração de problemas em algoritmos por meio da utilização da linguagem natural.

Como já mencionamos, possuímos outra maneira de construir algoritmos, que é por meio de fluxogramas. Nesse caso, a abstração de problemas é representada por meio de símbolos gráficos bem definidos, os quais esboçam uma ação dentro da sequência lógica do algoritmo. Os principais símbolos são ilustrados no Quadro 1. Observe:

Quadro 1 Principais símbolos utilizados na construção de fluxogramas.

SÍMBOLOS UTILIZADOS NA CONSTRUÇÃO DE FLUXOGRAMAS

Símbolo Significado

Início ou fim do algoritmo.

Fluxo de dados durante a execução do algoritmo.

Cálculos realizados pelo algoritmo.

Entrada de dados.

Saída de dados.

Tomadas de decisão.

Fonte: adaptado de Ascencio (2002).

Page 34: Algoritmos e Programação

© Algoritmos e Programação34

Além dos símbolos ilustrados no quadro (principais símbolos utilizados na construção de Fluxogramas), os algoritmos também podem ser representados por meio de pseudocódigos, cuja elaboração segue regras bem definidas para a resolução de problemas.

Independentemente da forma de elaboração dos algoritmos (descrição narrativa, fluxo-grama ou pseudocódigo), todas visam à construção de programas. Assim, um programa de com-putador pode ser definido como a tradução de um algoritmo para uma linguagem que apenas o computador entende, também conhecida como "linguagem de programação". A Figura 2 ilustra o processo de abstração do raciocínio em algoritmo e a tradução em uma linguagem de progra-mação. Veja:

 

raciocínio

algoritmo

programade

computador

abstração

tradução

Figura 2 Processo de construção de programas de computador (raciocínio, algoritmo e programa).

Para facilitar o entendimento dos três tipos de algoritmos, vamos, a seguir, elaborar alguns exemplos completos utilizando as representações de descrição narrativa, fluxograma e pseudo-código. Observe que a mesma situação está representada nos três tipos de algoritmos.

Algoritmo 7 – Somar três números e apresentar o resultado

Descrição narrativa

1 Receber o primeiro número.

2 Receber o segundo número.

3 Receber o terceiro número.

4 Somar os três números.

5 Apresentar o resultado obtido com a soma.

Page 35: Algoritmos e Programação

Claretiano - Centro Universitário

35© U1 – ntrodução à Construção de Algoritmos

Fluxograma

início

fim

soma = (num1+num2+num3)

soma

num1, num2 e num3 leitura dos números

exibição do resultado

cálculo da soma

Figura 3 Fluxograma da soma de três números.

Pseudocódigo

Código 1

1 algoritmo "soma três números"

2 {Algoritmo elaborado para somar três números

3 e apresentar o resultado }

4

5 declare

6 num1, num2, num3 : inteiro

7 Soma : inteiro

8

9 inicio

10

11 escreva("Entre com o primeiro número:")

12 leia(num1)

13 escreva("Entre com o segundo número:")

14 leia(num2)

15 escreva("Entre com o terceiro número:")

16 leia(num3)

17 Soma <- num1+num2+num3

18 escreva("Resultado = ", soma)

19

20 fimalgoritmo

Fim código 1

Algoritmo 8 – Calcular a idade de uma pessoa

Descrição narrativa1 Receber o ano de nascimento de uma pessoa.2 Receber o ano atual.3 Idade da pessoa é igual ao ano atual – ano de nascimento.4 Apresentar o resultado.

Page 36: Algoritmos e Programação

© Algoritmos e Programação36

Fluxograma

início

fim

idade = ano_atual – ano_nascimento

idade

ano_nascimento, ano_atual

leitura dos anos, exemplo: ano_nascimento = 1990 e ano_atual = 2010

exibição do resultado

cálculo da idadeidade = 20 anos

Figura 4 Fluxograma do cálculo da idade de uma pessoa.

Pseudocódigo

Código 2

1 algoritmo "idade"

2 {algoritmo para calcular a idade de uma pessoa}

3 declare

4 ano_nascimento: inteiro

5 ano_atual: inteiro

6 idade: inteiro

7 inicio

8

9 escreva("Informe o ano do seu nascimento: ")

10 leia(ano_nascimento)

11 escreva("Informe o ano atual: ")

12 leia(ano_atual)

13 idade <- ano_nascimento - ano_atual

14 escreva("Você tem ", idade, " anos")

15

16 fimalgoritmo

Fim código 2

Algoritmo 9 – Calcular a média entre duas notas e determinar se o aluno foi "Aprovado" ou "Reprovado"

Descrição narrativa

1 Receber a primeira nota.

2 Receber a segunda nota.

Page 37: Algoritmos e Programação

Claretiano - Centro Universitário

37© U1 – ntrodução à Construção de Algoritmos

3 Calcular a soma das notas.

4 Calcular a média das notas.

5 Se a média alcançada for maior ou igual a 5,exibir "Aprovado".

6 Se a média alcançada for menor que 5,exibir "Reprovado".

Fluxograma

início

fim

Aprovado

nota1 e nota2

Simmédia >=5

Não

soma = nota1+nota2

média = soma/2média

Reprovado

Figura 5 Fluxograma do cálculo da média entre duas notas.

Pseudocódigo

Código 3

1 algoritmo "média das notas"

2 {algoritmo para calcular a média entre duas notas}

3

4 declare

5 nota1, nota2: real

6 soma, media: real

7 inicio

8

9 escreva("Informe a primeira nota: ")

10 leia(nota1)

11 escreva("Informe a segunda nota: ")

12 leia(nota2)

13

14 soma <- nota1 + nota2

15 media <- soma/2

16 escreva("Média = ", media)

17

Page 38: Algoritmos e Programação

© Algoritmos e Programação38

18 se ( media >= 5 ) entao

19 escreva("Aprovado")

20 fimse

21 se ( media < 5) entao

22 escreva("Reprovado")

23 fimse

24

25 fimalgoritmo

Fim código 3

Algoritmo 10 – Determinar o maior número

Descrição narrativa1 Receber o primeiro número.

2 Receber o maior número.

3 Se o primeiro número for maior que o segundo.O primeiro número é o maior.

4 Se o segundo número for maior que o primeiro.O segundo número é o maior.

5 Se o primeiro número for igual ao segundo.Os números são iguais.

Fluxograma

início

fim

Num1 é o maior

Num1 e Num2

SimNum1 > Num2

Num2 > Num1Num2 é o

maior

Num1 = Num2Num1 igual

a Num2

Sim

Sim

Não

Não

Figura 6 Fluxograma da determinação do maior número.

Page 39: Algoritmos e Programação

Claretiano - Centro Universitário

39© U1 – ntrodução à Construção de Algoritmos

Pseudocódigo

Código 4

1 algoritmo "maior número"

2 {algoritmo para determinar o maior número}

3 declare

4 num1, num2: inteiro

5 inicio

6 escreva("Informe o primeiro número: ")

7 leia(num1)

8 escreva("Informe o segundo número:")

9 leia(num2)

10

11 se ( num1 > num2 ) então

12 escreva("Número 1 é maior que número 2")

13 Fimse

14 se ( num2 > num1 ) então

15 escreva("Número 2 é maior que número 1")

16 Fimse

17 se ( num1 = num2 ) entao

18 escreva("Os números são iguais")

19 fimse

20 fimalgoritmo

Fim código 4

Algoritmo 11 – Construir uma calculadora para as operações básicas.

As operações permitidas pela calculadora são: soma (+), subtração (-), multiplicação (*) e divisão (/). No caso da divisão, o algoritmo considera que o segundo valor informado sempre será diferente de zero, pois, caso contrário, não é possível realizar a divisão.

Descrição narrativa1 Receber o primeiro valor.

2 Receber o segundo valor.

3 Receber a operação.

4 Se a operação for igual a soma(+)exibir a soma do valor1 pelo valor2.

5 Se a operação for igual a subtração(-)exibir a subtração do valor1 pelo valor2.

6 Se a operação for igual a multiplicação(*)exibir a multiplicação do valor1 pelo valor2.

7 Se a operação for igual a divisão(/)exibir a divisão do valor1 pelo valor2.

Page 40: Algoritmos e Programação

© Algoritmos e Programação40

Fluxograma

início valor1, valor2, operacao

operacao = +

operacao = -

operacao = *

operacao = /

fim

valor1+

valor2

operação inválida

valor1-

valor2

valor1*

valor2

valor1/

valor2

Figura 7 Fluxograma da construção de uma calculadora.

Pseudocódigo

Código 5

1 algoritmo "calculadora"

2 {algoritmo para simular o funcionamento de

3 uma calculadora}

4 declare

5 valor1, valor2: real

6 operacao: caractere

7 inicio

8 escreva("Informe o primeiro valor: ")

9 leia(valor1)

10 escreva("Informe o segundo valor: ")

11 leia(valor2)

12 escreva("Informe a operação: ")

13 leia(operacao)

14

15 se ( operacao = "+" ) entao

16 escreva("Resultado = ", valor1+valor2)

17 senao

18 se ( operacao = "-" ) entao

19 escreva("Resultado = ", valor1-valor2)

20 senao

21 se ( operacao = "*" ) entao

Page 41: Algoritmos e Programação

Claretiano - Centro Universitário

41© U1 – ntrodução à Construção de Algoritmos

22 escreva("Resultado = ", valor1*valor2)

23 senao

24 se ( operacao = "/" ) entao

25 escreva("Resultado = ", valor1/valor2)

26 senao

27 escreva("Operação inválida")

28 fimse

29 fimse

30 fimse

31 fimse

32

33 fimalgoritmo

Fim código 5

Nos cinco exemplos apresentados, você pôde perceber, de maneira ilustrativa, o processo de construção de algoritmos utilizando as três metodologias: descrição narrativa, fluxograma e pseudocódigo. Ao longo dos próximos tópicos, você terá a oportunidade de estudar, detalhada-mente, cada um dos conceitos empregados nesses algoritmos.

7. AMBIENTE PARA CONSTRUÇÃO DE ALGORITMOS

Para construir e testar seus algoritmos, você pode utilizar programas específicos. Esses programas permitem elaborar algoritmos por meio da metodologia do pseudocódigo e visuali-zar seu funcionamento.

Um dos programas mais utilizados para esse propósito é o VisuAlg, que pode ser obtido gratuitamente na internet. Atualmente, o VisuAlg está na versão 2.0. No Quadro 2, você encon-tra algumas opções para download.

Quadro 2 Opções para download. OPÇÕES PARA DOWNLOAD

Programas Endereços

Apoio Informática* (Desenvolvedor do VisuAlg) http://www.apoioinformatica.inf.br/

Superdownloads* http://www.superdownloads.com.br/busca.aspx?q=visualg

BaixaKi* http://www.baixaki.com.br/download/visualg.htm*Acesso em: 13 nov. 2012.

Como instalar e executar o VisuAlg1) Faça o download do programa VisuAlg (∼ 897k). Para tanto, acesse o site <http://www.

apoioinformatica.inf.br/visualg/setupv2.exe>.2) Após terminar o download, clique duas vezes sobre o arquivo setupv2.exe. Você vi-

sualizará a tela inicial apresentada na Figura 8. Clique no botão Avançar.

Page 42: Algoritmos e Programação

© Algoritmos e Programação42∼∧∨∨→↔

Figura 8 Instalação do programa VisuAlg.

3) Em seguida, selecione o diretório para instalação do VisuAlg, ou, simplesmente, clique no botão Avançar.

Figura 9 Instalação do programa VisuAlg – continuação.

4) Para aceitar as configurações padrão do Instalador do VisuAlg, clique no botão Avan-çar até encontrar o botão Instalar. Finalmente, a instalação do VisuAlg será iniciada.

5) Concluída a instalação, você poderá iniciar o VisuAlg por meio do menu IniciaràPro-gramasàApoio InformáticaàVisuAlg. Observe, na Figura 10, a tela inicial do VisuAlg:

Page 43: Algoritmos e Programação

Claretiano - Centro Universitário

43© U1 – ntrodução à Construção de Algoritmos

Figura 10 Tela inicial do ambiente para construção de algoritmos VisuAlg.

Escrever e executar algoritmos com o VisuAlg

Vamos, agora, escrever nosso primeiro algoritmo utilizando o VisuAlg. O exemplo utilizado será extremamente simples, pois você deverá apenas testar as funcionalidades do ambiente.

Carregue o programa VisuAlg. Para criar novos algoritmos, você pode utilizar o menu Arquivo>Novo. Digite o algoritmo descrito no Código 6:

Código 6

1 algoritmo "olá mundo"

2

3 inicio

4 escreva("Olá Mundo!")

5 fimalgoritmo

Fim código 6

Nesse momento, a tela do VisuAlg deve ser parecida com a da Figura 11:

Page 44: Algoritmos e Programação

© Algoritmos e Programação44

Figura 11 Ambiente para construção de algoritmos VisuAlg - continuação.

Utilize o menu Arquivo>Salvar para armazenar o seu algoritmo recém-criado. Veja que o VisuAlg salva os algoritmos com a extensão .alg.

Finalmente, executaremos o algoritmo. Para isso, utilize o menu Algoritmo>Executar, ou simplesmente pressione a tecla de atalho F9. A tela representada na Figura 12 será exibida. Veja:

Figura 12 Resultado da execução de um algoritmo no VisuAlg.

Page 45: Algoritmos e Programação

Claretiano - Centro Universitário

45© U1 – ntrodução à Construção de Algoritmos

Parece simples, não é? Agora, é só continuar os seus estudos.

Boa sorte!

8. QUESTÕES AUTOAVALIATIVAS

Sugerimos que você procure responder, discutir e comentar as questões a seguir que tra-tam da temática desenvolvida nesta unidade.

A autoavaliação pode ser uma ferramenta importante para você testar o seu desempenho. Se você encontrar dificuldades em responder a essas questões, procure revisar os conteúdos estudados para sanar as suas dúvidas. Esse é o momento ideal para que você faça uma revisão desta unidade. Lembre-se de que, na Educação a Distância, a construção do conhecimento ocor-re de forma cooperativa e colaborativa; compartilhe, portanto, as suas descobertas com os seus colegas.

Confira, a seguir, as questões propostas para verificar o seu desempenho no estudo desta unidade:

1) A lógica de programação é fundamental no desenvolvimento de sistemas computacionais, pois é por meio da lógica que os problemas do mundo real são abstraídos para o mundo virtual. Dentro desse contexto, responda as seguintes questões:a) O que são proposições? Defina e apresente pelo menos cinco exemplos (por exemplo, "O Brasil é pentacam-

peão de futebol").b) Qual a utilidade dos conectivos lógicos? E qual a relação desses conectivos com as proposições?c) Apresente pelo menos dois exemplos de expressões do cotidiano que utilizam o conectivo lógico e. Por

exemplo: "Os cachorros possuem quatro patas e os gatos adoram leite".d) Apresente pelo menos dois exemplos de expressões do cotidiano que utilizam o conectivo lógico ou. Por

exemplo: "Os cachorros possuem quatro patas ou os gatos adoram leite".e) Apresente pelo menos dois exemplos de expressões do cotidiano que utilizam o conectivo lógico se ... en-

tão. Por exemplo: "Se os cachorros possuem quatro patas, então os gatos adoram leite".

2) Os principais conectivos lógicos são: negação, conjunção, disjunção, disjunção exclusiva, condicional e bicondi-cional. Elabore uma tabela contendo o conectivo lógico e seu respectivo símbolo.

3) O que são tabelas-verdade e qual é sua relação com a lógica de programação?

4) Qual o número de linhas de uma tabela-verdade contendo cinco variáveis?

5) Elabore uma tabela-verdade, contendo pelo menos três variáveis, em que o resultado final seja uma tautologia. Lembre-se que o termo "tautologia" é utilizado para definir uma tabela-verdade em que todos os seus resulta-dos são verdadeiros.

6) Utilizando a mesma ideia do exercício anterior, elabore uma tabela-verdade, contendo pelo menos três variá-veis, em que o resultado final seja uma contradição. Uma tabela é classificada como contradição quando o seu resultado possui apenas valores falsos.

7) Utilizando as suas palavras, defina o termo algoritmo.

8) Descreva e apresente um exemplo de um algoritmo representado na forma de descrição narrativa.

9) Descreva e apresente um exemplo de um algoritmo representado na forma de fluxograma.

10) Descreva e apresente um exemplo de um algoritmo representado na forma de pseudocódigo.

9. CONSIDERAÇÕES

Chegamos ao final do estudo da primeira unidade de Algoritmos e Programação. Nesta unidade, você teve a oportunidade de aprender os principais conceitos a respeito da lógica, como, por exemplo, as proposições, os conectivos e as tabelas-verdade. Além disso, pôde es-

Page 46: Algoritmos e Programação

© Algoritmos e Programação46

tudar os conceitos fundamentais dos algoritmos e conhecer os três tipos de representação: a descrição narrativa, o fluxograma e o pseudocódigo. Por fim, aprendeu a instalar o programa VisuAlg, que será utilizado para construção e teste de algoritmos.

10. REFERÊNCIAS BIBLIOGRÁFICAS

ABE, J. M.; SILVA FILHO, J. I.; SCALZITTI, A. Introdução à lógica para a ciência da computação. São Paulo: Arte & Ciência, 2001.ASCENCIO, A. F. G. Lógica de programação com Pascal. São Paulo: Makron Books, 1999. ASCENCIO, A. F. G.; EDILENE, A. V. de. Fundamentos da programação de computadores: algoritmos, Pascal e C/C++. São Paulo: Prentice Hall, 2002.GERSTING, J. L. Fundamentos matemáticos para a ciência da computação. 5. ed. Rio de Janeiro: Livros Técnicos e Científicos – LTC, 2004.