42
Apostila da Disciplina de Lógica de Programação Prof. Me. Fábio Magalhães Professor do Curso de Sistemas de Informação Universidade Nove de Julho - Uninove http://fabiologica.blogspot.com 1º Semestre / 2010 11/02/2010

apostila-logica-110210

Embed Size (px)

Citation preview

Page 1: apostila-logica-110210

Apostila da Disciplina de

Lógica de Programação

Prof. Me. Fábio Magalhães

Professor do Curso de Sistemas de Informação Universidade Nove de Julho - Uninove

http://fabiologica.blogspot.com

1º Semestre / 2010 11/02/2010

Page 2: apostila-logica-110210

2

1 - Introdução à disciplina de Lógica de Programação Esta pequena apostila é resultado da agregação de diversos materiais pesquisados, e reúne o conteúdo básico para o desenvolvimento da disciplina de Lógica de Programação, do curso de Sistemas de Informação da Universidade Nove de Julho - Uninove - 1º Semestre / 2010. Programação da disciplina, materiais auxiliares, listas de exercícios, exercícios para o laboratório, correção das mesmas estarão disponíveis no blog do professor.

2 – Lógica de Programação

2.1 - O que é Lógica? É a arte de pensar corretamente e, visto que a forma mais complexa do pensamento é o raciocínio, a Lógica estuda ou tem em vista a correção do raciocínio. Podemos ainda dizer que a lógica tem em vista a ordem da razão. Isto dá a entender que a nossa razão pode funcionar desordenadamente, pode pôr as coisas de pernas para o ar. Por isso a Lógica ensina a colocar Ordem no Pensamento. Exemplos: a) Todo o mamífero é animal. Todo cavalo é mamífero. Portanto, todo cavalo é animal.

b) Todo mamífero bebe leite. O homem bebe leite. Portanto, todo homem é mamífero e animal.

2.2 - Existe Lógica no dia-a-dia? Sempre que pensamos, o raciocínio e a lógica nos acompanham necessariamente. Também quando falamos, pois a palavra falada é a representação do pensamento; e, visto que a palavra escrita é a representação da palavra falada, também pensamos quando escrevemos, utilizando a Lógica ou a Ilógica. Daí percebemos a importância da Lógica na nossa vida não só na teoria, como também na prática, já que quando queremos pensar, falar ou escrever corretamente precisamos colocar em Ordem o Pensamento, isto é, utilizar a Lógica. Exemplos: a) A gaveta está fechada. A bala está na gaveta. Preciso primeiro abrir a gaveta, para depois pegar a bala.

b) João é mais velho que José. Marcelo é mais novo que José. Portanto, João é mais velho que Marcelo.

2.3 - O que é Algoritmo? “Algoritmo é uma seqüência de passos que visam atingir um objetivo bem definido.” Apesar de achar este nome estranho, algoritmos são comuns em nosso cotidiano, como, por exemplo, uma receita de bolo. Nela está descrita uma série de ingredientes necessários, uma seqüência de diversos passos - ações - a serem cumpridos para que se consiga fazer determinado tipo de bolo – que é um objetivo bem definido.

Page 3: apostila-logica-110210

3

Em geral um algoritmo destina-se a resolver um problema: fixa um padrão de comportamento a ser seguido, uma norma de execução a ser trilhada, com o objetivo de alcançar a solução de um problema.

2.4 - O que é padrão de comportamento? Imagine a seguinte seqüência de números: 1, 3, 5, 7, 9, 11.... Para determinar o sétimo elemento da série, precisamos descobrir qual a sua regra de formatação, isto é, seu padrão de comportamento. Para tal, observamos que a série obedece a uma constância; visto que existe uma diferença constante entre cada elemento, a qual pode ser facilmente determinada, somos capazes de determinar o sétimo e qualquer outro termo. Podemos, então, descrever uma atividade bem quotidiana, como, por exemplo, trocar uma lâmpada. Apesar de aparentemente óbvias demais, muitas vezes fazemos esse tipo de atividade inconscientemente. Sem percebermos seus pequenos detalhes. Vejamos se ela fosse descrita passo a passo: - pegue a escada; - posicione-a embaixo da lâmpada; - busque uma lâmpada nova; - suba na escada; - retire a lâmpada velha; - coloque a lâmpada nova. Involuntariamente, já seguimos uma determinada seqüência de ações que, representadas neste algoritmo, fazem com que ele seja seguido naturalmente por pessoas, estabelecendo um padrão de comportamento.

2.5 – Programação Para que um computador possa desempenhar uma tarefa é necessário que esta seja detalhada passo-a-passo, numa forma compreensível pela máquina, utilizando aquilo que se chama de programa. Neste sentido, um programa de computador nada mais é que um algoritmo escrito numa forma compreensível pelo computador (linguagem de programação). É assim também com os algoritmos escritos para computador, você deve especificar todos os passos, para que o computador possa chegar ao objetivo. Por exemplo: Dados os números naturais(N) 0, 1, 2, 3, 4, 5, 6, ... passo1 faça N igual a zero passo2 some 1 a N passo3 volte ao passo 2

Soma dos primeiros 100 números naturais: passo1 faça N igual a zero passo2 some 1 a N passo3 se N for menor ou igual a 100

então volte ao passo 2 senão pare

Nos dois exemplos acima, o primeiro possui repertório bem definido, mas não finito, enquanto que o segundo tem um critério de parada, ou seja, é finito e descreve um padrão de comportamento, ou seja, temos um algoritmo.

Page 4: apostila-logica-110210

4

2.6 – Programa Programas são processos de automação. Uma tarefa deixa de ser desempenhada pelo homem e passa a ser realizada por máquinas, sejam estes dispositivos mecânicos, eletrônicos (como os computadores) ou de natureza mista. Para que a automação de uma tarefa seja bem-sucedida é necessário que a máquina que passará a realizá-la seja capaz de desempenhar cada uma das etapas constituintes do processo a ser automatizado com eficiência, de modo a garantir a repetibilidade do mesmo. Assim, é necessário que seja especificado com clareza e exatidão o que deve ser realizado em cada uma das fases do processo a ser automatizado, bem como a seqüência em que estas fases devem ser realizadas.

2.7 – Etapas de um programa Ao montar um algoritmo, precisamos primeiro dividir o problema apresentado em três fases fundamentais, como se conceitua “Processamento de Dados”: Onde temos:

2.7.1 – Entrada São os dados de entrada do algoritmo. Hardwares para entradas de dados: teclado, mouse, microfone, scanner

2.7.2 – Processamento São os procedimentos utilizados para chegar ao resultado final.

2.7.3 – Saída São os dados já processados. Hardwares para saída de dados: impressora, monitor, caixa de som

3 - 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. 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.

Entrada

Processamento

Saída

Page 5: apostila-logica-110210

5

3.1 - Descrição Narrativa Nesta forma de representação os algoritmos são expressos diretamente em linguagem natural. Como exemplo tem-se os algoritmos seguintes:

Troca de um pneu furado: Afrouxar ligeiramente as porcas Suspender o carro Retirar as porcas e o pneu Colocar o pneu reserva Apertar as porcas Abaixar o carro Dar o aperto final nas porcas

Tomando um banho: Entrar no banheiro e tirar a roupa Abrir a torneira do chuveiro Entrar na água Ensaboar-se Sair da água Fechar a torneira Enxugar-se Vestir-se

Esta representação é pouco usada na prática porque o uso da linguagem natural muitas vezes dá oportunidade a más interpretações, ambigüidades e imprecisões. Por exemplo, a instrução "afrouxar ligeiramente as porcas" no algoritmo da troca de pneus está sujeita a interpretações diferentes por pessoas distintas. Uma instrução mais precisa seria: "afrouxar a porca, girando-a 30º no sentido anti-horário". Vantagens: - O português é bastante conhecido por nós; Desvantagens: - Imprecisão; - Pouca confiabilidade (a imprecisão acarreta a desconfiança); - Extensão (normalmente, escreve-se muito para dizer pouca coisa).

3.2 - 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 idéias contidas nos algoritmos e justifica sua popularidade. 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. Nota-se que os fluxogramas convencionais preocupam-se com detalhes de nível físico da implementação do algoritmo. Por exemplo, figuras geométricas diferentes são adotadas para representar operações de saída de dados realizadas em dispositivos distintos, como uma fita magnética ou um monitor de vídeo.

3.2.1 - Simbologias básicas A serem utilizadas nesta disciplina.

Page 6: apostila-logica-110210

6

Terminal – indica início e/ou fim do fluxo de um programa ou sub-programa.

Seta de Fluxo de dados – indica o sentido do fluxo. Serve para conectar os símbolos.

Entrada – operação de entrada de dados. Lê os dados necessários do programa

Processamento – operação de atribuição. Indica os cálculos a efetuar, ou atribuições de valores

Saída – operação de saída de dados. Apresenta os dados no monitor (ou algum outro dispositivo de saída)

Decisão (a ser tomada) – indicando os desvios para outros pontos do fluxo, dependendo do resultado da comparação

Preparação – grupo de operações não incluídas na diagramação (chave que modificará a execução de um determinado programa)

Conector – ao receber duas Setas de Fluxo de dados, normalmente após o fechamento dos processos decorrentes de uma decisão

Conector de seção – quando for necessário particionar o fluxograma. Coloca um número idêntico em ambas as seções / páginas, indicando a sua continuação.

