APOSTILA 02 LÓGICA DE PROGRAMAÇÃO · PDF fileCada linha do algoritmo...

54
EDGAR TITO - INFORMÁTICA 2014 – Prof. Ranildo Lopes 1 U.E PROF EDGAR TITO - NOITE PROF. RANILDO LOPES DISCIPLINA: Lógica de Programação APOSTILA 02 LÓGICA DE PROGRAMAÇÃO Visite nosso sítio http://ueedgartito.wordpress.com “Nele estão os resumos e trabalho de sala de aula” Obrigado pela preferência de nossa ESCOLA!

Transcript of APOSTILA 02 LÓGICA DE PROGRAMAÇÃO · PDF fileCada linha do algoritmo...

Page 1: APOSTILA 02 LÓGICA DE PROGRAMAÇÃO · PDF fileCada linha do algoritmo pode-se chamar de uma instrução, logo, podemos dizer que um algoritmo é um conjunto de instruções

EDGAR TITO - INFORMÁTICA 2014 – Prof. Ranildo Lopes 1

U.E PROF EDGAR TITO - NOITE PROF. RANILDO LOPES DISCIPLINA: Lógica de Programação

APOSTILA 02

LÓGICA DE PROGRAMAÇÃO

Visite nosso sítio

http://ueedgartito.wordpress.com

“Nele estão os resumos e trabalho

de sala de aula”

Obrigado pela preferência de nossa ESCOLA!

Page 2: APOSTILA 02 LÓGICA DE PROGRAMAÇÃO · PDF fileCada linha do algoritmo pode-se chamar de uma instrução, logo, podemos dizer que um algoritmo é um conjunto de instruções

EDGAR TITO - INFORMÁTICA 2014 – Prof. Ranildo Lopes 2

Sumário  I - CONCEITOS INICIAIS .......................................................................................................................................... 3

Lógica de programação......................................................................................................................................... 3 Algoritmo ............................................................................................................................................................... 3 Instrução................................................................................................................................................................ 4 EXERCÍCIOS ........................................................................................................................................................ 4 Programa de Computador..................................................................................................................................... 4 Fases..................................................................................................................................................................... 4 Diagrama de Blocos .............................................................................................................................................. 5 EXERCÍCIOS ........................................................................................................................................................ 5

II - VARIÁVEIS........................................................................................................................................................... 5 Tipos de Variáveis ................................................................................................................................................. 6

Numéricas ......................................................................................................................................................... 6 Cadeia ou String ou Alfanuméricas .................................................................................................................. 6 Caractere .......................................................................................................................................................... 6 Lógico................................................................................................................................................................ 7

Constantes ............................................................................................................................................................ 7 III - EXPRESSÕES .................................................................................................................................................... 7

Operadores Aritméticos......................................................................................................................................... 7 Operadores Relacionais........................................................................................................................................ 7 Operadores Lógicos .............................................................................................................................................. 8 EXERCÍCIOS ........................................................................................................................................................ 9

IV – COMANDOS BÁSICOS ................................................................................................................................... 10 Comando de Atribuição....................................................................................................................................... 10 Comando de Entrada .......................................................................................................................................... 10 Comando de Saída.............................................................................................................................................. 10 Primeiro Exemplo – Português Estruturado e Pascal ......................................................................................... 10 EXERCÍCIOS - Estrutura Seqüencial.................................................................................................................. 12

V – ESTRUTURAS DE SELEÇÃO.......................................................................................................................... 13 Conceitos............................................................................................................................................................. 13 Seleção Simples.................................................................................................................................................. 13

Seleção Composta .............................................................................................................................................. 13 Exemplo............................................................................................................................................................... 13 EXERCÍCIOS – Estrutura de Seleção................................................................................................................. 14 Alternativa de Múltiplas Escolhas........................................................................................................................ 15 EXERCÍCIOS – Alternativa de Múltiplas Escolhas ............................................................................................. 17

VI – ESTRUTURAS DE REPETIÇÃO ..................................................................................................................... 17 Comando Enquanto (While - Do) ........................................................................................................................ 17 Comando Repita (Repeat - Until) ........................................................................................................................ 18 EXERCÍCIOS – Comando Enquanto (WHILE) ................................................................................................... 18 Comando Para (For)............................................................................................................................................ 20 EXERCÍCIOS – Comando Para (For) ................................................................................................................. 21

ANEXO I – Questões de Raciocínio Lógico .............................................................................................................. 2 ANEXO II - Transferência de Comandos: Português Estruturado para Pascal ........................................................ 3

Page 3: APOSTILA 02 LÓGICA DE PROGRAMAÇÃO · PDF fileCada linha do algoritmo pode-se chamar de uma instrução, logo, podemos dizer que um algoritmo é um conjunto de instruções

EDGAR TITO - INFORMÁTICA 2014 – Prof. Ranildo Lopes 3

I - CONCEITOS INICIAIS Lógica de programação É a técnica de encadear pensamentos para atingir determinado objetivo. O aprendizado desta técnica é necessário, para quem quer trabalhar com desenvolvimento de sistemas e programas. Algoritmo É uma seqüência de passos finitos com o objetivo de solucionar um problema. O estudo da lógica é o estudo dos métodos e princípios usados para distinguir o raciocínio correto do incorreto. Naturalmente, essa definição não pretende afirmar que só é possível argumentar corretamente com uma pessoa que já tenha estudado lógica. Afirmá-lo seria tão errôneo quanto pretender que só é possível correr bem, se estudou física e fisiologia, necessárias para a descrição dessa atividade. Alguns excelentes atletas ignoram completamente os processos complexos que se desenrolam dentro deles próprios quando praticam o esporte. Assim também acontece no nosso dia-a-dia. Quantas vezes já vimos um algoritmo e não sabíamos que aquela seqüência de passos chamava-se algoritmo. Um exemplo bem freqüente é quando queremos falar em algum telefone público. Exemplo de algoritmo para falar em um telefone público 1 – Retirar o telefone do gancho; 2 – Esperar o sinal; 3 – Colocar o cartão; 4 – Discar o número; 5 – Falar no telefone; 6 – Colocar o telefone no gancho. O algoritmo é exatamente esse conjunto de passos que resolveu o problema de uma pessoa falar no telefone. É como se fôssemos ensinar uma máquina a fazer alguma tarefa específica. Outro exemplo clássico é um algoritmo para resolver o problema de fritar um ovo que poderia estar escrito em forma de uma receita. A receita é um algoritmo, pois é formada de ações que devem ser tomadas para fritar um ovo. Exemplo de algoritmo para fritar um ovo 1 – pegar frigideira, ovo, óleo e sal; 2 – colocar óleo na frigideira; 3 – acender o fogo; 4 – colocar a frigideira no fogo; 5 – esperar o óleo esquentar; 6 – colocar o ovo; 7 – colocar o sal; 8 – retirar quando estiver pronto. Cada linha do algoritmo pode-se chamar de uma instrução, logo, podemos dizer que um algoritmo é um conjunto de instruções.

Page 4: APOSTILA 02 LÓGICA DE PROGRAMAÇÃO · PDF fileCada linha do algoritmo pode-se chamar de uma instrução, logo, podemos dizer que um algoritmo é um conjunto de instruções

EDGAR TITO - INFORMÁTICA 2014 – Prof. Ranildo Lopes 4

Assim como fritar um ovo, nos algoritmos computacionais não podemos trocar ou omitir certas instruções, caso contrário não obteremos o resultado esperado. Por exemplo, se omitirmos a instrução acender o fogo, não teremos ao final do algoritmo um ovo frito. Instrução Indica a um computador uma ação elementar a ser executada. Até as coisas mais simples podem ser descritas por um algoritmo. Por exemplo: Algoritmo para o fim de semana 1 – vejo a previsão do tempo; 2 – se fizer sol vou à praia; senão vou estudar; 3 – almoçar; 4 – ver televisão; 5 – dormir.

EXERCÍCIOS 1 – Fazer um algoritmo para tomar banho: 2 – Crie um algoritmo para fazer uma prova: 3 – Faça um algoritmo para somar dois números: Programa de Computador Nada mais é do que um algoritmo escrito numa linguagem de computador (C, Pascal, Fortran, Delphi, Cobol, Java e outras). É a tradução para o inglês do algoritmo feito em português. O mais importante de um programa é a sua lógica, o raciocínio utilizado para resolver o problema, que é exatamente o algoritmo. A forma de escrever um algoritmo em pseudocódigo (algoritmo que não usa nenhuma linguagem de programação) vai variar de autor para autor, pois, um traduz ao pé da letra a linguagem C, outro, o Pascal, outro, mistura as duas linguagens e assim por diante. É importante lembrar que estas variações vão sempre ocorrer, podemos dizer que é uma variação de autores adotados. Fases A principal finalidade de um computador é realizar a tarefa de processamento de dados, isto é, receber dados através de dispositivos de entrada que podem ser, por exemplo, teclado, mouse, scanner, entre outros; realizar operações com estes dados e gerar uma resposta que será expressa em um dispositivo de saída que pode ser, por exemplo, uma impressora, um monitor de vídeo, entre outros. Entretanto ao montar um algoritmo, precisamos primeiro dividir o problema apresentado em três fases fundamentais: ENTRADA: São os dados de entrada do algoritmo. PROCESSAMENTO: São os procedimentos utilizados para chegar ao resultado final.

ENTRADA DE

DADOS

PROCESSAMENTO

DE DADOS

SAÍDA DE DADOS

Page 5: APOSTILA 02 LÓGICA DE PROGRAMAÇÃO · PDF fileCada linha do algoritmo pode-se chamar de uma instrução, logo, podemos dizer que um algoritmo é um conjunto de instruções

EDGAR TITO - INFORMÁTICA 2014 – Prof. Ranildo Lopes 5

SAÍDA: São os dados já processados, os resultados, mostrados na tela do computador (monitor de vídeo) ou impressora. Diagrama de Blocos É uma forma padronizada para representar os passos lógicos de um determinado processamento. Com o diagrama, também conhecido como fluxograma, podemos definir uma seqüência de símbolos, com significado bem definido, portanto, sua principal função é a de facilitar a visualização dos passos de um processamento.

Simbologia do Diagrama de Bloco Existem diversos símbolos em um diagrama de bloco. Veja no quadro abaixo alguns dos símbolos que iremos utilizar:

Símbolo Função TERMINAL

Indica o início ou fim de um processamento Exemplo: Início do algoritmo

PROCESSAMENTO

Processamento em geral Exemplo: x<- 2+3

ENTRADA MANUAL DE DADO

Indica entrada de dados pelo usuário via teclado Exemplo: Digite a nota da prova 1

EXIBIR

Mostra informações ou resultados Exemplo: Mostre o resultado do cálculo

EXERCÍCIOS 1. Construir um diagrama de blocos que:

- leia quatro números - calcule a média - mostre o resultado.

2. Construa fluxograma que: - leia o salário de um empregado - calcule o novo salário sabendo que lê teve um aumento de 15% - mostre o resultado na tela

3. Agora faça um algoritmo para o exercício 2.

II - VARIÁVEIS É um local na memória principal, isto é, um endereço que armazena um conteúdo. O conteúdo de uma variável pode ser de vários tipos: inteiro, real, caractere (literal), String (cadeia), lógico, entre outros. Uma vez definidos o nome e o tipo de uma variável, não podemos alterá-los no decorrer de um algoritmo. Por outro lado, o conteúdo da variável pode ser modificado no decorrer do programa, de acordo com a necessidade. Em algoritmos, as variáveis são definidas no início por meio do comando definido:

Page 6: APOSTILA 02 LÓGICA DE PROGRAMAÇÃO · PDF fileCada linha do algoritmo pode-se chamar de uma instrução, logo, podemos dizer que um algoritmo é um conjunto de instruções

EDGAR TITO - INFORMÁTICA 2014 – Prof. Ranildo Lopes 6

Nome da variável: tipo da variável; Exemplos: A: inteiro; X: real; Nome: string (ou cadeia); Regras para formação do nome de uma variável: 1 – O primeiro caractere é uma letra; 2 – Se houver mais de um caractere, poderemos usar letras ou dígitos;

3 – Nomes de variáveis escritas com letras maiúsculas serão diferentes de letras minúsculas em muitas linguagens de programação. Lembre-se: peso é diferente de PESO;

4 – Nenhuma palavra reservada poderá ser nome de uma variável.

Nomes Válidos Nomes Não-Válidos Nome, profissao,n, n1,PESO, A 2X -> Começa por algarismo

peso do aluno -> espaço não é permitido

Tipos de Variáveis Numéricas

São aquelas que armazenam dados numéricos, podendo ser divididos em duas classes: Inteiro: são aqueles que não possuem componentes decimais ou fracionários, podendo ser positivos ou negativos. Normalmente uma variável do tipo inteira poderá ocupar 1, 2 ou 4 bytes na MP. Exemplos:

10 número inteiro positivo -10 número inteiro negativo Real: são aqueles que podem possuir componentes decimais ou fracionários, podendo também ser positivos ou negativos. Normalmente uma variável do tipo real poderá ocupar 4 ou 8 bytes na MP. Exemplos: 25.03 número real positivo com duas casas decimais

235. número real positivo com zero casas decimais -10.5 número real negativo com uma casa decimal

Cadeia ou String ou Alfanuméricas São aquelas que possuem letras e/ou números. Pode em determinados momentos conter somente dados numéricos ou somente letras. Se usado somente para armazenamento de números, não poderá ser utilizado para operações matemáticas. O número de bytes possíveis para armazenamento de uma variável desse tipo dependerá da quantidade de caracteres. Exemplos: “Maria” String de comprimento 5 “123” String de comprimento 3 “A” String de comprimento 1

Caractere É aquele que armazena apenas uma letra ou dígito, é uma string de comprimento 1. Se usado para armazenar número não poderá ser utilizado para operações matemáticas.

Page 7: APOSTILA 02 LÓGICA DE PROGRAMAÇÃO · PDF fileCada linha do algoritmo pode-se chamar de uma instrução, logo, podemos dizer que um algoritmo é um conjunto de instruções

EDGAR TITO - INFORMÁTICA 2014 – Prof. Ranildo Lopes 7

Normalmente uma variável do tipo caractere ocupará 1 byte na MP. Exemplos: “A” caractere que armazena uma letra “5” caractere que armazena um número

Lógico Também conhecido como booleano. É representado no algoritmo pelos dois únicos valores lógicos possíveis: verdadeiro ou falso. Porém é comum encontrar em outras referências outros pares de valores lógicos como: sim/não, 1/0, true/false, verdadeiro/falso. Constantes Constante é um determinado valor fixo que não se modifica ao longo do tempo, durante a execução de um programa. Conforme seu tipo, a constante é classificada como sendo numérica, lógica ou literal. As declarações das constantes em um algoritmo são feitas antes das declarações das variáveis: Sintaxe: Nome da constante = valor da constante;

