apresentação 20130805 algoritmos

116
Informática, Algoritmos e Estruturas de Dados Ifes 1 Algoritmos Algoritmos “É a descrição, de forma lógica, de um conjunto finito de passos a serem executados no cumprimento de uma tarefa”. “É um processo de cálculo matemático ou de resolução de um grupo de problemas semelhantes”(MANZANO,2000). “São regras formais para obtenção de um resultado ou da solução de um problema englobando fórmulas de expressões aritméticas”. É a descrição de um padrão de comportamento, expressado em termos de um repertório bem definido e finito de ações “primitivas”, das quais damos por certo que elas podem ser executadas (Guimarães/ Lajes, 1994) É uma “receita de bolo”

Upload: joao-moreira

Post on 27-Jun-2015

831 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: Apresentação 20130805 algoritmos

Informática, Algoritmos e Estruturas de Dados Ifes 1

Algoritmos

Algoritmos

• “É a descrição, de forma lógica, de um conjunto finito de passos a serem executados no cumprimento de uma tarefa”.

• “É um processo de cálculo matemático ou de resolução de um grupo de problemas semelhantes”(MANZANO,2000).

• “São regras formais para obtenção de um resultado ou da solução de um problema englobando fórmulas de expressões aritméticas”.

• É a descrição de um padrão de comportamento, expressado em termos de um repertório bem definido e finito de ações “primitivas”, das quais damos por certo que elas podem ser executadas (Guimarães/ Lajes, 1994)

• É uma “receita de bolo”

Page 2: Apresentação 20130805 algoritmos

Informática, Algoritmos e Estruturas de Dados Ifes 2

Representação Lógica

Linguagem natural

Linguagem Algorítmica(expressão organizada, com sintaxe, mas foco na lógica e não na sintaxe)

Linguagem Formal (Programa)(expressão organizada, com sintaxe, codificada em uma linguagem não

familiar)

Page 3: Apresentação 20130805 algoritmos

Informática, Algoritmos e Estruturas de Dados Ifes 3

Exemplo de Algoritmo

Trocar lâmpada numa sala em que existe uma escada.

1. Posicione a escada debaixo da lâmpada queimada.

2. Suba na escada até que a lâmpada possa ser alcançada.

3. Gire a lâmpada queimada no sentido anti-horário até que se solte.

4. Escolha uma lâmpada nova de mesma potência da queimada.

5. Posicione a nova lâmpada no soquete.

6. Gire no sentido horário até que ela se firme.

7. Desça a escada.

Page 4: Apresentação 20130805 algoritmos

Informática, Algoritmos e Estruturas de Dados Ifes 4

Programa

• São algoritmos escritos em uma Liguagem de computador (ex.: Pascal, Java, C, Fortran, C#)

Page 5: Apresentação 20130805 algoritmos

Informática, Algoritmos e Estruturas de Dados Ifes 5

Representação Gráfica de Algoritmos

• Fluxograma: ferramenta gráfica para descrever ações lógicas. Descreve a seqüência de ações a serem desenvolvidas pelo computador

Page 6: Apresentação 20130805 algoritmos

Informática, Algoritmos e Estruturas de Dados Ifes 6

Algumas Simbologias Básicas

Terminal - indica o inicio ou fim do fluxo de um programa

Fluxo de dados - indica sentido do fluxo de dados

Processamento - operações e manipulação de dados

Entrada de dados ou operação manual (exemplo, entrada pelo teclado)

Saída de dados em tela

Decisão - uma decisão deve ser tomada e há possibilidade de desvios de fluxo

Conector - para conectar fluxos ou particionar um diagrama

Page 7: Apresentação 20130805 algoritmos

Informática, Algoritmos e Estruturas de Dados Ifes 7

Exemplo

Elaborar algoritmo que efetue o cálculo da área de uma circunferência

A <- 3.14159 * r ** 2

inicio

fim

A

r

Page 8: Apresentação 20130805 algoritmos

Informática, Algoritmos e Estruturas de Dados Ifes 8

Tipos de Dados e Instruções

O Computador manipula dois tipos de informação:

• Dados - informações que serão armazenadas a fim de serem processadas

• Instruções - comandos que serão decodificados pelo computador e realizarão operações

Page 9: Apresentação 20130805 algoritmos

Informática, Algoritmos e Estruturas de Dados Ifes 9

Alguns tipos de Dados

• Inteiros: valores numéricos pertencentes ao conjunto de números inteiros, positivos ou negativos

• Reais: valores numéricos pertencentes ao conjunto dos números reais

• Caracteres: as letras, números e símbolos. É representado entre aspas simples(Ex: ‘$’, ‘8’, ‘a’).

• Texto: conjunto de caracteres agrupados. São representados entre aspas (Ex. “R$123,00”, “hoje”)

• Lógicos (Booleano): verdadeiro (1) ou falso (0)

Page 10: Apresentação 20130805 algoritmos

Informática, Algoritmos e Estruturas de Dados Ifes 10

Variáveis

• Podemos dizer que variável é a identificação de um dado armazenado no computador

5,0

78,5

r

A

memória do computador

Page 11: Apresentação 20130805 algoritmos

Informática, Algoritmos e Estruturas de Dados Ifes 11

Regras para nomes de variáveis

• 1 ou mais caracteres

• 1o caractere deverá ser letra

• sem espaços em branco entre as letras

• só letras e números

• clareza nos nomes

Ex.: raio, nome, primeiraParte, x1

Page 12: Apresentação 20130805 algoritmos

Informática, Algoritmos e Estruturas de Dados Ifes 12

Operadores Aritméticos

<- atribuição

+ soma

- subtração

* multiplicação

** exponenciação

/ divisão

mod resto. Ex. 11 mod 3 . Resultado: 2

div divisão inteira 11 div 3. Resultado 3

ex.: raiz da equação de segundo grau:

x <- (-b + (b**2 -4*a*c)**(1/2))/(2*a)

Page 13: Apresentação 20130805 algoritmos

Informática, Algoritmos e Estruturas de Dados Ifes 13

Resolução de Problemas por meio dos

Computadores

Dados de Entrada

Dados de Saída

Processamento

Problema Computacional

Page 14: Apresentação 20130805 algoritmos

Informática, Algoritmos e Estruturas de Dados Ifes 14

Etapas para a solução de um problema

Computacional

• Ler e entender bem

• Levantar as entradas e saídas

• Definir quais serão as variáveis necessárias (incluindo o tipo)

• Especificar como o problema pode ser resolvido (rascunho do algoritmo)

• Testar

Page 15: Apresentação 20130805 algoritmos

Informática, Algoritmos e Estruturas de Dados Ifes 15

Exemplo de Problema

Elaborar algoritmo que efetue o cálculo da área de uma circunferência

Entradas: raio, Saídas: área

Variáveis: r (raio), A (área)

Algoritmo: Obter o valor do raio

Executar a fórmula: A <- 3.14159 * R ** 2

Apresentar o valor de A

Page 16: Apresentação 20130805 algoritmos

Informática, Algoritmos e Estruturas de Dados Ifes 16

Exemplo de Problema (cont.)

• Português estruturado (Portugol):var

A, r: real

const

Pi=3.14159

inicio

leia (r)

A <- Pi * r ** 2

escreva (A)

fim

Page 17: Apresentação 20130805 algoritmos

Informática, Algoritmos e Estruturas de Dados Ifes 17

Exemplo: Algoritmo para calcular a média de alunos programa CalculaMedia

var

N1, N2, N3, N4: real

SOMA, MEDIA: real

inicio

leia (N1, N2, N3, N4)

SOMA <- N1+N2+N3+N4

MEDIA <- SOMA/4

escreva (“NOTA 1”, N1)

escreva (“NOTA 2”, N2)

escreva (“NOTA 3”, N3)

escreva (“NOTA 4”, N4)

escreva (“Média”, MEDIA)

fim

Page 18: Apresentação 20130805 algoritmos

Informática, Algoritmos e Estruturas de Dados Ifes 18

Exemplo sala - listageral número 3 - fluxograma e algoritmo

Exercício sala - listageral número 8 - fluxograma e algoritmo

Page 19: Apresentação 20130805 algoritmos

Informática, Algoritmos e Estruturas de Dados Ifes 19

Estrutura de tomada de decisões

Desvio condicional Simples

É utilizada a instrução se...entao...fimse. Se a condição estabelecida for verdadeira, serão executadas as instruções que se encontram entre se...entao e fimse.

se condição entao

aiaiaiaiaia

fimse aiaiaiaiaia

condiçãoV

F

Page 20: Apresentação 20130805 algoritmos

Informática, Algoritmos e Estruturas de Dados Ifes 20

Operadores Relacionais e Lógicos

Relacionais

< menor

> maior

<= menor ou igual

>= maior ou igual

<> diferente

Lógicos

E, OU e NÃO

Page 21: Apresentação 20130805 algoritmos

Informática, Algoritmos e Estruturas de Dados Ifes 21

Exemplo: Algoritmo para calcular a média de alunos e informe se o mesmo foi aprovado ou reprovado, dado que a MEDIA para aprovação é 7

programa aprovado

var

RESULTADO: caractere

N1, N2, N3, N4: real

SOMA, MEDIA: real

inicio

leia (N1, N2, N3, N4)

SOMA <- N1+N2+N3+N4

MEDIA <- SOMA/4

se (MEDIA >= 7) entao

resultado<-“aprovado”

fimse

se (MEDIA < 7) entao

resultado<- “reprovado”

fimse

escreva(“O resultado foi: ”, resultado)

fim

Page 22: Apresentação 20130805 algoritmos

Informática, Algoritmos e Estruturas de Dados Ifes 22

Exemplo: Algoritmo para verificar se um triãngulo é isosceles

programa triangulo

var

lado1, lado2, lado3: real

inicio

leia (lado1, lado2, lado3)

se (lado1=lado2) E (lado1<>lado3) entao

escreva (“é isosceles”)

fimse

se (lado1=lado3) E (lado1<>lado2) entao

escreva (“é isosceles”)

fimse

se (lado2=lado3) E (lado2<>lado1) entao

escreva (“é isosceles”)

fimse

fim

Page 23: Apresentação 20130805 algoritmos

Informática, Algoritmos e Estruturas de Dados Ifes 23

Exercício sala - listageral número 17 - fluxograma e algoritmo

Page 24: Apresentação 20130805 algoritmos

Informática, Algoritmos e Estruturas de Dados Ifes 24

Estrutura de tomada de decisões (cont.)

Desvio condicional Composto

É utilizada a instrução se...entao...senão...fimse. Se a condição estabelecida for verdadeira, serão executadas as instruções que se encontram entre se...entao e senão e se a condição for falsa serão executadas as instruções entre senão e fimse.

se condição entao

aiaiaiaiaia (condição verdadeira)

senão

ioioioioioio (condição falsa)

fimse

aiaiaiaiaia

condiçãoV

F

ioioioioioio

Page 25: Apresentação 20130805 algoritmos

Informática, Algoritmos e Estruturas de Dados Ifes 25

Exemplo: Algoritmo para calcular a média de alunos e informe se o mesmo foi aprovado ou reprovado, dado que a MEDIA para aprovação é 7

programa aprovado

var

RESULTADO: caractere

N1, N2, N3, N4: real

SOMA, MEDIA: real

inicio

leia (N1, N2, N3, N4)

SOMA <- N1+N2+N3+N4

MEDIA <- SOMA/4

se (MEDIA >= 7) entao

resultado<-“aprovado”

senão

resultado<- “reprovado”

fimse

escreva(“O resultado foi: ”, resultado)

fim

Page 26: Apresentação 20130805 algoritmos

Informática, Algoritmos e Estruturas de Dados Ifes 26

Exercício sala - listageral número 15 - algoritmo

Exercício casa - listageral números 13

Page 27: Apresentação 20130805 algoritmos

Informática, Algoritmos e Estruturas de Dados Ifes 27

Estrutura de tomada de decisões (cont.)

Desvios condicionais EncadeadosHá casos em que condições lógicas devem ser devinidas sucessivamente, e

assim uma determinada condição só poderá ser testada se condições anteriores forem satisfeitas.

se condição1 entao

aiaiaiaiaia (condição verdadeira)

senão

se condição2 entao

oioioioioio (condição2 verdadeira)

fimse

fimse

Page 28: Apresentação 20130805 algoritmos

Informática, Algoritmos e Estruturas de Dados Ifes 28

aiaiaiaiaia

condiçãoV

F

oioioioioiocondiçãoV

F

Page 29: Apresentação 20130805 algoritmos

Informática, Algoritmos e Estruturas de Dados Ifes 29

Exemplo: Algoritmo para calcular o reajuste do salário de um funcionário.

a) salário < 500 - reajuste de 15%

