Docsity
Docsity

Prepare-se para as provas
Prepare-se para as provas

Estude fácil! Tem muito documento disponível na Docsity


Ganhe pontos para baixar
Ganhe pontos para baixar

Ganhe pontos ajudando outros esrudantes ou compre um plano Premium


Guias e Dicas
Guias e Dicas

Desenvolvimento de Algoritmos: Introdução e Conceitos Básicos, Slides de Programação Linear

Saiba o que é um algoritmo, suas áreas e desenvolvimento, como lógicas e operações. Aprenda a escrever algoritmos simples e complexos, como comparar números e realizar operações lógicas. Encontre exemplos práticos e soluções para problemas comuns.

Tipologia: Slides

2020

Compartilhado em 25/03/2020

cristofer-machado
cristofer-machado 🇧🇷

1 documento

1 / 31

Toggle sidebar

Esta página não é visível na pré-visualização

Não perca as partes importantes!

bg1
Universidade Federal de Viçosa
Centro de Ciências Agrárias
Departamento de Engenharia Agrícola
D
DE
ES
SE
EN
NV
VO
OL
LV
VI
IM
ME
EN
NT
TO
O
D
DE
E
A
AL
LG
GO
OR
RI
IT
TM
MO
OS
S
Elaborada por
Daniela de Carvalho Lopes
Evandro de Castro Melo
Viçosa, abril de 2002
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b
pf1c
pf1d
pf1e
pf1f

Pré-visualização parcial do texto

Baixe Desenvolvimento de Algoritmos: Introdução e Conceitos Básicos e outras Slides em PDF para Programação Linear, somente na Docsity!

Universidade Federal de Viçosa Centro de Ciências Agrárias Departamento de Engenharia Agrícola

DE DESSEENNVVOOLLVVIIMMEENNTTOO DEDE ALALGGOORRIITTMMOOSS

Elaborada por Daniela de Carvalho Lopes Evandro de Castro Melo

Viçosa, abril de 2002

ÍNDICE

    1. INTRODUÇÃO
    1. DESENVOLVIMENTO DE ALGORITMOS.....................................................
    • 2.1. PORTUGOL
    • 2.2. FLUXOGRAMA........................................................................................
    • 2.4. EXERCÍCIOS............................................................................................
    1. CONCEITOS IMPORTANTES
    • 3.1. COMPILADOR
    • 3.2. SINTAXE E SEMÂNTICA DE UM PROGRAMA......................................
    • 3.3. OPERADORES E EXPRESSÕES
    • 3.4. COMENTÁRIOS
    • 3.5. EXERCÍCIOS............................................................................................
    1. VARIÁVEIS E CONSTANTES
    • 4.1. VARIÁVEIS
    • 4.2. CONSTANTES
    • 4.3. REGRAS PARA NOMES DE VARIÁVEIS E CONSTANTES
    • 4.4. EXERCÍCIOS..........................................................................................
    1. ESTRUTURA CONDICIONAL (ANÁLISE DE CONDIÇÕES)......................
    • 5.1. COMANDO SE
    • 5.2. COMANDO CASO
    • 5.3. EXERCÍCIOS..........................................................................................
    1. ESTRUTURA DE REPETIÇÃO (ITERAÇÕES)............................................
    • 6.1. COMANDO ENQUANTO
    • 6.2. COMANDO PARA..................................................................................
    • 6.3. COMANDO REPITA...............................................................................
    • 6.4. EXERCÍCIOS..........................................................................................
    1. EXERCÍCIOS DE REVISÃO.........................................................................
    1. VETORES.....................................................................................................
    • 8.1. EXERCÍCIOS..........................................................................................
    1. MATRIZES
    • 9.1. EXERCÍCIOS..........................................................................................
    1. PROCEDIMENTOS E FUNÇÕES
    • 10.1. PASSAGEM DE PARÂMETROS
    • 10.2. EXERCÍCIOS........................................................................................
    1. LITERATURA.............................................................................................

Outro aspecto importante é a validação do algoritmo gerado. A validação é um processo no qual se verifica se o algoritmo fornece os resultados corretos considerando todas as entradas de dados possíveis. Esta verificação é realizada independentemente do código de programação utilizado na implementação. Depois de implementado o programa também deverá ser validado verificando-se se está executando corretamente o que foi determinado no algoritmo. O processo completo que resulta em um programa computacional capaz de solucionar determinado tipo de problema pode ser dividido em cinco áreas descritas a seguir: ß Estabelecimento do problema: estabelecer os objetivos do trabalho. O problema deve ser bem definido para que o trabalho de elaboração do algoritmo seja facilitado. ß Desenvolvimento de um modelo: influencia diretamente na solução do problema. Modelos mais complicados gastam mais tempo para serem resolvidos e estão mais sujeitos a erros. ß Criação do algoritmo: elaborar o algoritmo propriamente dito. ß Avaliação do algoritmo: testar o algoritmo. Avaliar as possíveis entradas e verificar se as soluções geradas são corretas. Avaliar, também, os casos de exceção. ß Implementação: traduzir o algoritmo para uma linguagem de programação específica.