III - EXPRESSÕES 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 relaciona-se por meio de operadores compondo uma fórmula que, uma vez avaliada, resulta num valor. Operadores Aritméticos Os operadores matemáticos são:

Operador Função + Somar - Subtrair * Multiplicar / Dividir

Div Quociente inteiro Mod Resto da divisão

Os operadores Div e Mod só podem ser aplicados com operandos inteiros. O operador / sempre conduz a um resultado real. Com os operadores +, - e * , se pelo menos um dos operandos for real, então o resultado será real. Exemplos de expressões aritméticas: 3 * 3 = 9 9 / 2 = 4.5 9 DIV 2 = 4 9 MOD 2 = 1 2 / 9 = 0.22 2 + 4.6 = 6.6 Operadores Relacionais Uma expressão relacional é uma comparação realizada entre dois valores de mesmo tipo, tendo como resposta sempre um valor booleano (verdadeiro ou falso). Estes valores são representados na relação através de constantes, variáveis ou expressões aritméticas.

Page 8: APOSTILA 02 LÓGICA DE PROGRAMAÇÃO · PDF fileCada linha do algoritmo pode-se chamar de uma instrução, logo, podemos dizer que um algoritmo é um conjunto de instruções

EDGAR TITO - INFORMÁTICA 2014 – Prof. Ranildo Lopes 8

Os operadores relacionais são:

Símbolo Descrição = Igual

< > Diferente

< = Menor ou igual

> = Maior ou igual

> Maior que

< Menor que Exemplo de relações: X = 1 y = 2 z = 5 X * X + Y > Z 1 * 1 + 2 > 5 1 + 2 > 5 3 > 5 Resultado desta expressão: FALSO Operadores Lógicos Uma expressão lógica serve para combinar resultados de expressões aritméticas e/ou relacionais, variáveis e/ou constantes, retornando verdadeiro ou falso. Exemplo de operadores lógicos, matematicamente conhecidos:

E And Ou Or Não Not

E / AND Uma expressão AND (E) é verdadeira se todas as condições forem verdadeiras. OR / OU Uma expressão OR (OU) é verdadeira se pelo menos uma condição for verdadeira. NOT / NÃO Uma expressão NOT (NÃO) inverte o valor da expressão ou condição, se verdadeira inverte para falsa e vice-versa.

Tabela E (AND) Tabela OU (OR) Tabela NÃO (NOT) V e V = V V ou V = V Não V = F V e F = F V ou F = V Não F = V F e V = F F ou V = V F e F = F F ou F = F

As prioridades entre os operadores são: 1º - ( ) 2º - funções 3º - Não 4º - *, / , Div, Mod, E

Page 9: APOSTILA 02 LÓGICA DE PROGRAMAÇÃO · PDF fileCada linha do algoritmo pode-se chamar de uma instrução, logo, podemos dizer que um algoritmo é um conjunto de instruções

EDGAR TITO - INFORMÁTICA 2014 – Prof. Ranildo Lopes 9

5º - +, -, Ou 6º - =, < >, <, <=, >, >=. Observação: em caso de empate entre as prioridades, resolver da esquerda para a direita.

EXERCÍCIOS 1. Identifique o tipo dos dados:

(a) inteiro; (b) real; (c) lógico; (d) cadeia ou literal

( ) verdadeiro ( ) ‘c*d’ ( ) falso ( ) ’1 2 3 4’ ( ) ‘aula’ ( ) 897 ( ) ‘345’ ( ) -18.589 ( ) -0.342 ( ) 35.23 ( ) -23 ( ) ‘Maria’

2. Indique os identificadores como válidos ou inválidos: (a) identificador válido (b) identificador inválido

( ) ano ( ) ai! ( ) 3/1 ( ) media_salario ( ) A15B34 ( ) nome-aluno ( ) média ( ) ‘aula’ ( ) 5ª

3. Faça a declaração de 2 variáveis do tipo inteira, 2 do tipo real, 2 de um único caractere e 2 do tipo cadeia de caracteres.

4. Indique qual o resultado das expressões aritméticas abaixo:

Sendo: x = 6.0 y = 2 z = 4.0 a = 8 b = 7.5 c = 7.7 d = 12 p = 4 q = 3 r = 10 s = 2.5

a) x + y – z * a = f) ((z / a) + b * a) – d = b) d div y = g) 100 * (q div p) + r = c) d mod y = h) p * (r mod q) –q/2 d) y div d = i) raiz (r – (q * q ) ) = e) y mod d = j) (a + r) * r =

5. Dadas as informações abaixo, informe qual o valor das relações (verdadeiro ou falso):

a) a = 2.0, b = 9.0, nome = ‘ana’, profissao = ‘advogado’ a + 1 > = raiz (b) ( ) nome < > ‘ana’ ( ) profissao = ‘médico’ ( ) b) a = 6.0, b = 121.0, nome = ‘pedro’, profissao = ‘médico’ a + 1 > = raiz (b) ( ) nome < > ‘ana’ ( ) profissao = ‘médico’ ( ) c) x = 3, y = 4, z = 16, nome = ‘maria’, resultado = verdadeiro ( x + y > z ) and (nome = ‘maria’) ( )

Page 10: APOSTILA 02 LÓGICA DE PROGRAMAÇÃO · PDF fileCada linha do algoritmo pode-se chamar de uma instrução, logo, podemos dizer que um algoritmo é um conjunto de instruções

EDGAR TITO - INFORMÁTICA 2014 – Prof. Ranildo Lopes 10

(resultado) or ( y > = x ) ( ) (not resultado) and ( z div y + 1 = x ) ( ) (nome = ‘josé’) and ( x + y + z < ( y * y )) ( )

IV – COMANDOS BÁSICOS

Comando de Atribuição Este comando é utilizado para atribuir valores a variáveis e, em portugol (português estruturado), é representado por <- (seta da direita para esquerda). Exemplos de comandos de atribuição: Cor <- ‘verde’; Teste <- falso; Media <- (n1 + n2) / 2; X <- raiz (16);

Comando de Entrada O comando de entrada LEIA é utilizado para receber dados do teclado. É o comando que permite que o usuário digite dados, possibilitando um “diálogo com o computador”. O dado digitado é armazenado na variável indicada no comando. Lembre-se de que o nome de uma variável representa uma posição de memória. Sintaxe: Leia (nome de uma variável); Exemplo: Leia (n); Comando de Saída É o comando responsável por enviar um resultado, uma informação ao usuário. O valor de cada variável é buscado na memória e mostrado em um dispositivo de saída. Através desse comando o computador pode emitir os resultados e outras mensagens para o usuário através da tela do computador (monitor) ou uma impressora. Sintaxe: Escreva (expressão ou variável ou constantes); Exemplos: Escreva (‘ Aprender lógica com esta apostila ficou bem mais fácil!’); Escreva (‘ Digite o seu nome: ‘); Escreva ( A + B ); Escreva (‘A média das notas é = ‘, media); Primeiro Exemplo – Português Estruturado e Pascal Algoritmo que lê um nome digitado pelo usuário e mostra uma mensagem. Português Estruturado Programa exemplo1; Var nome: literal; Início Escreva (‘Digite um nome: ‘); Leia (nome); Escreva(nome, ‘ é um nome muito bonito! ‘);

Fim. Pascal Program exemplo1; Var nome: string; Begin Write (‘Digite um nome: ‘); Read (nome);

Page 11: APOSTILA 02 LÓGICA DE PROGRAMAÇÃO · PDF fileCada linha do algoritmo pode-se chamar de uma instrução, logo, podemos dizer que um algoritmo é um conjunto de instruções

EDGAR TITO - INFORMÁTICA 2014 – Prof. Ranildo Lopes 11

Write (nome, ‘ é um nome muito bonito! ‘);

End.

Page 12: APOSTILA 02 LÓGICA DE PROGRAMAÇÃO · PDF fileCada linha do algoritmo pode-se chamar de uma instrução, logo, podemos dizer que um algoritmo é um conjunto de instruções

EDGAR TITO - INFORMÁTICA 2014 – Prof. Ranildo Lopes 12

EXERCÍCIOS - Estrutura Sequencial

1. Faça um algoritmo que leia dois números, calcule e imprima a soma desses dois números. 2. Faça um programa que receba dois números reais, calcule e mostre a subtração do primeiro número pelo segundo. 3. Faça um programa que receba dois números inteiros, calcule e imprima a divisão do primeiro número pelo segundo. 4. Faça um programa que leia um número e informe a metade e o dobro desse número. 5. Escreva um programa que receba um número via teclado e informe em seguida a metade e o quadrado desse número. 6. Escrever um programa que permita receber o nome e a idade de uma pessoa e em seguida, informar o nome digitado e a idade da pessoa daqui a 30 anos. 7. Faça um programa que leia três notas de um aluno, calcule e imprima a média aritmética entre essas notas. 8. Faça um programa que receba dois números inteiros, calcule e imprima: - soma do dois números; - subtração do primeiro pelo segundo; - subtração do segundo pelo primeiro; - produto dos dois números; - divisão do primeiro pelo segundo; - quociente inteiro da divisão do primeiro pelo segundo; - resto da divisão do primeiro pelo segundo. 9. Faça um programa que receba quatro números inteiros, calcule e mostre a soma desses números. 10. Faça um programa que receba três notas e seus respectivos pesos. Calcule e mostre a média ponderada dessas notas. 11. Faça um programa que receba o valor do salário de um funcionário. Calcule e mostre o novo salário, sabendo-se que este sofreu aumento de 25%. 12. Faça um programa que receba o valor do salário de um funcionário e o percentual de aumento, calcule e mostre o valor do aumento e o novo salário. 13. Faça um programa que receba o valor do salário-base de um funcionário, calcule e mostre o salário a receber, sabendo-se que este funcionário tem gratificação de 5% sobre o salário-base e paga imposto de 7% sobre o salário-base. 14. Faça um programa que receba o valor do salário-base de um funcionário, calcule e mostre o salário a receber, sabendo-se que este funcionário tem gratificação de R$ 1.000,00 e paga imposto de 10% sobre o salário-base.

Page 13: APOSTILA 02 LÓGICA DE PROGRAMAÇÃO · PDF fileCada linha do algoritmo pode-se chamar de uma instrução, logo, podemos dizer que um algoritmo é um conjunto de instruções

EDGAR TITO - INFORMÁTICA 2014 – Prof. Ranildo Lopes 13

V – ESTRUTURAS DE SELEÇÃO Conceitos Os algoritmos até agora seguiram um mesmo padrão: entrava-se com dados, estes eram processados e alguma informação era mostrada na tela. Dessa forma, o computador mais parecia uma máquina de calcular. O aprendizado de novos conceitos, como a estrutura de seleção, nos dará uma visão maior da complexidade de tarefas que ele poderá executar. Um exemplo do nosso dia-a-dia: imagine-se diante de um caixa eletrônico e suponha que sua senha seja 1234: Na tela aparece a mensagem: - Digite sua senha : E o cursor ( ou | ) fica piscando: Você digita os algarismos da sua senha. Neste momento, a Unidade Lógica e Aritmética (um dos componentes da CPU) verifica se os números que você digitou são iguais a 1234. Caso tenha sido, a transação bancária continua; mas, se você digitou algo diferente, aparece na tela a mensagem: SENHA INVÁLIDA. Sintaxes: Seleção Simples Se condição então Início Comando (s); Fim;

Seleção Composta Se condição então Início Comando (s); Fim Senão Início Comando (s); Fim;

Podemos constatar que esta estrutura faz parte do nosso cotidiano: - Se eu não tiver prova, vou ao clube; senão vou estudar. - Se eu tiver aumento, troco de carro; senão espero o 13° salário. - Se minha média for maior ou igual a sete, passo direto; senão faço exame final. A única coisa diferente é a forma como iremos escrevê-la, vamos adaptar os algoritmos para uma linguagem específica de um modo formal, obedecendo as regras da linguagem. Exemplo Algoritmo que lê um número e mostra uma mensagem dizendo se o número digitado é ou não múltiplo de 5. Português Estruturado: Programa ExemploSe; Var num, resto: inteiro; Início Escreva (‘Digite um número: ‘); Leia (num); resto <- num mod 5; Se resto = 0 então Escreva (num, ‘ é múltiplo de 5’) Senão Escreva (num, ‘ não é múltiplo de 5’); Fim.

Pascal: Program ExemploSe; Var num, resto: integer; Begin Write (‘Digite um número: ‘); Read (num); resto := num mod 5; If resto = 0 then Write (num, ‘ é múltiplo de 5’) Else Write (num, ‘ não é múltiplo de 5’); End.

Page 14: APOSTILA 02 LÓGICA DE PROGRAMAÇÃO · PDF fileCada linha do algoritmo pode-se chamar de uma instrução, logo, podemos dizer que um algoritmo é um conjunto de instruções

EDGAR TITO - INFORMÁTICA 2014 – Prof. Ranildo Lopes 14

Observações: - Antes de Else não se usa ponto e vírgula; - O Begin e o End são obrigatórios somente quando se tem mais de um comando dentro do If e do Else.

EXERCÍCIOS – Estrutura de Seleção 1. Faça um programa que leia um número e informe se o dobro do número é maior que 35. 2. Faça um programa que leia um número e informe se a metade do número é menor que 12. 3. Faça um programa que leia dois números e informe apenas se o primeiro é maior que o segundo. 4. Faça um programa que leia dois números e informa se o primeiro é igual ao segundo. 5. Faça um programa que leia dois números e informe se o primeiro é maior, menor ou igual ao segundo. 6. Faça um programa que leia três números e informe qual dos três é o maior. 7. Fazer um programa que receba um número e mostre se ele é positivo, negativo ou nulo (0) . 8. Elabore um algoritmo que leia um número e mostre o número com a mensagem ‘é par’ ou ‘é ímpar’. 9. Faça um programa que leia a altura e o sexo de uma pessoa, calcule e imprima seu peso ideal, utilizando as seguintes fórmulas: Para homens: (72.7 * h) – 58 Para mulheres: (62.1 * h) – 44.7 (h = altura) 10. Faça um programa que receba quatro notas de um aluno, calcule e imprima a média aritmética das notas e a mensagem de aprovado para média superior ou igual a 7.0 ou a mensagem de reprovado para média inferior a 7.0. 11. Faça um programa que calcule e imprima o salário reajustado de um funcionário de acordo com a seguinte regra: - salários até R$ 300,00, reajuste de 50% - salários maiores que R$ 300,00, reajuste de 30% 12. A prefeitura do Rio de Janeiro abriu uma linha de crédito para os funcionários municipais. O valor máximo da prestação não poderá ultrapassar 30% do salário bruto. Fazer um algoritmo que permita entrar com o salário bruto e o valor da prestação e informar se o empréstimo pode ou não ser concedido. 13. Ler um número qualquer e exibir na tela uma mensagem indicando se ele é positivo, negativo ou nulo (zero). Se ele for positivo, exibir também a raiz quadrada deste número. Se ele for negativo você deve escrever uma mensagem dizendo ‘Não é possível calcular a raiz deste número’.