Abaixo está a representação do algoritmo de cálculo da média de um aluno sob a forma de um fluxograma.

inicio

n1

n2

1

media ← ((n1 + n2) / 2)

Page 7: apostila-logica-110210

7

Exemplo de um fluxograma convencional. De modo geral, um fluxograma se resume a um único símbolo inicial por onde a execução do algoritmo começa, e um ou mais símbolos finais, que são pontos onde a execução do algoritmo se encerra. Partindo do símbolo inicial, há sempre um único caminho orientado a ser seguido, representando a existência de uma única seqüência de execução das instruções. Isto pode ser melhor visualizado pelo fato de que, apesar de vários caminhos poderem convergir para uma mesma figura do diagrama, há sempre um único caminho saindo desta. Exceções a esta regra são os símbolos finais, dos quais não há nenhum fluxo saindo, e os símbolos de decisão, de onde pode haver mais de um caminho de saída (usualmente dois caminhos), representando uma bifurcação no fluxo. Vantagens: - Uma das ferramentas mais conhecidas; - Figuras dizem muito mais que palavras; - Padrão mundial Desvantagens: - Faz com que a solução do problema já esteja amarrada a dispositivos físicos; - Pouca atenção aos dados, não oferecendo recursos para descrevê-los ou representá-los; - Complica-se à medida que o algoritmo cresce.

3.3 - Pseudocódigo De forma semelhante como os programas são escritos. Também chamado de Portugol ou Português Estruturado. A linguagem de Programação mais próxima é o Pascal, com codificação quase idêntica ao Inglês Estruturado. 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 muita aceitação.

.F. .V.

fim

“aprovado”

(media >= 7)

“reprovado”

1

Page 8: apostila-logica-110210

8

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: algoritmo <Nome_do_Programa> <declaração_de_variáveis> inicio <corpo do algoritmo> FimAlgoritmo Algoritmo é uma palavra que indica o início da definição de um algoritmo em Portugol ou Pseudocódigo. <Nome_do_Programa> é 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. Início e FimAlgoritmo são respectivamente as palavras que delimitam o início e o término do conjunto de instruções do corpo do algoritmo. Abaixo exemplo na forma de um pseudocódigo, da representação do algoritmo do cálculo da média de um aluno. algoritmo CalculoMedia

var n1, n2, media: real inicio

leia n1 leia n2 media ← ((n1 + n2) / 2) se (media >= 7) entao

escreva (“aprovado”) senao

escreva (“reprovado”) fimse

FimAlgoritmo Vantagens: - Independência física da solução (solução lógica apenas); - Usa o português como base; - Pode-se definir quais e como os dados vão estar estruturados; - Passagem quase imediata do algoritmo para uma linguagem de programação qualquer. Desvantagens: - Exige a definição de uma linguagem não real para trabalho; - Não padronizado. Pode ter certas diferenças dependo do autor / programador.

Page 9: apostila-logica-110210

9

4 - Ciclo de vida de um programa Como tudo na terra, o programa tem um tempo de vida, chamado de ciclo de vida de um programa.

4.1.1 - Planejamento É a fase onde definimos o problema a ser resolvido utilizando um computador. Nesta fase relacionamos a entrada e a saída do futuro programa, assim como a definição dos arquivos auxiliares que ele venha a utilizar.

4.1.2 - Projeto É a fase onde a resolução do problema é concebida. Neste ponto são definidos detalhes do algoritmo, estrutura de dados empregados pelo programa.

4.1.3 - Escrita Consiste em codificar o programa em uma linguagem de programação apropriada.

4.1.4 - Depuração Ao final da escrita estaremos com o programa quase pronto; mas será que ele funciona? Esta é a fase onde se corrigem os erros, até que o objetivo seja alcançado.

4.1.5 - Implantação O programa é disponibilizado ao cliente para utilização.

4.1.6 - Manutenção O programa poderá ser alterado, tanto para corrigir erros não encontrados na fase de depuração / implantação, como também para atender novas necessidades a serem solicitadas pelos usuários.

4.1.7 - Morte do programa É quando o programa não atende mais as necessidades do usuário / cliente. Poderá ser substituído por outro ou nova versão.

4.2 - Método para construção de algoritmos Ler atentamente o enunciado. É justamente o enunciado do exercício que fornece o encaminhamento necessário à resolução do problema, que se torna, portanto, dependente de sua completa compreensão. Retirar do enunciado a relação das entradas de dados. Retirar do enunciado a relação das saídas de dados.

Page 10: apostila-logica-110210

10

Determinar o que deve ser feito para transformar as entradas determinadas nas saídas específicas. Nesta fase é que determinamos a construção de algoritmos propriamente dita, pois, a partir de alguns requisitos especificados, devemos determinar qual a seqüência de ações é capaz de transformar um conjunto definido de dados nas informações de resultado.

4.3 - Um ambiente para escrever algoritmos Descreveremos uma máquina hipotética para a qual escreveremos nossos algoritmos. O nosso computador hipotético apresentará a seguinte organização: Cada uma das partes constituintes da figura abaixo tem os seguintes significados: (1) Dispositivo de entrada (o teclado): É o meio pelo qual os dados que serão trabalhados pelo algoritmo vão ser introduzidos em nosso computador hipotético; (2) Unidade Lógica e Aritmética (ULA): Parte responsável pelas operações matemáticas e avaliações lógicas; (3) Unidade de Controle: Exerce controle sobre as demais partes do nosso computador. É uma verdadeira gerente que distribui tarefas às outras unidades; (4) Memória: Guarda o algoritmo a ser executado e os dados a serem utilizados pelo mesmo. Todo dado fornecido ao computador e o resultado de suas operações ficam guardados na memória; (5) Dispositivo de Saída (vídeo e impressora): É o meio que se dispõe para apresentação dos resultados obtidos. Convenção: trajeto de dados trajeto de sinais de controle

Unidade Central de Processamento

(1) Dispositivo de Entrada

(3) Unidade de Controle

(2) Unidade Lógica

e Aritmética

(4) Memória Principal

(5) Dispositivo de Saída

Page 11: apostila-logica-110210

11

4.4 - Funcionamento do nosso computador Todos os computadores, independentemente dos seus tamanhos, são conceitualmente semelhantes ao esquema da figura anterior (há algumas diferenças, mas não trataremos aqui dos casos especiais). Resumidamente, podemos afirmar que existem 4 (quatro) operações básicas que qualquer computador pode executar: a) operações de entrada e saída: ler dados do teclado e escrever dados na tela é um exemplo destas operações. Elas servem para introduzir dados na memória do nosso computador e exibir dados que já estejam lá armazenados; b) operações aritméticas: são utilizadas na realização de operações matemáticas (adição, subtração, multiplicação e divisão); c) operações lógicas e relacionais: têm aplicabilidade em comparações, testes de condições lógicas (2 > 6 ? X = Y ?); d) movimentação de dados entre os vários componentes: as operações aritméticas são executadas na Unidade Lógica e Aritmética, necessitando da transferência dos dados para essa unidade e da volta do resultado final para ser guardado na memória.

4.5 - Resolvendo um problema Suponha que queiramos resolver o seguinte problema: a partir de dois números que serão informados, calcular a adição dos mesmos. Se você fosse encarregado de efetuar essa tarefa, seria bem provável que utilizasse os passos a seguir: a) saber quais são os números; b) calcular a soma dos números; c) responder à questão com o valor do resultado. Vejamos como seria resolvido esse mesmo problema em termos das operações básicas citadas anteriormente: a) operação de entrada de dados dos números; b1) movimento do valor dos números entre a memória e a ULA; b2) operação aritmética de somar os 2 números; b3) movimentação do resultado da ULA para guardar na memória; c) operação de saída do resultado, que está guardado na memória, para o dispositivo de saída desejado. Deve-se salientar que os passos b1 e b3, normalmente, ficam embutidos na operação matemática, não sendo explicitados. Em resumo, pode-se dizer que escrever algoritmos ou, em última análise, programar consiste em dividir qualquer problema em muitos pequenos passos, usando uma ou mais das quatro operações básicas citadas. Esses passos que compõem o algoritmo são denominados de comandos. Os comandos de uma linguagem de programação podem estar mais próximos da máquina (linguagens de baixo nível) ou serem mais facilmente entendidos pelo homem (linguagens de alto

Page 12: apostila-logica-110210

12

nível). A seqüência de operações básicas, dada anteriormente, para resolver o problema de adicionar dois números, está em uma linguagem de baixo nível para o nosso computador hipotético. Em uma linguagem de alto nível teríamos um resultado assim: Leia X,Y SOMA = X + Y Escreva SOMA

5 - Tipos de Dados e Instruções Primitivas As informações manipuladas pelo computador se apresentam através dos dados (informações) e das instruções (comandos). As instruções, que comandam o funcionamento da máquina e determinam a maneira como devem ser tratados os dados. As instruções são específicas para cada modelo de computador, pois são funções do tipo particular de processador utilizado em sua implementação. Os dados propriamente ditos, que correspondem à porção das informações a serem processadas pelo computador. A maior parte das pessoas não ligadas à área de informática ignora o potencial dos computadores e imagina que eles são capazes de tratar apenas com dados numéricos. Na realidade, a capacidade dos mesmos se estende a outros tipos de dados. A classificação apresentada a seguir não se aplica a nenhuma linguagem de programação específica; pelo contrário, ela sintetiza os padrões utilizados na maioria das linguagens.

