• Nenhum resultado encontrado

ALGORITMOS E PROGRAMAÇÃO I

N/A
N/A
Protected

Academic year: 2021

Share "ALGORITMOS E PROGRAMAÇÃO I"

Copied!
14
0
0

Texto

(1)
(2)

OBS: Apostila Adaptada ao Interpretador de Linguagem Algorítmica – ILA 1.01, da Universidade do Vale do Rio dos Sinos – UNISINOS, utilizada nesse curso para demonstrar a praticidade das estruturas algorítmicas abordadas na disciplina.

1

1 CONCEITOS PRELIMINARESCONCEITOS PRELIMINARES 1.1

1.1NNOÇÕESOÇÕESDEDELÓGICALÓGICA

"LÓGICA: coerência de raciocínio, de idéia; seqüência coerente, regular e necessária de acontecimentos, de coisas" (AURÉLIO).

"LÓGICA: trata da correção do pensamento; ensina a colocar ordem no pensamento" (FORBELLONE, 1993).

Segundo FORBELLONE (1993), o pensamento e suas representações (palavra escrita, palavra falada) sempre vem acompanhado da lógica ou da ilógica. Assim, a lógica não é somente importante na teoria como também o é na prática, visto que quando alguém deseja expressar seus pensamentos e se fazer entender através da escrita ou através da fala, necessariamente precisa colocar ordem no pensamento, ou seja, usar a lógica.

EXEMPLO 1: a gaveta está fechada. a bala está na gaveta.

preciso primeiro abrir a gaveta, para depois pegar a bala.

EXEMPLO 2: João é mais velho que Pedro. Pedro é mais velho que José. Logo, João é mais velho que José.

"A LÓGICA envolve as declarações, pressupostos e operações que definem o que um

determinado programa fará. A definição da lógica dos programas é, quase sempre, o primeiro passo na resolução de um problema" (XIMENES, 1993) .

C

CONCEITOONCEITODEDEALGORITMOALGORITMO..

A construção de programas de computadores, em alguns casos, pode ser uma tarefa difícil, não porque o programador seja incompetente, mas devido à complexidade dos problemas. Portanto, é importante separar a tarefa de construção de programas em duas fases (FIGURA 1): a fase de resolução do problema e a fase de implementação.

PROBLEMA ALGORITMO PROGRAMA análise implementação

passo difícil

(3)

No sentido mais geral, “um algoritmo é qualquer conjunto finito de instruções que possa ser

seguido para a realização de uma tarefa específica ou resolução de um determinado problema”

(XIMENES, 1993).

EXEMPLO 4: Uma receita de culinária: massa folheada

Amassar bem todos os ingredientes Deixar repousar por 30 min.

REPETIR (3 vezes) Abrir a massa Passar margarina Dobrar 3 vezes

Deixar repousar por 15 min. Abrir a massa

Rechear

Levar ao forno quente numa forma untada ENQUANTO (não estiver assado)

Manter no forno quente

EXEMPLO 5: A atividade de um assistente administrativo

Fornecer formulário

Verificar o preenchimento do formulário SE (preenchimento estiver correto) ENTÃO

Arquivar formulário Fornecer protocolo SENÃO

Fornecer novo formulário

Instruir quanto à forma de preenchimento

“Na informática, um algoritmo é definido como uma seqüência ordenada e finita de passos, independente da linguagem de programação a ser utilizada para codificá-lo, que leva à solução de um dado problema” (XIMENES, 1993).

EXEMPLO 6: O cálculo da área de um retângulo

Saber o valor da base Saber o valor da altura Multiplicar a base pela altura

O valor obtido é o resultado esperado

Os algoritmos são utilizados na programação da mesma forma que as receitas de culinária podem ser usadas no preparo das refeições, tanto como solução específica quanto como ponto de partida para experiências.

(4)

para que seja possível definir a solução e o que deve ser feito (processamento).