b) salário >= 500, mas <=1000 – resjuste de 10%

c) salário >1000 – resjuste de 5%

Page 30: Apresentação 20130805 algoritmos

Informática, Algoritmos e Estruturas de Dados Ifes 30

salario<500

F

salario<-salario*1.15salario<=1000

V

F

inicio

salario

salario<-salario*1.05

salario<-salario*1.10

V

fim

salario

Page 31: Apresentação 20130805 algoritmos

Informática, Algoritmos e Estruturas de Dados Ifes 31

programa salario

var

salario: real

inicio

leia (salario)

se (salario<500) entao

salario<-salario*1.15

senão

se (salario<=1000) entao

salario<-salario*1.15

senão

salario<-salario*1.05

fimse

fimse

escreva(“O novo salario é: ”, salario)

fim

Page 32: Apresentação 20130805 algoritmos

Informática, Algoritmos e Estruturas de Dados Ifes 32

Exemplo sala - Elaborar algoritmo: de 02 valores fornecidos informe qual é o maior deles

Exercícios sala –1) De um valor fornecido informar se o mesmo é divísível por 02

ou por 03 2) Crie uma nova versão do algoritmo anterior, infomando se o

valor fornecido é divisível por 02, por 03 ou por 02 e por 033) Ler o nome e o sexo de uma pessoa e se o sexo for masculino

escrever “Ilmo Sr. nome” (onde “nome” é o nome fornecido) ou caso o sexo seja feminino escrever “Ilma Sra. nome” (onde “nome” é o nome fornecido)

4) Elaborar um algoritmo que de 03 valores fornecidos informe qual é o maior deles

Exercícios casa listageral 14, 17, 21 e 22- algoritmo

Page 33: Apresentação 20130805 algoritmos

Informática, Algoritmos e Estruturas de Dados Ifes 33

Laços ou malhas de repetição

Há situações em que é necessário repetir o trecho de um programa um determinado número de vezes. Neste caso cria-se um laço que faz um trecho de processamento tantas vezes quantas necessárias

Exemplo: Elabore um algoritmo que conte os votos S ou N para 03 votantes

Page 34: Apresentação 20130805 algoritmos

Informática, Algoritmos e Estruturas de Dados Ifes 34

programa votação

var

voto: caractere

contaS, contaN, : inteiro

inicio

contaS<-0

contaN<-0

leia (voto)

se (voto= “S”) entao

contaS <- contaS +1

senão

se (voto= “N”) entao

contaN <- contaN+1

fimse

fimse

leia (voto)

se (voto= “S”) entao

contaS <- contaS +1

senão

se (voto= “N”) entao

contaN <- contaN+1

fimse

fimse

leia (voto)

se (voto= “S”) entao

contaS <- contaS +1

senão

se (voto= “N”) entao

contaN <- contaN+1

fimse

fimse

escreva(“A contagem de votos S foi ”, contaS,” e a contagem de N foi ”, contaN)

fim

Page 35: Apresentação 20130805 algoritmos

Informática, Algoritmos e Estruturas de Dados Ifes 35

Repetição: teste lógico no inicio do laço

enquanto...faça...fimenquanto: é realizado um teste no inicio do laço em que se verifica se o trecho de instruções internas ao laço (entre faça e fimenquanto) deverá ser executado ou não.

aiaiaiaiaia

condição

V

F

Enquanto condição faca

aiaiaiaiaia

oioioioioio