5.1 - Dados Numéricos São categorizados normalmente em 2 categorias: - Inteiros; - Reais.

5.1.1 - Dados Numéricos Inteiros Os números inteiros são aqueles que não possuem componentes decimais ou fracionários, podendo ser positivos ou negativos. Como exemplo de números inteiros tem: 24 - número inteiro positivo 0 - número inteiro -12 - número inteiro negativo

5.1.2 - Dados Numéricos Reais Os dados de tipo real são aqueles que podem possuir componentes decimais ou fracionários, e podem também ser positivos ou negativos.

Page 13: apostila-logica-110210

13

Como dito anteriormente, os elementos dos conjuntos de números fracionários e reais são necessariamente representados no computador por dados do tipo real. Havendo a parte decimal, deverá ser utilizado o caractere ponto (.) e não a vírgula. Exemplos de dados do tipo real: 24.01 - número real positivo com duas casas decimais 144 - número real positivo com zero casas decimais -13.3 - número real negativo com uma casa decimal 0.0 - número real com uma casa decimal 0 - número real com zero casa decimal

5.2 - Dados Literais O tipo de dados literal é constituído por uma seqüência de caracteres contendo letras, dígitos e/ou símbolos especiais (!, @, #, $, %, ^, &, *, etc.). Este tipo de dados é também muitas vezes chamado de alfanumérico, cadeia de caracteres, ainda, do inglês, string. Usualmente, os dados literais são representados nos algoritmos pela coleção de caracteres, delimitada em seu início e término com o caractere aspas ("). Diz-se que o dado do tipo literal possui um comprimento dado pelo número de caracteres nele contido. Exemplos de dados do tipo literal: "QUAL ?" - literal de comprimento 6 " " - literal de comprimento 1 "qUaL ?!$" - literal de comprimento 8 " AbCdefGHi" - literal de comprimento 9 "1-2+3=" - literal de comprimento 6 “0” - literal de comprimento 1 Note que, por exemplo, "1.2" representa um dado do tipo literal de comprimento 3, constituído pelos caracteres "1", "." e "2", diferindo de 1.2 que é um dado do tipo real.

5.3 - Dados Lógicos A existência deste tipo de dado é, de certo modo, um reflexo da maneira como os computadores funcionam. Muitas vezes, estes tipos de dados são chamados de booleanos, devido à significativa contribuição de BOOLE à área da lógica matemática. O tipo de dados lógico é usado para representar dois únicos valores lógicos possíveis: verdadeiro e falso. É comum encontrar-se em outras referências outros tipos de pares de valores lógicos como sim/não, 1/0, true/false. Nos algoritmos apresentados nesta apostila os valores lógicos serão delimitados pelo caractere ponto (.). Exemplo: .V. - valor lógico verdadeiro .F. - valor lógico falso

Page 14: apostila-logica-110210

14

A árvore abaixo resume a classificação dos dados com relação aos tipos de dados apresentados.

Representação dos diversos tipos de dados

5.4 - Variáveis Tudo o que é instável, inconstante. Serão armazenadas pela memória do computador, e é necessário identificar qual é o melhor tipo de dados a ser utilizado. Para que não se "esqueça" das informações, o computador precisa guardá-las em sua memória. Cada variável representa um valor, e a qualquer instante pode ser alterado (quando for realizado um comando para fornecer um novo valor).

5.5 – Arquitetura de Memória De um modo geral, a memória do computador pode ser vista como um conjunto de células, cada identificada unicamente por um número inteiro distinto, conhecido como endereço.

5.5.1 – Memória O acesso às informações armazenadas na memória (leitura, escrita) é feita Byte a Byte. Cada Byte é formado por uma combinação de 8 dígitos binários (0 e 1), sendo assim, um Byte possui 256 (28) estados possíveis ou representa 256 símbolos de informação.

5.5.2 – Armazenamento de dados na memória Cada informação de determinado tipo é representada de diferentes formas, e necessita de certa quantidade de memória para armazená-las. O número de bytes necessários para armazenar uma informação dependerá do seu tipo. Por exemplo, na maioria das linguagens de programação o tipo inteiro é armazenado ocupando 2 bytes, ou seja, 65536 (28 x 28 = 216) possibilidades (-32767, -32766, ....., -1,0, 1..... 32767, 32768). Um dado do tipo caractere é formado por vários símbolos, sendo que cada um ocupa 1 byte. Desta forma o número de bytes utilizados no armazenamento do tipo caractere dependerá do seu tamanho. 1 endereço - 1 byte.

5.5.3 – Identificadores Podemos imaginar a memória como sendo um armário repleto de gavetas, no qual as gavetas seriam os locais físicos responsáveis por armazenar objetos; os objetos (que podem ser substituídos ou não) seriam as informações (dados), e as gavetas as variáveis ou constantes.

Page 15: apostila-logica-110210

15

Visto que na memória (armário) existem inúmeras variáveis (gavetas), precisamos diferenciá-las, o que é feito por meio de identificadores (etiquetas). Cada variável (gaveta), no entanto, pode guardar apenas uma informação (objeto) de cada vez, sendo sempre do mesmo tipo (material). Os identificadores possuem certas regras para serem formados: - Devem começar por um caractere alfabético; - Podem ser seguidos por mais caracteres alfabéticos e/ou alfanuméricos; - Não é permitido o uso de caracteres especiais ou espaços; - Não pode ser uma Palavra Reservada (instrução). Exemplos válidos: pe, media, valor, jksp, m1, m2, nomeusuario.

5.6 – Definição de Variáveis em Algoritmos Todas as variáveis utilizadas em algoritmos devem ser definidas antes de serem utilizadas. Isto se faz necessário para permitir que o compilador reserve um espaço na memória para as mesmas. Nos algoritmos apresentados nesta apostila será adotada a seguinte convenção: Todas as variáveis utilizadas em algoritmos serão definidas no início do mesmo, por meio de um comando de uma das formas seguintes: var <nome_da_variável> : <tipo_da_variável> var <lista_de_variáveis> : <tipo_das_variáveis> A palavra-chave var deverá estar presente sempre e será utilizada uma única vez na definição de um conjunto de uma ou mais variáveis; Numa mesma linha poderão ser definidas uma ou mais variáveis do mesmo tipo. Para tal, devem-se separar os nomes das mesmas por vírgulas; Variáveis de tipos diferentes devem ser declaradas em linhas diferentes. A forma de utilização deste comando ficará mais clara quando da utilização da representação de algoritmos em linguagem estruturada (Pseudocódigo). Esta convenção é válida para a representação de algoritmos na forma de pseudocódigo. Em termos de fluxograma, não é usual adotar-se qualquer forma de definição de variáveis. Exemplo de definição de variáveis: var

nome : caractere idade : inteiro salario : real temfilhos : logico

Page 16: apostila-logica-110210

16

No exemplo acima foram declaradas quatro variáveis: - a variável nome, capaz de armazenar dados alfanuméricos (tipo Literal); - a variável idade, capaz de armazenar um número inteiro; - a variável salario, capaz de armazenar um número real; - a variável tem_filhos, capaz de armazenar uma informação lógica (tipo booleano).

5.7 – Instruções Primitivas São representadas pelo conjunto de Palavras-chave (Vocabulário) de uma determinada Linguagem de Programação. Em Portugol, será utilizado as seguintes Instruções Primitivas: algoritmo (ou programa) ate (ou ateque) caractere caso e enquanto entao escolha escreva faca falso

fimalgoritmo (ou fim) fimenquanto fimescolha fimpara fimrepita fimse inicio leia logico mensagem nao

numerico ou outrocaso para passo repita se senao verdadeiro

Uma determinada ação poderá ser escrita diferente dependendo da Linguagem de Programação utilizada.

6 - Expressões

6.1 - Conceito O conceito de expressão em termos computacionais está intimamente ligado ao conceito de expressão (ou fórmula) matemática, onde um conjunto de variáveis e constantes numéricas relacionam-se por meio de operadores aritméticos compondo uma fórmula que, uma vez avaliada, resulta num valor.

Figura - Triângulo de base (B) e altura (H). Por exemplo, a fórmula de cálculo da área do triângulo é dada por:

Page 17: apostila-logica-110210

17

area <- 0.5 * b * h Esta fórmula utiliza três variáveis: b e h, que contêm as dimensões do triângulo, e area, onde é guardado o valor calculado (resultado da avaliação da expressão). Há, também, uma constante (0.5) e o operador de multiplicação (*), que aparece duas vezes na expressão. O conceito de expressão aplicado à computação assume uma conotação mais ampla: uma expressão é uma combinação de variáveis, constantes e operadores, e que, uma vez avaliada, resulta num valor.

6.2 - Operadores Operadores são elementos funcionais que atuam sobre operandos e produzem um determinado resultado. Por exemplo, a expressão 3 + 2 relaciona dois operandos (os números 3 e 2) por meio do operador (+) que representa a operação de adição. De acordo com o número de operandos sobre os quais os operadores atuam, os últimos podem ser classificados em: - binários, quando atuam sobre dois operandos. Ex.: os operadores das operações aritméticas básicas (soma, subtração, multiplicação e divisão); - unários, quando atuam sobre um único operando. Ex.: o sinal de (-) na frente de um número, cuja função é inverter seu sinal. Outra classificação dos operadores é feita considerando-se o tipo de dado de seus operandos e do valor resultante de sua avaliação. Segundo esta classificação, os operadores dividem-se em aritméticos, lógicos e literais. Esta divisão está diretamente relacionada com o tipo de expressão onde aparecem os operadores. Um caso especial é o dos operadores relacionais, que permitem comparar pares de operandos de tipos de dados iguais, resultando sempre num valor lógico. Mais adiante serão apresentados os operadores dos diversos tipos acima relacionados.

6.3 - Tipos de Expressões As expressões são classificadas de acordo com o tipo do valor resultante de sua avaliação.

6.3.1 - Expressões Aritméticas Expressões aritméticas são aquelas cujo resultado da avaliação é do tipo numérico, seja ele inteiro ou real. Somente o uso de operadores aritméticos e variáveis numéricas são permitidos em expressões deste tipo. Os operadores aritméticos relacionados às operações aritméticas básicas estão sumarizados na Tabela.

Page 18: apostila-logica-110210

18

Tabela - Operadores aritméticos e sua ordem de prioridade Operador Tipo Operação Prioridade + Binário Adição 4 - Binário Subtração 4 * Binário Multiplicação 3 / Binário Divisão 3 ^ ou ** Binário Exponenciação 2 + Unário Manutenção de sinal 1 - Unário Inversão de sinal 1

A prioridade entre operadores define a ordem em que os mesmos devem ser avaliados dentro de uma mesma expressão. Este assunto será tratado com maior profundidade numa seção posterior. O caractere (*) é adotado na maioria das linguagens de programação para representar a operação de multiplicação, ao invés do caractere (x), devido à possibilidade da ocorrência do mesmo no nome de variáveis. O símbolo (^) é adotado para representar a operação de exponenciação, e em muitas literaturas será visto o símbolo (**) para esta finalidade, mas será adotado preferencialmente o símbolo (^).

6.3.2 - Expressões Lógicas Expressões lógicas são aquelas cujo resultado da avaliação é um valor lógico (.V. ou .F.). Os operadores lógicos e suas relações de precedência são mostrados na tabela abaixo.

Tabela - Operadores lógicos e suas relações de prioridade Operador Tipo Operação Prioridade .ou. Binário Disjunção 3 .e. Binário Conjunção 2 .nao. Unário Negação 1

Para exemplificar o uso de operadores lógicos, a Tabela 5.3 apresenta duas variáveis lógicas A e B. Uma vez que cada variável lógica possui somente dois valores possíveis, então há exatamente quatro combinações para estes valores, razão pela qual a tabela tem quatro linhas. As diversas colunas contêm os resultados das operações lógicas sobre as combinações possíveis dos valores das variáveis A e B.

Tabela - Tabela-Verdade dos operadores apresentados na Tabela anterior a b .nao. a .nao. b a .ou. b a .e. b

.F. .F. .V. .V. .F. .F.

.F. .V. .V. .F. .V. .F.

.V. .F. .F. .V. .V. .F.

.V. .V. .F. .F. .V. .V. A Tabela acima é chamada de Tabela-Verdade. Convém salientar as seguintes conclusões que podem ser extraídas por observação da Tabela: O operador lógico .nao. sempre inverte o valor de seu operando. Ex.: . nao. .V. = .F. e . nao. .F. = .V.; Para que a operação lógica .ou. tenha resultado verdadeiro basta que um de seus operandos seja verdadeiro; Para melhor visualizar este efeito, podemos imaginar que as

Page 19: apostila-logica-110210

19

variáveis lógicas a e b são como dois interruptores ligados em paralelo num circuito de acionamento de uma lâmpada. Há, ainda, outro tipo de operador que pode aparecer em operações lógicas: os operadores relacionais, mostrados na Tabela.

Tabela - Operadores relacionais Operador Operação = Igual <> Diferente < Menor <= Menor ou igual > Maior >= Maior ou igual

Estes operadores são somente usados quando se deseja efetuar comparações. Comparações só podem ser feitas entre objetos de mesma natureza, isto é, variáveis do mesmo tipo de dado. O resultado de uma comparação é sempre um valor lógico. O uso de operadores relacionais possibilita o aparecimento em expressões lógicas de variáveis de outros tipos de dados que não o lógico.

7 - Comandos de Atribuição Um comando de atribuição permite-nos fornecer um valor a certa variável, onde o tipo dessa informação deve ser compatível com o tipo da variável, isto é, somente podemos atribuir um valor lógico a uma variável capaz de comportá-lo, ou seja, uma variável declarada do tipo lógico. O comando de atribuição é uma seta apontando para a variável ou dois pontos e o sinal de igual (<-): Exemplo: var

a, b,c : real inicio

a <- 5 b <- a+b c <- b*a

7.1 – Constantes Entendemos que uma informação é constante quando não sofre nenhuma variação no decorrer do tempo. As constantes são definidas junto com as variáveis antes de iniciar o programa, e em seguida após o início do algoritmo, as constantes recebem seu valor fixo através do comando de atribuição (<-): var

nomepadrao : caracter valorpi : real inicio

nomepadrao <- “João” valorpi <- 3.1415

Page 20: apostila-logica-110210

20

No exemplo acima foram declaradas duas constantes: - a variável constante nomepadrao, que foi atribuído um valor fixo “João” do tipo Alfanumérico; - a variável constante valorpi, que foi atribuído um valor fixo 3.1415 do tipo Real;

7.2 - Entrada de Dados Para que nossos algoritmos funcionem, em quase todos os casos precisaremos de informações que serão fornecidas somente após o algoritmo pronto, e que sempre estarão mudando de valores, para que nossos algoritmos recebem estas informações, devemos então construir entradas de dados, pelas quais o usuário (pessoa que utilizar o programa) poderá fornecer todos os dados necessários. A sintaxe do comando de entrada de dados é a seguinte: leia (variável)

7.3 - Saída de Dados Da mesma forma que nosso algoritmo precisa de informações, o usuário precisa de respostas as suas perguntas, para darmos estas respostas usamos um comando de saída de dados para informar a resposta. A sintaxe do comando de saída de dados é a seguinte: escreva (variável) escreval (variável) // Para pulara para a linha seguinte, basta acrescentar a letra “l”

8 - Estruturas de Controle

8.1 - Estrutura Seqüencial É o conjunto de ações primitivas que serão executadas numa seqüência linear de cima para baixo e da esquerda para direita, isto é, na mesma ordem em que foram escritas. Como podemos perceber, todas as ações devem pular uma linha, o que objetiva separar uma ação de outra. Variáveis;

(declaração de variáveis) início

comando 1 comando 2 comando 3

FimAlgoritmo.

Algoritmo - 01: Criar um programa que efetue a leitura de dois valores numéricos. Faça a operação de soma entre os dois valores e apresente o resultado obtido.

Page 21: apostila-logica-110210

21

Planejamento Problema: Calcular a soma de dois números. Objetivo: Apresentar a soma de dois números. Entradas: N1, N2 Saídas: SOMA Projeto Cálculos: SOMA <- N1 + N2 Fluxograma

Portugol algoritmo Algoritmo01 var N1 : real N2 : real SOMA : real inicio leia N1 leia N2 SOMA <- N1 + N2 escreva SOMA FimAlgoritmo

8.2 - Estruturas de Seleção ou Decisão Uma estrutura de decisão permite a escolha de um grupo de ações e estruturas a ser executado quando determinadas condições, representadas por expressões lógicas, são ou não satisfeitas.

Page 22: apostila-logica-110210

22

8.2.1 - Decisão Simples Se <condição> entao

{bloco verdade} Fimse <condição> é uma expressão lógica, que, quando inspecionada, pode gerar um resultado falso ou verdadeiro. Se .V., a ação primitiva sob a cláusula será executada; caso contrário, encerra o comando, neste caso, sem executar nenhum comando.

Algoritmo - 02: Ler dois valores numéricos, efetuar a adição e apresentar o resultado caso o valor somado seja maior que 10. Planejamento Problema: Calcular a soma de dois números e apresentar o resultado com condição. Objetivo: Apresentar o resultado apenas se for maior que 10. Entradas: N1, N2 Saídas: SOMA Projeto Cálculos e detalhamento:

SOMA <- N1 + N2 Se (SOMA > 10) entao

escreva SOMA Fimse Fluxograma

INICIO

N1

N2

SOMA N1 + N2

SOMA > 10

SOMA

FIM

.V..F.

Page 23: apostila-logica-110210

23

Portugol Algoritmo Algoritmo02 Var N1: Real N2: Real SOMA: Real Inicio Leia N1 Leia N2 SOMA <- N1 + N2 Se (SOMA > 10) entao Escreva SOMA Fimse FimAlgoritmo

8.2.2 - Decisão Composta Se <condição> entao

{bloco verdade} Senao

{bloco falso} Fimse <condição> é uma expressão lógica, que, quando inspecionada, pode gerar um resultado falso ou verdadeiro. Se .V., a ação primitiva sob a cláusula será executada; caso contrário, isto é, se for .F., a ação primitiva sob a cláusula será executada.Após isto, encerra a condição com o comando Fimse.

Algoritmo - 03: Ler dois valores numéricos, efetuar a adição. Caso o valor somado seja maior ou igual a 10, este deverá ser apresentado somando-se a ele mais 5, caso o valor somado não seja maior ou igual a 10, este deverá ser apresentado subtraindo-se 7. Planejamento Problema: Calcular a soma de dois números e apresentar o resultado com uma condição. Objetivo: Apresentar o Resultado se for igual ou maior que 10 adicionando mais 5, se não for igual ou maior que 10 deverá subtrair 7. Entradas: A, B Saídas: TOTAL Auxiliares: SOMA Projeto Cálculos e detalhamento:

SOMA <- A + B Se (SOMA >= 10) Então

TOTAL <- SOMA + 5 Senão

TOTAL <- SOMA - 7 Fimse

Page 24: apostila-logica-110210

24

Fluxograma

Portugol Algoritmo Algoritmo03 Var A: Real B: Real SOMA: Real TOTAL: Real Inicio Leia A Leia B SOMA ← A + B Se (SOMA >= 10) entao TOTAL ← SOMA + 5 Senao TOTAL ← SOMA – 7 Fimse

Escreva TOTAL FimAlgoritmo

8.2.3 – Seleção Múltipla Esta estrutura evita que façamos muitos blocos se, quando o teste será sempre em cima da mesma variável. Exemplo:

.F. .V.

INICIO

A

B

SOMA A + B

FIM

TOTAL ← SOMA + 5

TOTAL

SOMA > =10

TOTAL ← SOMA - 7

Page 25: apostila-logica-110210

25

Se (variavel = valor1) entao comando1

Senao Se (variavel = valor2) entao

Comando2 Senao

Se (variavel = valor3) entao Comando3

Senao Se (variavel = valor4) entao

Comando4 Senao

comando5 Fimse

Fimse Fimse

Fimse Com a estrutura de escolha múltipla, o algoritmo ficaria da seguinte maneira: escolha variavel

caso valor1 comando1

caso valor2 comando2

caso valor3 comando3

caso valor4 comando4

outrocaso comando5

fimescolha

Algoritmo - 04: Ler um número inteiro entre 1 e 4 e escrever o número por extenso correspondente: exemplo: Lido 1, será apresentado um. Lido 2, será apresentado dois etc. Planejamento Objetivo: Apresentar um número por extenso. Entradas: numero Saídas: Auxiliares: Projeto Cálculos e detalhamento: escolha numero

caso 1 escreva “um”

caso 2 escreva “dois”

caso 3 escreva “três”

caso 4 escreva “quatro”

outrocaso escreva “número inválido”

fimescolha

Page 26: apostila-logica-110210

26

Fluxograma

Portugol Algoritmo Algoritmo04 Var numero: inteiro Inicio Leia numero

escolha numero caso 1

escreva “um” caso 2

escreva “dois” caso 3

escreva “três” caso 4

escreva “quatro” outrocaso

escreva “número inválido” fimescolha

FimAlgoritmo

INICIO

numero

Numero=1 “um”

FIM

.V.

Numero=2 “dois” .V.

Numero=3 “tres” .V.

Numero=4 “quatro”

.V.

“numero invalido”

Page 27: apostila-logica-110210

27

8.3 – Estruturas de Repetição Estas estruturas possibilitam que nosso algoritmo seja muito mais enxuto e fácil de se programar. Imagine um algoritmo de fatorial de 8: Algoritmo FatorialNumero8 variaveis

fat : real; início

fat <- 8 * 7 fat <- fat * 6 fat <- fat * 5 fat <- fat * 4 fat <- fat * 3 fat <- fat * 2 escreva (fat)

FimAlgoritmo. O resultado será o fatorial com certeza, mas, imagine se fosse o fatorial de 250. Ou ainda, o usuário deseja fornecer o número e o algoritmo deve retornar o fatorial, qual número será digitado? Quantas linhas deverão ser escritas? Para isso servem as estruturas de repetição, elas permitem que um determinado bloco de comandos seja repetido várias vezes, até que uma condição determinada seja satisfeita. Serão estudadas as seguintes estruturas de repetição:

- Enquanto - Faca, o teste é realizado no Início do looping - Repita - Ateque, o teste é realizado no Final do looping - Para - de - ate - Passo - faca, cuja Estrutura é utilizada uma variável de Controle.

8.3.1 – Enquanto ... Faca - Estrutura com teste no Início Esta estrutura faz seu teste de parada antes do bloco de comandos, isto é, o bloco de comandos será repetido, até que a condição seja F. Os comandos de uma estrutura enquanto .. faca poderá ser executada uma vez, várias vezes ou nenhuma vez. Enquanto < condição > Faça

< bloco de comandos > FimEnquanto

Algoritmo - 05: Apresentar o total da soma obtida dos cem primeiros números inteiros (1+2+3+4+5+6+7+...+97+98+ 99+100). (Utilizar a estrutura Enquanto ... Faca) Planejamento Objetivo: Apresentar o resultado da soma obtida dos cem primeiros números inteiros Entradas: Num Saídas: Tot

Page 28: apostila-logica-110210

28

Projeto Cálculos e detalhamento: Enquanto Num <= 100 faca Tot<--Tot+Num

num=num+1 FimEnquanto Fluxograma

Portugol Algoritmo Algoritmo05 Var

Num, tot : inteiro Inicio

Num <- 0 Tot <- 0 Enquanto Num <= 100 faca Tot <-Tot+Num

Num <- num+1 FimEnquanto Escreva Tot

FimAlgoritmo

.F.

.V.

INICIO

FIM

Tot <-Tot+Num

tot

Enquanto Num <= 100

Num <- num+1

num <- 0

tot <- 0

Page 29: apostila-logica-110210

29

8.3.2 – Repita ... Ateque - Estrutura com teste no final Esta estrutura faz seu teste de parada após o bloco de comandos, isto é, o bloco de comandos será repetido, até que a condição seja V. Os comandos de uma estrutura repita .. até sempre serão executados pelo menos uma vez. Repita

comando1 comando2 comando3

ateque <condição>

Algoritmo – 06: Apresentar o total da soma obtida dos cem primeiros números inteiros (1+2+3+4+5+6+7+...+97+98+ 99+100). (Utilizar a estrutura Repita ... Até) Planejamento Objetivo: Apresentar o resultado da soma obtida dos cem primeiros números inteiros Entradas: Num Saídas: Tot Projeto Cálculos e detalhamento: Num=1 Repita

Tot <-Tot+Num Num <- num+1

Ateque Num >= 100 Portugol Algoritmo Algoritmo06 Var

Num, tol : inteiro Inicio

Num <- 1 Tot <- 0 Repita

Tot <-Tot+Num Num <- num+1

Ateque Num >= 100 Escreva Tot

FimAlgoritmo

Page 30: apostila-logica-110210

30

Fluxograma

8.3.3 – Para ... de ... ate ... Passo ... faca – Estrutura com variável de Controle Nas estruturas de repetição vistas até agora, acorrem casos em que se torna difícil determinar quantas vezes o bloco será executado. Sabemos que ele será executado enquanto uma condição for satisfeita - enquanto..faça, ou até que uma condição seja satisfeita - repita...até. A estrutura para .. passo repete a execução do bloco um número definido de vezes, pois ela possui limites fixos: Para <variável> <- <valor> até <valor> passo N faca

< bloco de comandos > FimPara

Algoritmo - 07: Apresentar o total da soma obtida dos cem primeiros números inteiros (1+2+3+4+5+6+7+...+97+98+ 99+100). (Utilizar a estrutura Para .. Passo) Planejamento Objetivo: Apresentar o resultado da soma obtida dos cem primeiros números inteiros Entradas: Num Saídas: Tot

.F. .V.

INICIO

FIM

Tot <-Tot+Num

tot

Ateque Num >= 100

Num <- num+1

num <- 1

tot <- 0

Page 31: apostila-logica-110210

31

Projeto Cálculos e detalhamento: Para num de 1 a 100 passo 1 faca

Tot <-Tot+Num FimPara

Fluxograma

Portugol Algoritmo Algoritmo07 Var

Num, tol : inteiro Inicio

Tot <- 0 Para num de 1 a 100 passo 1 faca

Tot <-Tot+Num FimPara

Escreva Tot FimAlgoritmo

9 - Conclusão Este semestre teve como principal objetivo capacitar o aluno a entender os conceitos fundamentais de lógica de programação de forma independente da linguagem e introduzi-lo a uma metodologia de desenvolvimento de programas. Saber Lógica de Programação é mais importante que saber uma Linguagem de Programação. Sem saber como se planeja um programa, dificilmente poderá ser implantada tanto na Linguagem de Programação mais antiga como nas mais modernas. Deseja-se boa sorte a todos os colegas, futuros profissionais da área de Informática!!!

.F.

.V.

INICIO

FIM

Tot <-Tot+Num

tot

tot <- 0

Para num de 1 a 100 passo 1 f

Page 32: apostila-logica-110210

32

Sumário 1 - Introdução à disciplina de Lógica de Programação.......................................................2 2 – Lógica de Programação................................................................................................2 2.1 - O que é Lógica? .........................................................................................................2 2.2 - Existe Lógica no dia-a-dia? ........................................................................................2 2.3 - O que é Algoritmo? ....................................................................................................2 2.4 - O que é padrão de comportamento?..........................................................................3 2.5 – Programação .............................................................................................................3 2.6 – Programa...................................................................................................................4 2.7 – Etapas de um programa ............................................................................................4 2.7.1 – Entrada ...................................................................................................................4 2.7.2 – Processamento.......................................................................................................4 2.7.3 – Saída ......................................................................................................................4 3 - Formas de Representação de Algoritmos .....................................................................4 3.1 - Descrição Narrativa ....................................................................................................5 3.2 - Fluxograma ................................................................................................................5 3.2.1 - Simbologias básicas................................................................................................5 3.3 - Pseudocódigo.............................................................................................................7 4 - Ciclo de vida de um programa.......................................................................................9 4.1.1 - Planejamento ..........................................................................................................9 4.1.2 - Projeto .....................................................................................................................9 4.1.3 - Escrita .....................................................................................................................9 4.1.4 - Depuração...............................................................................................................9 4.1.5 - Implantação.............................................................................................................9 4.1.6 - Manutenção.............................................................................................................9 4.1.7 - Morte do programa..................................................................................................9 4.2 - Método para construção de algoritmos ......................................................................9 4.3 - Um ambiente para escrever algoritmos....................................................................10 4.4 - Funcionamento do nosso computador .....................................................................11 4.5 - Resolvendo um problema.........................................................................................11 5 - Tipos de Dados e Instruções Primitivas ......................................................................12 5.1 - Dados Numéricos.....................................................................................................12 5.1.1 - Dados Numéricos Inteiros .....................................................................................12 5.1.2 - Dados Numéricos Reais........................................................................................12 5.2 - Dados Literais ..........................................................................................................13 5.3 - Dados Lógicos..........................................................................................................13 5.4 - Variáveis...................................................................................................................14 5.5 – Arquitetura de Memória ...........................................................................................14 5.5.1 – Memória................................................................................................................14 5.5.2 – Armazenamento de dados na memória................................................................14 5.5.3 – Identificadores ......................................................................................................14 5.6 – Definição de Variáveis em Algoritmos .....................................................................15 5.7 – Instruções Primitivas................................................................................................16 6 - Expressões..................................................................................................................16 6.1 - Conceito ...................................................................................................................16 6.2 - Operadores ..............................................................................................................17 6.3 - Tipos de Expressões ................................................................................................17

Page 33: apostila-logica-110210

33

6.3.1 - Expressões Aritméticas .........................................................................................17 6.3.2 - Expressões Lógicas ..............................................................................................18 7 - Comandos de Atribuição .............................................................................................19 7.1 – Constantes ..............................................................................................................19 7.2 - Entrada de Dados ....................................................................................................20 7.3 - Saída de Dados........................................................................................................20 8 - Estruturas de Controle.................................................................................................20 8.1 - Estrutura Seqüencial ................................................................................................20

Algoritmo - 01: Criar um programa que efetue a leitura de dois valores numéricos. Faça a operação de soma entre os dois valores e apresente o resultado obtido.........................................20

8.2 - Estruturas de Seleção ou Decisão ...........................................................................21 8.2.1 - Decisão Simples....................................................................................................22

Algoritmo - 02: Ler dois valores numéricos, efetuar a adição e apresentar o resultado caso o valor somado seja maior que 10. .............................................................................................................22

8.2.2 - Decisão Composta ................................................................................................23 Algoritmo - 03: Ler dois valores numéricos, efetuar a adição. Caso o valor somado seja maior ou igual a 10, este deverá ser apresentado somando-se a ele mais 5, caso o valor somado não seja maior ou igual a 10, este deverá ser apresentado subtraindo-se 7..................................................23

8.2.3 – Seleção Múltipla ...................................................................................................24 Algoritmo - 04: Ler um número inteiro entre 1 e 4 e escrever o número por extenso correspondente: exemplo: Lido 1, será apresentado um. Lido 2, será apresentado dois etc..........25

8.3 – Estruturas de Repetição ..........................................................................................27 8.3.1 – Enquanto ... Faca - Estrutura com teste no Início.................................................27

Algoritmo - 05: Apresentar o total da soma obtida dos cem primeiros números inteiros (1+2+3+4+5+6+7+...+97+98+ 99+100). (Utilizar a estrutura Enquanto ... Faca).........................27

8.3.2 – Repita ... Ateque - Estrutura com teste no final ....................................................29 Algoritmo – 06: Apresentar o total da soma obtida dos cem primeiros números inteiros (1+2+3+4+5+6+7+...+97+98+ 99+100). (Utilizar a estrutura Repita ... Até)................................29

8.3.3 – Para ... de ... ate ... Passo ... faca – Estrutura com variável de Controle..............30 Algoritmo - 07: Apresentar o total da soma obtida dos cem primeiros números inteiros (1+2+3+4+5+6+7+...+97+98+ 99+100). (Utilizar a estrutura Para .. Passo).................................30

9 - Conclusão ...................................................................................................................31 Sumário ............................................................................................................................32 Anexo - Bibliografia ..........................................................................................................34 Anexo - Listas de Exercícios ............................................................................................35

1º Lista de Exercícios .....................................................................................................................35 2º Lista de Exercícios .....................................................................................................................35 3º Lista de Exercícios .....................................................................................................................36 4º Lista de Exercícios .....................................................................................................................37 5º Lista de Exercícios .....................................................................................................................38 6º Lista de Exercícios .....................................................................................................................38 7º Lista de Exercícios .....................................................................................................................38 8º Lista de Exercícios .....................................................................................................................39 9º Lista de Exercícios .....................................................................................................................39 10º Lista de Exercícios ...................................................................................................................39 11º Lista de Exercícios ...................................................................................................................40 12º Lista de Exercícios ...................................................................................................................40 13º Lista de Exercícios ...................................................................................................................41 14º Lista de Exercícios ...................................................................................................................42 15º Lista de Exercícios ...................................................................................................................42

Page 34: apostila-logica-110210

34

Anexo - Bibliografia Bibliografia básica recomendada: Manzano, J. A. N. G., Oliveira, J. F.: Algoritmos Lógica para o Desenvolvimento da Programação. 10ª. Ed. São Paulo: Érica, 2001. Bibliografia complementar: Puga, S., Rissetti, G. Lógica de programação e estruturas de dados - com aplicações em Java. São Paulo: Prentice Hall, 2004. Lopes, A., Garcia, G.: Introdução à Programação – 500 Algoritmos resolvidos. Rio de Janeiro: Campus, 2002. Apostilas consultadas para confecção desta apostila: ________. Algoritmo e Lógica de Programação. Natal: Universidade Federal do Rio Grande do Norte - Departamento de Engenharia de Computação e Automação, 2004. Agosti, C. Curso Tecnólogo em Informática - Prof. - Apostila de Pascal. Xanxerê: Universidade do Oeste de Santa Catarina – Unoesc, 2001. Costa, R.; Paradzinski, A. Apostila de Lógica de Programação. Curso Técnico em Processamento de Dados. Egypto, C. Introdução à Programação. João Pessoa: Asper – Associação Paraibana de Ensino Renovado - Faculdade Paraibana de Processamento de Dados - Curso de Tecnologia em Processamento de Dados, 2004. Egypto, C. Linguagens e Técnicas e Programação I. João Pessoa: Asper – Associação Paraibana de Ensino Renovado - Faculdade Paraibana de Processamento de Dados - Curso de Tecnologia em Processamento de Dados, 1998. Mandaguari, C. B. M. Apostila da Disciplina de Análise de Algoritmos. Faculdade de Filosofia, Ciências e Letras de Mandaguari - Departamento de Informática, 2004. Mazer Jr, A. Curso Técnico em Informática – Disciplina de Técnicas de Programação I. Ponta Grossa : Senai - Serviço Nacional de Aprendizagem Industrial. Moraes, P. S. Curso Básico de Lógica de Programação. Unicamp - Centro de Computação - Lógica de Programação. Shine, C. Y. A Torre de Hanói. Artigo baseado em aula ministrada na IV Semana Olímpica, Salvador: Colégio Etapa. Tonin, N. Apostila de Algoritmos e Estrutura de Dados I. Erechim: Universidade Regional Integrada do Alto Uruguai e das Missões - URI – Campus de Erechim - Curso de Graduação em Ciência da Computação, 2005.

Page 35: apostila-logica-110210

35

Anexo - Listas de Exercícios Instruções gerais As Listas de Exercícios comporão 30% das notas A1 e A2. O prazo de entrega deverá ser cuidadosamente respeitado. Após uma semana de atraso não será contabilizada nota. A entrega será sempre individual Precisa constar sempre. Havendo falta de informações não será corrigido e não será contabilizada nota. - curso, turma, disciplina - nome do aluno em todas as folhas - número da lista de exercícios - número do exercício.

1º Lista de Exercícios Montar em Descrição Narrativa, Fluxograma e Portugol. 1 - Crie uma seqüência lógica para tomar banho. Verificar o que fazer se acabar a água. 2 - Descreva com detalhes a seqüência lógica para Trocar um pneu de um carro. Verificar se tem estepe. 3 - Faça um algoritmo que crie um suco de acerola. Caso não tenha açúcar substituir por adoçante.

2º Lista de Exercícios Utilizando linguagem natural, fluxogramas e Portugol, resolver os seguintes problemas: 1 - Um homem precisa atravessar um rio com um barco que possui capacidade de carregar apenas ele mesmo e mais uma de suas três cargas, que são: um lobo, um bode e um maço de alfafas. O que o homem deve fazer para conseguir atravessar o rio sem perder suas cargas? 2 - Construa um algoritmo que mostre todos os passos que você segue para escolher o tipo de roupa com que vai sair, após levantar, levando em consideração apenas o tempo (bom, nublado, chuvoso) e a temperatura (quente, moderado, frio). 3 - Elabore um algoritmo que mova três discos de uma Torre de Hanói, que consiste em três hastes (a - b - c), uma das quais serve de suporte para três discos 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 discos para outra haste. Simulação no site: http://www.npd.ufes.br/hanoi 4 - Três jesuítas e três canibais precisam atravessar um rio; para tal, dispõem de um barco com capacidade para duas pessoas. Por medidas de segurança não se permite que em alguma margem a quantidade de jesuítas seja inferior à de canibais. Qual a seqüência de passos que permitiria a travessia com segurança?

Page 36: apostila-logica-110210

36

3º Lista de Exercícios Favor entregar esta lista nesta própria folha (obrigatório) 1 - Classifique os dados especificados abaixo de acordo com seu tipo, assinalando com I os dados do tipo Inteiros, com R os Reais, com A os Alfanumérico, com B os lógicos (Booleanos). Deixe em branco aqueles para os quais não é possível definir a priori um tipo de dado. ( ) .v. ( ) " logico " ( ) 7094 ( ) F ( ) 2X ( ) .falso. ( ) " verdadeiro " ( ) .verdadeiro. ( ) y3 ( ) + 56 ( ) .F. ( ) " 01053-067 " ( ) " f " ( ) ! ( ) 89.41 ( ) " fone$res " ( ) - 7.05706 ( ) " - 6 " ( ) ate_que

( ) " Boa sorte " ( ) + 805 ( ) #fone_com ( ) 1584 ( ) - 54.01 ( ) " 14 " ( ) - 1 ( ) " o " ( ) .V. ( ) 18 ( ) .F. ( ) 0 ( ) x2 ( ) 8.55551 ( ) 18 º ( ) " 15 " ( ) 0,8 ( ) 28B ( ) - 1.0

( ) 156 ( ) " 6RN " ( ) " 11.06 " ( ) - 123 ( ) " Prova1 + 2 " ( ) " 15 º " ( ) " CARACT " ( ) VAR ( ) .falso. ( ) 111.3500089 ( ) " zero " ( ) 28B ( ) - 1.0n ( ) " 156 + 200 " ( ) - 16.087 ( ) " constante " ( ) alfanumerico ( ) RESULT= - 18

" 2 - Indique com um X quais são PALAVRAS RESERVADAS (INSTRUÇÕES): ( ) fim ( ) + 8 ( ) " ramal " ( ) enquanto ( ) 40P

( ) programa ( ) ate_que ( ) " abril/00 " ( ) nota_do_aluno ( ) fone

( ) ramal ( ) var ( ) acabou ( ) INICIO ( ) começa

3 - Assinale com um X os nomes válidos para uma VARIÁVEL: Justifique o motivo quando for um nome inválido: ( ) z8ur8cmv ____________________________________________ ( ) 18log ____________________________________________ ( ) y3 ____________________________________________ ( ) R$ 85.05 ____________________________________________ ( ) PROVA 1 ____________________________________________ ( ) data15_03_2000 ____________________________________________ ( ) ShoppingMorumbi ____________________________________________ ( ) constante80.9 ____________________________________________ ( ) inicio ____________________________________________ ( ) " mediad " ____________________________________________ ( ) [email protected] ____________________________________________ ( ) X ____________________________________________ ( ) fim ____________________________________________ ( ) laranja 12_reais ____________________________________________ ( ) Sul ____________________________________________ ( ) RAMAL ____________________________________________ ( ) O I A ____________________________________________ ( ) 5x ____________________________________________ ( ) var ____________________________________________

Page 37: apostila-logica-110210

37

4º Lista de Exercícios Favor entregar esta lista nesta própria folha (obrigatório) 1 - Assinale com X os identificadores corretos e explique o que está errado nos identificadores incorretos. ( ) valor _____________________________________________________ ( ) _b248 _____________________________________________________ ( ) nota*do*aluno_____________________________________________________ ( ) a1b2c3 _____________________________________________________ ( ) 3 x 4 _____________________________________________________ ( ) km/h _____________________________________________________ ( ) xyz _____________________________________________________ ( ) nome empr _____________________________________________________ ( ) sala_215 _____________________________________________________ ( ) “nota” _____________________________________________________ ( ) ah! _____________________________________________________ ( ) abc _____________________________________________________ ( ) AB/C _____________________________________________________ ( ) 123a _____________________________________________________ ( ) 080 _____________________________________________________ ( ) DBAC _____________________________________________________ ( ) xyz _____________________________________________________ ( ) A_B-C _____________________________________________________ ( ) U2 _____________________________________________________ ( ) A123 _____________________________________________________ ( ) Cos *4 _____________________________________________________ ( ) SENAO _____________________________________________________ 2 - Classifique os dados especificados abaixo de acordo com seu tipo, assinalando com I os dados do tipo inteiro, com R os reais, com L os literais, com B os lógicos (booleanos), e com N aqueles para os quais não é possível definir a priori um tipo de dado. ( ) 0.21 ( ) 1 ( ) V ( ) “0.” ( ) 1% ( ) “José” ( ) 0,35 ( ) .F. ( ) -0.001 ( ) .T. ( ) +3257 ( ) “a” ( ) “+3257” ( ) +3257. ( ) “-0.0” ( ) “.F.”

( ) - 3 ( ) .V. ( ) .V ( ) “abc” ( ) F ( ) C ( ) Maria ( ) +36 ( ) 0 ( ) + 36 ( ) “+3257 ( ) F ( ) 1 ( ) + 32 ( ) “+3257” ( ) 'F'

( ) 0,0 ( ) - 0,001 ( ) “-0,0” ( ) “.V.” ( ) 0 ( ) + 0,05 ( ) “.V.” ( ) F ( ) -1 ( ) + 3257 ( ) V ( ) -32 ( ) “a” ( ) “abc” ( ) -1,9E13 ( ) '0'

3 - Encontrar o resultado dos exercícios abaixo (Operadores Aritméticos): 1) result <- a*b-c+d 2) result <- b/a-c*d 3) result <- a*(b-c)+d 4) result <- a**d-c**d+(b^2) 5) result <- d*(b+c*(c/d)) 6) result <- a*(b-d)*((c-a) ^ 2)