Um ALGORITMO, é um texto (do tipo receita de bolo) onde cada linha contém uma ação primitiva (ação elementar, passível de execução por um humano ou uma máquina). A função do algoritmo, que executado, é a de agir (operar) sobre os dados, transformando-os em informações (algumas vezes denominada de dados ou dados operacionais).

Entrada Saída de ALGORITMO de Dados Informação

FIGURA 2: função do algoritmo

- O texto em si não nos interessa, mas sim, o efeito que sua execução possa gerar no decorrer do tempo, isto é, a execução de um algoritmo é um evento dinâmico, evoluindo no tempo.

- Esta técnica é importante, pois permite a validação da solução do problema antes do programa existir, minimizando o custo (hora máquina).

- Todo algoritmo é composto por um grupo de ações primitivas (ações passíveis de execução por um humano ou por uma máquina).

- As ações primitivas que utilizaremos na construção de algoritmos serão construções linguísticas da nossa linguagem natural (português). Estamos assumindo que exista um computador hipotético capaz de executá-las.

- Uma ação é um evento que ocorre em um período de tempo finito e com um efeito bem definido. Quando colocamos uma determinada ação em um algoritmo, é porque estamos interessados no efeito que ela irá produzir quando for executado.

- Construir um algoritmo é descrever um padrão de comportamento, a partir de ações primitivas, possibilitando a reprodução de um evento (mesmo padrão de comportamento) a cada execução do algoritmo.

2.0 - DESENVOLVIMENTO DE ALGORITMOSDESENVOLVIMENTO DE ALGORITMOS 2.1 – MEMÓRIA E CONCEITO DE VARIÁVEIS

Memória - dispositivo que permite que as instruções a serem executadas e os dados a

serem manipulados sejam armazenados temporariamente.

Variável - Corresponde a uma área de memória, onde o seu conteúdo varia durante a

execução do algoritmo.

Armário Nome da Gaveta Gaveta (rótulo)

(5)

Varável Nome da Variável

Memória

FIGURA 3: Memória e Variável

2.2 - TIPOS PRIMITIVOS DE DADOS.

- são os tipos mais comuns.

NUMERICO - pode armazenar qualquer valor pertencente ao conjunto dos números

inteiros e/ou ao conjunto dos números reais.

CARACTER - pode armazenar apenas 1 elemento pertencente a um dos conjuntos

abaixo:

{A, B, C, ... Z} {0, 1, 2, ... 9} { ?, &, =, +, $, _, |, ´, “, /}

LÓGICO - pode armazenar apenas as constantes FALSO ou VERDADEIRO.

2.3 - IDENTIFICADORES.

Os nomes (identificadores) escolhidos para rotular as variáveis devem obedecer às seguintes regras:

a) O primeiro caracter deve ser uma letra;

b) Os nomes devem ser formados por caracteres pertencentes ao seguinte conjunto: {A, B, C, ... X, Y, W, Z, 0, 1, 2, ... 9, _ }

c) Os nomes escolhidos devem explicitar seu conteúdo. Ex.: Total_de_Aunos, Horas_Extras, Total01, etc...

2.4 - DECLARAÇÃO DE VARIÁVEIS E SEUS OPERADORES.

Declarar uma variável significa reservar uma área (gaveta) na memória, dar-lhe um rótulo (nome) e especificar o seu tipo.

Ex.: VARIAVEIS

NUMERICO: Total, Soma, QtdeNotas

(6)

Símbolo Função Tipos Disponíveis

+ Adição inteiro, real - Subtração inteiro, real * Multiplicação inteiro, real / Divisão Real inteiro, real ^ Exponenciação inteiro, real

- Operadores Relacionais

Símbolo Função Tipos Disponíveis

> Maior todos < Menor todos = Igual todos <> Diferente todos >= Maior ou igual que todos <= Menor ou igual que todos

- Operadores Lógicos

Símbolo Função Tipos Disponíveis

E Conjunção lógico OU Disjunção lógico NAO Negação lógico

2.5 - FUNÇÕES PRIMITIVAS Função Finalidade