fimenquantooioioioioio

Page 36: Apresentação 20130805 algoritmos

Informática, Algoritmos e Estruturas de Dados Ifes 36

cont<=5F

inicio

x

V

pot

pot<- pot*x

cont<-cont+1

Exemplo: Elabore um algoritmo que calcule a x ** 5 utilizando repetições

cont<-1pot<-1

fim

programa ``

var

x, pot: real

cont: inteiro

inicio

cont<-1

pot<-1

leia(x)

enquanto cont <= 5 faca

pot <- pot*x

cont<- cont+1

fimenquanto

escreva(x,”**5=”,pot)

fim

Page 37: Apresentação 20130805 algoritmos

Informática, Algoritmos e Estruturas de Dados Ifes 37

cont<=3F

V

F

inicio

voto

V

fim

contaS, contaN

cont<-1contaS<-0contaN<-0

contaS<-contaS+1

Voto=”S” voto=“N”

contaN<-contaN+1

cont<-cont+1

F

1

1

Exemplo: Elabore um algoritmo que conte os votos S ou N ou entre 03 votantes

V

Page 38: Apresentação 20130805 algoritmos

Informática, Algoritmos e Estruturas de Dados Ifes 38

programa votação

var

voto: caractere

contaS, contaN, : inteiro

inicio

contaS<-0

contaN<-0

cont<-1

enquanto cont <= 3 faca

leia (voto)

se (voto= “S”) entao

contaS <- contaS +1

senão

se (voto= “N”) entao

contaN <- contaN+1

fimse

fimse

cont<-cont+1

fimenquanto

escreva(“A contagem de votos S foi ”, contaS,” e a

contagem de N foi ”, contaN)

fim12

Page 39: Apresentação 20130805 algoritmos

Informática, Algoritmos e Estruturas de Dados Ifes 39

Exemplo de laço controlado pelo usuárioElabore um algoritmo que conte os votos S ou N ou para votantes e pare quando uma pessoa digite x

programa votação

var

voto: caractere

cont, contaS, contaN, : inteiro

inicio

contaS<-0

contaN<-0

leia (voto)

enquanto (voto<>”x”) e (voto<>”X”) faca

se (voto= “S”) entao

contaS <- contaS +1

senão

se (voto= “N”) entao

contaN <- contaN+1

fimse

fimse

leia (voto)

fimenquanto

escreva(“A contagem de votos S foi ”, contaS,” e a

contagem de N foi ”, contaN)

fim

Page 40: Apresentação 20130805 algoritmos

Informática, Algoritmos e Estruturas de Dados Ifes 40

Exercícios da seção: Algoritmos com repetição

Exercícios sala

1) Somar todos os números inteiros de 10 a 100

2) Calcular os quadrados dos números inteiros de 15 a 200

3) Apresentar a tabuada de um número n fornecido: n*1 a n*10

4) Informar se um número inteiro fornecido é divisível por 3. Repetir até que seja fornecido o número zero

Exercícios casa

1) Apresentar as potencias de um número x, para os expoentes de 4 a 8

2) Informar quais os números inteiros entre 100 e 200 que são divisíveis por 7

3) Leia repetidamente os números inteiros fornecidos até que seja fornecido um número negativo. O algoritmo deverá informar qual é o menor número. O número negativo não deverá ser considerado.

listageral 06, 03, 01, 02, 07, 08

Page 41: Apresentação 20130805 algoritmos

Informática, Algoritmos e Estruturas de Dados Ifes 41

Repetição com variável de controle

para...de...até...passo...faça...fimpara: quando laços devem ser executados apenas um determinado número de vezes pode ser utilizada a estrutura para...de...até...passo...faça...fimpara . Os comandos que ficam entre para...de...até...passo...faça e fimpara são executados o número de vezes determinado por uma variável contador.

aiaiaiaiaia

cont<-inicio, fim, incremento para cont de inicio até fim passo incremento faca

aiaiaiaiaia

oioioioioio

fimparaoioioioioio

Page 42: Apresentação 20130805 algoritmos

Informática, Algoritmos e Estruturas de Dados Ifes 42

cont<-1,5,1

inicio

x

R

R <- x * 3

Exemplo: Forneça um valor, multiplique por 3 e apresente o resultado. Repita a operação por cinco vezes.

fim

programa produto

var

x, R: real

cont: inteiro

inicio

para cont de 1 até 5 passo 1 faca

leia(x)

R <- x * 3

escreva(x,”*3=”,R)

fimpara

fim

Cont<-1,5

ou

Page 43: Apresentação 20130805 algoritmos

Informática, Algoritmos e Estruturas de Dados Ifes 43

Exercícios da seção: Algoritmos com repetição

Exemplo:

Calcular o quadrado dos números de 15 a 200

Calcular o quadrado dos números que forem múltiplos de 5 que

se encontram entre de 15 a 200

Exercícios: faça com para...

listageral 06, 03, 07, 10, 13a

Page 44: Apresentação 20130805 algoritmos

Informática, Algoritmos e Estruturas de Dados Ifes 44

Exercícios da seção: Algoritmos com repetição

22. Escreva um algoritmo que leia 50 valores e encontre o maior e o menor deles. Mostre o resultado.

26. Escrever um algoritmo que leia uma quantidade desconhecida de números e conte quantos deles estão nos seguintes intervalos: [0.25], [26,50], [51,75] e [76,100]. A entrada de dados deve terminar quando for lido um número negativo.

15. Fulano tem 1,50m e cresce 2 cm por ano, enquanto Ciclano tem 1,10m e cresce 3 centímetros por ano, e Beltrano tem 1,90m e não cresce mais. Construa um algoritmo em portugol que calcule e imprima quantos anos serão necessários para que Ciclano seja o maior dos três.

Page 45: Apresentação 20130805 algoritmos

Informática, Algoritmos e Estruturas de Dados Ifes 45

Exercícios da seção: Algoritmos com repetição

1. Faça um algoritmo que, para cada valor inteiro positivo m fornecido, informe se o número é primo. O algoritmo deverá parar quando for fornecido um valor negativo.

2. Faça um algoritmo que, para cada par de valores inteiros positivos m e n fornecidos, apresente todos os valores entre m e n inclusive. O algoritmo deverá parar quando for fornecido um valor negativo.

3. Para o algoritmo anterior, além do que o mesmo já faz, deverá informar para cada valor da faixa de valores entre m e n, se cada um deles é primo.

Casa: ListaGeral 17 e 18

Page 46: Apresentação 20130805 algoritmos

Informática, Algoritmos e Estruturas de Dados Ifes 46

Estruturas de Dados - Vetor

Vetor ou Matriz unidimensional: Uma variável é dimensionada com um tamanho e armazena várias informações (tantas quantas for o tamanho) de um mesmo tipo. A dimensão é um número inteiro e positivo.

Exemplo:

As notas de um aluno:

Antes: 4 variáveis: Nota1, Nota2, Nota3, Nota4

Agora: 1 variável:

Nota: vetor [1..4] de real

Nota[1], Nota[2], Nota[3], Nota[4],

5,0[1]

Nota8,0

3,5

10

[2]

[3]

[4]

Page 47: Apresentação 20130805 algoritmos

Informática, Algoritmos e Estruturas de Dados Ifes 47

I <-1,8

inicio

Nota[i]

Media <- Soma / 8

Soma <- Soma + Nota[i]

Exemplo: Elabore um algoritmo que calcule e apresente a média das oito notas (fornecidas) de um aluno.

fim

programa média

var

Nota: vetor [1..8] de real

i: inteiro

Media, Soma: real

inicio

Soma<-0

para i de 1 até 8 faca

leia(Nota[i])

Soma<-Soma + Nota[i]

fimpara

Media <- Soma/8

escreva (Media)

fim

Media

Soma <- 0

Page 48: Apresentação 20130805 algoritmos

Informática, Algoritmos e Estruturas de Dados Ifes 48

I <-1,8

inicio

Nota[i]

Media <- Soma / 8

Soma <- Soma + Nota[i]

Exemplo: Elabore um algoritmo que calcule a média das oito notas (fornecidas) de um aluno. Apresente a média e em seguida as oito notas.