Page 15: APOSTILA 02 LÓGICA DE PROGRAMAÇÃO · PDF fileCada linha do algoritmo pode-se chamar de uma instrução, logo, podemos dizer que um algoritmo é um conjunto de instruções

EDGAR TITO - INFORMÁTICA 2014 – Prof. Ranildo Lopes 15

14. Ler um número inteiro e exibir na tela a mensagem ‘Par’ se ele for um número par, ou ‘Ímpar’ se ele for um número ímpar. 15. Faça um programa que receba três notas de um aluno, calcule e mostre a média aritmética e as mensagens de acordo com a tabela abaixo. Para os alunos de exame, calcule e mostre a nota que deverá ser tirada no exame para aprovação, considerando que a média no exame é de 6,0.

MÉDIA MENSAGEM [ 0,0 a ] 3,0 Reprovado [ 3,0 a ] 7,0 Exame [ 7,0 a 10,0 ] Aprovado

16. Faça um programa que receba três números e os mostre em ordem crescente. 17. Dados três valores X, Y e Z, verificar se eles podem ser os lados de um triângulo e, se forem, verificar se é um triângulo eqüilátero, isósceles ou escaleno. Se eles não formarem um triângulo informar ao usuário tal situação. Considerar que: Condição para ser triângulo: O comprimento de cada lado de um triângulo é menor que a soma dos outros dois lados. Chama-se triângulo eqüilátero o triângulo que tem os três lados iguais; Chama-se triângulo isósceles o que tem o comprimento de dois lados iguais; Chama-se triângulo escaleno o triângulo que têm os três lados diferentes. 18. Faça um programa que receba o código de origem de um produto e informe a sua procedência. A procedência obedece a seguinte tabela: Código de origem Procedência 1 Sul 2 Norte 3 Leste 4 Oeste 5 ou 6 Nordeste 7, 8 ou 9 Sudeste 10 até 20 Centro-oeste 21 até 30 Noroeste

Alternativa de Múltiplas Escolhas É uma alternativa para quando o algoritmo tiver muitos SEs, deixando o programa com uma estrutura melhor. Sintaxe: Português Estruturado Caso <nome da variável> seja Alvo 1: comando 1;

Alvo 2: comando 2; Alvo n: comando n; Fim;

Page 16: APOSTILA 02 LÓGICA DE PROGRAMAÇÃO · PDF fileCada linha do algoritmo pode-se chamar de uma instrução, logo, podemos dizer que um algoritmo é um conjunto de instruções

EDGAR TITO - INFORMÁTICA 2014 – Prof. Ranildo Lopes 16

Ou Caso <nome da variável> seja Alvo 1: comando 1; Alvo 2: comando 2;

Alvo 3: comando 4; Senão comando 5; Fim;

Pascal Case <nome da variável> of Alvo 1: comando 1; Alvo 2: comando 2; Alvo n: comando n; End;

Ou Case <nome da variável> of Alvo 1: comando 1; Alvo 2: comando 2; Alvo 3: comando 4; Else comando 5; End;

Observações: - No Case também pode fazer uso do Else; - Antes do Else se usa ; (ponto e vírgula); - O Case não tem Begin, mas, tem End; - A variável que fará a verificação deverá ser declarada do tipo Integer, Char ou Boolean. Exemplo: Este programa lê a idade de um nadador e informa a sua categoria seguindo as seguintes regras: Infantil A (5 - 7 anos), Infantil B (8 – 10 anos), Juvenil A (11 – 13 anos), Juvenil B (14 – 17 anos), Sênior (maiores de 18 anos). Português Estruturado Programa Exemplo; var idade: integer; Início Escreva('Idade do nadador: '); Leia (idade); Caso idade seja 5..7: Escreva ('Categoria Infantil A'); 8..10:Escreva ('Categoria Infantil B'); 11..13:Escreva('Categoria JuvenilA'); 14..17:Escreva('Categoria JuvenilB'); 18..99:Escreva('Categoria Sênior'); Senão Escreva('Idade inválida!'); Fim; //Fim do Caso Fim. Pascal

Program Exemplo; var idade: integer; Begin Write ('Digite a idade do nadador: '); Read(idade); Case idade of 5..7: Write ('Categoria Infantil A'); 8..10:Write ('Categoria Infantil B'); 11..13:Write('Categoria Juvenil A'); 14..17:Write ('Categoria Juvenil B'); 18..99:Write ('Categoria Sênior'); Else Write('Idade inválida!'); End; //End do Case End.

Page 17: APOSTILA 02 LÓGICA DE PROGRAMAÇÃO · PDF fileCada linha do algoritmo pode-se chamar de uma instrução, logo, podemos dizer que um algoritmo é um conjunto de instruções

EDGAR TITO - INFORMÁTICA 2014 – Prof. Ranildo Lopes 17

EXERCÍCIOS – Alternativa de Múltiplas Escolhas 1. Faça um programa que receba o código de origem de um produto e informe a sua procedência. (Obs.: este é o exercício 14 da estrutura de seleção se, mas, agora ele será feito utilizando o escolha caso.) A procedência obedece a seguinte tabela: Código de origem Procedência 1 Sul 2 Norte 3 Leste 4 Oeste 5 ou 6 Nordeste 7, 8 ou 9 Sudeste 10 até 20 Centro-oeste 21 até 30 Noroeste 2. Faça um programa que leia um número digitado pelo usuário e o escreva por extenso se ele estiver entre 1 e 5 inclusive, caso contrário mostrar uma mensagem: ‘Opção de número inválida!’ 3. Escrever um algoritmo que leia um peso na Terra e o número de um planeta e imprima o valor do seu peso neste planeta. A relação de planetas é dada a seguir juntamente com o valor das gravidade relativas à Terra: N° gravidade relativa Planeta 1 0.37 Mercúrio 2 0.88 Vênus 3 0.38 Marte 4 2.64 Júpiter 5 1.15 Saturno 6 1.17 Urano Para calcular o peso no planeta escolhido use a seguinte fórmula: Peso no Planeta = Peso / 10 * gravidade.

VI – ESTRUTURAS DE REPETIÇÃO

Vamos supor que nossos algoritmos precisarão ser executados mais de uma vez e, para que não tenhamos que reescrever trechos idênticos que aumentariam consideravelmente o tamanho do programa, utilizaremos as estruturas de repetição.

Comando Enquanto (While - Do) Esta estrutura é recomenda quando o número de repetições for desconhecido. Para que funcione corretamente é necessário observar: - É necessário um teste (uma condição) para interromper a repetição, esta estrutura testa a condição e só executa o que está dentro dela se for verdadeira. - A variável que testa a condição deverá ter seu valor atribuído no início do programa através de um comando de leitura ou de atribuição, antes da estrutura do enquanto e dentro da estrutura, como último comando. - O Enquanto começa com Início (Begin) e termina com Fim (End;) - Pode-se usar outras estruturas dentro do Enquanto (While), como: If, Case, etc.

Page 18: APOSTILA 02 LÓGICA DE PROGRAMAÇÃO · PDF fileCada linha do algoritmo pode-se chamar de uma instrução, logo, podemos dizer que um algoritmo é um conjunto de instruções

EDGAR TITO - INFORMÁTICA 2014 – Prof. Ranildo Lopes 18

Sintaxe: Português Estruturado: ENQUANTO condição FAÇA INÍCIO Comando 1; Comando 2; Comando n; FIM;

Pascal: WHILE condição DO BEGIN Comando 1; Comando 2; Comando n; END;

Exemplo: Faça um programa que leia vários números e imprima a metade de cada número, o programa termina quando o 0 (zero) for digitado: PORTUGUÊS ESTRUTURADO: PROGRAMA Enquanto1; VAR num: INTEIRO; metade:REAL; INÍCIO ESCREVA (‘Digite um número inteiro ‘); LEIA (num); ENQUANTO num <> 0 FAÇA INÍCIO metade <- num/2; ESCREVA (‘A metade de ‘, num, ‘ é ‘, metade); ESCREVA (‘Digite outro número ou zero para sair do programa: ‘); LEIA (num); FIM; FIM.

PASCAL: PROGRAM Enquanto1; VAR num: INTEGER; metade:REAL; BEGIN WRITE ('Digite um número inteiro '); READ(num); WHILE num <> 0 DO BEGIN metade := num/2; WRITELN ('A metade de ', num, ' é ', metade:0:1); WRITELN ('Digite outro número ou zero para sair do programa: '); READ(num); END; END.

Comando Repita (Repeat - Until) Estrutura recomendada quando o número de repetições for desconhecido, sendo necessária uma chave (um teste) para interromper a repetição. Sua diferença em relação ao enquanto é que ela testa a condição ao final, significando que ela executa o trecho pelo menos uma vez. Muitas pessoas não entendem por que existe esta estrutura se a estrutura Enquanto (While) pode fazer o que ela faz. Na verdade tem muito programador que não faz uso dela. Sintaxe: Português Estruturado: Repita comandos; Até condição;

Pascal Repeat comandos; Until condição;

EXERCÍCIOS – Comando Enquanto (WHILE) 1. Entrar com vários números e imprimir quantos números foram digitados. 2. O IBGE fez uma pesquisa, ele quer saber quantos dentistas foram entrevistados. Fazer um programa que pergunte aos entrevistados qual a sua profissão e ao final diga quantas pessoas foram entrevistadas e quantas são dentistas (considerar dentista, Dentista e DENTISTA).

Page 19: APOSTILA 02 LÓGICA DE PROGRAMAÇÃO · PDF fileCada linha do algoritmo pode-se chamar de uma instrução, logo, podemos dizer que um algoritmo é um conjunto de instruções

EDGAR TITO - INFORMÁTICA 2014 – Prof. Ranildo Lopes 19

3. Dado um país A, com 5.000.000 de habitantes e uma taxa de natalidade de 3% ao ano, e um país B com 7.000.000 de habitantes e uma taxa de natalidade de 2% ao ano, calcular e imprimir o tempo necessário para que a população do país A ultrapasse a população do país B. 4. Uma pousada estipulou o preço da diária em R$ 40,00 e mais uma taxa de serviços diários de: - R$ 15,00, se o número de dias for menor que 10; - R$ 8,00, se o número de dias for maior ou igual a 10. Criar um algoritmo que imprima o nome, o valor da conta de cada cliente e ao final o total arrecadado pela pousada. 5. Criar um algoritmo que entre com vários números inteiros e positivos e informe a quantidade de números múltiplos de 3 (três). O programa será encerrado quando o usuário digitar 0 (zero) ou menos. 6. Criar um algoritmo que entre com vários números inteiros e positivos e informe a média dos números múltiplos de 3 (três). O programa será encerrado quando o usuário digitar 0 (zero) ou menos. 7. Uma fábrica produz e vende vários produtos e para cada um deles tem-se o nome, quantidade produzida e quantidade vendida. Criar um algoritmo que mostre: - Para cada produto, nome, quantidade no estoque e uma mensagem se o produto tiver menos de 50 itens no estoque. 8. Faça um programa que leia a idade e a altura de várias pessoas. Calcule e informe a média das alturas das pessoas com mais de 50 anos. Para encerrar o programa digite zero para idade. 9. Faça um programa que leia vários números, quando o zero for digitado o programa será finalizado. Mostre no final desse programa a soma dos números positivos, a soma dos negativos e a soma total dos positivos e negativos juntos. 10. O GDF realizou uma pesquisa entre vários habitantes do DF, coletando dados sobre o rendimento familiar e o número de filhos de cada família. O GDF quer saber: - A média dos rendimentos da população; - Média do número de filhos. 11. Uma empresa decidiu fazer um levantamento em relação aos candidatos que se apresentarem para preenchimento de vagas no seu quadro de funcionários. Suponha que você seja o programador dessa empresa, criar um programa que leia para cada candidato a idade, o sexo e se tem experiência no serviço (S ou N). Para encerrar o programa, digite zero para idade. Calcule e escreva: - O número de candidatos do sexo feminino; - O número de candidatos do sexo masculino; - A idade média dos homens que já tem experiência no serviço. 12. Uma empresa classifica seus funcionários em três níveis de acordo com um índice de produtividade. São eles (1) Excelente, (2) Bom e (3) Regular. Cada nível acrescenta um abono ao salário base do funcionário, de acordo com a seguinte tabela: - Excelente 80% do salário base; - Bom 50% do salário base;

Page 20: APOSTILA 02 LÓGICA DE PROGRAMAÇÃO · PDF fileCada linha do algoritmo pode-se chamar de uma instrução, logo, podemos dizer que um algoritmo é um conjunto de instruções

EDGAR TITO - INFORMÁTICA 2014 – Prof. Ranildo Lopes 20

- Regular 30% do salário base. O programa deve ler a matrícula do funcionário, seu salário base e seu nível de abono. Calcular e imprimir o salário a ser pago (salário a ser pago é = salário base + abono). O programa será encerrado quando for digitado 0 para matrícula. 13. Faça um programa que receba vários números positivos ou negativos, terminada por zero. O programa deve fornecer como saída, a soma dos números positivos e a soma dos números negativos. 14. Faça um programa que leia os dados de vários alunos, contendo o número da matrícula, as três notas e a freqüência. Calcule e mostre: para cada aluno o número de matricula, a nota final e a mensagem (aprovado ou reprovado); a maior e a menor nota da turma; o total de alunos reprovados; 15. Faça um programa que receba a idade, a altura e o peso de várias pessoas. Calcule e mostre: • A quantidade de pessoas com idade superior a 50 anos; • A média das alturas das pessoas com idade entre 10 e 20 anos; • A percentagem de pessoas com peso inferior a 40 quilos entre todas as pessoas analisadas. 16. Uma empresa deseja aumentar seus preços em 20%. Faça um programa que leia o código, o preço de custo de vários produtos e que calcule o novo preço de cada um deles. Calcule também a média de preços com e sem aumento. Mostre o código e o novo preço de cada produto e, no final, as médias. A entrada de dados deve terminar quando for recebido um código de produto menor ou igual a zero. 17. Faça um programa que apresente um menu de opções para cálculo das seguintes operações entre dois números: adição, subtração, multiplicação e divisão. O programa deve permitir a escolha da operação desejada, a entrada dos números, a exibição do resultado e a volta ao menu de opções. O programa só termina quando for escolhida a opção de saída.

Comando Para (For)

Esta estrutura de repetição é utilizada quando se sabe o número de vezes em que um trecho do programa deve ser repetido. Sintaxe: Português Estruturado PARA a<-valor inicial ATÉ valor final FAÇA INÍCIO Comando 1; Comando 2; FIM;

PASCAL FOR a := valor inicial ATÉ valor final DO INÍCIO Comando 1; Comando 2; END;

Observações:

Page 21: APOSTILA 02 LÓGICA DE PROGRAMAÇÃO · PDF fileCada linha do algoritmo pode-se chamar de uma instrução, logo, podemos dizer que um algoritmo é um conjunto de instruções

EDGAR TITO - INFORMÁTICA 2014 – Prof. Ranildo Lopes 21