RESTO Resto da divisão inteira SEN(x) Calcula o seno de um número ASEN(x) Calcula o arco seno de um número

COS(x) Calcula o co-seno de um número ACOS(x) Calcula o arco co-seno de um número

(7)

TAN(x) Calcula a tangente de um número ATAN(x) Calcula o arco tangente de um número ALEATORIO Devolve um número aleatório entre 0 e 1

INTEIRO(x) Extrai de um número qualquer somente a sua parte inteira. VALOR(x) Converte o conteúdo de uma variável caracter em numérico

LOG(x) Calcula etorna o logaritmo de x na base (2) RAIZ(x) Calcula a raiz qualquer de um número

2.6 - PRIORIDADE DE EXECUÇÃO DOS OPERADORES NAS EXPRESSÕES MISTAS.

Durante a execução de uma expressão que envolve vários operadores, é necessária a existência de prioridades, caso contrário poderemos obter valores que não representam o resultado esperado.

Prioridade O p e r a ç õ e s

1 Efetuar operações embutidas em parênteses “mais internos” 2 Efetuar funções

3 Potenciação

4 Efetuar multiplicação e/ou divisão 5 Efetuar adição e/ou subtração 6 Operadores lógicos

7 Operadores relacionais

2.7 - DECLARAÇÃO DE CONSTANTES

Uma constante é um determinado valor fixo que não se modifica ao longo do tempo, durante a execução do algoritmo (programa).

Exemplo:

VARIAVEIS

NUMERICO Numero_de_Avalicoes, Numero_de_Alunos, Numero_de_Vagas, INICIO

Numero_de_Avalicoes = 4 Numero_de_Alunos = 40 Numero_de_Vagas = 45 FIM

(8)

2.8 - COMANDO DE ATRIBUIÇÃO

Comando é a descrição de uma ação a ser executada em um dado momento. Para atribuirmos um valor a uma variável usaremos o seguinte comando:

Total = 100

2.9 - COMANDOS DE ENTRADA E SAÍDA

Não estamos interessados nas formas de entrada e saída de dados, mas sim em como construir algoritmos que transformem dados em informações. Neste caso, iremos nos restringir ao uso de um único comando de entrada (leitura dos dados) e um único comando de saída (escrita das informações).

Entrada de Dados Saída de Informação ALGORITMO

LER ESCREVER

FIGURA 4: Entrada/Saída

2.10 - SINTAXE DOS COMANDOS DE ENTRADA E SAÍDA

LER d1 LER d2 LER dn

onde d1, d2, ..., dn são dados lidos de um dispositivo qualquer.

ESCREVER (i1, i2, ..., in)

onde i1, i2, ..., in são informações que serão escritas em um dispositivo qualquer.

EXEMPLO: Construir um algoritmo que: leia duas notas, calcule a média aritmética e escreva o resultado.

//algoritmo para calcular a média entre duas notas //

VARIAVEIS

NUMERICO QtdeNotas, Nota1, Nota2, Media INICIO

(9)

// Entrada de dados LER Nota1

LER Nota2

//Processamento

Media = (Nota1 + Nota2) / QtdeNotas

// Saída de informações

ESCREVER “A média entre as duas notas = “, média)

FIM.

Obs.: Os comentários podem ser introduzidos em qualquer ponto do algoritmo, bastando que estejam após barras //.

- Na saída de informações ESCREVER, o que está entre aspas é um comentário e não afeta o resultado.

]

3.0 - ESTRUTURA DE CONTROLE DE FLUXO

Durante a execução de um programa as ações primitivas (instruções) nem sempre são executadas na mesma ordem em que foram escritas. Isto ocorre porque muitas vezes temos interesse em fazer com que o computador execute um sequência de ações repetidas vezes, neste caso, devemos fazer com que o computador abandone o fluxo natural de execuções (de cima para baixo) e volte a executar a sequência de ações que desejamos. Essas estruturas nos permitirão desenvolver programas claros, compactos e estruturados.