2. DESENVOLVIMENTO DE ALGORITMOS

Recomenda-se que os algoritmos sejam estruturados partindo-se de uma descrição geral e que, gradativamente, sejam acrescentadas particularidades e detalhes à solução do problema. Esta técnica é chamada “refinamentos sucessivos”, “construção hierárquica” ou “desenvolvimento top- down (de cima para baixo)”.

Exemplo : Efetuar a divisão de dois números.

ß Primeira Etapa: Descrição geral Algoritmo Divisão Fornecer o denominador Fornecer o divisor Divisão = Denominador / Divisor

ß Segunda Etapa: Controle de erro Algoritmo Divisão Fornecer o denominador Fornecer o divisor Se o divisor for diferente de zero : Divisão = Denominador / Divisor Se o divisor for igual a zero: Divisão não existe

O refinamento sucessivo dos algoritmos permite abordar o problema de maneira mais objetiva diminuindo-se a probabilidade de erros e facilitando a sua reparação quando ocorrerem. Existem diversas técnicas que ajudam no desenvolvimento de algoritmos facilitando seu entendimento para as pessoas.As mais utilizadas são o portugol e o fluxograma.

2.1. PORTUGOL

O portugol é uma forma de escrita estruturada, cuja finalidade é descrever, em uma sequência lógica, os passos para a resolução de um problema. Nesta técnica os algoritmos são escritos em uma linguagem simples que não possui muitas regras para sua escrita. Os algoritmos escritos em portugol devem ser escritos de maneira que todas as linhas contenham uma única instrução

Exemplo : Ler dois números e determinar qual dele é o maior. Algoritmo Maior Inicio Escrever (‘Digite o primeiro número’) Ler (num1) Escrever (‘Digite o segundo número’) Ler (num2) Se num1>num2 então Escrever (‘O maior número é ‘, num1) Se num2>num1 então Escrever (‘O maior número é ‘, num2)

3. CONCEITOS IMPORTANTES

3.1. COMPILADOR

Para que os computadores entendam as instruções que estão escritas em uma linguagem de programação estas instruções precisam ser “traduzidas” em um código especial chamado “linguagem de máquina”. Esta linguagem apresenta vários incovenientes pois todas as operações são escritas como conjuntos de uns e zeros para que possam ativar diretamente os dispositivos eletrônicos do computador. Mas, a pessoa que estiver programando não precisa se preocupar com a tradução do código escrito em uma linguagem de programação para a linguagem de máquina. Os ambientes em que escrevemos nossos códigos (Pascal, Delphi, C e outros) possuem um programa que é executado quando pedimos para executar o código que escrevemos e é capaz de transformá-lo em um código escrito em linguagem de máquina. Este programa é chamado COMPILADOR.

3.2. SINTAXE E SEMÂNTICA DE UM PROGRAMA Estes dois termos são muito utilizados pelos programadores quando o programa ou o algoritmo está sendo validado. A SINTAXE de um programa está relacionada à forma como ele foi escrito. Ou seja, se as palavras e comandos existentes no código do programa estão escritos corretamente. Se existir erro de sintaxe significa que algum comando ou instrução existente no programa foram escritos de maneira incorreta e o programa não poderá ser executado. A SEMÂNTICA está relacionada ao conteúdo da instrução, ou seja, o que a instrução significa. Quando existem erros de semântica significa que alguma instrução não está fazendo o que queríamos que fizesse e os resultados apresentados pelo programa não são corretos.

3.3. OPERADORES E EXPRESSÕES

As expressões são instruções formadas por operadores e cujo resultado dependerá de valores atribuídos a estes operadores.

Exemplo : A equação x^2 + x é um exemplo de expressão aritmética. Como não existe o símbolo relacionado à raiz no teclado de um computador (e isto ocorre com outros símbolos) esta expressão deverá ser escrita em um algoritmo da seguinte maneira: x^2+x^(1/2). Os operadores que formam esta expressão são ^ , + , ( ) e /.

A equação 2