Para os valores: A=3, B=6, c=8, d=2 Respostas: 1) result <- ____ 2) result <- ____ 3) result <- ____ 4) result <- ____ 5) result <- ____ 6) result <- ____

Para os valores: A=2, B=6, c=6, d=1 Respostas: 1) result <- ____ 2) result <- ____ 3) result <- ____ 4) result <- ____ 5) result <- ____ 6) result <- ____

Page 38: apostila-logica-110210

38

5º Lista de Exercícios Desenvolva os algoritmos nas 3 formas de representação: Descrição Narrativa (Planejamento e Projeto), Fluxograma e codificação em Português Estruturado (Portugol) dos seguintes programas: 1 - Criar um programa que efetue a leitura de quatro valores numéricos. Faça a operação de soma entre os quatro valores e apresente o resultado obtido. 2 - Desenvolver a lógica para um programa que efetue o cálculo da área de uma circunferência e do triângulo apresentando a medida das áreas calculadas. 3 - Calcular e apresentar o valor do volume de uma lata de óleo, utilizando a fórmula: VOLUME = pi * R2 * ALTURA. 4 – Ler o nome e o endereço de uma pessoa. Apresentar em tela novamente.

6º Lista de Exercícios Desenvolva os algoritmos nas 3 formas de representação: Descrição Narrativa (Planejamento e Projeto), Fluxograma e codificação em Português Estruturado (Portugol) dos seguintes programas: 1 - Efetuar a leitura de um número inteiro e apresentar o resultado do quadrado deste número. 2 - Efetuar o cálculo da quantidade de litros de combustível gastos em uma viagem, utilizando-se um automóvel que faz 12 km por litro. Para obter o cálculo, o usuários deverá fornecer o tempo gasto na viagem e a velocidade média durante a mesma. Desta forma, será possível obter a distância percorrida com a fórmula DISTANCIA = TEMPO * VELOCIDADE. Tendo o valor da distância, basta calcular a quantidade de litros de combustível utilizada na viagem com a fórmula: LITROS_USADOS = DISTANCIA / 12. O programa deverá apresentar os valores da velocidade média, tempo gasto na viagem, a distância percorrida e a quantidade de litros utilizada na viagem. 3 - Efetuar o cálculo do valor de uma prestação em atraso, utilizando a fórmula: PRESTAÇÃO = VALOR + (VALOR * (TAXA / 100) * TEMPO). 4 - Dados dois números inteiros, trocar o conteúdo desses números.

