Você está na página 1de 12

Pacotes Estatsticos 1.

Introduo

1.3. Algoritmos e Fluxogramas


1.3.1. conceito algoritmo: norma executvel para obter efeito desejado PROGRAMAR = CONSTRUIR ALGORITMOS a) verso inicial descasque as batatas para o jantar b) seqncia de sub-aes: traga a cesta com batatas traga a panela descasque as batatas c) repetio: traga a cesta com batatas traga a panela enquanto nmero de batas insuficiente faa descasque a batata fim enquanto d) condicional traga a cesta com batatas traga a panela enquanto nmero de batas insuficiente faa se batata est boa ento descasque esta batata seno descarte a batata fim se fim enquanto e) algoritmo imprprio enquanto batata est boa faa descasque esta batata fim enquanto MQUINA = SEGUIDOR MECNICO DE ALGORITMOS PROGRAMA = ALGORITMO DESTINADO A CONTROLAR O COMPORTAMENTO DA MQUINA algoritmo: aes + dados

Departamento de Estatstica ICEx -UFMG

F. R. B. Cruz

Pacotes Estatsticos 1. Introduo

1.3.2. estruturas bsicas de dados e controle varivel: posio na memria que tem nome e valor associados: NOTA 5 declarao de variveis: declare lista de variveis tipo tipos de dados: inteiro real caracter lgico exemplo: declare x inteiro; vendas, comisso real;

estruturas de controle: a) seqncia de comandos: comando1 comando2 b) comando condicional: se condio ento seqncia de comandos 1 seno seqncia de comandos 2 fim se c) comando de repetio com interrupo no incio (enquanto): enquanto condio faa seqncia de comandos fim enquanto d) comando de repetio com interrupo no final (repita): repita seqncia de comandos at condico e) comando de repetio para: para varivel de valor1 at valor2 faa seqncia de comandos fim para f) comando de entrada e sada: leia lista de variveis escreva lista de variveis

Departamento de Estatstica ICEx -UFMG

F. R. B. Cruz

Pacotes Estatsticos 1. Introduo

g) atribuio: K1 1.3.3. desenvolvimento de algoritmos por refinamentos sucessivos Ex. 1.: Fazer um algoritmo que leia trs valores inteiros, determine e imprima o menor deles. Soluo: Um algoritmo possvel apresentado abaixo: algoritmo defina os tipos das variveis leia os nmeros determine o menor nmero escreva o menor nmero fim algoritmo ref.: leia os nmeros leia a, b, c fim ref. ref.: determine o menor nmero se a<b e a<c ento menor <- a seno determine o menor entre b e c fim se fim ref. ref.: determine o menor entre b e c se b<c ento menor <- b seno menor <- c fim se fim ref. ref.: escreva o menor nmero escreva menor fim ref. ref.: defina os tipos das variveis declare a, b, c, menor numerico fim ref.

Departamento de Estatstica ICEx -UFMG

F. R. B. Cruz

Pacotes Estatsticos 1. Introduo

Inserindo-se os refinamentos nos seus respectivos lugares e colocando-se comentrios: algoritmo {defina os tipos das variveis} declare a, b, c, menor numerico {leia os nmeros} leia a, b, c {determine o menor nmero} se a<b e a<c ento menor <- a seno se b<c ento menor <- b seno menor <- c fim se fim se {escreva o menor nmero} escreva menor fim algoritmo

Departamento de Estatstica ICEx -UFMG

F. R. B. Cruz

Pacotes Estatsticos 1. Introduo

Ex. 2: Fazer um algoritmo que calcule o valor de N! (fatorial de N) sendo que o valor inteiro de N se encontra disponvel em uma unidade de entrada e que: a) N! = 1 x 2 x ... x (N-1) x N; e b) 0! = 1, por definio. Soluo: Um algoritmo possvel descrito abaixo: algoritmo defina os tipos das variveis leia n calcule o fatorial de n escreva fatorial fim algoritmo ref.: calcule fatorial de n fatorial <- 1 i <- 2 enquanto i <= n faca fatorial <- fatorial * i i <- i + 1 fim enquanto fim ref. Inserindo-se o refinamento em seu respectivo lugar algoritmo defina os tipos das variveis leia n fatorial <- 1 i <- 2 enquanto i <= n faca fatorial <- fatorial * i i <- i + 1 fim enquanto escreva fatorial fim algoritmo