3.1 - BLOCO

É uma sequência de ações primitivas, que como um todo, possui uma função bem definida.

Exemplo:

INICIO

Sequência de ações primitivas ... .

. FIM.

3.2 - SEQUÊNCIA SIMPLES

É um conjunto de ações primitivas que serão executadas numa sequência linear de cima para baixo, isto é, serão executadas na mesma ordem em que foram escritas.

Exemplo:

VARIAVEIS

(10)

INICIO ação_primitiva01 ação_primitiva02 . . . ação_primitivaN FIM. 3.3 - ESTRUTURAS ALTERNATIVAS

Podemos fazer com que um bloco seja ou não executado, dependendo do resultado obtido na inspeção de uma condição, que pode ser falso ou verdadeiro.

3.3.1 - ALTERNATIVA SIMPLES

SE (condição_A) ENTAO ação_primitiva

FIM_SE

Observação: Se (condição_A) for satisfeita, então a “ação primitiva” será executada.

(condição_A) é uma expressão lógica que, quando inspecionada, pode gerar um resultado falso ou verdadeiro.

3.3.2 - ALTERNATIVA COMPOSTA SE (condição_A) ENTAO ação_primitiva01; SENAO ação_primitiva02; FIM_SE

Observação: Se (condição_A) for satisfeita, então apenas a “ação_primitiva01”, caso contrário, (SENÃO) apenas a “ação_primitiva02" será executada.

3.3.3 - ALTERNATIVAS ANINHADAS

Podemos agrupar várias alternativas a fim de inspecionar uma ou mais condições.

SE (condição01) ENTAO ação_primitiva01 SENAO SE (condição02) ENTAO ação_primitiva02 SENAO SE (condição03) ENTAO

(11)

ação_primitiva03 FIM_SE

FIM_SE FIM_SE

Se “condição01" for satisfeita, então a “ação_primitiva01" será executada, caso contrário, (SENAO) a “condição02" será inspecionada e se for satisfeita, então a “ação_primitiva02" será executada, caso contrário (SENAO) a “condição03" será inspecionada e se for satisfeita, então a “ação_primitiva03" será executada.

3.4 - ALTERNATIVA DE MÚLTIPLA ESCOLHA.

FACA CASO Opcao CASO Opcao=v1 : ação_primitiva01 CASO Opcao=v2 : ação_primitiva02 CASO Opcao=v3 : ação_primitiva03 FIM_CASO

Caso o conteúdo da variável “Opcao” seja igual ao valor “vN” então a “ação_primitivaN” será executada, caso contrário, o próximo caso será inspecionado.

FACA CASO Opcao CASO Opcao=v1 : ação_primitiva01 CASO Opcao=v2 : ação_primitiva02 CASO Opcao=v3 : ação_primitiva03 OUTRO_CASO : ação_primitiva04 FIM_CASO

Caso o conteúdo da variável “Opcao” seja igual ao valor “vN” então a “ação_primitivaN” será executada, caso contrário, a “ação_primitiva04" executada.

3.4 - ESTRUTURAS DE REPETIÇÃO

Muitas vezes temos necessidade de repetir uma sequência de ações primitivas (bloco). O número de repetições pode ser indeterminado, porém finito, caso contrário o algoritmo não teria sentido, pois sua execução gastaria um tempo infinito.

3.4.1 – Estrutura: FACA ENQUANTO

Permite que um bloco ou uma ação primitiva seja repetida, enquanto uma determinada condição for satisfeita.

FACA ENQUANTO (condição_laço) ação_primitiva01

(12)

ação_primitiva02 ação_primitiva03 . . ação_primitivaN; FIM_ENQUANTO 3.4.2 – Estrutura: REPITA

Esta estrutura permite que um bloco ou uma ação primitiva seja repetida até que uma determinada condição seja satisfeita.

REPITA ação_primitiva01 ação_primitiva02 ação_primitiva03 . . ação_primitivaN; ATE(condição_laço); FIM_REPITA