fim

Media

1

1

I <-1,8

Nota[i]

Soma <- 0

programa média

var

Nota: vetor [1..8] de real

i: inteiro

Media, Soma: real

inicio

para i de 1 até 8 faca

leia(Nota[i])

Soma<-Soma + Nota[i]

fimpara

Media <- Soma/8

escreva (Media)

para i de 1 até 8 faca

escreva (Nota[i])

fimpara

fim

Page 49: Apresentação 20130805 algoritmos

Informática, Algoritmos e Estruturas de Dados Ifes 49

Exercícios da seção: Vetores e Matrizes

Exercícios sala

1) Faça um algoritmo que leia 50 idades e verifique qual a maior delas.

Exemplo sala

2) Faça um algoritmo que leia 50 idades e apenas após ler todas as idades verifique qual a maior delas.

Exercícios sala

Lista ExerciciosVetores: 6, 9

3) Faça um algoritmo que leia 10 números e apresente os números em ordem crescente

Exercícios casa:

Lista ExerciciosVetores: 2, 3, 5, 10, 14

Page 50: Apresentação 20130805 algoritmos

Informática, Algoritmos e Estruturas de Dados Ifes 50

Elabore um algoritmo que:

leia um conjunto de códigos (valores inteiros positivos) e preços de produtos para um máximo 10 tipos de produtos. A entrada das informações deverá ser interrompida ao décimo produto. Após a entrada de pares códigos e preços um comprador informará quantas unidades deseja adquirir de um conjunto de produtos com respectivo código. O algoritmo deverá informar o preço da quantidade informada ou, caso o código não seja encontrado na lista ele deverá informar “Produto” código_informado “não encontrado”. O algoritmo deverá ainda acumular os valores dos produtos adquiridos e apresentar o total na tela. A compra será finalizada quando for apresentado um códido de produto negativo.

Page 51: Apresentação 20130805 algoritmos

Informática, Algoritmos e Estruturas de Dados Ifes 51

Supermercado:

Cadastro: Faça um algoritmo para cadastrar nome (caractere), códigos de produtos (inteiro), quantidade em estoque (inteiro) e preços unitários (com centavos) para até 10 produtos. O algoritmo deverá parar de ler os códigos e preços quando for fornecido um código com valor 0 ou quando atingir 10 produtos.

Venda: O algoritmo deverá ler código e quantidade de diversos produtos repetidamente. A quantidade informada deverá ser abatida da quantidade em estoque e a quantidade em estoque deverá ser atualizada. Deverá ser apresentado para cada um dos produtos o código, o nome e o preço devido àquele produto, considerando a quantidade vendida e disponível em estoque. Caso o código não seja encontrado ou não houver quantidade disponível do produto ele deverá informar “Produto” código_informado “não encontrado ou estoque insuficiente”. O final da venda acontecerá quando for digitado um código 0 (zero). Apenas ao final deverá ser apresentado o total geral da venda.

Inventário: O algoritmo deverá ordenar os produtos em estoque por código, mantendo os nomes, quantidades e preços com seus códigos correspondentes. Após a ordenação os códigos, nomes, quantidades disponíveis e preços deverão ser apresentados na tela.

Page 52: Apresentação 20130805 algoritmos

Informática, Algoritmos e Estruturas de Dados Ifes 52

Elabore um algoritmo que:

leia o número do título de eleitor de cada votante e o código do candidato votado e grave essas informações. O algoritmo deverá parar de ler os códigos dos votos quando for fornecido um voto com valor 0 ou quando atingir 1000 votantes. Escreva após a votação (apenas após a votação), dentre os votantes:

• a porcentagem de votos para cada candidato;

• a porcentagem de votos nulos;

• a porcentagem de votos em branco.

• após a votação, ordene os títulos de eleitor fornecidos mantendo os votos com seus títulos correspondentes. Apenas as posições preenchidas deverão ser ordenadas.

• após a ordenação, leia o número do título de eleitor de um votante e informe qual foi o voto do mesmo. Apenas as posições preenchidas deverão ser verificadas.

Page 53: Apresentação 20130805 algoritmos

Informática, Algoritmos e Estruturas de Dados Ifes 53

Algoritmos de pesquisa• Define-se pesquisa como a operação que permite encontrar ou

concluir que não existe, um dado elemento num dado conjunto.

• A pesquisa de um elemento pode ser feita num conjunto ordenado ou não.

• Quando o conjunto não está ordenado, o método usado é o exaustivo, que consiste em percorrer sequencialmente todo o conjunto (desde o primeiro) até se encontrar o elemento desejado ou, não o encontrando, se concluir que não existe.

• Quando o conjunto está ordenado, existem vários métodos, como a pesquisa sequencial e binária.

• Nos exemplos seguintes, considera-se que a ordenação é crescente.

Page 54: Apresentação 20130805 algoritmos

Informática, Algoritmos e Estruturas de Dados Ifes 54

Pesquisa exaustiva (algoritmo)Pesquisar o elemento Elem no vetor V de tamanho tam

k <- -1 // significa que Elem não foi encontrado em V

i <- 1

Enquanto (i <= tam) e (k = -1) faca

Se (V[i] = Elem) entao

k <- i

senao

i <- i + 1

Fimse

fimenquanto

Se (k = -1) entao

Escreval (“Elem não se encontra em V”)

senao

Escreval (“ Elem encontra-se na posição ”, k)

fimse

Page 55: Apresentação 20130805 algoritmos

Informática, Algoritmos e Estruturas de Dados Ifes 55

Pesquisa sequencial (algoritmo)Pesquisar o elemento Elem no vetor V de tamanho tamk <- -1 // significa que Elem ainda não foi encontrado em V

i <- 1 // índice dos elementos do vetor V

Enquanto (i <= tam) e (k = -1) faca

Se (V[i] = Elem) entao

k <- i

senao

Se (V[i] < Elem) entao

i <- i + 1

senao

k <- -2; // significa que Elem não está em V

fimse

fimse

fimenquanto

Se (k > 0) então

Escreval (“Elem encontra-se na posição “, k)

senao

Escreval (“Elem não se encontra em V “)

fimse

Page 56: Apresentação 20130805 algoritmos

Informática, Algoritmos e Estruturas de Dados Ifes 56

Pesquisa binária

• Comparar o elemento a pesquisar com o elemento que está no meio do vetor e analisar 3 situações diferentes:

1ª) se aquele elemento é igual ao que está ao meio,

2ª) se aquele elemento está antes do meio,

3ª) se aquele elemento está depois do meio.

• Se ocorreu a 1ª situação, então foi encontrado o elemento e está no vetor naquela posição.

• Se ocorreu a 2ª situação, então basta pesquisar aquele elemento no subvetor até ao meio.

• Se ocorreu a 3ª situação, então basta pesquisar aquele elemento no subvetor do meio para a frente

Page 57: Apresentação 20130805 algoritmos

Informática, Algoritmos e Estruturas de Dados Ifes 57

Pesquisa binária (algoritmo iterativo)Pesquisar o elemento Elem no vetor V de tamanho taminicio <- 1

fim <- tam

k <-1 // k recebe a posicao de Elem (no inicio presume-se que nao esta)

Enquanto ( (inicio <= fim) e (k = -1) ) faca

meio <- (inicio + fim) / 2

Se (Elem = V[meio]) entao

k <- meio

senao

Se (Elem < V[meio]) entao

fim <- meio - 1

senao

inicio <- meio + 1

fimse

fimse

fimenquanto

Se (k >= 1) entao

Escreval (“Elem encontra-se em V na posicao “, k)

senao

Escreval (“ Elem nao se encontra em V “)

fimse

Page 58: Apresentação 20130805 algoritmos

Informática, Algoritmos e Estruturas de Dados Ifes 58

Pesquisa binária

Page 59: Apresentação 20130805 algoritmos

Informática, Algoritmos e Estruturas de Dados Ifes 59

Pesquisa Binária

Page 60: Apresentação 20130805 algoritmos

Informática, Algoritmos e Estruturas de Dados Ifes 60

Pesquisa Binária