1. O identificador (a variável “a” no exemplo anterior) tem que ser declarada do tipo inteiro (Integer). 2. A variável que controla a repetição poderá ser impressa se precisarmos dela para numerar uma lista, posicionar, etc. 3. A variável que controla a repetição jamais aparecerá num comando de leitura dentro do bloco de repetição. Exemplo: Algoritmo para escrever os números de 1 até 10: Português Estruturado Programa para1; Var I : Inteiro; Início Para i <- 1 até 10 faça Início Escreva (‘ - ‘, i); fim; Fim.

PASCAL Program para1; Var I : Integer; Begin For i := 1 to 10 do Begin Write (‘ - ‘, i); End; End.

EXERCÍCIOS – Comando Para (For)

1. Imprimir todos os números de 100 até 1. 2. Criar um algoritmo que imprima todos os números pares no intervalo de 1 a 100. 3. Criar um algoritmo que entre com cinco números e imprima o quadrado de cada número. 4. Entrar com 10 números e imprimir a metade de cada número. 5. Criar um algoritmo que imprima todos os números de 1 até 100 e a soma deles. 6. Escreva um programa que receba a idade de 10 pessoas, calcule e imprima a quantidade de pessoas maiores de idade (idade >= 18 anos). 7. Entrar com nome, idade e sexo de 10 pessoas. Imprimir o nome se a pessoa for do sexo masculino e tiver mais de 21 anos. 8. Em uma eleição presidencial, existem três candidatos. Os votos são informados através de código. Os códigos utilizados são: 1, 2, 3 votos para os respectivos candidatos; 0 votos em branco outros códigos votos nulos Escreva um programa que calcule e imprima: - total de votos para cada candidato; - total de votos nulos; - total de votos em branco. 9. Criar um algoritmo que entre com quatro notas de cada aluno de uma turma de 20 alunos e mostre: - A média de cada aluno; - A média da turma; - Quantos alunos foram aprovados (média 7.0) 10. Imprimir as tabuadas de multiplicar de 1 até 10. 11. Criar um algoritmo que deixe escolher qual a tabuada de multiplicar que se deseja imprimir

Page 22: APOSTILA 02 LÓGICA DE PROGRAMAÇÃO · PDF fileCada linha do algoritmo pode-se chamar de uma instrução, logo, podemos dizer que um algoritmo é um conjunto de instruções

EDGAR TITO - INFORMÁTICA 2014 – Prof. Ranildo Lopes

12. Um empresa está fazendo a estatística de seus funcionários, ela precisa saber quantas funcionárias têm com mais de 40 anos para encaminhá-las para exames de mamografia. Fazer um programa que leia o nome, a idade e o sexo de seus 10 funcionários e imprima o nome se for do sexo feminino e tiver mais de 40 anos. 13. Faça um programa que receba a idade de 10 pessoas. O programa deve calcular e mostrar a quantidade de pessoas com idade maior que 18 anos. 14. Faça um programa que mostre a tabuada de multiplicação (de 1 a 10) para os 6 primeiros números primos. Ao mudar de uma base para outra o programa deve mostrar uma mensagem ao usuário e aguardar que alguma tecla seja pressionada para então montar a tabuada para a próxima base. 15. Faça um programa que receba a idade de 15 pessoas, calcule e mostre a quantidade de pessoas em cada faixa etária.

Faixa etária Idade 1 Até 15 anos 2 De 16 a 30 anos 3 De 31 a 45 anos 4 De 46 a 60 anos 5 Acima de 61 anos

16. Faça um programa que leia uma série de números positivos inteiros. Calcule e mostre o maior número digitado. A entrada de dados deve terminar quando um número negativo foi digitado. 17. Faça um programa que receba um número, calcule e mostre o fatorial desse número. Sabe-se que: n! = 1*2*3*...*(n-1)*n; 0! = 1, por definição.

ANEXO I – Questões de Raciocínio Lógico 1. Preencha o quadro a seguir de tal maneira que a soma dos números que ficam sobre uma linha, ou sobre uma coluna, ou sobre uma diagonal, dê sempre 15 e todos os números tê de ser diferentes:

2. Entram num restaurante para jantar três mulheres, cada uma com duas filhas. Só existiam 7 lugares. Nenhuma ficou de pé. Como isso é possível?

Page 23: APOSTILA 02 LÓGICA DE PROGRAMAÇÃO · PDF fileCada linha do algoritmo pode-se chamar de uma instrução, logo, podemos dizer que um algoritmo é um conjunto de instruções

EDGAR TITO - INFORMÁTICA 2014 – Prof. Ranildo Lopes

3. Tenho 3 camisas: A, B e C. Uma é VERDE, uma é BRANCA e outra é AZUL, não necessariamente nesta ordem. Sabe-se somanete que a a camisa A é VERDE, B não É VERDE e C Não é AZUL. Quais as cores de A, B, e C, nessa ordem? 4. Dentro de uma caixa fechada, há uma bola branca e uma bola preta. Numa segunda caixa fechada, há duas bolas brancas e, numa terceira caixa fechada, há duas bolas pretas. Cada caixa possui uma etiqueta indicando o conteúdo das caixas, mas alguém misturou as três etiquetas de modo que todas as etiquetas estão erradas. Você seria capaz de escolher apenas uma das seis bolas de modo tal que, olhando a sua cor, você possa dizer o conteúdo de cada uma das caixas? ANEXO II - Transferência de Comandos: Português Estruturado para Pascal

Veja como seria a transferência de alguns comandos de Português Estruturado para Pascal: OBS: Os dados da tabela estão em ordem alfabética. Português Estruturado Pascal

(atribuição) := Algoritmo ou Programa Program Cadeia (de caracteres) ou Literal String Caracter Char E And Enquanto n <> 0 faça While n <> 0 do Escreva (‘.....’) Write (‘.....’); Fim End Início Begin Inteiro Integer Leia (nome da variável); Read (nome da variável); Nome:arranjo [1..10] de cadeia (ou string); Nome: array [1..10] of string; Ou Or Para i 1 até 10 faça For i:= 1 to 10 do Se x > 10 então If x > 10 then Senão Else Var ou Variáveis Var

Page 24: APOSTILA 02 LÓGICA DE PROGRAMAÇÃO · PDF fileCada linha do algoritmo pode-se chamar de uma instrução, logo, podemos dizer que um algoritmo é um conjunto de instruções

EDGAR TITO - INFORMÁTICA 2014 – Prof. Ranildo Lopes

U.E PROF EDGAR TITO - NOITE PROF. RANILDO LOPES DISCIPLINA: Lógica de Programação

APOSTILA 03

LÓGICA DE PROGRAMAÇÃO

Visite nosso sítio

http://ueedgartito.wordpress.com

“Nele estão os resumos e trabalho

de sala de aula”

Obrigado pela preferência de nossa ESCOLA!

Page 25: APOSTILA 02 LÓGICA DE PROGRAMAÇÃO · PDF fileCada linha do algoritmo pode-se chamar de uma instrução, logo, podemos dizer que um algoritmo é um conjunto de instruções

EDGAR TITO - INFORMÁTICA 2014 – Prof. Ranildo Lopes

Variáveis x Dados Variável é o local de memória onde serão armazenados os dados de forma temporária. Em

nossos algoritmos não nos preocuparemos com o endereço real dessas variáveis, pois a maioria

das linguagens de programação tornam estes endereços transparentes ao programador.

Para exemplificarmos a diferença entre dados (constantes) e variáveis, bem como entender

melhor o endereçamento de variáveis, podemos citar o exemplo de uma estante de prateleiras,

onde estão guardados livros ou quaisquer outros objetos (veja figura).

Os livros e objetos podem ser chamados de dados, conteúdo das variáveis. Para nos

referenciarmos à variável é necessário darmos um nome à mesma, pois não trabalharemos com

endereço de memória propriamente dito, e sim com identificadores.

É aconselhável que o nome da variável expresse o que vai ser armazenado dentro dela, p.e.

nomeAluno, quantidade_alunos.

As variáveis podem ainda ser simples ou compostas. As variáveis simples são aquelas que

recebem um único dado por vez, enquanto que as compostas podem armazenar vários dados de

uma só vez, porém, esta última não é objeto de nossa apostila.

Quando declaramos uma variável, temos que associar a ela algumas características:

• NOME ou IDENTIFICADOR

• TIPO do dado

Como dissemos anteriormente, o endereço físico da variável não precisa ser declarado, a menos

que estejamos programando em alguma linguagem de baixo nível, como o ASSEMBLER. As

linguagens de alto nível procuram espaços livres na memória do computador para associarem

bytes à variável declarada.

Uso das Variáveis no Algoritmo

O nome a ser associado à variável (ex.: X, Y, KTI34), não é importante para o computador, pois

este servirá apenas como uma mera referência. Entretanto para outros programadores que

Page 26: APOSTILA 02 LÓGICA DE PROGRAMAÇÃO · PDF fileCada linha do algoritmo pode-se chamar de uma instrução, logo, podemos dizer que um algoritmo é um conjunto de instruções

EDGAR TITO - INFORMÁTICA 2014 – Prof. Ranildo Lopes

possam vir a analisar os seus programas, ou até para você mesmo após algum tempo, é

necessário que esses nomes sejam expressivos, simples e objetivos.

Vejamos agora alguns exemplos de identificadores:

SALARIO Um bom nome para variável que irá armazenar um valor salarial;

CONT Um bom nome para variável que irá registrar uma contagem;

TOTAL Um bom nome para variáveis acumuladoras de somas;

DATANASC Um bom nome para variáveis usadas para armazenar uma data de nascimento.

Devemos evitar nomes do tipo: X, K, C1, ABC, etc... a menos que eles expressem algo real.

Nomes de variável, na maioria das linguagens, NÃO devem:

Iniciar por números: 1C2, 9ANOS, 100, 4CANTOS, etc...

Ser descontínuos: DATA NASC, FONE COMERC, etc...

Outros requisitos podem aparecer dependendo de cada linguagem. O COBOL por exemplo

permite nomes longos para variáveis, já o CLIPPER, com apenas 10 bytes. O COBOL permite

separadores como hífens, barras, entre outros. Linguagens derivadas do DBASE permitem

apenas o UnderLine (Nome_Aluno) como caracter separador. A maioria das linguagens apresenta

certas restrições à livre escolha dos nomes das variáveis. A mais evidente é a impossibilidade da

utilização de palavras reservadas da própria linguagem. Por exemplo, a palavra MOVE

representa um comando para o COBOL. Não é possível utilizarmos este nome como identificador

de qualquer variável nesta linguagem. Já para o CLIPPER, o MOVE pode ser um identificador.

Outras vezes, a linguagem traz consigo algumas variáveis reservadas. Tratam-se de algumas

variáveis que são automaticamente declaradas pela linguagem. Normalmente elas registram a

data e a hora do sistema operacional, ou algumas informações internas como códigos de

periféricos, endereços de memória para buffers, etc.

Escolhendo o TIPO do Identificador da Variável

O segundo argumento presente na declaração de uma variável é o seu tipo. O tipo de uma

variável define que tipos de dados poderão ser armazenados nela. A declaração (definição das

variáveis) será feita no início do algoritmo.

Tipo inteiro Sinaliza que o conteúdo será de números e que não terá a parte decimal em sua composição.

Ex.: 1200; -12; 0; etc

Tipo real Sinaliza que o conteúdo será de números e que é permitida a digitação da parte decimal.

Page 27: APOSTILA 02 LÓGICA DE PROGRAMAÇÃO · PDF fileCada linha do algoritmo pode-se chamar de uma instrução, logo, podemos dizer que um algoritmo é um conjunto de instruções

EDGAR TITO - INFORMÁTICA 2014 – Prof. Ranildo Lopes

Ex.: 1200,00; -12,88; 0; etc

Tipo Literal Sinaliza que o conteúdo aqui armazenado será toda a rede de caracteres alfanuméricos e os ditos caracteres especiais. Os conteúdos destas variáveis SEMPRE serão demonstrados entre aspas (simples ou dupla, dependendo da linguagem);

“São variáveis que aceitam conteúdos de qualquer natureza, portanto: números, letras e símbolos

em geral, não podendo estes números ser utilizados para operações aritméticas”.

Ex.: "MARIA JOSE"; "Recife"; "123"; "NOMES"

Observações: a) Não confundir os valores numéricos com os literais ou entre os literais. Vejamos os casos a seguir. Caso 1.

42 (inteiro) é diferente de “42” (literal) – Os tipos são diferentes, logo, seus valores em memórias são diferentes; Caso 2. “01”(literal) é diferente de “1” (literal) – Os tipos são iguais, mas a representação em memória é diferente.

Tipo Lógico Este tipo de variável não permite o registro de dados numéricos ou literais. Uma variável lógica só

armazena um entre dois valores: VERDADEIRO ou FALSO.

Em nossa disciplina, não nos ateremos ao como exatamente, o computador registra esta

informação na memória. Pode ser por bytes zerados e não zerados, pelas letras V ou F, ou por

um outro mecanismo qualquer. O que nos interessa de fato é que este tipo de variável não

registra outro tipo de informação exceto Verdadeiro ou Falso.

Para efeito de representação, diremos que o conteúdo de uma variável lógica será representado

pelas letras V e F, representando respectivamente, Verdadeiro e Falso:

Tamanho das Variáveis

Quando declaramos uma variável não precisamos delimitar o byte inicial e final que esta irá

ocupar na memória do computador, entretanto é imprescindível entendermos que elas ocupam um

espaço na memória e que os tipos de dados trazem definições sobre as variáveis, inclusive o que

pode armazenar e os seus limites.

Outros tipos de variáveis também são tratados por novas linguagens, tais como: HORA,

MEMORANDO, OBJETO. Entretanto aqui só trataremos os tipos mencionados anteriormente, ou

seja: Literal, Inteiro, Real e Lógico..

Page 28: APOSTILA 02 LÓGICA DE PROGRAMAÇÃO · PDF fileCada linha do algoritmo pode-se chamar de uma instrução, logo, podemos dizer que um algoritmo é um conjunto de instruções

EDGAR TITO - INFORMÁTICA 2014 – Prof. Ranildo Lopes

Declaração de Variáveis

TODAS as variáveis que o programa vier a utilizar têm que existir antes de serem referenciadas.

Por esse motivo, necessitamos declarar estas. Como fazer isso? Através do comando DECLARE.

Comando DECLARE DECLARE <Nome da variável>[,<Nome da variável>]: <tipo>; <Nome da variável> Nome ou identificador da variável <Tipo> Tipo da variável definida: Literal, Inteiro, Real e Lógico. Exemplos: DECLARE NOME : Literal; DECLARE IDADE : Inteiro; DECLARE ALTURA: Real; DECLARE DEPENDENTE: LOGICO;

Podemos declarar diversas variáveis utilizando apenas um comando DECLARE.

Exemplos: DECLARE NOME : Literal; IDADE : Inteiro; ALTURA: Real; DEPENDENTE, LOGICO;