OBS: A diferença básica entre as estruturas FACA ENQUANTO e REPITA é que nesta última, o bloco é executado pelo menos uma vez independente da validade da condição, isto ocorre porque a inspeção da condição é feita após a execução do bloco. Essa estrutura não é utilizada no ILA.

3.4.3 – Estrutura: PARA

Nas estruturas de repetição, apresentadas até o momento, é difícil sabermos exatamente quantas vezes o bloco será executado, sabemos apenas que ele será executado enquanto uma condição for satisfeita “FACA ENQUANTO”, ou até que uma condição seja satisfeita “REPITA”. Iremos apresentar uma estrutura capaz de repetir a execução do bloco um número bem definido de vezes. O controle do número de repetições é feito “automaticamente” por uma variável chamada de “variável de controle”, esta variável é atualizada (incrementada) após cada execução do bloco.

PARA variável_de_controle = expressão1 ATE número_de_repetições PASSO expressão2 FACA ação_primitiva01 ação_primitiva02 ação_primitiva03 . . ação_primitivaN PROXIMO

OBS: Ao contrário das estruturas de repetição vistas anteriormente, esta estrutura não permite que sua “variável de controle”, sofra alteração no interior do bloco, pois sua atualização é “automática”.

(13)

3.0 - ESTRUTURA DE DADOS (introdução) 3.1 - ESTRUTURAS DE DADOS HOMOGÊNEAS 3.1.1 – VETORES e MATRIZES

Esta estrutura permite a definição de um conjunto limitado de variáveis (todas do mesmo tipo e virtualmente com o mesmo nome) acessíveis por um índice. Por este motivo, algumas vezes, esta estrutura é chamada de “variáveis indexadas”.

Exemplo 1: Supondo que um aluno tenha 04 (quatro) notas, podemos declarar as variáveis necessárias para armazená-las da seguinte forma:

VARIAVEIS

MATRIZ NUMERICO Notas[4]

Exemplo 2: Supondo que tenhas uma turma de 40 (quarenta) alunos e suas 04 (quatro) notas, podemos declarar as variáveis necessárias para armazená-las da seguinte forma:

VARIAVEIS

(14)

Bibliografia:

PINTO, Wilson Silva. Introdução ao Desenvolvimento de Algoritmos e Estrutura de dados. 2ª ed. SP. Érica, 1990.

ILA 1.01 – Interpretador de Linguagem Algorítmica. Universidade do Vale do Rio dos Sino - UNISINOS.

ALGORITMOS (Curso de Ciência da Computação). Universidade do Vale do Itajaí – Campus VII – São José. Professora: Joyce Martins.

Referências

Documentos relacionados

[r]

A primeira que designamos como a sua crítica às pretensões da razão e que não se aplica ao seu mestre ou a Anaximandro, pois, segundo ele, ambos partem de uma intuição mística

Como você já deve ter percebido, não há nada demais com esse modelo de banco de dados, as tabelas estão interligadas normalmente usando chaves primárias e chaves

[dia/mês/ano] e pelo Graprohab em [dia/mês/ano] (Certificado Graprohab n. [número do certificado] ), Termo de Compromisso de Recuperação Ambiental firmado com a Companhia

2 a 2 com bola, um de cada lado da rede, o aluna com bola coloca-se na linha dos três metros e lança a boa para cima da rede, o outro faz bloco,

explica quando Dom Quixote escreve a Sancho: “Quando esperava ouvir novas de teus descuidos e impertinências; Sancho amigo, ouvi-as das tuas discrições, e por isso dei

4- Na Wurth Portugal trabalhamos para apresentar aos nossos clientes os melhores produtos ao nível de qualidade e diferen- ciação, sendo que a nossa gama de chaves dinamométricas

1595 A caracterização do repertório de habilidades sociais dos alunos do Grupo com Baixo Desempenho Acadêmico (GBD) e do Grupo com Alto Desempenho Acadêmico (GAD),