7º Lista de Exercícios Desenvolva os algoritmos nas 3 formas de representação: Descrição Narrativa (Planejamento e Projeto), Fluxograma e codificação em Português Estruturado (Portugol) dos seguintes programas: 1 - O cardápio de uma lanchonete é dado abaixo. Prepare um algoritmo que leia a quantidade de cada item que você consumiu e calcule a conta final. Hambúrguer R$ 3,00 Cheeseburger R$ 2,50 Fritas R$ 2,50 Refrigerante R$ 1,00 Milkshake R$ 3,00 2 - Dados dois números inteiros, achar a média aritmética entre eles.

Page 39: apostila-logica-110210

39

3 - Escreva um algoritmo que tenha como entrada nome, endereço, sexo, salário. Após lê-los, apresente ao usuário os valores digitados. 4 - Fazer a transformação de um valor em dólar, para a moeda corrente do Brasil.

8º Lista de Exercícios Desenvolva os algoritmos nas 3 formas de representação: Descrição Narrativa (Planejamento e Projeto), Fluxograma e codificação em Português Estruturado (Portugol) dos seguintes programas: 1 - Ler dois valores numéricos, efetuar a multiplicação entre eles, e apresentar o resultado caso o valor multiplicado seja maior ou igual que 5000. 2 - Efetue o cálculo do reajuste de salário de um funcionário. Considere que o funcionário deverá receber um reajuste de 15% caso seu salário seja menor que R$ 500,00, se o salário foi maior ou igual a R$ 500,00 mas menor ou igual a R$ 1000,00, seu reajuste será de 10%, caso seja ainda maior que R$ 1000,00, o reajuste deverá ser de 5%. 3 - Efetuar a leitura de um valor positivo ou negativo e apresentar o número lido como sendo um valor positivo, ou seja, o programa deverá apresentar o módulo de um número fornecido. Lembre-se de verificar se o número fornecido é menor que zero, sendo multiplique-o por -1.