Ou ainda, em uma mesma linha, desde que sejam do mesmo tipo de dados.

Exemplo: DECLARE IDADE, CONTADOR:inteiro; (obs.: tipo e tamanho iguais} Observação: As vezes substituímos o comando Declare por Var ou Defina, dependendo da linguagem que estamos

querendo nos aproximar. Outros comandos poderão sofrer variações. Cabendo ao professor da disciplina fazer os ajustes baseados no direcionamento que queira dar à disciplina.

Operadores

Podemos atribuir a uma variável o resultado de uma expressão numérica. Atribui é uma ação que

as linguagens possuem e que representa o ato de preencher o espaço da variável com um

conteúdo, conforme o tipo de dado (veremos mais detalhadamente em tópico específico).

Entendemos por expressão numérica um conjunto de operações aritméticas combinadas entre

operandos e operadores. Mas além das expressões numéricas, existem expressões que exigem

tratamentos particulares, como veremos a seguir.

Operadores Numéricos São elementos (símbolos) utilizados para representar uma operação de cunho aritmético.

+ indica SOMA - indica SUBTRAÇÃO * indica MULTIPLICAÇÃO / indica DIVISÃO

Relembrando um pouco a matemática elementar, a ordem de execução de uma expressão

aritmética segundo as prioridades de operações é:

Parêntesis: ( ) Multiplicação e Divisão: * , / Soma e Subtração: + , -

Page 29: APOSTILA 02 LÓGICA DE PROGRAMAÇÃO · PDF fileCada linha do algoritmo pode-se chamar de uma instrução, logo, podemos dizer que um algoritmo é um conjunto de instruções

EDGAR TITO - INFORMÁTICA 2014 – Prof. Ranildo Lopes

Obs.: Caso existam numa mesma sentença operadores de mesma ordem de prioridade, a execução será feita da esquerda para direita.

Operadores Relacionais São elementos (símbolos) utilizados para realizarmos operações de

comparações, recebendo como resposta o valor verdadeiro ou falso.

=

igual a

Exemplos: Dados A = 3, B = 2, C = ‘Jose’ , D = ‘Jose’, NOME = ‘JOSE’ A > B Retorna V C = D Retorna V NOME = "JOSE" Retorna V (Está sendo comparado o conteúdo da variável NOME com a string “JOSE”. NOME = D Retorna F (estão sendo comparados os conteúdos das variáveis NOME e D).

Os operadores relacionais incidem sobre dados e variáveis numéricas e caracteres. Assim sendo,

podemos comparar não apenas números, mas também palavras. Neste sentido, a comparação

respeitará a ordem alfabética das iniciais de cada uma.

Exemplos: "MARIA" > "ANA" Retorna V "MARIA" < "MARIO" Retorna V observação: as comparações só podem ser feitas com elementos dos mesmos tipos.

Operadores Lógicos Estes elementos são necessários quando você deseja realizar comparações entre resultados lógicos obtendo como resposta outro valor lógico. Estranho, não? Mas é exatamente isso que ocorre. Por exemplo: se você ler um anuncio sobre emprego que tenham as seguintes solicitações: Precisa-se de pessoas do sexo feminino e com idade máxima 40 anos. O que você consegue extrair deste anuncio? A resposta seria: duas exigências, a saber, o SEXO da pessoa deve ser igual a feminino (“F”) e a IDADE deve ser menor ou igual a 40 anos. Logo, estamos diante de duas sentenças, que, dependendo do que seja colocado como dados na comparação, poderemos ter a possibilidade do resultado ser falso ou verdadeiro. Se o SEXO for igual a “M” (masculino), a primeira sentença será falsa. Para você poder ocupar a vaga oferecida, necessário que sejas do sexo feminino e sua idade esteja na faixa etária solicitada. Para o programa, o raciocínio é exatamente igual. Para que gerenciarmos esta etapa da lógica, utilizaremos os operadores a seguir:

Operador Detalhamento Prioridade de execução

OU (Opcionalidade)

A sentença que contiver este operador será verdadeira se pelo menos uma das expressões nela contida retornar valor verdadeiro.

E (Simultaneidade)

A sentença que contiver este operador será verdadeira se as expressões nela contida resultarem valores verdadeiros.

NÃO (Negação)

Quando queremos inverter (negar) o resultado de uma condição ou expressão lógica.

Observação: caso sejam colocados os parênteses na sentença, a prioridade de execução será alterada iniciando-se pelos elementos contidos dentro destes. Caso exista mais de uma sentença nesta condição, observar-se-á, além do exposto acima, a execução dos comandos da esquerda para a direita da expressão.

Vejamos a “TABELA VERDADE” a seguir para entendermos melhor. E OU

> maior que < menor que = igual a

>= maior ou igual a <= menor ou igual a <> diferente

A := 2 * 6 / 3 12

4

Page 30: APOSTILA 02 LÓGICA DE PROGRAMAÇÃO · PDF fileCada linha do algoritmo pode-se chamar de uma instrução, logo, podemos dizer que um algoritmo é um conjunto de instruções

EDGAR TITO - INFORMÁTICA 2014 – Prof. Ranildo Lopes

V V V V V V

F V F F V V

V F F V F V

F F F F F F

Exemplos: X = 90 E Z = 100 A >= 67 OU A <= 200 NOME <> "ANA" E NAO (NOME = "MARIA") (NOME <> "ANA") E (NAO (NOME="MARIA") OU (NOME="PEDRO"))

Entendendo Representações de Sintaxes Agora que você já aprendeu o primeiro comando de nossa linguagem algorítmica, é importante

aprender a forma sintética de se representar um comando. Note que, ao enunciarmos o comando

DECLARE, nós utilizamos algumas nomenclaturas e simbologias que você, certamente,

encontrará em qualquer livro sobre quaisquer linguagens.

Assim, vamos elucidar algumas delas:

Repetindo o comando, DECLARE <Nome da variável>[,<Nome da variável>]: <tipo>;

< > Delimita o espaço reservado para inserirmos um parâmetro do comando. A maioria dos comandos das linguagens possui parâmetros.

[ ] Delimita o espaço reservado para inserirmos um parâmetro opcional do comando, ou seja, tudo o que vier entre colchetes nem sempre precisará ser especificado no comando.

Ex: DECLARE SOMA : Inteiro; DECLARE SOMA, QUANTIDADE_ALUNOS:inteiro;

Observe ainda que os colchetes [ ] e os delimitadores maior/menor < > podem acumular-se

entre si, ou seja, dentro de um grupo de parâmetros opcionais [ ], poderemos ter outros [ [..] ],

dependendo apenas da característica do comando.

Atribuição de Valores a Variáveis

Até agora, vimos conceitos e exemplos de variáveis. Agora vamos aprender a utilizá-las em

algoritmos.

Representaremos o comando de atribuição pela combinação de dois símbolos do teclado, que

são dois pontos e o sinal de igual, sem espaços entre eles(:=). Este símbolo representará a

atribuição de um dado a uma variável.

Page 31: APOSTILA 02 LÓGICA DE PROGRAMAÇÃO · PDF fileCada linha do algoritmo pode-se chamar de uma instrução, logo, podemos dizer que um algoritmo é um conjunto de instruções

EDGAR TITO - INFORMÁTICA 2014 – Prof. Ranildo Lopes

<variável> := <dado a ser armazenado> Exemplos: NOME := "JOÃO"; Dados Literal têm que vir entre aspas IDADE := 25; Dados Inteiros não precisam de aspas ALTURA := 1,67; Dados tipo Real, possuem uma vírgula como delimitador entre a parte decimal e a parte inteira

(linguagens comerciais adotam o ponto). DEPENDE := F; Dados LOGICO devem vir entre pontos

Também podemos atribuir, a uma variável, o valor de outra:

Exemplo: ALTURA := IDADE; a variável ALTURA recebe o valor de IDADE

Também podemos atribuir o resultado de uma expressão numérica, ou de outro tipo, a uma

variável:

SOMA := QUOEF * (VALOR + 10) / DIVISOR;

Estruturação do Algoritmo Existem alguns formatos para organizar um algoritmo, porém adotaremos o mais global,

facilitando assim o aprendizado. Vejamos a seguir: Algoritmo <nome do programa>; Declare {Local para declaração das variáveis} Início {Local para inicialização das variáveis / mensagens montando a tela} {Local para receber dados, processar dados e dar saída nos dados / mensagens} Fim

Entrada e Saída de Dados

Até aqui nós vimos como atribuir um valor a uma variável dentro de um programa. Mas este valor

foi atribuído pelo próprio programa, não é?

Mas como fazer com que um programa, em um dado momento, receba um valor digitado pelo

usuário?

Como receber este dado através do teclado?

Como exibir o resultado de uma operação qualquer no monitor?

Existem nas linguagens de programação, comandos de entrada e saída de dados. No caso do

algoritmo, estes comandos são os seguintes: Leia (entrada), Escreva (saída - tela).

Comando LEIA Leia <variável>; Ou Leia (<variável>);

<variável> - Variável que receberá os dados digitados pelo usuário. Algoritmo Declare wnome:literal; Widade:Inteiro; Inicio

Page 32: APOSTILA 02 LÓGICA DE PROGRAMAÇÃO · PDF fileCada linha do algoritmo pode-se chamar de uma instrução, logo, podemos dizer que um algoritmo é um conjunto de instruções

EDGAR TITO - INFORMÁTICA 2014 – Prof. Ranildo Lopes

Leia wnome; Leia widade; <seqüência de comandos>; Fim

A execução do comando LEIA provoca uma pausa na execução do programa. O programa fica

em estado de espera, aguardando a digitação de algo que deva ser atribuído às variáveis

especificadas na sintaxe do comando. É bom deixar claro que o LEIA, permite um preenchimento por vez. Se você desejar digitar várias informações referente a mesma variável, terá que utilizar uma estrutura de repetição (veremos mais adiante) e fazer com que o fluxo do programa passe pelo mesmo local onde o LEIA está posicionado

No exemplo acima, veja que o computador aguarda que o usuário digite dois valores distintos

através do teclado. Estes dois valores irão ocupar, respectivamente, as variáveis NOME e IDADE.

Comando ESCREVA (lista informações no vídeo) Escreva <string>[, <variável>][, <operação>]; Ou Escreva (<string>[, <variável>][, <operação>] ); Importante! Pelo menos um dos parâmetros deve ser informado quando da utilização deste comando. <string> - Texto que está sendo encaminhado para tela. <variável> - Qualquer variável utilizada no programa. <operação> - Algum cálculo executado durante a exibição. Neste caso o processador realiza a operação de cálculo e

depois libera o resultado para a exibição na tela. Por dentro dos termos: string = conjunto de caracteres dentro de uma mesma variável. Exemplo: Algoritmo exemplo; Declare wnome:Literal; INICIO ESCREVA “ NOME ..:”; LEIA wnome; ESCREVA "Seu nome é ", NOME; FIM;

Quando estudamos lógica algorítmica não nos preocupamos em que coordenada ou posição a

informação será exibida, mas sim com o fato de que deve ser dado o comando de saída dos

dados.

No exemplo acima, teremos o conteúdo da variável NOME exibido no vídeo logo após a

mensagem “Seu nome é ”, como mostra a ilustração abaixo.

NOME ..: Karla Silva

Seu nome é Karla Silva

Manipulaçao de valores 1) Dados 2 números digitados via teclado, faça um algoritmo capaz de exibir a soma deles no vídeo.

Algoritmo soma; Declare X:Inteiro; Y:Inteiro; SOMA:Inteiro; Inicio Leia X;

Page 33: APOSTILA 02 LÓGICA DE PROGRAMAÇÃO · PDF fileCada linha do algoritmo pode-se chamar de uma instrução, logo, podemos dizer que um algoritmo é um conjunto de instruções

EDGAR TITO - INFORMÁTICA 2014 – Prof. Ranildo Lopes

Leia y; SOMA := X + Y; Escreva SOMA; Fim

Comentário Na solução acima, declaramos 3 variáveis de memória. X e Y foram criadas para armazenar os dois números que seriam digitados pelo usuário, e SOMA serviu para armazenar o resultado final da operação com essas duas variáveis.

Mas quase sempre existe mais de uma maneira de solucionarmos um problema, não é? Com

algoritmos não é diferente. Tente repensar o algoritmo acima utilizando apenas 2 variáveis, em

vez de 3 ! Como você pode observar, existem no mínimo duas soluções para este problema:

Algoritmo soma; Declare X:Inteiro; Y:Inteiro; SOMA:Inteiro; Inicio Leia X; Leia y; X := X + Y; Escreva X; Fim

Ou ainda:

Algoritmo soma; Declare X:Inteiro; Y:Inteiro; SOMA:Inteiro; Inicio Leia X; Leia y; Y := X + Y; Escreva Y; Fim

Qual a solução mais eficiente das duas?

Somente o fato de economizar uma variável torna qualquer uma dessas soluções bem mais

eficiente que a primeira. O mesmo caso, sem precisar utilizar as variáveis para guardar o

resultado, agiliza ainda mais o processamento. Mas este caso deve ser utilizado só quando você

não precisar do valor resultante da operação.

Algoritmo soma; Declare X:Inteiro; Y:Inteiro; SOMA:Inteiro; Inicio Leia X; Leia y; Escreva (X+Y); Fim

Page 34: APOSTILA 02 LÓGICA DE PROGRAMAÇÃO · PDF fileCada linha do algoritmo pode-se chamar de uma instrução, logo, podemos dizer que um algoritmo é um conjunto de instruções

EDGAR TITO - INFORMÁTICA 2014 – Prof. Ranildo Lopes

Conceitos Fundamentais Contador x Acumulador

Estes nomes são dados a expressões que realizam adição de dados, porém, no primeiro caso,

CONTADOR, é a expressão de adição que contabiliza valores fixos e predeterminados. No

segundo caso, ACUMULADOR, é a expressão de adição que contabiliza valores variáveis.

Exemplo de Contador: QtdFem := QtdFem + 1 (note que o valor adicionado a quantidade de femininos será sempre 1) Exemplo de Acumulador: SomaIdade := SomaIdade + Idade (note que o valor adicionado a soma das idades será variável) Observação: na maioria das vezes, estes elementos são iniciados com o 0 (zero). Percentuais

Encontramos algumas dificuldades quando tratamos estes temas. Aqui daremos algumas regras

básica para que você se sinta a vontade no momento do cálculo. Encontrando um valor percentual: Veja esta continha simples

50 bolas 100 % (50 = Todo) 25 bolas x % (25 = Parte do Todo) Chegaremos a conclusão:

X % = 25 x 100 / 50 Estas informações nos levam a fórmula:

<perc> := < Parte do Todo> * 100 / < Todo> Encontrando um valor final após aplicação do percentual: <Novo valor> := <valor anterior> * 1,<valor do percentual>; Ex.: adicionar 5 % sobre o salário e informar o valor do novo salário.