Page 61: Apresentação 20130805 algoritmos

Informática, Algoritmos e Estruturas de Dados Ifes 61

Pesquisa Binária

Page 62: Apresentação 20130805 algoritmos

Informática, Algoritmos e Estruturas de Dados Ifes 62

Pesquisa Binária

Page 63: Apresentação 20130805 algoritmos

Informática, Algoritmos e Estruturas de Dados Ifes 63

Pesquisa Binária

Page 64: Apresentação 20130805 algoritmos

Informática, Algoritmos e Estruturas de Dados Ifes 64

Pesquisa Binária

Page 65: Apresentação 20130805 algoritmos

Informática, Algoritmos e Estruturas de Dados Ifes 65

Pesquisa Binária

Page 66: Apresentação 20130805 algoritmos

Informática, Algoritmos e Estruturas de Dados Ifes 66

Pesquisa Binária

Page 67: Apresentação 20130805 algoritmos

Informática, Algoritmos e Estruturas de Dados Ifes 67

Pesquisa Binária

Page 68: Apresentação 20130805 algoritmos

Informática, Algoritmos e Estruturas de Dados Ifes 68

Pesquisa Binária

Page 69: Apresentação 20130805 algoritmos

Informática, Algoritmos e Estruturas de Dados Ifes 69

Pesquisa Binária

Page 70: Apresentação 20130805 algoritmos

Informática, Algoritmos e Estruturas de Dados Ifes 70

Pesquisa Binária

Page 71: Apresentação 20130805 algoritmos

Informática, Algoritmos e Estruturas de Dados Ifes 71

Exercício Aula

• Ler um vetor de 50 elementos inteiros positivos não repetidos, e ordená-lo em ordem crescente escrevendo o seu conteúdo na tela (posição e valor). A seguir, ler uma outra sequência de números inteiros positivos, escrevendo a cada número lido*:

1. Caso o número lido exista no vetor, escreva o valor pesquisado e a posição em que o mesmo foi encontrado no vetor, usando pesquisa binária;

2. Caso o número não exista no vetor, escreva a posição do vetor cujo conteúdo está mais próximo ao número pesquisado , usando pesquisa binária;

* Terminar a leitura quando for lido o valor -1.

Page 72: Apresentação 20130805 algoritmos

Informática, Algoritmos e Estruturas de Dados Ifes 72

Exercício Casa

• Ler um vetor de 50 elementos inteiros positivos, ordená-lo em ordem crescente, escrevendo o seu conteúdo na tela (posição e valor). A seguir, ler uma outra sequência de números inteiros positivos, escrevendo a cada número lido*:

1. Caso o número lido exista no vetor, escreva o valor pesquisado e as posições em que o mesmo foi encontrado no vetor, usando pesquisa sequencial;

2. Caso o número lido exista no vetor, escreva o valor pesquisado e as posições em que o mesmo foi encontrado no vetor, usando pesquisa binária;

3. Caso o número não exista no vetor, escreva a posição do vetor cujo conteúdo está mais próximo ao número pesquisado, usando pesquisa binária;

* Terminar a leitura quando for lido o valor -1.

Page 73: Apresentação 20130805 algoritmos

Informática, Algoritmos e Estruturas de Dados Ifes 73

Estruturas de Dados - Matriz

Matriz: Informações de um mesmo tipo são armazenados em uma variável com estrutura de várias dimensões (normalmente até três). As dimensões são números inteiros e positivos.

Matrizes de uma dimensão são normalmente chamados de vetor e matrizes de duas dimensões são normalmente chamados de tabela.

Unidimensionais (vetor): y: vetor [1..10] de caractere

Bidimensionais (tabela): m = matriz [ 1..3,1..4] de real; (visualG: vetor[ 1..3,1..4] de real)

Tridimensionais: n = matriz [ 1..2,1..3,1..5] de inteiro; (visualG não implementa)

Page 74: Apresentação 20130805 algoritmos

Informática, Algoritmos e Estruturas de Dados Ifes 74

5,0 4,3 3,5

9,4 4,0 0,3

8,0 16 5,2

6,7 9,1 3,7

[1]

[2]

[3]

[4]

[1] [2] [3]

[linha,coluna]

[1,1] = 5,0

[1,2] = 4,3

[1,3] = 3,5

[2,1] = 9,4

.

.

[4,1] = 6,7

[4,2] = 9,1

[4,3] = 3,7

Page 75: Apresentação 20130805 algoritmos

Informática, Algoritmos e Estruturas de Dados Ifes 75

Ex.: Faça um algoritmo que leia uma matriz 4 X 4 e uma constante qualquer. Multiplique os elementos da diagonal principal por esta constante e imprima a matriz resultante;

programa média

var

mat: matriz [1..4, 1..4] de real

valor: real

i,j: inteiro

inicio

para i de 1 até 4 faca

para j de 1 até 4 faca

leia(mat[i,j])

fimpara

fimpara

escreva(“entre o valor da constante”)

leia (valor)

para i de 1 até 4 faca

mat[i,i]<-mat[i,i]*valor

fim para

para i de 1 até 4 faca

para j de 1 até 4 faca

escreva (i,”,”,j,”=”, “mat[i,j])

fimpara

fimpara

fim

Page 76: Apresentação 20130805 algoritmos

Informática, Algoritmos e Estruturas de Dados Ifes 76

Exercícios matrizes

2) Faça um algoritmo que leia 2 matrizes 3 X 5, calcule e imprima a soma das duas;

3) Faça um algoritmo que leia uma matriz 3 X 4 e imprima sua transposta;

8) Faça um algoritmo que leia 5 notas dadas a cada aluno durante o período letivo em uma turma de 30 alunos. Calcule a media de cada aluno, a media geral da turma e imprima de acordo com o seguinte layout:

Núm. Média Aluno Media Turma

1 x,xx x,xx

2 x,xx x,xx

..... ...... ......

Page 77: Apresentação 20130805 algoritmos

Informática, Algoritmos e Estruturas de Dados Ifes 77

Uma matriz quadrada inteira é chamada de "quadrado mágico" se a soma dos elementos de cada linha, a soma dos elementos de cada coluna e a soma dos elementos das diagonais principal e secundária são todos iguais. Exemplo: A matriz abaixo representa um quadrado mágico:

8 0 7

4 5 6

3 10 2

Faça um algoritmo em que um usuário fornece valores para as posições de uma matriz de 3 linhas e 3 colunas e o algoritmo verifica se a matriz representa um quadrado mágico.

Page 78: Apresentação 20130805 algoritmos

Informática, Algoritmos e Estruturas de Dados Ifes 78

JOGO DA VELHA. Uma dada matriz 3 x 3 de caracter pode conter apenas 3 valores em cada uma de suas posições: “ “ (espaço), X (x maiúsculo) e O (o maiúsculo). Há dois usuários, usuário 1 para o X e usuário 2 para o O.

Parte 1) Faça um algoritmo que os usuários fornecem posições i e j e lances X ou O, preenchendo a posição com o lance (X ou O) e permitindo apenas a entrada dos valores válidos em cada posição. A matriz deverá ser inicializada com “ “ em todas as posições;

Parte 2) O algoritmo deverá verificar, a cada valor fornecido o fechamento de uma coluna, linha ou diagornal apenas por X ou por O. Caso isso aconteça o algoritmo deverá ser encerrado e deverá informar “O vencedor foi” X (ou O).

Parte 3) O algoritmo de deverá permitir a inserção dos nomes dos jogadores jogador1 (X) e jogador 2 (O). Cada jogador deverá ter a sua vez de jogar e em caso de vitória de um dos dois deverá ser informada a letra vitoriosa (X ou O) e o nome do jogador vitorioso.

leia (l, c, lance)enquanto (l<1 ou l>3) ou (c<1 ou c>3) ou ((lance<>”x”) e (lance<>”o”))

leia (l, c, lance)fimenquanto

Page 79: Apresentação 20130805 algoritmos

Informática, Algoritmos e Estruturas de Dados Ifes 79

Exercícios de revisão(Condição)Um fazendeiro vai contratar uma equipe de trabalhadores para a colheita de