9º Lista de Exercícios Desenvolva os algoritmos nas 3 formas de representação: Descrição Narrativa (Planejamento e Projeto), Fluxograma e codificação em Português Estruturado (Portugol) dos seguintes programas: 1 - Ler 4 notas escolares de um aluno e imprimir uma mensagem dizendo que o aluno foi aprovado, se o valor da média for maior ou igual que 7. Caso o contrário, solicitar a nota do exame final, somar com o valor da média e obter a nova média. Se a nova média for maior ou igual a 5, apresentar uma mensagem que o aluno foi aprovado em exame. Se o aluno não foi aprovado, indicar uma mensagem informando esta condição. Apresentar com as mensagens o valor da média do aluno, para qualquer condição. 2 - Conheça três números inteiros, e informe qual é o maior. Exibi-los depois em ordem crescente. 3 - Construa um algoritmo que verifique a validade de uma senha fornecida pelo usuário. A senha válida deve ser igual a ‘cachorro’.

10º Lista de Exercícios Desenvolva os algoritmos nas 3 formas de representação: Descrição Narrativa (Planejamento e Projeto), Fluxograma e codificação em Português Estruturado (Portugol) dos seguintes programas: 1 - Ler um número inteiro entre 1 e 9 e escrever o número por extenso correspondente: exemplo: Lido 1, será apresentado um. Lido 2, será apresentado dois etc. 2 - Ler um número inteiro entre 1 e 12 e escrever o mês correspondente. Caso o usuário digite um número fora desse intervalo, deverá aparecer uma mensagem informando que não existe mês com este número.