Nsal := Salario * 1,05; Encontrando um valor adicionado percentualmente a uma variável: <Novo valor> := <valor anterior> * 0,<valor do percentual>; Ex.: adicionar 5 % sobre o salário e informar o valor acrescido ao salário.

Reajuste := Salario * 0,05; Observação: quando você não sabe o valor a ser aplicado pois vem dentro de uma variável, não podemos fazer a aplicação literal do que explicamos neste tópico, mas precisamos

Page 35: APOSTILA 02 LÓGICA DE PROGRAMAÇÃO · PDF fileCada linha do algoritmo pode-se chamar de uma instrução, logo, podemos dizer que um algoritmo é um conjunto de instruções

EDGAR TITO - INFORMÁTICA 2014 – Prof. Ranildo Lopes

traduzir em termos de programa este processo. Vamos fazer os mesmos exemplos anteriores, mas imaginando que o percentual virá em variáveis.

a) Nsal := Salario * (1 + perc / 100); b) Nsal := Salario * (perc / 100);

Maior Valor

Existirão momentos em que você sentirá necessidade de identificar o maior elemento dentro de

um conjunto de dados processados. Só existe uma forma de sabermos qual o maior valor:

comparando as grandezas do conjunto. Para descobrirmos qual será o maior elemento,

inicializaremos uma variável, que armazenará o maior valor do conjunto, com um valor bem pequeno para a situação, e, cada dado existente no conjunto iremos comparar com esta dita

variável. Caso o valor encontrado seja superior, este será colocado como conteúdo da variável

maior, já que este novo dado representa a maior grandeza neste momento do processamento. Encontrando o maior valor dentro de um conjunto: Obs.: para entender melhor esse exemplo, é bom estar familiarizado com a estrutura de repetição

comentada mais adiante. Algoritmo maior; Declare MAIOR_ID:Inteiro; Idade:Inteiro; Cont:Inteiro; Inicio MAIOR_ID := 0; Para cont := 1 até 10 Faça Inicio Leia Idade; Se Idade > MAIOR_ID então Inicio MAIOR_ID := Idade; Fim Fim Escreva “A maior idade é “, MAIOR_ID; Fim

Menor Valor

De igual forma iremos trabalhar para encontrar o elemento que possui o menor valor. Para tanto,

iremos inicializar uma variável, que armazenará o menor valor do conjunto, com um valor bem alto adequado para a situação, e, cada dado existente no conjunto iremos comparar com esta dita

variável. Caso o valor encontrado seja inferior, este será colocado como conteúdo da variável

menor, já que este novo dado representa a menor grandeza neste momento do processamento. Encontrando o menor valor dentro de um conjunto:

Algoritmo Menor; Declare menor_ID:Inteiro; Idade:Inteiro; Cont:Inteiro; Inicio

Page 36: APOSTILA 02 LÓGICA DE PROGRAMAÇÃO · PDF fileCada linha do algoritmo pode-se chamar de uma instrução, logo, podemos dizer que um algoritmo é um conjunto de instruções

EDGAR TITO - INFORMÁTICA 2014 – Prof. Ranildo Lopes

menor_ID := 999; Para cont := 1 até 10 Faça Inicio Leia Idade; Se Idade < Menor_ID então Inicio menor_ID := Idade; Fim Fim Escreva “A menor idade é “, Menor_ID; Fim

Estruturas Condicionais Sabemos que as linhas de um programa estruturado são executadas de cima para baixo de forma

seqüencial (na orientação ao objeto, apenas os métodos seguem este conceito). Mas

freqüentemente precisamos mudar este curso natural de acordo com decisões a serem tomadas.

Por exemplo, imagine se dentro de um conjunto de alunos você desejasse verificar a quantidade

de homens. Só existiria uma forma para sabermos o resultado: fazendo uma pergunta sobre se os

dados processados continham na variável SEXO o conteúdo igual a “M”.

O comando que realiza esta “pergunta” é o SE, que possui três situações bem definidas dentro da

programação: Estrutura Condicional Simples, Composta ou Encadeadas(Ninhos de SE’s).

Estrutura Condicional SE (Símples) Se <condição> então inicio <sequência de comandos>; Fim

<condição> - Expressão lógica qualquer. <sequência de comandos> São comandos que serão executados caso o resultado da expressão lógica seja verdadeira.

Esses comandos devem ser escritos entre as delimitações da gerência do comando, ou seja, entre as palavras Início e fim.

Em tempo de execução, se a expressão lógica retornar verdadeiro então a seqüência de

comandos será executada.

Para fixar esta idéia, tente depurar o seguinte algoritmo: Algoritmo exemploSE1; DECLARE Idade, Numérico, 3 Nome, Caracter , 35 Sexo, Caracter , 1 Inicio Leia Nome; Leia Sexo; Leia Idade; Se Sexo = “M” então Inicio Escreva "A idade de ", Nome, “ é “, Idade; Fim Escreva "Fim da transacao"; Fim

Estrutura Condicional SE (Composta) Se <condição> então Inicio <sequência de comandos 1>;

Page 37: APOSTILA 02 LÓGICA DE PROGRAMAÇÃO · PDF fileCada linha do algoritmo pode-se chamar de uma instrução, logo, podemos dizer que um algoritmo é um conjunto de instruções

EDGAR TITO - INFORMÁTICA 2014 – Prof. Ranildo Lopes

Fim senão inicio <sequência de comandos 2>; Fim Onde:

<condição> - Expressão lógica qualquer. <sequência de comandos 1> São comandos quaisquer que serão executados caso o resultado da expressão lógica seja

verdadeira (V). <sequência de comandos 2> São comandos quaisquer que serão executados caso o resultado da expressão lógica seja

falsa (F) Senão - Variação do comando, para atender o tratamento de informação que não foi contemplada na <condição>, por ser

falso o resultado. Só deve ser utilizado para otimizar ou se precisar tratar a negativa da <condição>.

Para fixar esta idéia, tente depurar o seguinte algoritmo: Algoritmo exemploSE2; DECLARE Idade: Inteiro; Nome : Literal; Sexo : Literal; Inicio Leia Nome; Leia Sexo; Leia Idade; Se Sexo = “M” então Inicio ESCREVA "A idade de ", Nome, “ é “, Idade, “Sexo Masculino”; Fim senão Inicio SE Sexo = “F” ENTAO Inicio ESCREVA "A idade de ", Nome, “ é “, Idade, “Sexo Feminino”; Fim Fim Escreva "Fim da transacao"; Fim

Estrutura Condicional SE (Encadeada)

Aqui vale comentar que esta estrutura não é algo preestabelecido, mas sim, uma estrutura

formada de várias condições, separando informações e dando os tratamentos de acordo com a necessidade da questão. Abaixo segue um modelo hipotético de uma estrutura SE

(Encadeada).

Se <condição 1> então Inicio <sequência de comandos 1>; Se <condição 2> então Inicio <sequência de comandos 2> ; Fim Fim Senão Inicio Se <condição 3> então Inicio <sequência de comandos 3> ; Fim Senão Inicio <sequência de comandos 4> ; Fim <sequência de comandos 5>;

Page 38: APOSTILA 02 LÓGICA DE PROGRAMAÇÃO · PDF fileCada linha do algoritmo pode-se chamar de uma instrução, logo, podemos dizer que um algoritmo é um conjunto de instruções

EDGAR TITO - INFORMÁTICA 2014 – Prof. Ranildo Lopes

Fim Fim

Para exemplificarmos melhor, vejamos o exemplo:

1) Receber dois números (Num1 e Num2).

2) Realize a soma dos dois valores.

2.1) Caso a soma seja maior que zero, mostrar na tela o valor da soma e a mensagem: “valor

positivo”;

2.2) Caso contrário, verifique:

2.2.1) se o valor calculado é igual a zero. Se for, informar "valor igual a zero", senão;

2.2.2) informar, "valor negativo". (De qualquer maneira, em 2.2, exibir os dois números envolvidos

na soma). Algoritmo PositivoNegativo; Declare Num1:Inteiro; Num2:Inteiro; SOMA:Inteiro; Inicio Leia Num1, Num2; SOMA:= Num1 + Num2; Se SOMA > 0 ENTAO Inicio Escreva SOMA, “Valor Positivo”; Fim Senão Inicio Escreva num1, num2; SE SOMA = 0 então Inicio Escreva "Valor Igual a Zero"; Fim Senão Inicio Escreva "Valor Negativo"; Fim Fim Fim

Sobre esta solução, é importante salientar o seguinte:

• Note que a estética, apesar de não influenciar no resultado da execução do programa, é de extrema importância para o bom entendimento do mesmo. Perceba que todos os comandos subordinados ao primeiro SE ficam descolados na mesma margem. Apenas a cláusula SENAO fica na mesma margem do SE. O mesmo ocorre com o segundo SE e com todos os que vierem. A isto damos o nome de EDENTAÇÃO.

• Veja que o comando Escreva num1, num2 é executado independente da condição do segundo SE. É por isto que eles foram escritos após o SENÃO do primeiro SE.

Exercícios de Aprendizagem

1) Dados 2 números digitados via teclado, faça um algoritmo capaz de exibir no vídeo o maior deles. Algoritmo maior; Declare X:Inteiro; Y:Inteiro; Inicio Leia X; Leia Y; Se X > Y Então

Page 39: APOSTILA 02 LÓGICA DE PROGRAMAÇÃO · PDF fileCada linha do algoritmo pode-se chamar de uma instrução, logo, podemos dizer que um algoritmo é um conjunto de instruções

EDGAR TITO - INFORMÁTICA 2014 – Prof. Ranildo Lopes

Inicio Escreva X; Fim Senão Inicio Escreva Y; Fim Fim

2) Dados 3 números distintos, digitados via teclado, faça um algoritmo capaz de exibir no vídeo o maior deles.

Algoritmo maior; Declare X:Inteiro; Y:Inteiro; Z:Inteiro; Inicio Leia X; Leia Y; Leia Z; Se (X > Y) E (X > Z) Então Inicio Escreva X; Fim Senão Inicio Se (Y > Z) E (Y > X) Então Inicio Escreva Y; Fim Senão Inicio Escreva Z; Fim Fim Fim

Comentário: Note que, para descobrirmos qual o maior entre três números, precisamos codificar 2 comandos SE encadeados. Se fossem 4 variáveis, seriam 3 SE´s.

3) Dados 2 números distintos digitados via teclado, faça um algoritmo capaz de exibi-los em ordem crescente. Algoritmo Ordenacao; Declare A:Inteiro; B:Inteiro; Inicio Leia A; Leia B; SE A > B Então Inicio Escreva B, A; Fim Senão Inicio Escreva A, B; Fim Fim

Como você solucionaria este problema se tivéssemos de utilizar apenas um comando ESCREVA

?

A primeira imagem que nos vem à mente é que seria impossível, tendo em vista que uma

informação ao ser colocada em uma variável simples irá “ocupar” o lugar da informação já

existente na outra variável. Mas em informática podemos utilizar todas as técnicas disponíveis

para solucionarmos um problema, evitando soluções extensas ou complicadas.

Page 40: APOSTILA 02 LÓGICA DE PROGRAMAÇÃO · PDF fileCada linha do algoritmo pode-se chamar de uma instrução, logo, podemos dizer que um algoritmo é um conjunto de instruções

EDGAR TITO - INFORMÁTICA 2014 – Prof. Ranildo Lopes

O recurso que vamos dispor nesse momento é a utilização de uma variável auxiliar. Variável

auxiliar é aquela que nós utilizamos como apoio. Veja que para realizar a troca de dados exposta

a seguir, só com esse recurso.

Algoritmo troca; Declare A:Inteiro; B:Inteiro; X:Inteiro; Inicio Leia A; Leia B; Se A > B Então Inicio X := A; A := B; B := X; Fim Escreva A , B; Fim

Comentário: Para economizarmos comandos ESCREVA, observe que invertemos os valores de A e B toda vez que a variável A fosse maior que B. Assim, independente dos valores de A e B, sempre exibiremos A e B nesta ordem. Para propiciar esta inversão utilizamos uma variável auxiliar X.

Se você não entendeu muito bem o porque da variável X ter sido utilizada no algoritmo acima,

preste bastante atenção agora:

Deseja-se trocar os valores de duas variáveis: A e B, por exemplo.

A B

10 15

Se fizermos simplesmente A := B, apagaremos o valor original de A colocando o conteúdo de B

em seu lugar. Assim, as variáveis ficariam com o valor 15. Para viabilizar o processo da troca,

temos que recorrer a uma variável auxiliar que conterá provisoriamente o valor de uma das

variáveis a fim de devolvê-lo para a outra.

X

10 15

10 1º passo

2º passo

3º passo X:=A

A:=B

B:=X

Page 41: APOSTILA 02 LÓGICA DE PROGRAMAÇÃO · PDF fileCada linha do algoritmo pode-se chamar de uma instrução, logo, podemos dizer que um algoritmo é um conjunto de instruções

EDGAR TITO - INFORMÁTICA 2014 – Prof. Ranildo Lopes

Estruturas de Repetição Algumas vezes, sentimos necessidade de escrevermos repetidamente o mesmo comando. Em

alguns casos, a quantidade de vezes que temos de escrever é indeterminada ou depende de uma

condição.

Existem algumas formas de definir as estruturas de repetições. Algumas lembram até esta ou

aquela linguagem. Em nosso curso iremos no ater a duas estruturas, as quais podemos

representar tranqüilamente em qualquer ambiente de programação.

As estruturas são: Enquanto e Para. Cada uma delas possui uma característica que lhe é peculiar.

É normal ouvir a pergunta: “quando iremos utilizar esta ou aquela estrutura?”. A resposta é

simples, pois depende da habilidade de cada um. Existem momentos que podemos resolver a

mesma questão com todas as duas formas, mas existem momentos que não é possível. Por isso

o segredo encontra-se no exercitar.

Bem, vamos desmistificar estas estruturas.

Comando ENQUANTO

O comando ENQUANTO prende um trecho do programa a um laço (looping), ou seja, podemos

determinar que um certo bloco de comandos seja executado repetidamente enquanto uma

condição for verdadeira.

. Enquanto <condição> Faça { se<condição> for verdadeira} Inicio { serão executados os comando deste bloco} < comandos >; Fim

Esta estrutura possui duas formas de aplicação dentro de uma lógica: a) Testando sempre uma condição de saída no próprio comando, ou; b) Deixando este controle de saída da estrutura por conta de uma condição executada internamente.

1o. Caso Só entra no laço de repetição, se e somente se, a condição for verdadeira. Para sair da repetição, a condição tem que ser satisfeita. Enquanto <condição> Faça início < comandos > ; Fim

2o. Caso Entra no laço independente da condição, mas para sair, a condição 2 tem que ser verdadeira. Caso a condição não seja satisfeita, dizemos que o programa “entrou em loop”. Enquanto <condição> Faça início Se < condição 2 > Então Início sair

