• Nenhum resultado encontrado

Aula 4 Lógica de Programação

N/A
N/A
Protected

Academic year: 2021

Share "Aula 4 Lógica de Programação"

Copied!
9
0
0

Texto

(1)

UEM – Universidade Estadual de Maringá DIN - Departamento de Informática

Disciplina: Fundamentos da Computação Profª Thelma Elita Colanzi Lopes

thelma@din.uem.br

Aula 4

Lógica de Programação

O objetivo principal da Lógica de Programação é demonstrar técnicas para reso-lução de problemas e conseqüentemente automatização de tarefas.

O aprendizado da Lógica é essencial para formação de um bom programador, servindo como base para o aprendizado de todas as linguagens de programação, es-truturadas ou não.

De um modo geral esses conhecimentos serão importantes, pois nos ajudarão no cotidiano, desenvolvendo um raciocínio rápido.

Algoritmos

Um Algoritmo é uma seqüência de instruções ordenadas de forma lógica para a resolução de uma determinada tarefa ou problema. Os algoritmos surgiram no século IX, muito antes dos computadores, com o matemático Árabe de sobrenome Al-Khowa-rizmi, que desenvolveu um conjunto de regras para efetuar operações aritméticas com números decimais. Pode-se ainda descrever algoritmos como uma descrição de um procedimento padrão, passo a passo, de forma detalhada e sem ambigüidade devendo ainda ter execução finita para quaisquer valores de dados.

Os algoritmos são aplicados em várias áreas, como a física e a matemática. Um relatório de física, por exemplo, pode ser visto como um algoritmo, do ponto de vista que a intenção de um relatório é permitir que alguém repita a experiência relatada e ob-tenha os mesmos resultados.

A programação de computadores é apenas um dos campos de aplicação dos al-goritmos. Sendo assim, um algoritmo pode ser computacional — quando é representa-do por uma linguagem de programação e pode ser executarepresenta-do no computarepresenta-dor (chama-mos de programa); ou não computacional — quando somente uma seqüência de ins-truções é descrita de forma lógica mais não totalmente formal.

A formulação de um algoritmo geralmente consiste em um texto contendo co-mandos (instruções) que devem ser executados numa seqüência prescrita (receita). A seguir apresenta-se um algoritmo não computacional para fritar batatas:

Início

Recolha as batatas na geladeira; Coloque as batatas em uma bacia; Descasque as batatas;

Lave as batatas; Fatie as batatas;

Coloque o óleo na panela para esquentar; Enxugue as batatas;

Jogue as batatas na panela com óleo, com cuidado; Mexa as batatas até ficarem fritas;

Retire as batatas; Escorra o óleo;

(2)

Abaixo é apresentado um Algoritmo não computacional cujo objetivo é usar um telefone público.

Início

Tirar o fone do gancho; Ouvir o sinal de linha; Introduzir o cartão;

Teclar o número desejado; Se der o sinal de chamar 5.1 Conversar; 5.2 Desligar; 5.3 Retirar o cartão; 6. Senão 6.1 Repetir; Fim.

Computacionalmente falando, um algoritmo não é uma solução para um proble-ma, mas um caminho para obtê-la. Sendo assim, podem existir vários caminhos para uma mesma solução, e conseqüentemente, vários algoritmos diferentes para o mesmo problema. Como um exemplo, podemos destacar os vários métodos de multiplicação existentes: método americano (resolução direita para a esquerda), método inglês (reso-lução da esquerda para a direita) e o método russo (dividir o multiplicando por 2 e mul-tiplicar o multiplicador por 2 até que o multiplicando se torne 1 – somar os multiplicado-res onde o multiplicando é impar). Outro exemplo seria a rotina que cada pessoa segue para tomar banho, trocar um pneu ou executar uma receita de bolo.

Representação de Algoritmos

Os algoritmos podem ser representados de forma gráfica ou textual. Na forma gráfica, utilizamos principalmente os fluxogramas convencionais. Na forma textual, po-demos utilizar uma linguagem de programação, ou uma pseudolinguagem.

Desvio “Reprovado” fim início N1, N2 Media <= (N1 + N2)/2 Media >= 6? “Aprovado” Algoritmo calc_media;

(3)

Durante nosso curso iremos aprender inicialmente a desenvolver nossos algorit-mos em uma pseudolinguagem conhecida como “Portugol” ou Português Estruturado.

“Portugol” é derivado da aglutinação de Português + Algol. Algol é o nome de uma linguagem de programação estruturada usada no final da década de 50 que influ-enciou muito a construção da linguagem Pascal.

Vamos conhecer então, a sintaxe da linguagem que utilizaremos: Operadores aritméticos: +  Adição -  Subtração *  Multiplicação /  Divisão Operadores relacionais: >  Maior que <  Menor que >=  Maior ou Igual <=  Menor ou Igual =  Igual <>  Diferente Escrevendo Expressões

Para a construção de Algoritmos todas as expressões aritméticas devem ser li-nearizadas, ou seja, colocadas em linhas.

É importante também ressalvar o uso dos operadores correspondentes da arit-mética tradicional para a computacional. Exemplo:

Modularização de Expressões

A modularização é a divisão da expressão em partes, proporcionando maior compreensão e definindo prioridades para resolução da mesma.

Como pode ser observado no exemplo anterior, em expressões computacionais usamos somente parênteses “( )” para modularização.

Na informática podemos ter parênteses dentro de parênteses. Exemplos de prioridades:

(2+2)/2=2 2+2/2=3

Operadores Especiais (Mod e Div)

MOD  Retorna o resto da divisão inteira entre 2 números inteiros.

DIV  Retorna o valor inteiro que resulta da divisão entre 2 números inteiros.

(4)

Exemplo:

Prioridade entre os operadores aritméticos e os operadores Mod e Div

Na resolução de uma expressão computacional os operadores aritméticos são resolvidos com as mesmas prioridades atribuídas a eles na matemática. Assim, sempre resolvemos os operadores de divisão e multiplicação (inclusive os operadores mod e div) antes de resolvermos os operadores de soma e subtração.

Funções

Uma função é um instrumento (Sub–algoritmo) que tem como objetivo retornar um valor ou uma informação. A chamada de uma função é feita através da citação do seu nome seguido opcionalmente de seu argumento inicial entre parênteses. As fun-ções podem ser predefinidas pela linguagem ou criadas pelo programador de acordo com o seu interesse. Exemplos:

Funções Pré-Definidas

ABS( ) VALOR ABSOLUTO SQRT( ) RAIZ QUADRADA SQR( ) ELEVA AO

QUADRA-DO

TRUNC( ) VALOR TRUNCADO ROUND( ) VALOR

ARREDONDA-DO

LOG( ) LOGARITMO SIN( ) SENO

COS( ) COSENO TAN( ) TANGENTE

As funções apresentadas anteriormente são as mais comuns e importantes para nosso desenvolvimento lógico, entretanto, cada linguagem possui suas funções

(5)

Operadores Lógicos

Atuam sobre expressões retornando sempre valores lógicos como Falso ou Ver-dadeiro.

E Retorna verdadeiro se ambas as partes forem verdadeiras. OU Basta que uma parte seja verdadeira para retornar verdadeiro. NÃO Inverte o estado, de verdadeiro passa para falso e vice-versa.

Tabela Verdade A B A E B A OU B NÃO (A) V V V V F V F F V F F V F V V F F F F V Expressões Lógicas

As expressões compostas de relações sempre retornam um valor lógico. Exemplos:

2+5>4  Verdadeiro 3<>3  Falso

De acordo com a necessidade, as expressões podem ser unidas pelos operado-res lógicos. Exemplos:

(6)

Variáveis

Variáveis são endereços de memória destinados a armazenar informações tem-porariamente. As variáveis de um algoritmo representam os dados que devem ser ar-mazenados na memória do computador para posterior processamento durante a exe-cução do algoritmo. Para o armazenamento desses dados é preciso saber qual o seu tipo e como eles poderão ser identificados para viabilizar a sua utilização e manipula-ção a qualquer momento.

Para que a programação se torne mais fácil podemos colocar nomes legíveis (que nós podemos entender) nesses endereços de memória e utiliza-los no algoritmo. Uma variável sempre está associada a 4 características:

O nome da variável: necessário para diferencia-la das demais;

O endereço da variável: necessário para localizar a variável na memória principal;O tipo de dado associado à variável: indica o tipo de informação que pode ser

ar-mazenada naquela área de memória e é necessário para que o compilador trate cada variável de acordo com o seu tipo;

O conteúdo da variável: é a informação efetivamente guardada na variável;

A declaração em pseudolinguagem das variáveis utilizadas em um algoritmo e seus respectivos tipos é sempre precedida pela palavra “variáveis”, e é feita logo no início do algoritmo. Exemplo: Variáveis Salário: real; Idade: inteiro; Nome: cadeia; Sexo: caracter; Variáveis de Entrada e Saída

Variáveis de entrada armazenam informações fornecidas por um meio externo (normalmente usuários ou discos). No exemplo da média, as variáveis N1 e N2 são va-riáveis de entrada.

Variáveis de saída armazenam dados processados como resultados. No exem-plo da média a variável media é uma variável de saída.

Constantes

Constantes são endereços de memória destinados a armazenar informações fi-xas, inalteráveis durante a execução do programa.

Exemplo: PI = 3.1416

A declaração em pseudolinguagem das constantes utilizadas em um algoritmo sempre precedida pela palavra “constantes”, e é feita logo no início do algoritmo, antes da declaração das variáveis. Exemplo:

Constantes pi=3.1416; Variáveis

(7)

Identificadores

São os nomes dados a variáveis, constantes e algoritmos. Regras para construção de Identificadores:

 Não podem ter nomes de palavras reservadas (comandos da linguagem);

Devem possuir como 1º caractere uma letra ou Underscore ( _ );

 Ter como demais caracteres letras, números ou Underscore;  Ter no máximo 127 caracteres;

 Não possuir espaços em branco;

 A escolha de letras maiúsculas ou minúsculas é indiferente. Exemplos:

nome telefone idade_filho