x x 3 y^3 + 4 xy− deverá ser escrita em um algoritmo da

seguinte forma: x^3y^3+4xy-x/2*. Os operadores que formam esta expressão são ^ , ***** , - , / e +.

Os operadores podem ser aritméticos, lógicos ou relacionais. Os operadores aritméticos geralmente fazem parte de expressões que envolvem cálculos. Os operadores lógicos fazem parte de expressões que envolvem resultados caracterizados como “verdadeiro” ou “falso”. Finalmente, os operadores relacionais indicam uma comparação a ser realizada entre os termos de uma relação. A tabela mostrada a seguir apresenta os principais operadores, seus tipos e símbolos.

OPERAÇÃO TIPO SÍMBOLO Adição aritmético + Subtração aritmético - Multiplicação Aritmético * Divisão Aritmético / Potência Aritmético ^ Conjunção Lógico AND (E) Disjunção Lógico OR (OU) Negação Lógico NOT (NÃO) Maior Relacional > Maior ou igual Relacional >= Menor Relacional < Menor ou igual Relacional <= Igual Relacional = Diferente Relacional <> Prioridade Relacional ( )

Exemplo : A expressão (2+3 >2) AND (3+1<2) é analisada da seguinte maneira: o que está entre parêntesis é executado e a expressão é simplificada para (5>2) AND (4<2). Como 5 é maior que 2, a primeira comparação resulta em verdadeiro e, como 4 é maior que 2, a segunda comparação resulta em falso. Um valor verdadeiro e um valor falso conectados por AND resulta em falso, que é o resultado final da expressão.

Os operadores lógicos se relacionam da seguinte forma: ß Verdadeiro AND Verdadeiro = Verdadeiro

3.5. EXERCÍCIOS

  1. Escreva as expressões abaixo no formato utilizado em algoritmos:

a) 3 x

2 x 2 y +

b)

3

2

3 x 4 y

c) x 2 (^3 ) +

  1. Sabendo-se que A=10, B=3, X=2 e Y=1, quais os resultados fornecidos pelas expressões abaixo: a) X+Y-A + (A –B^2+Y) – 4X b) B^(2+X) – A/3 + c) (A –B^3 >X) OR (X – 3 =1) d) NOT (XY = B)

  2. Faça um algoritmo que leia os coeficientes a, b e c referentes a equação do segundo grau (ax^2 +bx+c) e exiba como resultado as raízes da equação.

  3. Faça um algoritmo que leia a base e a altura de um triângulo e calcule sua área.

  4. A potência de um motor pode ser expressa em cv ou kW. Sabe-se que 1kW = 0,736 cv. Faça um algoritmo que leia um valor de potência em cv e informe o valor de potência equivalente em kW.

  5. Faça um algorimo para transformar um valor de temperatura em ºF para ºC,

sabendo-se que: 9

(F 32 ) 5

C

− ×

4. VARIÁVEIS E CONSTANTES

4.1. VARIÁVEIS

Sabe-se que na matemática uma variável é a representação simbólica dos elementos de certo conjunto. Nos algoritmos, destinados a resolver um problema no computador, as variáveis são armazenadas na memória do computador e os valores associados a elas podem ser modificados ao longo da execução do programa. Embora uma variável possa assumir diferentes valores, ela só pode armazenar um único valor a cada instante. Toda variável é identificada por um nome e será capaz de armazenar valores de um mesmo tipo. São cinco os tipos básicos de dados que podem se utilizados: ß Inteiro : qualquer número inteiro negativo, nulo ou positivo (2, 4 ,0 ,-1). As principais operações válidas para este tipo de variáveis são: soma, subtração, multiplicação, DIV (divisão que não calcula a parte fracionária, por exemplo 5DIV2=2) e MOD (calcula o resto da divisão, por exemplo 5MOD2=1); ß Real : qualquer número real negativo, nulo ou positivo (2,5; 3,44; 12,3). As principais operações válidas para este tipo de variáveis são: adição, subtração, multiplicação e divisão. ß Caracter : quaisquer caracteres alfa-numéricos (‘a’,’C’, ‘2’, ‘L’, ‘d’). ß Cadeia de caracteres (String) : qualquer conjunto de caracteres alfa- numéricos (‘Ana’, ‘hoje’, ‘LOUCO’, ‘Tudo bem?’). As principais operações válidas para este tipo de variáveis são: concatenação e tamanho. Concatenar duas strings é fazer a união delas gerando uma única cadeia de caracteres. Por exemplo, a concatenação das strings ‘Nome:’ e ‘Ariosvaldo’ resultará na string ’Nome: Ariosvaldo’. Em potugol a concatenação é escrita da seguinte maneira: ‘Nome:’+ ‘Ariosvaldo’=’Nome: Ariosvaldo’. Avaliar o tamanho de uma string é verificar quantos caracteres ela possui. Por exemplo o tamanho da string ‘terra’ é 5. Em portugol escreve-se: Length (‘Terra) = 5. ß Lógico : variáveis que poderão assumir valores Verdadeiro ou Falso. As principais operações válidas para este tipo de variáveis são: AND, OR e NOT.