laranjas de sua fazenda. Os trabalhadores serão identificados por um número e pela sua idade. O fazendeiro pagará aos trabalhadores no final do dia conforme a quantidade de caixas colhidas segundo a tabela abaixo:

– Número caixas R$ por caixa– até 5 2.00– de 6 a 10 2.50– de 11 a 20 3.50– 21 ou mais 5.00

Além disso, o fazendeiro pagará um adicional conforme a idade do trabalhador segundo a tabela abaixo:Idade (anos) Adicionalde

– 18 a 45 10%– de 45 a 65 20%

Faça um algoritmo que leia o número do trabalhador, sua idade e a quantidade de caixas colhidas no dia e imprima seu número e seu salário diário.

Page 80: Apresentação 20130805 algoritmos

Informática, Algoritmos e Estruturas de Dados Ifes 80

Exercícios de revisão(Repetição) Construir um algoritmo para ler vários valores inteiros e positivos, lidos

externamente. Calcular e imprimir:– A média geral dos números lidos;– A soma dos números pares;– A quantidade de múltiplos de 5;– O final da leitura acontecerá quando for lido um valor negativo.

(vetores) Fazer um algoritmo que:Em uma cidade do interior, sabe-se que, de janeiro a abril de 1976(121 dias),

não ocorreu temperatura inferior a 15ºC nem superior a 40ºC. As temperaturas verificadas em cada dia serão lidas e armazenadas em um vetor. Fazer um algoritmo que, após o armazenamento de todas as temperaturas, verifique e imprima:– A menor temperatura ocorrida;– A maior temperatura ocorrida;– A temperatura média;– O número de dias nos quais a temperatura foi inferior à temperatura média.

Page 81: Apresentação 20130805 algoritmos

Informática, Algoritmos e Estruturas de Dados Ifes 81

Exercícios (Matrizes) 1) Escrever um algoritmo para ler uma matriz (7,4) contendo valores inteiros (supor que

os valores são distintos). Após, encontrar o menor valor contido na matriz e sua posição.

2) Escrever um algoritmo para armazenar valores inteiros em uma matriz (5,6). A seguir, calcular e escrever a média dos valores pares contidos na matriz e seu conteúdo.

3) Escrever um algoritmo que lê uma matriz M(5,5) e cria 2 vetores SL(5), SC(5) que contenham respectivamente as somas das linhas e das colunas de M. Escrever a matriz e os vetores criados.

4) Escreva um algoritmo que lê uma matriz M(5,5) e calcula as somas:a) da linha 4 de M.b) da coluna 2 de M.c) da diagonal principal.d) da diagonal secundária.e) de todos os elementos da matriz.f) Escreva estas somas e a matriz.

5) Fazer um algoritmo que escreva um algoritmo que ordene os elementos de cada linha de uma matriz M[10,10].

Page 82: Apresentação 20130805 algoritmos

Informática, Algoritmos e Estruturas de Dados Ifes 82

6) Escrever um algoritmo para ler valores inteiros e preencher os elementos de uma matriz (6,4) com esses valores. O algoritmo deverá encontrar e apresentar o maior elemento dessa matriz e depois a linha e coluna onde esse elemento se encontra. O algoritmo deverá ainda trocar todos os elementos da linha em que esse elemento se encontra com os elementos da primeira linha da matriz e apresentar o resultado.

Page 83: Apresentação 20130805 algoritmos

Informática, Algoritmos e Estruturas de Dados Ifes 83

Modularização e Subprogramas

A modularização é uma característica muito importante no desenvolvimento de programas. Ela é um método utilizado para facilitar a construção de grandes algoritmos, através de sua divisão em pequenas etapas, que são os subprogramas.

Subprograma é um programa que auxilia o programa principal através da realização de uma determinada subtarefa. Os subprogramas são chamados dentro do corpo do programa principal como se fossem comandos. É conveniente utilizá-los quando uma determinada tarefa é efetuada em diversos lugares no mesmo algoritmo. Ao invés de escrever-se um trecho diversas vezes, escreve-se um subprograma e este pode ser invocado diversas vezes.

Dois tipos:• procedimentos (sub-rotina): não retorna nenhum valor • funções: retorna um valor ou uma informação

Page 84: Apresentação 20130805 algoritmos

Informática, Algoritmos e Estruturas de Dados Ifes 84

Esquema de uma chamada a subalgoritmo:

Page 85: Apresentação 20130805 algoritmos

Informática, Algoritmos e Estruturas de Dados Ifes 85

Vantagens no uso de subalgoritmos:

• Reduzem o tamanho do algoritmo como um todo. Porque trechos repetidos só serão implementados uma vez em um subalgoritmo e, depois, serão apenas “chamados”.

• Facilitam a compreensão e visualização do que faz o algoritmo, porque o desenvolvimento modularizado faz com que se possa pensar no algoritmo por partes

• Facilidade de depuração (correção/acompanhamento): é mais fácil corrigir/detectar um erro apenas uma vez do que em dez trechos diferentes.

• Facilidade de alteração do código: se é preciso alterar, altera-se apenas uma vez, no subalgoritmo.

• Generalidade de código com o uso de parâmetros: é possível escrever algoritmos para situações genéricas.

Page 86: Apresentação 20130805 algoritmos

Informática, Algoritmos e Estruturas de Dados Ifes 86

Procedimentos

Um procedimento é um subalgoritmo que não retorna, explicitamente, valores ao algoritmo principal ou a outro subalgoritmo que o tenha chamado. Ele pode retornar valores apenas por meio dos parâmetros, e nunca explicitamente como no caso das funções (que veremos depois) que usam a instrução Retorne.

Sua declaração, como descrito anteriormente, deve estar entre o final da declaração de variáveis do algoritmo principal e a linha inicio do mesmo e obedece à seguinte sintaxe:

procedimento nomeProcedimento ([declarações-de-parâmetros])

[var declaração de variáveis locais]

inicio

//Seção de Comandos

fimprocedimento

Page 87: Apresentação 20130805 algoritmos

Informática, Algoritmos e Estruturas de Dados Ifes 87

Algoritmo “exemploValor”

var numero: inteiro

//procedimento para incrementar valor

procedimento incrementa(valor: inteiro)

inicio

valor <- valor + 1

escreva(“Dentro do procedimento, Valor= : “, valor)

Fimprocedimento

//programa principal

Inicio

numero <- 1

escreva(“Antes do procedimento, número = “, numero) incrementa(numero)

escreva(“Depois do procedimento, número = “, numero)

fimalgoritmo

Page 88: Apresentação 20130805 algoritmos

Informática, Algoritmos e Estruturas de Dados Ifes 88

Algoritmo “ExemploProcedimento”

var numero: inteiro // o número a ser lido

procedimento julgar (valor: inteiro)

inicio

se (valor MOD 2 = 0) entao

escreva(“O número é par!”)

senao

escreva(“O número é ímpar”)

fimse

fimprocedimento

inicio

escreval(“Digite um número “)

leia(numero)

Enquanto (numero <>0) faca

julgar(numero)

escreval(“Digite um número “)

leia(numero)

fimenquanto

fimalgoritmo

Page 89: Apresentação 20130805 algoritmos

Informática, Algoritmos e Estruturas de Dados Ifes 89

Funções

Uma função é um subalgoritmo que, além de executar uma determinada tarefa, retorna, explicitamente, um valor para quem a chamou (o algoritmo principal ou a outro subalgoritmo que a tenha chamado), que é o resultado de sua execução. Esse valor é retornado através da instrução Retorne. A chamada de uma função aparece como uma expressão, e não apenas como um comando, como foi o caso do procedimento. Porque tem de existir alguma variável para receber ou alguma expressão para usar o valor retornado pela função.

A declaração da função, de forma análoga ao procedimento, deve estar entre o final da declaração de variáveis do algoritmo principal e a linha inicio do mesmo e obdece à seguinte sintaxe:

funcao nomeFuncao ([declarações-de-parâmetros]): Tipo de Retorno

[var declaração de variáveis locais]

inicio

// Seção de comandos

retorne variável ou expressão de retorno

