LÓGICA DE PROGRAMAÇÃO

Documentos relacionados
Algoritmos e Linguagem de Programação I

INTRODUÇÃO À PROGRAMAÇÃO

Técnicas de Programação

Algoritmos e Linguagem de Programação I

Programação de Redes de Computadores

Processamento de Dados aplicado à Geociências. AULA 3: Algoritmos computacionais Representação de Algoritmos Sintaxe Tipos de dados Expressões

Aula 4B. Lógica e Algoritmos. Profª. Fabiany

INFORMÁTICA APLICADA AULA 02 ALGORITMOS

CURSO de NIVELAMENTO INTRODUÇÃO À PROGRAMAÇÃO

Introdução a Lógica de Programação

ALGORITMOS. O que é Algoritmo? Algoritmo é um dos processo para criação

ALGORITMOS AULA 1. Profª Amanda Gondim

01/08/2011. Introdução Lógica Sequencia lógica Instruções Algoritmos Programas. Lógica. Lógica na programação. Instrução.

Aplicaremos a técnica do teste de mesa sobre o algoritmo abaixo, o qual visa determinar o número de vértices de uma figura geométrica.

I - CONCEITOS INICIAIS

Algoritmos e Programação

Estruturas de Controle de Fluxo

Noções de algoritmos - Aula 1

Lógica de Programação. Profas. Simone Campos Camargo e Janete Ferreira Biazotto

Ivanovitch Medeiros Dantas da Silva. Natal, 01 de setembro de 2011

CONCEITOS DE ALGORITMOS

Estruturas de Controle de Fluxo

Capítulo 1 Conceitos Básicos

Algoritmos e Programação

Prof. Jorge Cavalcanti

LÓGICA DE PROGRAMAÇÃO. Algoritmos Computacionais. Sérgio Carlos Portari Júnior

Introdução à Programação. 2ª aula. Prof. José Honorato F. Nunes

A única diferença entre o difícil e o impossível é que o último demora um pouco mais de tempo para ser alcançado..

01/08/2011. Tipos de dados Numéricos Alfanuméricos Lógicos. Numéricos. Tipos de dados. Dados Numéricos Inteiros. Dados Numéricos Reais.

Conceitos Básicos. Professor: Juliano Lucas Gonçalves.

- Aula 01, 02, 03 e 04 Apresentação da disciplina.

Algoritmos e Programação de Computadores Disciplina:

BCC Introdu c ao ` a Programa c ao Portugol Guillermo C amara-ch avez UFOP 1/35

Algoritmos e Programação. Noções de Lógica e Algoritmos Tarcio Carvalho

Introdução à Programação de Computadores Fabricação Mecânica

Algoritmos e Técnicas de Programação Introdução Givanaldo Rocha de Souza

LISTA DE EXERCÍCIOS. 2) Explique a diferença entre algoritmo computacional e não computacional.

Algoritmos e Estrutura de Dados I Conceitos de Algoritmos. Prof. Elyssandro Piffer

Programação Estruturada Aula VisualG

Oficina de Introdução de Programação usando Linguagem Python Prof. Ms. Perini

Algoritmos e Programação

Portugol. Tiago Alves de Oliveira

Introdução a Computação

Algoritmo e Programação Matemática

Capítulo 1 - Lógica e Algoritmos

4 Introdução ao Algoritmo

08/05/2012. Tipos de dados. Tipos de dados. Elementos Básicos. Tipos de dados. Elementos Básicos Tipos de dados. Dados e seus tipos:

Algoritmos e Lógica de Programação. Notas de Aula

PPM CONTEÚDO. Lógica de programação Programação para manufatura Sistemas supervisorios PROGRAMAÇÃO PARA MANUFATURA 05/03/2009

LÓGICA DE PROGRAMAÇÃO. PROFª. M.Sc. JULIANA H Q BENACCHIO

Lógica de Programação e Algoritmos. Prof. André Y. Kusumoto

Algoritmos Computacionais

LISTA DE EXERCÍCIOS. 2) Explique a diferença entre algoritmo computacional e não computacional.

PSEUDO-CÓDIGO. Nickerson Fonseca Ferreira

Programação Estruturada

Programação Procedimental

Prof. Jorge Cavalcanti

LISTA DE EXERCÍCIOS. 2) Explique a diferença entre algoritmo computacional e não computacional.

Introdução à Algoritmos. Professora: Fabíola Gonçalves.

Introdução à Programação. Ceça Moraes

Algoritmos e Programação - Engenharia da Computação -

Algoritmos. Prof. Jonatas Bastos Site:

CAI Fluxograma Revisão 7

Pseudocódigo e Visualg

Fluxograma. Símbolo Nome Descrição

Algoritmo e Programação. Capítulo 2 Tópicos Preliminares

Introdução à Programação. slides de Deise Sacol

Prof. A. G. Silva. 14 de março de Prof. A. G. Silva INE5231 Computação Científica I 14 de março de / 26

ALGORITMOS E TÉCNICAS DE PROGRAMAÇÃO

Subalgoritmos. algoritmo completo é dividido num algoritmo principal e em diversos subalgoritmos (tantos quantos forem necessários ou convenientes).

Oficina de Python Prof. Me. José Carlos Perini

Estrutura de um Algoritmo, Variáveis, Comandos de Entrada e Saída e Expressões Aritméticas

Programação para Games I

Estruturas de Decisão

2. Criação de Algoritmos

CAPÍTULO 3 INSTRUÇÕES BÁSICAS

Oficina de Python Prof. Me. José Carlos Perini

Conceitos Básicos de Algoritmos

Faculdade de Estudos Avançados do Pará Disciplina: Algoritmos Professor: Armando Hage Algoritmos- continuação

CURSO SUPERIOR DE TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS DISCIPLINA : INTRODUÇÃO À LÓGICA DE PROGRAMAÇÃO ASSUNTO: ALGORITMOS

Estruturas de Controle de Fluxo

Introdução à Pseudo-código PROGRAMAÇÃO I (COM06842) LÓGICA E TÉCNICA DE PROGRAMAÇÃO (COM06039)

Sintática: como é escrito cada elemento da linguagem de programação.

Fluxograma. Conjunto de símbolos utilizados em fluxogramas

LINGUAGEM ALGORÍTMICA

Conceitos e Representação de Algoritmos

Universidade Federal de Uberlândia Faculdade de Computação. Conceitos básicos de algoritmos Prof. Renato Pimentel. Computação

Introdução à Programação. slides de Deise Sacol

Conceitos básicos de algoritmos

Introdução à Computação

PROGRAMADOR JAVA. Aula 0X31 Semanas - 0b Instrutor : Léo Billi

Professor Mauricio Lederer Algoritmos. Entrada e saída de dados

ALGORITMO ALGORITMO NÃO COMPUTACIONAL

Introdução à Algoritmos INF 1005 e INF Programação I

Introdução a programação Visão geral

PC Fluxograma Revisão 8

Aula 4 Estruturas Condicionais

Conceitos Básicos ENTRADA PROCESSAMENTO SAÍDA

Estruturas de Decisão

Transcrição:

LÓGICA DE PROGRAMAÇÃO Prof. Marcelo West Araçuaí 2013

Sumário 1. Introdução... 1 1.1 Algoritmos não computacionais... 2 1.2 Algoritmos computacionais... 4 1.2.1 Teste de Mesa... 6 1.4 Formas de Representação de Algoritmos... 8 1.3 Exercícios... 12 2. Portugol... 14 2.1 Variáveis e constantes... 14 2.1.1 Constante... 14 2.1.2 Variável... 15 2.1.3 Tipos de dados... 15 2.2 Operadores... 16 2.3 Blocos e comandos básicos de controle... 18 3. Referências bibliográficas... 22

Índice de Figuras Figura 1: Exemplo de algoritmo não computacional... 2 Figura 2: Outro exemplo de algoritmo não computacional... 3 Figura 3: Etapas de criação de um algoritmo... 5 Figura 4: Entrada - Processamento - Saída... 5 Figura 5: Símbolos de um fluxograma... 9 Figura 6: Fluxograma do algoritmo média... 10 Figura 7: Diagrama que representa um identificador... 14 Figura 8: Tipos de dados... 15 Figura 9: Diagrama que representa a definição de uma variável... 16 Figura 10: Operadores aritméticos... 16 Figura 11: Operadores relacionais... 17 Figura 12: Operadores lógicos... 18 Figura 13: Sintaxe de atribuição... 18

1. Introdução Lógica é a forma correta de organizar os pensamentos e demonstrar o raciocínio de maneira formal. A utilização da lógica é a melhor forma de solucionar problemas e atingir objetivos. Sempre que se quer pensar, falar ou escrever corretamente deve-se colocar os pensamentos em ordem. Exemplos: Todo mamífero é animal Todo cavalo é mamífero Portanto, todo cavalo é animal A gaveta está fechada. A bala está na gaveta. Preciso primeiro abrir a gaveta, para depois pegar a bala. A lógica é usada no dia a dia das pessoas que trabalham com computação para solucionar problemas de forma eficiente. Algumas definições de lógica aplicada à programação de sistemas: A lógica de programação é necessária para pessoas que desejam trabalhar com desenvolvimento de sistemas e programas, ela permite definir a sequencia de passos para o desenvolvimento. A lógica é a ciência que estuda as leis e os critérios de validade que regem o pensamento e a demonstração, ou seja, ciência dos princípios formais do raciocínio. Sequência lógica são passos executados até atingir um objetivo ou solução de um problema. Resumindo... Lógica de programação é a técnica de encadear pensamentos para atingir determinado objetivo. 1

1.1 Algoritmos não computacionais Um algoritmo é uma sequência de instruções finita e ordenada de forma lógica para a resolução de uma determinada tarefa ou problema. São exemplos de algoritmos instruções de montagem, receitas, manuais de uso, etc. Um algoritmo não é a solução do problema, pois, se assim fosse, cada problema teria um único algoritmo. Então, pode-se afirmar que um algoritmo é um caminho para a solução de um problema. Em geral, existem muitos (senão infinitos) caminhos que levam a uma solução satisfatória. Instruções são um conjunto de regras ou normas definidas para a realização ou emprego de algo. Em informática, é o que indica a um computador uma ação elementar a executar. Um algoritmo não computacional é um algoritmo cuja sequência de passos, a princípio,não pode ser executada por um computador. Abaixo é apresentado um algoritmo não computacional cujo objetivo é fazer uma ligação telefônica. Provavelmente você executou o algoritmo deste exemplo diversas vezes. O termo algoritmo está muito ligado à Ciência da Computação, mas, na realidade, ele pode ser aplicado a qualquer problema cuja solução possa ser decomposta em um grupo de instruções. Início 1 Tirar o fone do gancho 2 Ouvir o sinal de linha 3 Teclar o número desejado 4 Esperar a pessoa atender 4.1 Conversar 5 Desligar Fim Figura 1: Exemplo de algoritmo não computacional 2

Um outro exemplo típico de algoritmo é uma receita culinária, como no exemplo abaixo. Início 1 Pegar um ovo 2 Acrescentar manteiga na frigideira 3 Quebrar o ovo na frigideira 4 Acrescentar sal 5 Esperar fritar 6 Desligar o fogão 7 Tirar o ovo da frigideira 8 Colocar o ovo no pão Fim Figura 2: Outro exemplo de algoritmo não computacional Para que o algoritmo possa ser útil, é necessário ainda que quem faz uso dele conheça os termos utilizados nas instruções. O algoritmo do exemplo só será útil para alguém que seja fluente na língua portuguesa e conheça o significado dos verbos pegar, acrescentar, quebrar, esperar, desligar, tirar e colocar, assim como dos substantivos utilizados no contexto de uma receita culinária. Em outras palavras, é preciso que a linguagem utilizada no algoritmo seja conhecida tanto por quem o escreveu quanto por quem vai executá-lo. Para que o algoritmo possa ser executado por uma máquina é importante que as instruções sejam corretas e sem ambiguidades. Portanto, a forma especial de linguagem que utilizaremos é bem mais restrita que o Português e com significados bem definidos para todos os termos utilizados nas instruções. Essa linguagem é conhecida como Português Estruturado (às vezes também chamada de Portugol). Ela é, na verdade, uma simplificação extrema do Português, limitada a umas poucas palavras e estruturas que têm um significado muito bem definido. Ao conjunto de palavras e regras que definem o formato das sentenças válidas chamamos sintaxe da linguagem. 3

1.2 Algoritmos computacionais O computador, a princípio, não executa nada. Para que ele faça uma determinada tarefa (calcular uma folha de pagamento, por exemplo), é necessário que ele execute um programa. Um programa é um conjunto de milhares de instruções que indicam ao computador, passo a passo, o que ele tem que fazer. Logo, um programa nada mais é do que um algoritmo computacional descrito em uma linguagem de programação. Uma linguagem de programação contém os comandos que fazem o computador escrever algo na tela, realizar cálculos aritméticos, receber uma entrada de dados via teclado, e milhares de outras coisas, mas estes comandos precisam estar em uma ordem lógica. Um algoritmo tem por objetivo representar mais fielmente o raciocínio envolvido na Lógica de Programação e, dessa forma, permite-nos abstrair de uma série de detalhes computacionais, que podem ser acrescentados mais tarde. Assim, podemos focalizar nossa atenção naquilo que é importante: a lógica da construção de algoritmos. Outra importância da construção de algoritmos é que uma vez concebida uma solução algorítmica para um problema, esta pode ser traduzida para qualquer linguagem de programação e ser agregada das funcionalidades disponíveis nos diversos ambientes; costumamos denominar esse processo de codificação. Em outras palavras: ALGORITMO X PROGRAMA Um algoritmo é uma sequência lógica de ações a serem executadas para se executar uma determinada tarefa. Um programa é a formalização de um algoritmo em uma determinada linguagem de programação, segundo suas regras de sintaxe e semântica, de forma a permitir que o computador possa entender a sequência de ações. LINGUAGEM DE PROGRAMAÇÃO Conjunto de símbolos ( comandos, identificadores, caracteres etc. ) e regras de sintaxe que permitem a construção de sentenças que descrevem de forma precisa ações compreensíveis e executáveis para o computador. TIPOS DE LINGUAGENS DE PROGRAMAÇÃO Existem diversas linguagens de programação, cada uma com suas características específicas e com níveis de complexidade e objetivos diferentes: Linguagem de Máquina: Única compreendida pelo computador. Linguagens de Baixo Nível Ex.: Assembly Linguagens de Alto Nível. Utiliza instruções próximas da linguagem humana de forma a facilitar o raciocínio (Ex.: Java, C++, PHP, ASP, etc.). 4

Na programação deve-se distinguir claramente dois aspectos: Aspecto estático: a formulação de um algoritmo consiste em um texto contendo comandos (instruções) que devem ser executados numa ordem prescrita. Aspecto dinâmico: os efeitos que são causados pela execução do programa no tempo, dado um conjunto de valores iniciais. A partir de agora iremos focar no aspecto estático, ou seja, vamos nos preocupar em criar algoritmos para resolver problemas. As três etapas na criação de um algoritmo são: Entrada(s) PROCESSAMENTO Saída(s) Figura 3: Etapas de criação de um algoritmo Onde temos: Entrada: São os dados de entrada do algoritmo Processamento: São os procedimentos utilizados para chegar ao resultado final Saída: São os dados já processados Fazendo uma analogia com o ser humano: Figura 4: Entrada - Processamento - Saída 5

Exemplo: Imagine o seguinte problema: Realizar a soma de dois números: N1 e N2. Para montar o algoritmo proposto, faremos três perguntas: a) Quais são os dados de entrada? Resposta: Os dados de entrada são N1 e N2 b) Qual será o processamento a ser utilizado? Resposta: O procedimento será somar todos os dados de entrada: Soma = N1 + N2 c) Quais serão os dados de saída? Resposta: O dado de saída será a soma entre esses dois números O algoritmo será: 1. Início 2. Leia o primeiro número 3. Leia o segundo número 4. Somar os números 5. Mostrar o resultado 6. Fim 1.2.1 Teste de Mesa Após desenvolver um algoritmo ele deverá sempre ser testado. Este teste é chamado de teste de mesa, que significa seguir as instruções do algoritmo de maneira precisa para verificar se o procedimento utilizado está correto ou não. Para acompanhar o desenvolvimento de um, algoritmo é importante verificar o estado dos dados a cada instrução, verificando o conteúdo de todas as variáveis contidas no algoritmo. Sendo assim devem-se enumerar as linhas do algoritmo e em seguida criar uma tabela onde, a cada linha, são mostrados os conteúdos das variáveis do algoritmo e o número da linha executada. Para uma melhor visualização do processo, adotaremos a seguinte convenção: nas linhas em que uma variável é lida (entrada), o valor da variável ficará entre colchetes [ ] e quando o conteúdo de uma variável for escrito (saída), ficará entre chaves { }. 6

Relembrando os sólidos de Platão: As faces são constituídas por seções de planos, considerando que entre duas faces temos as arestas, as quais possuem em suas extremidades os vértices. Platão foi um filósofo grego, que viveu entre os séculos V e IV A.C., e estabeleceu importantes propriedades em alguns poliedros. O número de arestas é igual em todas as faces; Os ângulos poliédricos possuem o mesmo número de arestas; Nos sólidos considerados poliedros de Platão vale a relação de Euler (V A + F = 2) onde V = vértices, A = arestas e F = faces. Para encontrarmos o número de vértices, vamos isolar o vértice da equação acima, obtendo que: V = 2 + A - F. Aplicaremos a técnica do teste de mesa sobre o algoritmo abaixo o qual visa determinar o número de vértices de uma figura geométrica. Inicio 1. Escreva ( Entre com o número de faces da figura geométrica: ) 2. Leia (faces) 3. Escreva ( Entre com um número da arestas da figura geométrica: ) 4. Leia (arestas) 5. Vértices = arestas + 2 faces 6. Escreva ( O número de vértices do objeto especificado é:, vértices) Fim Linha Vértices Faces Arestas 1??? 2? [6]? 3? 6? 4? 6 [12] 5 8 6 12 6 {8} 6 12 7

1.4 Formas de Representação de Algoritmos Existem diversas formas de representação de algoritmos, mas não há um consenso com relação à melhor delas. O critério usado para classificar hierarquicamente estas formas está diretamente ligado ao nível de detalhe ou, inversamente, ao grau de abstração oferecido. Algumas formas de representação de algoritmos tratam os problemas apenas em nível lógico, abstraindo-se de detalhes de implementação muitas vezes relacionados com alguma linguagem de programação específica. Por outro lado existem formas de representação de algoritmos que possuem uma maior riqueza de detalhes e muitas vezes acabam por obscurecer as ideias principais do algoritmo, dificultando seu entendimento. Dentre as formas de representação de algoritmos mais conhecidas podemos citar: Descrição narrativa; Fluxograma; Pseudocódigo, também conhecido como Linguagem Estruturada ou Portugol. Descrição narrativa: Nesta forma de representação os algoritmos são expressos diretamente em linguagem natural. Como exemplo, uma receita de bolo: Receita de bolo: Misture os ingredientes Unte a forma com manteiga Despeje a mistura na forma Se houver coco ralado então despeje sobre a mistura Leve a forma ao forno Enquanto não corar deixe a forma no forno Retire do forno Deixe esfriar Esta representação é pouco usada na prática porque o uso da linguagem natural muitas vezes dá oportunidade a más interpretações, ambiguidades e imprecisões. Fluxograma: É uma representação gráfica de algoritmos onde formas geométricas diferentes implicam ações (instruções, comandos) distintos. Tal propriedade facilita o entendimento das ideias contidas nos algoritmos e justifica sua popularidade. 8

Esta forma é aproximadamente intermediária à descrição narrativa e ao pseudocódigo, pois é menos imprecisa que a primeira e, no entanto, não se preocupa com detalhes de implementação do programa, como o tipo das variáveis usadas. O fluxograma, também conhecido como diagrama de blocos é uma forma padronizada e eficaz para representar os passos lógicos de um determinado processamento. Com o diagrama podemos definir uma sequência de símbolos, com significado bem definido, portanto, sua principal função é a de facilitar a visualização dos passos de um processamento. Existem diversos símbolos em um diagrama de bloco. O quadro abaixo mostra alguns dos símbolos que iremos utilizar: Símbolo Função Início e fim do fluxograma Operação de entrada de dados Operação de saída de dados Operação de atribuição Tomada de Decisão Figura 5: Símbolos de um fluxograma Como exemplo, vamos representar o algoritmo através de um fluxograma que calcula a média e informa se o aluno foi aprovado ou não. 9

Início Leia N1, N2 MEDIA=(N1+N2)/2 Sim MEDIA > 7 Não Escreva Aprovado Escreva Reprovado Fim Pseudocódigo: Esta forma de representação de algoritmos é rica em detalhes, como a definição dos tipos das variáveis usadas no algoritmo. Por assemelhar-se bastante à forma em que os programas são escritos, encontra-se muita aceitação. Na verdade, esta representação é suficientemente geral para permitir a tradução de um algoritmo nela representado para uma linguagem de programação específica seja praticamente direta. A forma geral da representação de um algoritmo na forma de pseudocódigo é a seguinte: 10

Algoritmo <nome_do_algoritmo> <declaração_de_variáveis> <subalgoritmos> Início <corpo do algoritmo> Fim Algoritmo é uma palavra que indica o início da definição de um algoritmo em forma de pseudocódigo. <nome_do_algoritmo> é um nome simbólico dado ao algoritmo com a finalidade de distingui-los dos demais. <declaração_de_variáveis> consiste em uma porção opcional onde são declaradas as variáveis globais usadas no algoritmo principal e, eventualmente, nos subalgoritmos. <subalgoritmos> consiste de uma porção opcional do pseudocódigo onde são definidos os subalgoritmos (veremos mais adiante). Início e Fim são respectivamente as palavras que delimitam o início e o término do conjunto de instruções do corpo do algoritmo. Como exemplo, segue abaixo a representação do algoritmo do cálculo da média visto anteriormente, na forma de um pseudocódigo. Algoritmo Media Var N1, N2, MEDIA: real Início Leia N1, N2 MEDIA=(N1 + N2) / 2 Se MEDIA >= 7 então Escreva Aprovado Senão Escreva Reprovado FimSe Fim 11

1.2 Exercícios 1. Por que a lógica é tão importante para a computação? 2. O que são instruções? 3. O que é um algoritmo? Quais as diferenças entre algoritmo computacional e não computacional? 4. O que é uma linguagem de programação? Cite alguns exemplos. 5. O que é um programa? 6. Referente à programação, diferencie aspecto estático e dinâmico. 7. Quais são as etapas na criação de um algoritmo? 8. O que é um teste de mesa e qual a sua importância? 9. Identifique os dados de entrada, processamento e saída no algoritmo abaixo: Receba código do produto Receba valor do produto Receba quantidade comprada do produto Calcule o valor da compra Mostre o valor da compra 10. Explique as três formas de representação de um algoritmo. 11. Crie um algoritmo utilizando descrição narrativa para resolver os seguintes problemas: a. Trocar uma lâmpada b. Preparar um café c. Receber um número e informe se ele é negativo, zero ou positivo 12

12. Especifique as ações necessárias para mover três discos de uma Torre de Hanói, que consiste de três hastes (a - b - c), uma das quais serve de suporte para três discos de tamanhos diferentes (1-2 - 3 ), os menores sobre os maiores. Pode-se mover um disco de cada vez para qualquer haste, contanto que nunca seja colocado um disco maior sobre um menor. O objetivo é transferir os três disco para outra haste. (Obs.: o problema é solucionado realizando 7 movimentos) 13. Represente os algoritmos criados na questão 11 através de fluxograma. 14. Faça um teste de mesa para o algoritmo da letra C da questão 11. 13

2. Portugol A partir de agora será introduzida uma linguagem de expressão de algoritmos, o PORTUGOL. Serão apresentadas a sintaxe e a semântica dos comandos da linguagem. PORTUGOL é uma pseudolinguagem de programação utilizada para obter uma notação para algoritmos, a ser usada na definição, na criação, no desenvolvimento e na documentação de um programa. O identificador é o elemento básico da linguagem, a sua sintaxe é definida pelo diagrama apresentado na abaixo: Figura 7: Diagrama que representa um identificador 2.1 Variáveis e constantes Variáveis e constantes são os elementos básicos que um programa manipula. Uma variável é um espaço reservado na memória do computador para armazenar um tipo de dado determinado. Variáveis devem receber nomes para poderem ser referenciadas e modificadas quando necessário. Um programa deve conter declarações que especificam de que tipo são as variáveis que ele utilizará e as vezes um valor inicial. Tipos podem ser por exemplo: inteiros, reais, caracteres, etc. As expressões combinam variáveis e constantes para calcular novos valores. 2.1.1 Constante Podemos definir um dado como constante quando ele não sofre nenhuma variação com o tempo, ou seja, seu valor é constante desde o início até o fim da execução do algoritmo, assim como é constante para execuções diferentes no tempo. Exemplos: 2, "verdadeiro", Pi No algoritmo visto no capítulo 1 (figura 6) que calcula a média do aluno, sendo que o número de avaliações sempre serão duas, podemos perceber que: 14

2.1.2 Variável Um dado é classificado como variável quando tem a possibilidade de ser alterado em algum instante no decorrer do tempo, ou seja, durante a execução do algoritmo. Por exemplo, a cotação do dólar, o valor da soma dados dois números informados pelo usuário. Um bom exemplo para diferenciar constante e variável é o cálculo usado para obter a área de uma circunferência. Sabemos que: Neste exemplo: O valor de π é constante, pois é sempre igual a 3.1416... O raio r é variável, pois pode assumir diferentes valores a cada cálculo da área. A área A calculada para diferentes raios também é variável. 2.1.3 Tipos de dados As variáveis e as constantes podem ser basicamente de quatro tipos: numéricas, caracteres, alfanuméricas ou lógicas. A tabela a seguir explica cada um deles. Figura 8: Tipos de dados 15

Neste contexto, uma variável pode ser entendida como um local onde se pode colocar qualquer valor do conjunto de valores possíveis do tipo básico associado. Assim, as variáveis só podem armazenar valores de um mesmo tipo, de maneira que também são classificadas como sendo numéricas, lógicas e literais. Toda variável deve ser declarada conforme a sintaxe apresentada na figura 9. A semântica de uma declaração de variáveis corresponde à criação de locais na memória,rotulada com o nome do identificador (variável) e marcada com o tipo de valores que ela pode conter. Figura 9: Diagrama que representa a definição de uma variável 2.2 Operadores Os operadores são meios pelo qual incrementamos, decrementamos, comparamos e avaliamos dados dentro do computador. Temos três tipos de operadores: aritméticos, relacionais e lógicos. Os operadores aritméticos são os utilizados para obter resultados numéricos. Além da adição, subtração, multiplicação e divisão, podem utilizar também o operador para exponenciação. Os símbolos para os operadores aritméticos são: Figura 10: Operadores aritméticos 16

As operações aritméticas seguem uma hierarquia, a saber: 1º ( ) Parênteses 2º Exponenciação 3º Multiplicação, Divisão (o que aparecer primeiro) 4º + ou (o que aparecer primeiro) Exemplo: Os operadores relacionais são utilizados para comparar string de caracteres e números. Os valores a serem comparados podem ser caracteres ou variáveis. Estes operadores sempre retornam valores lógicos (verdadeiro ou falso). Para estabelecer prioridades no que diz respeito a qual operação executar primeiro, utilize os parênteses. Os operadores relacionais são: Figura 11: Operadores relacionais Os operadores lógicos servem para combinar resultados de expressões, retornando se o resultado final é verdadeiro ou falso. Os operadores lógicos são: 17

Figura 12: Operadores lógicos Por exemplo, suponha que A = 5, B = 8 e C =1 então temos que: 2.3 Blocos e comandos básicos de controle O comando de ATRIBUIÇÃO é utilizado para atribuir um valor a uma variável. Para isso usa-se o símbolo =, conforme a seguinte sintaxe: Figura 13:Sintaxe de atribuição Um bloco pode ser definido como um conjunto de comandos com uma função bem definida. Serve também para definir os limites onde as variáveis declaradas em seu interior são conhecidas. Exemplo: início < declaração de variáveis > < comandos > fim Uma sequência simples é um conjunto de comandos separados por ponto e vírgula (;), que serão executadas numa seqüência linear de cima para baixo. 18

Exemplo: comando1; comando2; comando3;... comandon; 2.3.1 Estrutura condicional Quando a ação a ser executada depender de uma inspeção (teste), teremos uma alternativa, ou estrutura condicional, simples ou composta. Estrutura da uma estrutura condicional simples (Se...então): se < condição > então comando1; comando2;... comandon; fimse; Exemplo de uma estrutura condicional composta: (Se...então...senão) se < condição > então comando1; comando2;... comandon; senão comando1 ; comando2 ;... comandon ; fimse; Nos comandos apresentados, <condição > é qualquer expressão cujo resultado seja falso ou verdadeiro. Exemplo: Qual será o valor final das variáveis A e B depois da execução do seguinte algoritmo? início inteiro: A, B; A = 1; B = 2; se A > B então A = 5; senão A = 10; fim se; fim; 19

2.3.2 Estrutura de repetição Uma estrutura de repetição é quando um conjunto de ações é executado repetidamente enquanto uma determinada condição permanece válida (ou seja, quando o resultado de da expressão é um valor lógico verdadeiro). Exemplo: Estrutura de repetição enquanto: enquanto < condição > faça comando1; comando2;... comandon; fim enquanto; Enquanto o valor da <condição> for verdadeiro, as ações dos comandos são executadas e quando se tornar falso, o comando é abandonado. Se já da primeira vez o resultado for falso, os comandos não são executados. Exemplo: Qual será o valor final das variáveis declaradas no seguinte algoritmo, depois de sua execução? início inteiro: A, B, C, I; A = 1; B = 1; I = 1; enquanto I < 10 faça C = A + B; A = B; B = C; I = I + 1; fim enquanto; fim; A estrutura de repetição repita difere da enquanto no que diz respeito ao momento em que o teste da condição é submetido. repita comando1; comando2;... comandon; até < condição >; Na estrutura enquanto o teste é realizado antes da execução do primeiro loop, ou seja, pode ser que os comandos não sejam realizados sequer uma vez, caso a condição seja falsa já na primeira vez em que foi testada. Já na repita os comandos sempre serão executados pelo menos uma vez, até que a condição seja testada, no final da estrutura. 20

A estrutura de repetição para difere das estruturas enquanto e repita, pois utiliza uma variável de controle, que atua como um contador de repetições. para I de 1 até 10 passo 1 faça comando1; comando2;... comandon; fim para; O comando abandone só tem sentido dentro de um comando de repetição (enquanto, repita e para). Além disso, estará sempre associado ao teste de uma condição com comando se. Quando o abandone é encontrado, o próximo comando a ser executado é o primeiro logo após o fim do comando de repetição mais interno onde este aparece.... enquanto I > 0 faça I=I + 1; imprima (I); se I² + 1 <= 150 então I = I + 25; senão abandone; fim se; fim enquanto; Até agora todos os valores calculados pelos algoritmos foram gerados e permaneceram na memória. Para obter ou para fornecer dados ao ambiente exterior ao algoritmo, por exemplo do teclado e para o vídeo, é preciso utilizar comandos de entrada (leia) e saída (imprima). Suas sintaxes são apresentadas a seguir. Figura 14: Sintaxe leia e imprima 21

Exemplo de um algoritmo que usa comandos de entrada e saída: início inteiro: A, B, SOMA; leia (A, B); SOMA = A + B; imprima ( A soma entre, A, e, B, é, SOMA); fim; A estrutura de decisão caso/selecione é utilizada para testar, na condição, uma única expressão, que produz um resultado, ou, então, o valor de uma variável, em que está armazenado um determinado conteúdo. Compara-se, então, oresultado obtido no teste com os valores fornecidos em cada cláusula Caso. Em outras palavras, esta estrutura permite que seja escolhida uma entre várias opções possíveis. Associada à escolha, podemos ter uma instrução ou um bloco de instruções que serão executadas. Nesta estrutura é executado o bloco correspondente a condição verdadeira. Caso nenhuma das condições for verdadeira, será executado o bloco de instruções associado ao caso padrão.... Escolha <variável> caso <condição> <bloco de instruções> caso <condição> <bloco de instruções>... caso <condição> <bloco de instruções> padrao <bloco de instruções> fimescolha Segue abaixo o exemplo de um algoritmo que diz o estado de um time de futebol. caso "Bahia", Vitória escreva("é um time baiano.") caso "Fluminense", Flamengo", "Vasco", "Botafogo" escreva("é um time carioca.") caso "São Paulo", "Palmeiras", "Santos", "Corinthians" escreva("é um time paulista.") outrocaso escreva("é de outro estado.") fimescolha fimalgoritmo 22

2.4 Exercícios 1. Elabore um diagrama de blocos que leia um número. Se positivo armazene-o em A, se for negativo, em B. No final mostrar o resultado. 2. Represente o algoritmo anterior em pseudocódigo. 3. Ler um número e verificar se ele é par ou ímpar. Quando for par armazenar esse valor em P e quando for ímpar armazená-lo em I. Exibir P e I no final do processamento. 4. Construa um algoritmo para ler uma variável numérica N e imprimi-la somente se a mesma for maior que 100, caso contrário informar que o número é menor que cem. 5. Tendo como dados de entrada a altura e o sexo de uma pessoa, construa um algoritmo que calcule seu peso ideal, utilizando as seguintes fórmulas: para homens: (72.7*h) - 58 e para mulheres: (62.1*h) - 44.7 (h = altura) 6. Escrever um algoritmo para determinar o consumo médio de um automóvel sendo fornecida a distância total percorrida pelo automóvel e o total de combustível gasto. 7. Escrever um algoritmo que leia o nome de um vendedor, o seu salário fixo e o total de vendas efetuadas por ele no mês (em dinheiro). Sabendo que este vendedor ganha 15% de comissão sobre suas vendas efetuadas, informar o seu nome, o salário fixo e salário no final do mês. 8. Faça um algoritmo que receba um valor que foi depositado e exiba o valor com rendimento após um mês. Considere fixo o juro da poupança em 0,70% a. m. 9. Escrever um algoritmo que leia dois valores inteiro distintos e informe qual é o maior. 10. Faça um algoritmo que receba a idade de 10 pessoas e mostre mensagem informando maior de idade e menor de idade para cada pessoa. Considere a idade a partir de 18 anos como maior de idade. 11. Escrever um algoritmo que leia o nome e o sexo de 5 pessoas e informe o nome e se ela é homem ou mulher. No final informe total de homens e de mulheres. 12. Escrever um algoritmo que leia os dados de N pessoas (nome, sexo, idade e saúde) e informe se está apta ou não para cumprir o serviço militar obrigatório. Informe os totais. 23

3. Referências bibliográficas Cardoso, Olinda Nogueira Paes. Apostila de Algoritmos e Estruturas de Dados I. Lavras - MG: UFLA, 2002. Moraes, Paulo Sérgio de. Lógica de Programação. Campinas - SP: Unicamp - Centro de Computação - DSC, 2000. Química, DCA 800 Eng. Algoritmo e Lógica de Programação. Natal -RN: Universidade Federal do Rio Grande do Norte, 2004. 24