Departamento de Estatstica ICEx -UFMG

F. R. B. Cruz

Pacotes Estatsticos 1. Introduo

Ex. 3: Fazer um algoritmo que: a) leia e escreva o nome e altura das moas inscritas em um concurso de beleza. Para cada moa, existe uma linha contendo o seu nome e sua altura. A ltima linha, que no corresponde a nenhuma moa, conter a palavra "vazio" no lugar do nome; b) b) calcule e escreva as duas maiores alturas e quantas moas as possuem. Soluo: Um algoritmo possvel descrito abaixo: algoritmo defina os tipos das variveis atribua valores iniciais necessrios leia nome, altura enquanto nome <> "vazio" faca escreva nome, altura compare altura com as duas maiores alturas leia nome, altura fim enquanto escreva resultados fim algoritmo E os refinamentos sucessivos so: ref.: compare altura com as duas maiores alturas se altura > maior1 entao atualize a 2 maior altura e o nmero de moas que a possui atualize a 1 maior altura e o nemro de moas que a possui seno verifique se altura igual a maior1 fim se fim ref. ref.: atualize a 2 maior altura e o nmero de moas que a possui maior2 <- maior1 contador2 <- contador1 fim ref. ref.: atualize a 1 maior altura e o nmero de moas que a possui maior1 <- altura contador1 <- 1 fim ref.

Departamento de Estatstica ICEx -UFMG

F. R. B. Cruz

Pacotes Estatsticos 1. Introduo

ref.: verifique se altura igual a maior1 se altura = maior1 ento contador1 <- contador1 + 1 seno compare altura com a 2 maior altura fim se fim ref. ref.: compare altura com a 2 maior altura se altura > maior2 ento maior2 <- altura contador2 <- 1 seno se altura = maior2 ento contador2 <- contador2 + 1 fim se fim se fim ref. ref.: escreva resultados escreva maior1, contador1, maior2, contador2 fim ref. ref.: atribua valores iniciais necessrios contador1 <- 0 maior1 <- 0 contador2 <- 0 maior2 <- 0 fim ref. ref.: defina tipo das variveis declare altura, contador1, contador2, maior1, maior2 numrico declare nome caracter fim ref.

Departamento de Estatstica ICEx -UFMG

F. R. B. Cruz

Pacotes Estatsticos 1. Introduo

Inserindo-se os refinamentos nos devidos lugares, teremos: algoritmo declare altura, contador1, contador2, maior1, maior2 numrico declare nome caracter contador1 <- 0 maior1 <- 0 contador2 <- 0 maior2 <- 0 leia nome, altura enquanto nome <> "vazio" faca escreva nome, altura se altura > maior1 ento maior2 <- maior1 contador2 <- contador1 maior1 <- altura contador1 <- 1 seno se altura = maior1 ento contador1 <- contador1 + 1 seno se altura > maior2 ento maior2 <- altura contador2 <- 1 seno se altura = maior2 ento contador2 <- contador2 + 1 fim se fim se fim se fim se leia nome, altura fim enquanto escreva maior1, contador1, maior2, contador2 fim algoritmo

Departamento de Estatstica ICEx -UFMG

F. R. B. Cruz

Pacotes Estatsticos 1. Introduo

1.3.3. exerccio extra Desenvolver um algoritmo para ler diversos coeficientes a, b e c, calcular e escrever as razes da equao ax 2 + bx + c = 0 . Parar quando encontrar um coeficiente a=0. 1.3.4. soluo: Uma soluo possvel para o problema apresentada a seguir. Inicialmente, desenvolvemos uma primeira verso do algoritmo, j identificando a estrutura de repetio que dever estar presente, mas deixando para mais tarde alguns detalhamentos (isto , os refinamentos): algoritmo defina os tipos das variveis repita leia a, b, c se a=0 ento interrompa fim se calcule razes escreva razes fim repita fim algoritmo Refinando-se o clculo das razes: ref.: calcule razes delta <- b*b 4*a*c se delta >= 0 ento xr1 <- (-b + raiz(delta))/(2*a) xr2 <- (-b - raiz(delta))/(2*a) xi1 <- 0 xi2 <- 0 seno xr1 <- -b/(2*a) xr2 <- -b/(2*a) xi1 <- raiz(-delta)/(2*a) xi2 <- -raiz(-delta)/(2*a) fim se fim ref.