fimfuncao

Page 90: Apresentação 20130805 algoritmos

Informática, Algoritmos e Estruturas de Dados Ifes 90

ALGORITMO "Funções "var

Valor_1,Valor_2, soma: real

FUNCAO FSoma(Recebe_valor1, Recebe_valor2: Real):Real

var

total : real

Inicio

total<-Recebe_valor1+Recebe_valor2retorne total

fimfuncao

INICIO

Escreva ("Valor_1 : ")LEIA (Valor_1)Escreva ("Valor_2 : ")LEIA (Valor_2)soma<-FSoma(Valor_1,Valor_2)ESCREVA ("Soma das vaiáveis é ", soma)

FIMALGORITMO

Page 91: Apresentação 20130805 algoritmos

Informática, Algoritmos e Estruturas de Dados Ifes 91

Funções predefinidas do VISUALG (VisualgProgramacaoB) (parte1):

Abs (valor : real) :real Valor absoluto

Arccos (valor : real) :real Arco cosseno

Arcsen (valor : real) : real Arco seno

Arctan (valor : real) :real Arco tangente

Asc (s : caracter) :inteiro Retorna o código ASCII

Compr (c : caracter) :inteiro Retorna a dimensão do caractere

Copia (c : caracter , posini, posfin : inteiro) :caracter Copia um determinado

trecho do caractere

Cos (valor : real) :real Cosseno

Cotan (valor : real) :real Co-tangente

Exp (<base>,<expoente>) :real Potenciação

Grauprad (valor : real) :real Converte grau para radiano

Int (valor : real):inteiro Converte o valor em inteiro

Log (valor : real) :real Logaritmo de base 10

Logn (valor : real) :real Logaritmo natural (ln)

Page 92: Apresentação 20130805 algoritmos

Informática, Algoritmos e Estruturas de Dados Ifes 92

Funções predefinidas do VISUALG (parte2):

Maiusc (c : caracter) :caracter Converte em Maiúscula

Minusc (c : caracter) :caracter Converte em Minúscula

Numpcarac (n : inteiro ou real) :caracter Converte um numero inteiro ou real para caractere

Pi :real Valor Pi

Pos (subc, texto: caracter) :inteiro Retorna a posição de subc em texto.

Quad (valor : real) :real Elevado quadrado

Radpgrau (valor : real) :real Converte Radiano para grau.

Raizq (valor : real) :real Raiz quadrada

Rand :real Gerador de números aleatórios entre 0 e 1

Randi (limite : inteiro) :inteiro Gerador de números inteiros aleatórios com um limite determinado

Sen (valor : real) :real Seno

Tan (valor : real) :real Tangente

Page 93: Apresentação 20130805 algoritmos

Informática, Algoritmos e Estruturas de Dados Ifes 93

Exemplo:

Algoritmo "RETORNA O SOBRENOME"

var

nome, sobrenome : Caractere

quant_caracteres, local_espaco : INTEIRO

inicio

nome <- “Maria Aparecida da Silva Lima Gonçalves"

quant_caracteres <- Compr (nome)

local_espaco <- POS (" ",nome)

sobrenome <- Copia (nome, local_espaco + 1 , quant_caracteres)

Escreva("Seu sobrenome é ", sobrenome)

fimalgoritmo

Page 94: Apresentação 20130805 algoritmos

Informática, Algoritmos e Estruturas de Dados Ifes 94

Exemplo 2:

Algoritmo "RETORNA UM VALOR INTEIRO“

Var

valorReal : REAL

valorInteiro : INTEIRO

inicio

valorReal <- 5.87978098980980989089898

valorInteiro <- INT(valorReal)

Escreva("Valor inteiro ", valorInteiro)

fimalgoritmo

Page 95: Apresentação 20130805 algoritmos

Informática, Algoritmos e Estruturas de Dados Ifes 95

Escopo de Variáveis

Cada subalgoritmo, além de ter suas próprias variáveis (chamadas de variáveis LOCAIS), que existem apenas durante a sua execução e só fazem sentido dentro do subalgoritmo, podem também ter acessoàs variáveis de quem o chamou e às variáveis definidas no algoritmo principal.

Na verdade, as variáveis declaradas na parte inicial do algoritmo principal ficam disponíveis para uso em qualquer parte desse algoritmo ou por qualquer subalgoritmo. Por isso, elas são chamadas de variáveis GLOBAIS. Porém, para manter a modularidade dos programas, NÃO É RECOMENDADO que se faça uso de variáveis globais dentro dos subalgoritmos. E sim, ao invés disso, é importante que se use passagem de parâmetros.

As variáveis GLOBAIS existem na memória do computador durante toda a execução do algoritmo, ou seja, até que o algoritmo completo chegue ao seu final. Já as variáveis LOCAIS somente são criadas quando o subalgoritmo que as contém é ativado e, ao seu término, elas são liberadas/desalocadas da memória, tornando-se inacessíveis.

Page 96: Apresentação 20130805 algoritmos

Informática, Algoritmos e Estruturas de Dados Ifes 96

Algoritmo "Raiz Equação"

var

a, b, c, meudelta: real //a, b e c são variáveis globais

FUNCAO Delta (aa, bb, cc: Real): Real //aa, bb e cc são variáveis locais

var

valor: real

Inicio

valor<- bb*bb-4*aa*cc

retorne valor

fimfuncao

INICIO

Escreval ("Forneça a, b e c: ")

Leia (a, b, c)

Escreval

meudelta<-Delta (a,b,c)

Escreval ("O delta da equação é:", meudelta)

FIMALGORITMO

Page 97: Apresentação 20130805 algoritmos

Informática, Algoritmos e Estruturas de Dados Ifes 97

Passagem de Parâmetros

Ao declarar uma função ou procedimento, é possível declarar um ou maisargumentos. Ao utilizar uma função ou procedimento, você deve informar osvalores para os argumentos, na mesma ordem em que foram definidos durantea declaração da função ou procedimento. Este processo é conhecido comopassagem de parâmetros para a função ou procedimento, ou seja, ao chamar afunção ou procedimento, passamos valores que serão utilizados pelo código dafunção ou procedimento.

Existem duas maneiras diferentes de fazer a passagem dos parâmetros:

• Passagem por Valor

• Passagem por Referência

Page 98: Apresentação 20130805 algoritmos

Informática, Algoritmos e Estruturas de Dados Ifes 98

Passagem de Parametros por Valor

• Apenas o valor é passado para a função/procedimento, e estevalor é utilizado pelo código da função/procedimento, semafetar o valor original do parâmetro

• Quaisquer alterações que sejam feitas no valor do parâmetro,dentro do procedimento, não afetarão o valor original, o qualserá o mesmo de antes da chamada da função/procedimento

• Tanto variavéis como constantes podem ser passadas por valor

Page 99: Apresentação 20130805 algoritmos

Informática, Algoritmos e Estruturas de Dados Ifes 99

Passagem por Valor - Exemplo

algoritmo "Arredonda real"

var

Num : Real

Funcao Arredonda (NumR: real) : Inteiro

Var

NumI : inteiro

inicio

NumI <- Int (NumR + 0.5)

Retorne NumI

FimFuncao

inicio

Escreva ("Entre com um numero real: ")

Leia (Num)

Escreval ("O numero ", Num, " foi arredondado para: ", Arredonda (Num))

fimalgoritmo

Page 100: Apresentação 20130805 algoritmos

Informática, Algoritmos e Estruturas de Dados Ifes 100

Passagem de Parâmetros por Referência

• A função/procedimento receberá uma referência ao endereço de memória onde está armazenado o valor do parâmetro

• É necessário utilizar a palavra reservada VAR antes da definição do nome do parâmetro

• Quaisquer alterações que a função/procedimento fizer, serão feitas diretamente na variável original

• Usada geralmente por procedimentos para poder alterar o valor original da variável passada como parâmetro, sendo a única maneira que o procedimento dispõe para “retornar” valores ao código que o chamou

• Não é passada uma simples cópia do valor da variável (que é o que acontece na passagem por valor)

• Não é possível passar constantes por referência

Page 101: Apresentação 20130805 algoritmos