Page 42: APOSTILA 02 LÓGICA DE PROGRAMAÇÃO · PDF fileCada linha do algoritmo pode-se chamar de uma instrução, logo, podemos dizer que um algoritmo é um conjunto de instruções

EDGAR TITO - INFORMÁTICA 2014 – Prof. Ranildo Lopes

Fim < comandos > ; Fim;

Comando PARA

O comando PARA executa um bloco de comandos, gerenciando esta execução em cima de uma

contagem. Enquanto ela não for satisfeita, ou seja, o valor final não for ultrapassado, os

comandos do bloco serão repetidos a cada nova verificação da condição e obtenção de resultado

falso;

Para <var> := <valor_inicial> até <Valor_final> incr[+/- <valor>] Faça Inicio < comandos > ; Fim

Se você utilizar este comando, irá poupar a inicialização da variável, pois esta assumirá como

valor inicial o declarado como <valor_inicial>; não precisará contar a quantidade de vezes que o laço foi executado, pois esta estrutura tem como uma de suas características, o adicionar um

determinado valor a variável <var> baseado no valor utilizado como incremento (+) ou decremento

(-) utilizado no parâmetro incr[...] estabelecendo uma contagem até que o valor declarado como

<valor_final> seja alcançado e realizando a última execução dos comandos existentes entre o

Inicio e o Fim. Se o parâmetro Incr [ +/- valor] for omitido, o programa assumirá por Default

sempre o incremento de + 1.

Vamos utilizar um exemplo para esclarecer cada uma dessas instruções dentro de suas

respectivas estruturas de repetições. Digamos que temos de fazer o computador escrever o

somatório de 5 idades informadas na tela. Usaremos os comandos aprendidos até agora.

♦ Com a estrutura ENQUANTO Algoritmo Declare widade:Inteiro; Wcont:Inteiro; Wsomaid:Inteiro; Inicio Wcont := 0; Wsomaid := 0; Leia widade; Enquanto wcont < 5 Faça Inicio Wcont := wcont + 1; Wsomaid := wsomaid + widade; Leia widade; Fim Escreva “O total das idades é “, wsomaid;

Page 43: APOSTILA 02 LÓGICA DE PROGRAMAÇÃO · PDF fileCada linha do algoritmo pode-se chamar de uma instrução, logo, podemos dizer que um algoritmo é um conjunto de instruções

EDGAR TITO - INFORMÁTICA 2014 – Prof. Ranildo Lopes

Fim

♦ Com a estrutura PARA Algoritmo Declare widade:Inteiro; Wcont:Inteiro; Wsomaid:Inteiro; Inicio Wsomaid := 0; Para wcont := 1 até 5 Faça Inicio Leia widade; Wsomaid := wsomaid + widade; Fim Escreva “O total das idades é “, wsomaid; Fim

Exercícios de Aprendizagem 1) Elabore um algoritmo capaz de exibir todos os números inteiros, desde o 1 até o 10.

Algoritmo exemplo1; Declare NUMERO:Inteiro; Inicio NUMERO := 1; Enquanto NUMERO <= 10 Faça Inicio Escreva NUMERO; NUMERO := NUMERO + 1; Fim Fim

Comentário: Note que, utilizamos uma variável numérica chamada NUMERO que recebeu, inicialmente, o valor 1, e daí em diante foi ciclicamente incrementada de 1 (NUMERO:=NUMERO+1) até que a condição imposta pelo ENQUANTO tornasse falsa.

2) Elabore um algoritmo capaz de receber um número e, em seguida, listar todos os números de 1 até ele. Algoritmo exemplo2; Declare NUMERO:Inteiro; LIMITE:Inteiro; Inicio Leia LIMITE; NUMERO:=1 ENQUANTO NUMERO <= LIMITE FAÇA Inicio Escreva NUMERO; NUMERO := NUMERO + 1; Fim Fim

Comentário: Este programa é similar ao anterior. A única sofisticação implementada foi a flexibilização do limite. Isto tornou o algoritmo mais genérico, servindo para listar a seqüência de qualquer número, e não apenas a do 10. Para alcançar esta sofisticação, foi necessário o uso da variável LIMITE que de fato limitou o laço do Enquanto ao seu conteúdo, conteúdo este que fora recebido logo no início da execução do programa, com o comando Leia LIMITE.

3) Sofisticando ainda mais o programa da 3ª questão, vamos fazer com que, além de listar todos os números de 1 até um determinado número digitado via teclado, ele mostre a soma de todos esses números no final da listagem.

Algoritmo exemplo2; Declare NUMERO :Inteiro; LIMITE :Inteiro; SOMA :Inteiro; Inicio Leia LIMITE; NUMERO := 1; SOMA := 0; Enquanto NUMERO <= LIMITE Faça Inicio Escreva NUMERO;

Page 44: APOSTILA 02 LÓGICA DE PROGRAMAÇÃO · PDF fileCada linha do algoritmo pode-se chamar de uma instrução, logo, podemos dizer que um algoritmo é um conjunto de instruções

EDGAR TITO - INFORMÁTICA 2014 – Prof. Ranildo Lopes

SOMA := SOMA + NUMERO; NUMERO := NUMERO + 1; Fim Escreva SOMA; Fim

Comentário: Perceba que, para acumular os valores parciais assumidos pela variável NUMERO, precisamos lançar mão de uma outra variável, a qual chamamos de SOMA. Assim, a cada ciclo do Enquanto acrescentamos ao valor de SOMA o novo valor de NUMERO (SOMA :=SOMA+NUMERO).

Observe também que ao declaramos SOMA, na prática das linguagens, temos que tomar o

cuidado dela ter capacidade de absorver o resultado da expressão. É fácil entender por que!

Como SOMA será um “Acumulador” dos valores de NUMERO, ela sempre terá valores maiores

que NUMERO, podendo seu montante, exceder a capacidade definida em NUMERO.

Técnicas de Algoritmização Como dissemos anteriormente, não há qualquer receita de bolo para resolvermos um determinado

problema através da algoritmização. Cada caso é um caso bem particular. Entretanto, alguns

procedimentos sistemáticos podem auxiliar a elucidação de alguns problemas.

Dicas sobre Resolução de Algoritmos

Nunca dê um algoritmo por encerrado antes de testar todas as possibilidades condicionais. Só o

teste garante a eficácia do programa. Teste sempre as situações extremas. Em algoritmos utilize

diversas condições; teste ao menos uma situação que se enquadre em cada condição prevista

pelo algoritmo.

Não tente decorar algoritmos. Cada caso é um caso, por mais que se assemelhem.

Há sempre uma forma melhor de fazer a mesma coisa. Após o ZERO ERRO, examine se o seu

algoritmo é eficiente, isto é, se ele não usa variáveis demais, se ele é facilmente compreendido

por uma terceira pessoa, se os nomes de variáveis são auto-expressivos, se o usuário não terá

dificuldade em utilizá-lo, e se o computador não passará muito tempo para processá-lo

(performance).

Não tente arquitetar, ainda que mentalmente, a solução de um problema sem antes entender

perfeitamente o que pede no enunciado.

Não inicie a algoritmização sem ter claramente a solução arquitetada na sua cabeça.

Não deixe a curiosidade afetar a sua criatividade. Durante o desenvolvimento do seu algoritmo,

não pesas orientação sobre o como fazer, sem antes ter chegado a algum resultado, ainda que

errado.

Page 45: APOSTILA 02 LÓGICA DE PROGRAMAÇÃO · PDF fileCada linha do algoritmo pode-se chamar de uma instrução, logo, podemos dizer que um algoritmo é um conjunto de instruções

EDGAR TITO - INFORMÁTICA 2014 – Prof. Ranildo Lopes

Nunca desista de uma solução. Concluí-a. Chegue até o fim. Teste-a, e somente quando os testes

sinalizarem a sua ineficácia, tente modificá-la ou refazê-la.

Técnica para extrair os dados de um enunciado

Quando nos deparamos com um enunciado pequeno, nos sentimos a vontade para resolve-lo pois

os dados existentes neste são poucos. Porém, quando nos deparamos com um enunciado mais

complexo, existe a tendência natural de pensarmos que é algo muito difícil de resolver. Mas, por

incrível que pareça, o maior problema encontra-se em nosso lidar com o desafio e o encarar

“friamente”. Justamente para melhor lhe capacitar a interpretar um texto é que estamos te dando

esta dica.

Todos os programas possuem 3 fases bem definidas e nestas, os seus dados necessários.

Quando você tiver domínio sobre estas três fases, o algoritmo fluirá naturalmente.

Procure identificar a 1ª fase que é a da identificação dos dados de entrada; a 2ª fase e a que