nota1 salario pi

umnomemuitocompridoedificildeler

um_nome_muito_comprido_e_facil_de_ler Tipos de Dados

Todas as variáveis devem assumir um determinado tipo de informação. O tipo de dado pode ser:

Primitivo  Pré-definido pela linguagem;

Sub-Faixa  É uma parte de um tipo já existente; Escalar  Definidos pelo programador.

Exemplos: A : INTEIRO

TIPO NOTA = [1..10] DE INTEIRO

TIPO SEMANA = (Segunda-feira, Terça-feira, Quarta-feira, Quinta-feira, Sexta-feira, Sábado, Domingo)

Tipos Primitivos de Dados

Inteiro: Admite somente números inteiros. Geralmente é utilizado para representar uma contagem (quantidade).

Real: Admite números reais (com ou sem casas decimais). Geralmente é utilizado para representar uma medição.

Caractere: Admite caracteres alfanuméricos. (0..9, A..Z, a..z, !, @, #, $, %, ¨, &, *, (, ), _, +, {, }, [, ]...) Os números quando declarados como caracteres tornam se representa-tivos e perdem a atribuição de valor.

Cadeia: Admite uma seqüência de caracteres.

Lógico: Admite somente valores lógicos (verdadeiro/falso). Comandos de Entrada e Saída

LEIA  Comando de entrada que permite a leitura de Variáveis de Entrada. Exemplo: leia(n1, n2);

ESCREVA  Comando de saída que exibe uma informação na tela do monitor. Exemplo: escreva(media);

PRIMITIVO

SUB - FAIXA

(8)

Sinal de Atribuição

Uma Variável nunca é eternamente igual a um valor, seu conteúdo pode ser alterado a qualquer momento. Portanto para atribuir valores a variáveis devemos usar o sinal de “:=”. Exemplos: A := 2; B := 3; C := A + B; D := pi;

Corpo Geral de um Programa PROGRAMA <<identificador>>; CONST <<identificador>> = <<dado>>; VAR <<identificador>> : <<tipo>>; ÍNICIO {

COMANDOS DE ENTRADA,PROCESSAMENTO E SAÍDA <<comando1>>;

<<comandoN>> }

FIM.

Estruturas Seqüenciais

Como pode ser analisado no tópico anterior, todo programa possui uma estrutura seqüencial determinada por um ÍNICIO e FIM.

Ponto e vírgula ;

O sinal de ponto e vírgula “;” indica a existência de um próximo comando (passa para o próximo).

Na estrutura ÍNICIO não se usa “;”.

Primeiro Algoritmo

Segue um Algoritmo que lê o nome e as 4 notas bimestrais de um aluno. Em seguida o Algoritmo calcula e escreve a média obtida.

programa media_final; var

nota1, nota2, nota3, nota4, media: inteiro; nome : caractere [35];

inicio

leia (nome);

leia (nota1, nota2, nota3, nota4);

(9)

Segundo Algoritmo

Segue um Algoritmo que lê o raio de uma circunferência e calcula sua área. programa area_circunferencia;

const pi = 3.1416; var raio, area : real; inicio

leia (raio); {processamento}

area := pi * sqr(raio); {entrada} escreva (‘area =’, area) {saída} fim.

{Linhas de Comentário}

Podemos inserir em um Algoritmo comentários para aumentar a compreensão do mes-mo, para isso basta que o texto fique entre Chaves “{}”.

Exemplo:

ler (raio); {entrada}

‘Aspas simples’

Quando queremos exibir uma mensagem para a tela ela deve estar contida entre as-pas simples, caso contrário, o computador irá identificar a mensagem como Variável In-definida.

Exemplo:

escrever (‘area obtida =’, area) {comando de saída} area obtida = x.xx {resultado gerado na tela}

Referências

Documentos relacionados

O primeiro item, “Mercado de Call Center: histórico, seus desafios, tendências para futuro” traz um recorte sobre o segmento de Call Center e suas principais

1- Indica com P, se a frase estiver na voz passiva e com A se estiver na ativa. Depois, passa-as para a outra forma. a) Vimos um cisne moribundo.. Assinala com um X o

1- Indica com P, se a frase estiver na voz passiva e com A se estiver na ativa. Depois, passa-as para a outra forma.. Assinala com um X o retângulo correspondente.. Derivada

A participação foi observada durante todas as fases do roadmap (Alinhamento, Prova de Conceito, Piloto e Expansão), promovendo a utilização do sistema implementado e a

Ainda segundo Gil (2002), como a revisão bibliográfica esclarece os pressupostos teóricos que dão fundamentação à pesquisa e às contribuições oferecidas por

● Dica: ao utilizar o método puts com as aspas (para escrever textos), dentro das aspas você pode acessar as variáveis com #{IDENTIFICADOR} , trocando IDENTIFICADOR pelo

Algoritmos e Programação Estruturada – Conceitos Importantes Estrutura de dados.. Algoritmos e Programação Estruturada –

Um comando de atribuição permite-nos fornecer um valor a uma variável (guardar um valor em uma gaveta), em que o tipo do dado deve ser compatível com o tipo da