Informática, Algoritmos e Estruturas de Dados Ifes 101

Passagem por referência - Exemplo

algoritmo "Soma 5"

var

Num : inteiro

Procedimento Soma5 ( VAR NumInt : inteiro)

inicio

NumInt <- NumInt + 5

fimProcedimento

Inicio

Escreva ("Entre com um numero inteiro a ser armazenado na variável NUM : ")

Leia (Num)

Soma5 (Num)

Escreval ("O conteúdo de NUM após a chamada do proc. Soma5 é : ", Num )

fimalgoritmo

Page 102: Apresentação 20130805 algoritmos

Informática, Algoritmos e Estruturas de Dados Ifes 102

Passagem por referência e valor - Exemplo

algoritmo "Soma N"

var

Num : inteiro

Procedimento SomaN (VAR NumInt : inteiro ; Increm : inteiro )

inicio

NumInt <- NumInt + Increm

fimProcedimento

inicio

Escreva ("Entre com um numero inteiro a ser armazenado na variável NUM : ")

Leia (Num)

SomaN (Num , 10)

Escreval ("O conteúdo de NUM após a chamada do proc. SomaN (NUM, 10) é : ", Num )

SomaN (Num , Num)

Escreval ("O conteúdo de NUM após a chamada do proc. SomaN (NUM, NUM) é : ", Num )

fimalgoritmo

Page 103: Apresentação 20130805 algoritmos

Informática, Algoritmos e Estruturas de Dados Ifes 103

Exercícios:

1) Escrever um algoritmo para determinar se um determinado número inteiro é par ou ímpar. Utilizar um subalgoritmo de função que retorna “par” para indicar se o valor recebido é par ou “ímpar” para indicar que o valor recebido é ímpar. O algoritmo deverá parar quando for fornecido um valor zero.

2) Escreva um algoritmo que lê um número não determinado de valores m, todos inteiros e positivos, um valor de cada vez, e, se m<10 utiliza um subalgoritmo do tipo função que calcula o fatorial de m, e caso contrário, utiliza um subalgoritmo do tipo função para obter o número de divisores de m (quantos divisores m possui). Valide o número m lido garantindo que o mesmo seja inteiro e positivo. Escrever cada m lido e seu fatorial ou seu número de divisores. O Algoritmo deverá parar quando for fornecido um valor zero.

Page 104: Apresentação 20130805 algoritmos

Informática, Algoritmos e Estruturas de Dados Ifes 104

Registros

Registro é uma estrutura de dados não homogênea, ou seja, permite o armazenamento de informações de diferentes tipos.

Aluno:

nome, idade, nota

nome é caractere, idade é inteiro e nota é real

Page 105: Apresentação 20130805 algoritmos

Informática, Algoritmos e Estruturas de Dados Ifes 105

Registro

tipo tp_aluno = registro

nome: caractere

idade: inteiro

nota:real

var aluno: tp_aluno

leia (aluno.nome)

Page 106: Apresentação 20130805 algoritmos

Informática, Algoritmos e Estruturas de Dados Ifes 106

Vetor com múltiplos Registros

tipo tp_aluno = registro

nome: caractere

idade: inteiro

nota:real

var aluno: vetor [1..10] de tp_aluno

leia (aluno[i].nome, aluno[i].idade)

leia (aluno[i].nota)

Page 107: Apresentação 20130805 algoritmos

Informática, Algoritmos e Estruturas de Dados Ifes 107

algoritmo “teste registro”

tipo tp_aluno = registro

nome: caractere

idade: inteiro

nota:real

var

aluno: vetor [1..10] de tp_aluno

i: inteiro

inicio

para i de 1 ate 10 faca

leia (aluno[i].nome, aluno[i].idade, aluno[i].nota)

fimpara

para i de 1 ate 10 faca

escreva (aluno[i].nome, aluno[i].idade, aluno[i].nota)

fimpara

fim

Page 108: Apresentação 20130805 algoritmos

Informática, Algoritmos e Estruturas de Dados Ifes 108

Linguagem C

C foi criada por Dennis Ritchie em 1972 nos laboratórios Bell para ser incluído como um dos softwares a serem distribuídos juntamente com o sistema operacional Unix do computador PDP-11

Características da Linguagem C:

• compilada;

• “case senitive”;

• portável;

• código compacto e rápido;

• médio nível.

Page 109: Apresentação 20130805 algoritmos

Informática, Algoritmos e Estruturas de Dados Ifes 109

Linguagem C – decisão: se ..senão

algoritmo "Decisão"

var

a, b:inteiro

inicio

a<-1

b<-2

se (a>b) entao

escreva ("a maior que b")

senao

escreva ("b maior que a")

fimse

fimalgoritmo

#include <stdio.h>

int main () {

int a, b;

a=1;

b=2;

if (a>b) {

printf ("a maior que b");

}

else {

printf ("b maior que a");

}

return (0);

}

Page 110: Apresentação 20130805 algoritmos

Informática, Algoritmos e Estruturas de Dados Ifes 110

Linguagem C – repetição: para

algoritmo "Para"

var

a:inteiro

inicio

para a<-0 ate 100 passo 2 faca

escreva (a)

fimpara

fimalgoritmo

#include <stdio.h>

int main () {

int a;

for (a=0; a<=100; a=a+2)

{

printf (“%d”, a);

}

Return (0);

}

Page 111: Apresentação 20130805 algoritmos

Informática, Algoritmos e Estruturas de Dados Ifes 111

Linguagem C – repetição: enquanto

algoritmo "Enquanto"

var

a:inteiro

Inicio

a<-0

enquanto (a<100) faca

a<-a+4

escreva (a)

fimenquanto

fimalgoritmo

#include <stdio.h>

int main () {

int a=0;

while (a<100) {

a=a+4;

printf ("%d", a);

}

return (0);

}

Page 112: Apresentação 20130805 algoritmos

Informática, Algoritmos e Estruturas de Dados Ifes 112

Linguagem C – entrada de dados

algoritmo "Entrada"

var a, b, c:inteiro

inicio

escreva ("Insira 2 numeros

inteiros")

leia (a,b)

c<-a+b

escreva ("A soma dos numeros é",c)

fimalgoritmo

#include <stdio.h>

int main () {

int a,b,c;

printf ("Digite 2 numeros inteiros");

scanf ("%d", &a);

scanf ("%d", &b);

c=a+b;

printf ("A soma deles eh,%d",c);

return (0);

}

Page 113: Apresentação 20130805 algoritmos

Informática, Algoritmos e Estruturas de Dados Ifes 113

Impressão na tela:

%d Inteiro

%f Float

%c Caractere

%s String

%% Coloca na tela um %

\b Retrocesso ("back")\f Alimentação de formulário ("form feed")

\n Nova linha ("new line")

\t Tabulação horizontal ("tab")

\" Aspas

\' Apóstrofo

\\ Barra invertida

Page 114: Apresentação 20130805 algoritmos

Informática, Algoritmos e Estruturas de Dados Ifes 114

Operadores Aritméticos:

+ Soma (inteira e ponto flutuante)

- Subtração ou Troca de sinal (inteira e ponto flutuante)

* Multiplicação (inteira e ponto flutuante)

/ Divisão (inteira e ponto flutuante)

% Resto de divisão (de inteiros)

++ Incremento (inteiro e ponto flutuante)

-- Decremento (inteiro e ponto flutuante)

Page 115: Apresentação 20130805 algoritmos

Informática, Algoritmos e Estruturas de Dados Ifes 115

Operadores Relacionais:

> Maior do que

>= Maior ou igual a

< Menor do que

<= Menor ou igual a

== Igual a

!= Diferente de

Operadores Lógicos:

! NÃO

|| OU

&& E

Page 116: Apresentação 20130805 algoritmos

Informática, Algoritmos e Estruturas de Dados Ifes 116

Exercício

1) Escreva um programa que peça 2 números e faça a soma deles e pergunte se o usuário quer fazer o cálculo de novo.

2) Escreva um programa que receba um número e conte a partir dele até 100.

3) Faça um programa que peça 2 números, os compare e mostre qual é o maior.