Page 40: apostila-logica-110210

40

3 - Uma faculdade atribui menções aos alunos conforme a faixa de notas que tenha atingido: 9,0 a 10: SS (superior) 7,0 a 8,9: MS (médio superior) 5, 0 a 6,9: MM (médio) 3,0 a 4,9: MI (médio inferior) 0,1 a 2,9: II (inferior) 0: SR (sem rendimento). Faça um programa que lê a nota e informa a menção.

11º Lista de Exercícios Desenvolva os algoritmos nas 3 formas de representação: Descrição Narrativa (Planejamento e Projeto), Fluxograma e codificação em Português Estruturado (Portugol) dos seguintes programas: 1 - Imprimir todos os números de 1 a 100. 2 - Imprimir os múltiplos de 5, no intervalo de 1 a 500. 3 - Apresentar os quadrados dos números inteiros de 15 a 200. 4 - Elaborar um programa que apresente o valor de uma potência de uma base qualquer elevada a um expoente qualquer, ou seja, de NM.

12º Lista de Exercícios Desenvolva os algoritmos nas 3 formas de representação: Descrição Narrativa (Planejamento e Projeto), Fluxograma e codificação em Português Estruturado (Portugol) dos seguintes programas: 1 - Apresentar as potências de 3 variando de 0 a 15. Deve ser considerado que qualquer número elevado a zero é 1, e elevado a 1 é ele próprio. Deverá ser apresentado, observando a seguinte definição: 30 = 1 31 = 3 32 = 9 (...) 315 = 14348907 2 - Criar um algoritmo que imprima todos os números de 1 a 100 e a soma deles. (1 + 2 + 3 + 4 + 5 + 6 + 7 + etc. + 97 + 98 + 99 + 100). 3 - Apresentar os resultados de uma tabuada de um número qualquer. Esta deverá ser impressa no seguinte formato: Considerando como exemplo o fornecimento do número 2 2x1= 2 2x2= 4 2x3= 6 2x4= 8 2x5=10 (...) 2x10=20