Toda variável deve ser declarada. Declarar uma variável significa criar um local na memória que será rotulado com o nome da variável. A variável deve ser declarada antes do início da execução do programa identificando-se seu nome e tipo.

Exemplo : Calcular o triplo de um número fornecido pelo usuário. Algoritmo TRIPLO; Var {indica que variáveis serão declaradas} Numero, Resultado: Real Início Ler (Numero) Resultado := Numero * 3 Escrever (Resultado) Fim

Nomes INVÁLIDOS para variáveis/constantes

Nomes VÁLIDOS para variáveis/constantes 2NOTA NOTA MEDIA SIMPLES MEDIASIMPLES % PORCENTO VARIAÇÃO VARIACAO

4.4. EXERCÍCIOS

  1. Identificar quais as variáveis e constantes foram utilizadas nos exercícios 3,4 e 5 do capítulo anterior dizendo o seu tipo.

  2. Assinale com um X as variáveis que apresentam nomes inválidos justificando sua resposta. Para todas as opções indique o tipo da variável. ( ) NOTA ( ) AH! ( ) km/h ( ) 5(8) ( ) a{b} ( ) SALA115 ( ) Xa3 ( ) “ABC”

  3. Para cada linha de comando abaixo dizer quais os tipos das variáveis e avaliar o resultado de acordo com os valores de entrada determinados. a) soma ← ( num1 MOD 2) * (num1 DIV 2) Considerar: num1 = 3, num1 = 16, num1 = 25

b) resultado ← (var1 OR var2) AND (var3) Considerar: var1, var2 e var3 = False; var1 e var3 = True e var2 = False var1 e var3 = False e var2 = True

c) completo ← nome + sobrenome Considerar: nome = ‘Genésio’ e sobrenome = ‘Silva’

d) valor ← (x / y) - 4/(y^2)x + x(y-1) Considerar: x = 2 e y = 4 ; x = 24 e y = 8; x = 6 e y = 4

5. ESTRUTURA CONDICIONAL (ANÁLISE DE CONDIÇÕES)

A estrutura condicional permite a escolha do grupo de ações e estruturas a ser executado quando determinadas condições, representadas por expressões lógicas são satisfeitas.

5.1. COMANDO SE No comando SE quando a condição avaliada é verdadeira uma determinada sequência de comandos é executada e quando a condição avaliada é falsa outra sequência de comandos é executada. A estrutura condicional SE pode ser simples ou composta. A sintaxe da estrutura condicional simples é : Se (condição) então (sequência de comandos) FimSe A sintaxe da estrutura condicional composta é: Se (condição) então (sequência de comandos A) Senão (sequência de comandos B) Ou Se (condição 1) então (sequência de comandos 1) Senão se (condição 2) então (sequência de comandos 2) ... Senão se (condição N) então (sequência de comandos N) Senão (sequência de comandos N+1)

O comando SE pode ser traduzido da seguinte maneira: Se o resultado da condição for verdadeiro execute a sequência de comandos 1 senão execute a sequência de comandos 2.

Exemplos : ß Como entrar em casa? Algoritmo EntrarNaCasa Pegar chave do portão no bolso SE (chave está no bolso) OR (chave está na bolsa) ENTÃO Abrir o portão SENÃO Desesperar-se, você está para fora por tempo indeterminado

ß Comparar dois números verificando qual deles é o maior. Algoritmo Comparacao var num1,num2: Real Inicio Ler (num1) Ler (num2) Se (num1 > num2) Então Escrever (‘O primeiro número é o maior’) Senão se (num1 < num2) Então Escrever (‘O segundo número é o maior’) Senão Escrever (‘Os números são iguais’) FimComparacao

6. ESTRUTURA DE REPETIÇÃO (ITERAÇÕES)

A estrutura de repetição permite que uma sequência de comandos seja executada repetidamente até que uma determinada condição de interrupção seja satisfeita.