Departamento de Estatstica ICEx -UFMG

F. R. B. Cruz

Pacotes Estatsticos 1. Introduo

10

Refinando-se a escrita das razes: ref.: escreva razes escreva xr1, xi1 escreva xr2, xi2 fim ref. Finalmente, refinando-se a declarao das variveis: ref.: defina os tipos da variveis declare a, b, c, xr1, xi1, xr2, xi2, delta numrico fim ref. Inserindo-se os refinamentos nos respectivos lugares, temos o algoritmo completo: algoritmo {defina os tipos das variveis} declare a, b, c, xr1, xi1, xr2, xi2, delta numrico repita leia a, b, c se a=0 ento interrompa fim se {calcule razes} delta <- b*b 4*a*c se delta >= 0 ento xr1 <- (-b + raiz(delta))/(2*a) xr2 <- (-b - raiz(delta))/(2*a) xi1 <- 0 xi2 <- 0 seno xr1 <- -b/(2*a) xr2 <- -b/(2*a) xi1 <- raiz(-delta)/(2*a) xi2 <- -raiz(-delta)/(2*a) fim se {escreva razes} escreva xr1, xi1 escreva xr2, xi2 fim repita fim algoritmo

Departamento de Estatstica ICEx -UFMG

F. R. B. Cruz

Pacotes Estatsticos 1. Introduo

11

Na linguagem do Minitab, este algoritmo pode ser codificado como se segue, disponvel em ftp://ftp.est.ufmg.br/pub/fcruz/pacotes/eq2grau.mac.

macro # template eq2grau # eq2grau calcula raizes da equacao # ax^2 + bx + c = 0 # corpo mconstant delta xr1 xi1 xr2 xi2 mcolumn coef note entre com os coeficientes a, b e c read coef; file 'terminal'; nobs 3. while (coef(1) ~= 0) let delta = coef(2)*coef(2) - 4*coef(1)*coef(3) if delta >= 0 let xr1 = (-coef(2) + sqrt(delta))/(2*coef(1)) let xr2 = (-coef(2) - sqrt(delta))/(2*coef(1)) let xi1 = 0 let xi2 = 0 else let xr1 = -coef(2)/(2*coef(1)) let xr2 = -coef(2)/(2*coef(1)) let xi1 = sqrt(-delta)/(2*coef(1)) let xi2 = -sqrt(-delta)/(2*coef(1)) endif print xr1, xi1 print xr2, xi2 read coef; file 'terminal'; nobs 3. endwhile endmacro

Departamento de Estatstica ICEx -UFMG

F. R. B. Cruz

Pacotes Estatsticos 1. Introduo

12

Na linguagem do S-Plus, pode ser codificado conforme apresentado abaixo, disponvel em ftp://ftp.est.ufmg.br/pub/fcruz/pacotes/eq2grau.txt.

eq2grau <- function() { repeat { cat("Entre com o coef a ") a <- as.numeric(readline()) cat("Entre com o coef b ") b <- as.numeric(readline()) cat("Entre com o coef c ") c <- as.numeric(readline()) if (a==0) { break } delta <- b^2 - 4*a*c if (delta >= 0) { xr1 <- (-b + sqrt(delta))/(2*a) xr2 <- (-b - sqrt(delta))/(2*a) xi1 <- 0 xi2 <- 0 } else { xr1 <- -b/2*a xr2 <- -b/2*a xi1 <- sqrt(-delta)/(2*a) xi2 <- -sqrt(-delta)/(2*a) } cat("x1 = (", xr1, "+", xi1, "i) e x2 = (", xr2, "+", xi2, "i)\n") } }

Departamento de Estatstica ICEx -UFMG

F. R. B. Cruz