Page 41: apostila-logica-110210

41

13º Lista de Exercícios Desenvolva os algoritmos nas 3 formas de representação: Descrição Narrativa (Planejamento e Projeto), Fluxograma e codificação em Português Estruturado (Portugol) dos seguintes programas: 1 - Escrever um algoritmo que calcule a média dos números digitados pelo usuário, se eles forem pares, termine a leitura se o usuário digitar 0 (zero) e mostre o resultado final. 2 - Fazer um programa para imprimir o conceito de um aluno, dada a sua nota. Supor notas inteiras somente. O critério para conceitos é o seguinte: - nota inferiores a 3 - conceito E; - nota de 3 a 5 - conceito D; - notas 6 e 7 - conceito C; - notas 8 e 9 - conceito B; - nota 10 - conceito A. 3 - Ler vinte valores e contar quantos deles são maiores que 1000. 4 – Faça um algoritmo que exiba os números pares entre 1000 e 0, nessa ordem, usando a estrutura para. 5 - Dado um conjunto de números inteiros, obter a soma e a quantidade de elementos. 6 - Desenhar o Fluxograma para o seguinte programa codificado em Portugol: Algoritmo SALARIOCOMREAJUSTE Var SAL: Real SALREAJ: Real Inicio leia SAL

se (SAL < 500) entao SALREAJ ← (SAL * 1.15)

senao se (SAL <= 1000) entao

SALREAJ ← (SAL * 1.10) senao

SALREAJ ← (SAL * 1.05) fimse

fimse escreva SALREAJ

FimAlgoritmo 7 - Programa Seu nome Você digita seu nome na tela e apresenta como resposta (em tela novamente) o que você digitou. Formato da tela: ___________________________________ Digite seu nome: ______________ Seu nome é: ______________ ___________________________________

Page 42: apostila-logica-110210

42

14º Lista de Exercícios Desenvolva os algoritmos nas 3 formas de representação: Descrição Narrativa (Planejamento e Projeto), Fluxograma e codificação em Português Estruturado (Portugol) dos seguintes programas: 1 - Faça um programa para gerar e exibir os números inteiros de 20 até 10, decrescendo de 1 em 1. 2 - Calcule o fatorial de um número qualquer. Exemplo: Se o valor lido for 5. O fatorial de 5! é: 5 x 4 x 3 x 2 x 1. Exemplo: Se o valor lido for 150. O fatorial de 150! é: 150 x 149 x 148 x ... 3 x 2 x 1. Se o número for zero, o fatorial de 0! tem como resultado 1. 3 - Escreva um algoritmo que escreva 15 vezes o nome do seu time preferido. O valor deve ser inserido pelo usuário. Ao final, apresentar também: "O melhor time do século!". 4 - Escreva um algoritmo que calcule a soma e a média dos salários dos funcionários de uma empresa. O programa termina quando o usuário digitar um salário menor que 0.

15º Lista de Exercícios Desenvolva os algoritmos nas 3 formas de representação: Descrição Narrativa (Planejamento e Projeto), Fluxograma e codificação em Português Estruturado (Portugol) dos seguintes programas: 1 - Realizou-se uma pesquisa para determinar o índice de mortalidade infantil em um certo período. Construa um algoritmo que leia o número de crianças nascidas no período e, depois, num número indeterminado de vezes, o sexo de uma criança morta (masculino, feminino) e o número de meses da vida da criança. Como finalizador, teremos a palavra “fim” no lugar do sexo da criança. Determine e imprima: - a porcentagem de crianças mortas no período; - a porcentagem de crianças do sexo masculino mortas no período; - a porcentagem de crianças que viveram dois anos ou menos no período. 2 - Recebendo quatro médias bimestrais, calcule a media do ano (ponderada), sabendo que o 1º bimestre tem peso 1, o 2º bimestre tem peso 2, o 3º bimestre tem peso 3 e o 4º bimestre tem peso 4. Sabendo que para aprovação o aluno precisa ter uma média anual maior ou igual a 7, escreva uma mensagem indicando se o aluno foi aprovado ou reprovado. Observação: Média anual = (1º bimestre * 1+ 2º bimestre * 2 + 3º bimestre * 3 + 4º bimestre * 4) / (1+2+3+4) 3 - Escreva um programa para ler o nome e o sobrenome de uma pessoa e escrevê-los na seguinte forma: sobrenome seguido por uma vírgula e pelo nome. Exemplo: entrada: "Antonio","Soares" saída: Soares, Antonio 4 - Deseja-se calcular a conta de consumo de energia elétrica de um consumidor. Para isto, escreva um programa que leia o código do consumidor, o preço do Kw e a quantidade de Kw consumido, e exiba o código do consumidor e o total a pagar. - total a pagar = preço x quantidade - total a pagar mínimo = R$ 11,20