6.1. COMANDO ENQUANTO O ENQUANTO é uma estrutura de repetição condicional, isto é, uma vez iniciada será executada até que a condição estipulada seja falsa. A sintaxe do comando ENQUANTO é mostrada a seguir.

ENQUANTO (condição) FAÇA (sequência de comandos) FimEnquanto

No caso da condição ser um contador, este deve ser incializado antes do início da estrutura e deve ser incrementado dentro dela.

Exemplo : Fazer um algoritmo que imprima na tela os números inteiros de 1 a

Algoritmo Imprime1a Var Contador:Inteiro Início Contador := 1 {Contador é iniciallizado} Enquanto (Contador<=100) Faça Escrever(Contador) Contador := Contador +1 {Contador é incrementado} FimEnquanto FimAlgoritmo

Quando o comando ENQUANTO é utilizado, pode acontecer de nenhuma iteração ser realizada. Isto ocorre, quando, a condição já é falsa na primeira vez que o comando é executado.

Exemplo : Fazer um algoritmo que permita ao usuário definir quantas vezes o número 10 será impresso na tela.

Algoritmo ImprimeNumero Var Contador, Quantidade :Inteiro Início Contador := - Escrever (‘Quantas vezes você deseja que o número 10 seja impresso na tela?’) Ler (Quantidade) Enquanto (Contador >= Quantidade) Faça Escrever(‘10’) Contador := Contador + FimEnquanto

FimAlgoritmo Neste exemplo se a quantidade informada pelo usuário dor zero nenhuma iteração será realizada.

6.2. COMANDO PARA

O PARA é uma estrutura de repetição incondicional, isto é, uma vez iniciada será executada quantas vezes estiver estipulada no intervalo determinado. A sintaxe do comando PARA é apresentada a seguir:

PARA Contador := ValorInicial ATÉ ValorFinal FAÇA Sequência de comandos FimPara

O comando PARA sempre utiliza uma variável inteira para representar o contador que deverá ser declarada pelo desenvolvedor do programa. Quando o comando PARA é utilizado, todas as iterações estipuladas no intervalo são feitas.

Exemplo : Fazer um algoritmo que imprima na tela os números inteiros de 1 a

Algoritmo Imprime1a Var Contador:Inteiro Início Para Contador := 1 até 100 Faça Escrever(Contador) FimPara FimAlgoritmo

6.3. COMANDO REPITA

O REPITA é uma estrutura de repetição condicional, isto é, uma vez iniciada será executada até que a condição estipulada seja falsa. Assim como acontece com o comando ENQUANTO, no caso da condição ser um contador, este deve ser incializado antes do início da estrutura e deve ser incrementado dentro da estrutura. A sintaxe do comando REPITA é apresentada a seguir.

REPITA Sequência de comandos ATÉ (condição)

Quando o comando REPITA é utilizado, pelo menos uma iteração é realizada. Isto ocorre, porque a condição só será avaliada no final da estrutura do comando.

7. EXERCÍCIOS DE REVISÃO

  1. Qual o valor de L após a execução do algoritmo abaixo?

Algoritmo Revisao Var X,Y,L: Real A,B,C: Lógico Inicio A:=Falso B:=Verdadeiro C:=Falso X:=1, Y:=3, X:=X+ SE C OR ((X+Y) > 5) OR (NOT A AND B)) ENTÃO L := 0 SENÃO L := 1 ESCREVER (L) FimAlgoritmo

  1. Fazer um algoritmo que calcule o fatorial de N, sendo que o valor inteiro N será fornecido pelo usuário. OBS.: N! = 1 × 2 × 3 × L ×(N− 1 )×N e 0! = 1

  2. Qual a diferença entre:

a) O comando PARA e o comando ENQUANTO

b) O comando ENQUANTO e o comando REPITA

c) O comando SE e o comando CASE

  1. Fazer um algoritmo que leia o número do CPF, o número de dependentes e a renda anual de um contribuinte e calcule o valor do seu imposto de renda. Haverá um desconto de R$ 600,00 por dependente e os valores da alíquota para o cálculo do imposto são: Renda líquida Alíquota Até R$ 2.000,00 Isento De R$ 2.001,00 até R$ 5.000,00 5% De R$ 5001,00 até 10.000,00 10% Acima de R$ 10.000,00 15%

Como resultados deverão ser impressos todos os dados de entrada, o valor do desconto e o valor do imposto.

  1. O que está errado no algoritmo abaixo? Algoritmo Revisao Var Inteiro: N, PAR, X Inicio Ler (N) X := MOD (N / 2) SE (X=0) ENTAO PAR := Verdadeiro SENÃO PAR := Falso FimAlgoritmo