verifica os dados relativos ao processamento (condições de encerramento, cálculos, mensagens,

etc; a 3ª fase é aquela aonde você descobre quais os dados de saída, ou seja, após o

processamento, aonde irão ser colocado estes dados?

Vamos exemplificar.

Elaborar um algoritmo que receba a matrícula, o nome e o salário de 50 funcionários, imprimindo ao final, o somatório dos salários e a média salarial. Vamos por em prática nosso aprendizado.

1ª fase (Dados de Entrada) Será lido na tela a MATRICULA, NOME E SALÁRIO;

Leia Matricula;

Leia Nome;

Leia Salário;

2ª fase (Processamentos) Serão processados dados de 50 funcionários. (isto implica dizer que

precisaremos de uma variável para contabilizar e gerenciar este processo); O

melhor comando para gerenciar um valor predefinido é o PARA.

Cada elemento que for processado, será acumulado o valor do salário (somatório

dos salários).

AcumSal := AcumSal + Salário;

Page 46: APOSTILA 02 LÓGICA DE PROGRAMAÇÃO · PDF fileCada linha do algoritmo pode-se chamar de uma instrução, logo, podemos dizer que um algoritmo é um conjunto de instruções

EDGAR TITO - INFORMÁTICA 2014 – Prof. Ranildo Lopes

Observe que para cálculo da média salarial é necessário sabermos o somatório

dos salários e dividir o mesmo pela quantidade de pessoas que os possuem.

Como sabemos que existirão 50 pessoas, para encontrar a média é super

simples.

Calcular a média dos salários.

Media := AcumSal / 50; 3ª fase (Dados de Saída)

Dar saída no valor da média calculada.

Escreva “A média salarial é “, Media;

Montando o Algoritmo

Algoritmo exemplo; Declare AcumSal:Real; Cont :Inteiro; Salário: Real; Media :Real; Nome :Literal; Inicio AcumSal := 0 Para cont := 1 até 50 faça Inicio Leia Matricula; Leia Nome; Leia Salário; AcumSal := AcumSal + Salário; Fim Media := AcumSal / 50; Escreva “A média Salarial é “, Media; Fim

Facílimo, não!

Com estas competências adquiridas nesse módulo, você deve exercitar e chegar num estágio de

habilidade que lhe permitirá obter sucesso nas demais competências que serão ministradas a

você em sala de aula.

Lembre-se: Os exercícios que estão na apostila dedicada só para este fim, devem ser praticados e

esgotados, pois isto o fará crescer em situações as mais adversas dentro do mundo da

programação.

Sucesso a todos!

Page 47: APOSTILA 02 LÓGICA DE PROGRAMAÇÃO · PDF fileCada linha do algoritmo pode-se chamar de uma instrução, logo, podemos dizer que um algoritmo é um conjunto de instruções

EDGAR TITO - INFORMÁTICA 2014 – Prof. Ranildo Lopes

Desafios Resolvidos

Como fazer para descobrir a quantidade de elementos iguais ao maior do conjunto? Simples. Primeiro, você deverá encontrar o maior; Em segundo lugar, verificar quais os elementos são iguais a este maior

encontrado. Aqui damos uma dica. Ao encontrar um elemento cujo valor seja superior

àquele que representa o maior, temos duas tarefas a fazer. Uma é atribuir o valor do elemento para ser o maior e em seguida inicializar a quantidade com o numeral 1 (um). Mas porque 1 (um)? Pelo fato de que acabamos de encontrar um número maior e com certeza, nesse momento ele é único. Como fazer para contabilizar todos os iguais? A própria pergunta já é a resposta: cada vez que você encontrar algum valor igual ao maior, contabilizaremos mais um.

Vamos ao Exemplo? “Elaborar um algoritmo que receba idade de 50 pessoas e informe ao final,

a maior delas e quantas pessoas a possuem.” Algoritmo resolvidos1; Declare Ma_idade:Inteiro; Qt_maid :Inteiro; Cont :Inteiro; Widade :Inteiro; Inicio Ma_idade := 0; Qt_maid := 0; Para cont := 1 até 50 faça Inicio Leia widade; Se widade > Ma_idade então Inicio Ma_idade := widade; Qt_maid := 1; Fim Senão Inicio Se widade = Ma_idade então Inicio Qt_maid := Qt_maid + 1; Fim Fim Fim Escreva “A maior idade é ..........................: “, Ma_idade; Escreva “Quantidade de pessoas com a maior idade...: “, Qt_maid; Fim

Como fazer para descobrir a quantidade de elementos iguais aos dois maiores

elementos do conjunto? Agora ficou mais fácil. Precisamos atentar para um pequeno detalhe:

quando encontrarmos um elemento que é superior ao primeiro, este último passa a ser o segundo maior. Para não perdermos o conteúdo original do maior, passaremos seus conteúdos para as respectivas variáveis e depois procederemos naturalmente colocando o elemento maior no seu referido lugar. Vejamos parte do código a seguir.

Page 48: APOSTILA 02 LÓGICA DE PROGRAMAÇÃO · PDF fileCada linha do algoritmo pode-se chamar de uma instrução, logo, podemos dizer que um algoritmo é um conjunto de instruções

EDGAR TITO - INFORMÁTICA 2014 – Prof. Ranildo Lopes

Ma_idade2 := Ma_idade1; Qt_maid2 := Qt_maid1; Ma_idade1 := widade; Qt_maid1 := 1;

Percebeu como é simples? Isso fazemos em todos os momentos em que queremos verificar o maior e o segundo maior. No demais é tomar cuidado com o segundo maior, pois apesar do valor as vezes, ser inferior ao primeiro, nada garante que ele o seja em relação ao segundo. Desta forma, precisamos fazer a comparação para termos certeza.

Vamos ao Exemplo? “Elaborar um algoritmo que receba idade de 50 pessoas e informe ao final,

as duas maiores idades e quantas pessoas as possuem.”

Algoritmo Declare Ma_idade1:Inteiro; Ma_idade2:Inteiro; Qt_maid1 :Inteiro; Qt_maid2 :Inteiro; Cont :Inteiro; Widade :Inteiro; Inicio Ma_idade1 := 0; Ma_idade2 := 0; Qt_maid1 := 0; Qt_maid2 := 0; Para cont := 1 até 50 faça Inicio Leia widade; Se widade > Ma_idade1 então Inicio Ma_idade2 := Ma_idade1; Qt_maid2 := Qt_maid1; Ma_idade := widade; Qt_maid := 1; Fim Senão Inicio Se widade = Ma_idade1 então Inicio Qt_maid1 := Qt_maid1 + 1; Fim Senão Inicio Se widade > Ma_idade2 então Inicio Ma_idade2 := widade; Qt_maid2 := 1; Fim Senão Inicio Se widade = Ma_idade2 então Inicio Qt_maid2 := Qt_maid2 + 1; Fim Fim Fim Fim Fim Escreva “A maior idade é ..........................: “, Ma_idade1; Escreva “Quant. de pessoas com a maior idade.......: “, Qt_maid1; Escreva “A segunda maior idade é ..................: “, Ma_idade2; Escreva “Quant. de pessoas com Seg. maior idade....: “, Qt_maid2; Fim

Page 49: APOSTILA 02 LÓGICA DE PROGRAMAÇÃO · PDF fileCada linha do algoritmo pode-se chamar de uma instrução, logo, podemos dizer que um algoritmo é um conjunto de instruções

EDGAR TITO - INFORMÁTICA 2014 – Prof. Ranildo Lopes

U.E PROF EDGAR TITO - NOITE PROF. RANILDO LOPES DISCIPLINA: Lógica de Programação

APOSTILA 05

LÓGICA DE PROGRAMAÇÃO

Visite nosso sítio

http://ueedgartito.wordpress.com

“Nele estão os resumos e trabalho

de sala de aula”

Page 50: APOSTILA 02 LÓGICA DE PROGRAMAÇÃO · PDF fileCada linha do algoritmo pode-se chamar de uma instrução, logo, podemos dizer que um algoritmo é um conjunto de instruções

EDGAR TITO - INFORMÁTICA 2014 – Prof. Ranildo Lopes

Obrigado pela preferência de nossa ESCOLA!

INTRODUÇÃO A automatização de tarefas é um aspecto marcante da sociedade moderna. O aperfeiçoamento tecnológico alcançado, 

com respeito a isto, tem como elementos fundamentais a análise e a obtenção de descrições da execução de tarefas em termos de ações simples o suficiente, tal que pudessem ser automatizadas por uma máquina especialmente desenvolvida para este fim, O COMPUTADOR. 

Em ciência da computação há um processo de desenvolvimento simultâneo e interativo de máquinas (hardware) e dos elementos que gerenciam a execução automática (software) de uma dada tarefa. E essa descrição da execução de uma tarefa, como considerada acima, é chamada algoritmo. 

O objetivo desse curso é a Lógica de Programação dando uma base teórica e prática, suficientemente boa, para que, o aluno domine os algoritmos e esteja habilitado a aprender uma linguagem de programação. Será mostrado também um grupo de algoritmos clássicos para tarefas cotidianas, tais como : ordenação e pesquisa.  

DEFINIÇÃO DE ALGORITMO Se buscarmos na literatura, veremos que iremos encontrar um grande quantidade de conceitos relacionados à definição 

de ALGORITMO. A seguir são listadas várias dessas definições.  

• "O conceito central da PROGRAMAÇÃO e da CIÊNCIA DA COMPUTAÇÃO é o conceito de algoritmos, isto é, programar é basicamente construir algoritmos."  

• É a descrição, de forma lógica, dos passos a serem executados no cumprimento de determinada tarefa.  • "O algoritmo pode ser usado como uma  ferramenta genérica para representar a solução de  tarefas  independente do 

desejo  de  automatizá‐las, mas  em  geral  está  associado  ao  processamento  eletrônico  de  dados,  onde  representa  o rascunho para programas (Software)."  

• "Serve  como modelo  para  programas,  pois  sua  linguagem  é  intermediária  à  linguagem  humana  e  às  linguagens  de programação, sendo então, uma boa ferramenta na validação da lógica de tarefas a serem automatizadas."  

• "Um  algoritmo  é  uma  receita  para  um  processo  computacional  e  consiste  de  uma  série  de  operações  primitivas, interconectadas  devidamente,  sobre  um  conjunto  de  objetos.  Os  objetos  manipulados  por  essas  receitas  são  as variáveis."  

• O algoritmo pode ter vários níveis de abstrações de acordo com a necessidade de representar ou encapsular detalhes inerentes às linguagens de programação. Ex: Certamente um algoritmo feito com o objetivo de servir como modelo para uma  linguagem  de  3ª  geração  é  diferente  daquele para  uma  linguagem  de  IV  geração. Mas  isso  não  impede que  a ferramenta em si possa ser usada em ambos o caso.  

• Como  qualquer modelo,  um  algoritmo  é  uma  abstração  da  realidade.  A  abstração  é  o  processo  de  identificar  as propriedades  relevantes  do  fenômeno  que  esta  sendo modelado. Usando  o modelo  abstrato,  podemos  nos  centrar unicamente nas propriedades relevantes para nós, dependendo da finalidade da abstração, e ignorar as irrelevantes.  

• É a forma pela qual descrevemos soluções de problemas do nosso mundo, afim de, serem implementadas utilizando os recursos do mundo computacional. Como este possuí severas limitações em relação ao nosso mundo, exige que, sejam impostas  algumas  regras  básicas  na  forma  de  solucionar  os  problemas,  para  que,  possamos  utilizar  os  recursos  de HARDWARE e SOFTWARE disponíveis. Pois, os algoritmos, apesar de servirem para representar a solução de qualquer problema, no caso do Processamento de Dados, eles devem seguir as regras básicas de programação para que sejam compatíveis com as LINGUAGENS DE PROGRAMAÇÃO.  

Segundo Wirth, “programas são formulações concretas de algoritmos abstratos, baseados em representações e estruturas específicas de dados” 

De forma bem simples, um algoritmo pode ser definido como “um conjunto de passos lógicos, bem definidos, que descreve a solução de um problema”.  

Ao pensarmos na solução de um problema, encontramos ações imperativas que são expressas por comandos.  Os algoritmos não são aplicados apenas ao mundo da Informática; pelo contrário, usamos – até sem perceber – algoritmos em todos os momentos de nossa vida.  Uma receita de cozinha é claramente um algoritmo. 

 

Page 51: APOSTILA 02 LÓGICA DE PROGRAMAÇÃO · PDF fileCada linha do algoritmo pode-se chamar de uma instrução, logo, podemos dizer que um algoritmo é um conjunto de instruções

EDGAR TITO - INFORMÁTICA 2014 – Prof. Ranildo Lopes

   

EXEMPLO 1 : Faça um algoritmo para “Ir de casa para o trabalho de ônibus”   Solução 1  Algoritmo Trajeto_Casa início 

1) Andar até o ponto de ônibus 2) Aguardar o ônibus 3) Ao avistar o ônibus correto, fazer sinal 4) Entrar no ônibus pela porta traseira 5) Pagar passagem  6) Escolher um assento e sentar 7) Quando chegar próximo do local a saltar, dar o sinal para descida 8) No ponto, descer do ônibus, pela porta dianteira 9) Andar até o trabalho 

fim Observa‐se que esse algoritmo foi resolvido em 9 passos. No entanto, é fato que se n pessoas buscarem soluções 

para o mesmo problema, provavelmente, teremos n respostas diferentes.  Isto decorre normalmente, da abstração do problema, da visão do problema sob ângulos diferentes, com maior ou menor riqueza de detalhes. 

 Por outro lado, devemos percebe‐se que o algoritmo descrito revela uma situação perfeita, sem condicionais, sem 

exceções.  Assim como na nossa rotina, é improvável termos situações perfeitas, essas exceções também ocorrem nos programas de computador. 

Vamos refazer este algoritmo de forma a introduzir algumas condições.  Solução 2 Algoritmo Trajeto_Casa início 

1) Andar até o ponto de ônibus 2) Aguardar o ônibus 3) Quando avistar o ônibus correto, fazer sinal 

  se o ônibus não parar, então    Em pensamento, xingar o motorista   Reclamar para si que vai chegar atrasado   se estiver muito atrasado então     Pegar uma Van   Senao     Voltar para o Passo 2   fimse 

  senao     se Pessoa >= 65 anos então 

    Entrar pela porta dianteira   senao     Entrar pela porta traseira     Pagar passagem     se houver troco então 

  Aguardar troco     fim‐se   fim‐se   se houver lugar disponível então     Sentar 

    senão Escolher o melhor lugar em pé e ali permanecer 

Page 52: APOSTILA 02 LÓGICA DE PROGRAMAÇÃO · PDF fileCada linha do algoritmo pode-se chamar de uma instrução, logo, podemos dizer que um algoritmo é um conjunto de instruções

EDGAR TITO - INFORMÁTICA 2014 – Prof. Ranildo Lopes

  fim‐se fim‐se 

4) Quando chegar próximo do local a saltar, dar o sinal para descida 5) No ponto, descer do ônibus, pela porta dianteira 6) Andar até o trabalho 

  fim  

Com certeza, a brincadeira que  fiz da condição “Se   o ônibus não parar” deve  ter  levado vocês a pensarem em inúmeras novas condições, como por exemplo: qual seria a sua reação, se num dia de chuva, o ônibus passasse por sobre uma poça e lhe sujasse toda a roupa ? 

Veja quão  complexo pode  se  tornar um  “simples” algoritmo.   Devemos  lembrar que detalhes  são essenciais na confecção de um algoritmo, todavia, eles devem estar de acordo com o contexto.   Além disso, é  importante que venhamos a relatar apenas os detalhes relevantes. 

Por  exemplo,  a  solução  2  está  apropriada  para  ensinarmos  uma  pessoa  que  não  está  acostumada  a  andar  de ônibus.    Todavia,  este  algoritmo  causaria  problemas  se  estivéssemos  programando  um  robô.    Considerando  esta  situação, deveríamos  ser  mais  precisos  no  passo  “Quando  chegar  próximo  do  local  a  saltar,  dar  o  sinal  de  descida”.    Nesse  caso, deveríamos dizer “A x metros do local a saltar, dar o sinal de descida” ou “Na altura x da Rua y ...”. 

Assim, lembrem‐se de usar o BOM SENSO!  Podemos  pensar  também  num  algoritmo  como  um  “mecanismo”  de  transformação  de  entradas  em 

saídas.  Assim, um algoritmo ao ser “executado”, receberá algumas entradas, que serão processadas e nos devolverá algumas saídas. 

     

 

   FLUXO DE CONTROLE EM ALGORITMOS 

Um algoritmo é um  texto estático, onde  temos vários passos que  são  lidos e  interpretados de cima para baixo.  Para  que  venhamos  a  obter  o(s)  resultado(s)  deste  algoritmo,  necessitamos  “executá‐lo”,  o  que  resulta  em  um  processo dinâmico.   

No fluxo de controle identificamos em cada passo da execução qual é o próximo comando a ser executado. A compreensão da  lógica de programação de um algoritmo está diretamente  ligada a 

compreensão de seu  fluxo de controle.     A partir de uma compreensão correta, podemos  traçar as diversas execuções possíveis de um algoritmo.   Se testarmos todas essas possibilidades, e obtivermos resultados corretos, podemos ter certeza de estar entregando um produto final confiável.  

Os  iniciantes no mundo da programação encontram alguma dificuldade em diminuir a distância  conceitual  que  separa  a  representação  estática  de  um  algoritmo  do(s)  processo(s) dinâmico(s) de sua execução.   

É importante frisar que quando nos propomos a  entender um algoritmo,  lidamos  fisicamente com um  texto, mas mentalmente  temos 

processos. 

Page 53: APOSTILA 02 LÓGICA DE PROGRAMAÇÃO · PDF fileCada linha do algoritmo pode-se chamar de uma instrução, logo, podemos dizer que um algoritmo é um conjunto de instruções

EDGAR TITO - INFORMÁTICA 2014 – Prof. Ranildo Lopes

   

CRIANDO ALGORITMOS Toda  linguagem  é  composta  de  sintaxe  e  semântica,  onde  a  sintaxe  corresponde  à  forma  e  a  semântica 

corresponde ao conteúdo.  É importante que se aprenda a sintaxe dos comandos, mas a principal preocupação deve ser de “como usar esses 

comandos”.   

Regras para criação de bons algoritmos  1. Use  comentários  com  freqüência.    Isto  torna  o  algoritmo mais  legível  e  facilita  o  entendimento  da  lógica 

empregada.   Seus algoritmos deverão  ser  lidos e entendidos por outras pessoas  (e por você mesmo) de  tal forma que possam ser corrigidos e receber manutenção.   Obs: Não se esqueça de atualizar os comentários, em caso de manutenção.   Pior do que um programa sem comentários, é um programa com comentários errados. 

 2. Use comentários, também, no cabeçalho do algoritmo, incluindo, principalmente: 

- descrição do que faz o algoritmo - autor - data de criação 

 3. Escolha nomes de variáveis significativos, todavia evite nomes muito longos. 

Ex:  Prefira SalBruto ou SalarioBruto ao invés de SB ou VAR1     Prefira TotAlunosAprovDireta ao invés de  

TotalAlunosAprovacaoDireta  4. Destaque as palavras‐chave das estruturas de controle e comandos com sublinhado. 

Ex:  se media >= 7 então       ...   senao       ...   fim‐se 

5. Utilize espaços e linhas em branco para melhorar a legibilidade.   6. Coloque  apenas  um  comando  por  linha.  Vários  comandos  em  uma  linha  causam  ilegibilidade  e  dificulta  a 

depuração. 7. Utilize parênteses para aumentar a legibilidade e prevenir‐se de erros. 8. Use identação nos comandos de acordo com o nível que estejam, ou seja, alinhe comandos de mesmo nível e 

desloque comandos de nível inferior. Ex.:   

início     comando 1;     se condicao1 então       comando2;       comando3;     senao       comando4;       comando5;     fimse     comando6; fim 

Método para desenvolvimento de algoritmos 1. Faça uma  leitura de  todo o problema até o  final, a  fim de  formar a primeira  impressão.   A  seguir,  releia o 

problema e faça anotações sobre os pontos principais. 

Page 54: APOSTILA 02 LÓGICA DE PROGRAMAÇÃO · PDF fileCada linha do algoritmo pode-se chamar de uma instrução, logo, podemos dizer que um algoritmo é um conjunto de instruções

EDGAR TITO - INFORMÁTICA 2014 – Prof. Ranildo Lopes

2. Verifique  se  o  problema  foi  bem  entendido.   Questione,  se  preciso,  ao  autor  da  especificação  sobre  suas dúvidas. Releia o problema quantas vezes for preciso para tentar entendê‐lo. 

3. Extraia do problema todas as suas saídas. 4. Extraia do problema todas as suas entradas. 5. Identifique qual é o processamento principal. 6. Verifique se será necessário algum valor  intermediário que auxilie a  transformação das entradas em saídas.  

Esta  etapa  pode  parecer  obscura  no  início,  mas  com  certeza  no  desenrolar  do  algoritmo,  estes  valores aparecerão naturalmente. 

7. Teste cada passo do algoritmo, com todos os seus caminhos para verificar se o processamento está gerando os resultados esperados. Crie valores de teste para submeter ao algoritmo. 

8. Reveja o algoritmo, checando as boas normas de criação.