Академический Документы
Профессиональный Документы
Культура Документы
2011
Programao de computadores
Introduo Um computador simplesmente uma mquina que executa ordens. Assim, para que ele apresente a soluo de um problema, necessrio que execute um programa, o qual far com que se obtenha a soluo. Como uma definio preliminar, pode-se dizer que programar um computador consiste na elaborao de uma sequncia de instrues, de forma que, ao ser executada, o computador obtenha a soluo de um determinado problema. Esta sequncia de instrues chamada de algoritmo. Por exemplo, deseja-se calcular a mdia das duas notas obtida por um aluno do curso de Engenharia em uma determinada disciplina. Sabemos que para este clculo, basta somarmos as notas e dividirmos o resultado por dois. Mas como deveramos proceder ao recorrer programao? Neste caso precisamos montar um algoritmo que acesse as duas notas do aluno. Estes valores (a primeira e a segunda nota) so denominados de Entradas. A mdia calculada ser o resultado deste problema e apresentado ao usurio, a Sada. Assim, para cada problema considerado, temos os valores que acessaremos e os resultados apresentados, ou seja, as entradas e as sadas. Para que o computador calcule a mdia das notas deste aluno, este precisa primeiro acessar estas notas. Mas como este processo se realiza? Primeiramente, entenda o computador como uma mquina que saiba: Ler; Escrever; Efetuar operaes aritmticas bsicas: adio, subtrao, multiplicao e diviso. Portando, para resolvermos o nosso problema de clculo da mdia do aluno, utilizaremos exatamente estas funes bsicas:
inicio leia leia NOTA_1 NOTA_2
Observe que o exemplo acima tem um inicio e um fim. Estes comandos indicam, respectivamente, o incio e o fim do corpo lgico do algoritmo, onde estaro contidos todos os comandos executados pelo computador.
A execuo da instruo:
leia NOTA_1
faz com que o computador fique aguardando at o usurio digite um valor. Este valor digitado ento lido pelo computador e armazenado na posio de memria denominada NOTA_1. O mesmo processo ocorre quando a instruo
leia NOTA_2
executada. A instruo:
MEDIA <- (NOTA_1 + NOTA_2)/2
faz com que o computador copie os valores contidos nas posies de memria NOTA_1 e NOTA_2, some-as e divida o resultado por 2. O resultado final deve ser armazenado na posio de memria MEDIA, conforme determina a instruo. Observe que nesta instruo utilizamos os caracteres + e / para representar as operaes adio e diviso, respectivamente. J o smbolo <- usado para indicar que o resultado da expresso direita deve ser armazenado na posio de memria especificada esquerda, ou seja, na posio de memria MEDIA. Com a execuo da instruo:
escreva MEDIA
Tipos de dados Um algoritmo pode manipular vrios tipos de dados. Estes dados podem ser os valores apresentados pelo problema, os valores gerados durante a execuo do algoritmo ou mesmo os valores que representam a soluo do problema. Por exemplo:
Ficha de inscrio Nome: Joo Carneiro Idade: 22 Salrio (R$): 1200.00 Sexo: M
Neste caso, vrios tipos de informaes so utilizados. Note que Joo Carneiro (o nome do indivduo) uma informao diferente de 22 (a idade deste indivduo).
Programao de computadores
Assim como, M (o sexo do indivduo) uma informao diferente de 1200.00 (o salrio deste indivduo). Portanto podemos concluir que informaes manipuladas dentro de um algoritmo podem ser classificadas em vrios tipos de dados. So eles: Inteiro: toda informao numrica que pertena ao conjunto dos nmeros inteiros (negativo, nulo ou positivo). Por exemplo, idade, nmero de filhos por casal, nmero de alunos na sala de aula, nmero de pginas de um livro, etc. Real: toda informao numrica que pertena ao conjunto dos nmeros reais (valores que podem ser fracionados, sendo negativos, nulos ou positivos). Por exemplo, salrio, altura, a mdia das notas dos alunos de uma sala de aula, etc. Vamos assumir que tais dados sero sempre representados utilizando-se o ponto decimal (3.6, -1.2, 1200.00). Caractere: toda informao que possui somente um caractere alfanumrico, ou seja, pode ser composto de um nmero (0, ..., 9) ou de uma letra (a, b, ...., z). Um dado tipo caractere tambm pode armazenar caracteres especiais, tais como #, @, $, %, ?, entre outros. Vamos assumir que tais dados devem ser sempre apresentados entre aspas (M, F, $, 10, ). Literal: toda informao composta por um conjunto de caracteres alfanumricos e/ou especiais. Vamos assumir, novamente, que tais dados devem ser sempre apresentados entre aspas (Joo Carneiro, Rua Arajo Leite 13-35). Lgico: toda informao que assume apenas dois valores: verdadeiro e falso. So utilizados na representao do valor de uma expresso lgica ou um sentena, tais como 4<7 (verdadeiro) ou o Sol gira em torno da Terra (falso).
Exerccios: 1. Indique com um X quais dos tipos de dados abaixo do tipo Inteiro. ( ) 1000 ( ) 0 ( ) -90 ( ) verdadeiro ( ) -436 ( ) 34 ( ) casa 8 ( ) 0 ( ) -1.56
2. Indique com um X quais dos tipos de dados abaixo do tipo Real. ( ) -678 ( ) 0.87 ( ) -9.35 ( ) verdadeiro ( ) -456 ( ) -99.8 ( ) cinco ( ) 45.8976 ( ) falso
3. Indique com um X quais dos tipos de dados abaixo do tipo Literal. ( ) -678 ( ) 0.87 ( ) -9.35 ( ) verdadeiro ( ) -456 ( ) -99.8 ( ) cinco ( ) 45.8976 ( ) falso
4. Indique com um X quais dos tipos de dados abaixo do tipo Lgico. ( ) -678 ( ) 0.87 ( ) -9.35 ( ) verdadeiro ( ) -456 ( ) -99.8 ( ) cinco ( ) 45.8976 ( ) falso
Programao de computadores
Variveis Uma posio de memria sempre armazena um determinado valor. Se outro valor for atribudo posio, ento o valor anterior ser descartado. Assim o contedo de uma posio de memria pode variar durante a execuo de um algoritmo. Por isso denominamos esta posio de memria de varivel. Cada linguagem de programao tem suas prprias regras para formao do nome de uma varivel. Vamos assumir aqui as regras da linguagem C: O nome de uma varivel pode ser composto por letras, nmeros e o caractere sublinhado ( _ ), sendo que o primeiro caractere deve ser sempre uma letra ou o _. Nunca use espao em branco, acentos ou caracteres especiais nos nomes das variveis. Na linguagem C, letras maisculas e minsculas so tratadas como diferentes. Assim, cont, Cont e CONT so trs variveis distintas nesta linguagem. Cada varivel utilizada em um algoritmo dever ser declarada (definida) de um determinado tipo, de acordo com o tipo de dado que ir armazenar. Desta forma, uma varivel definida como sendo do tipo inteiro s poder receber dados do tipo inteiro. Faremos da seguinte maneira:
<nome_da_varivel> : <tipo_da_varivel>
SALARIO : real
Exerccios: 1. Assinale com um X os nomes vlidos para uma varivel. ( ) ENDEREO ( ) 21BRASIL ( ) FONE$COM ( ) NOMEUSURIO ( ) NOME_USURIO ( ) NOME*USUARIO ( ) END*A-6 ( ) CIDADE3 ( ) #CABEC
Comando de atribuio A atribuio uma notao utilizada para atribuir um valor a uma varivel, ou seja, para armazenar um determinado contedo em uma varivel. , normalmente, representada por uma seta apontando para a esquerda (<-). Existem outros smbolos para representar a atribuio, dependendo da linguagem de programao. Na tabela a seguir, so apresentados alguns exemplos de atribuies possveis: Atribuies possveis
<varivel> <- <constante> <varivel> <- <varivel> <varivel> <- <expresso>
Exemplo
NOTA_1 <- 5 NOTA_1 <- NOTA_2 MEDIA <- (NOTA_1 + NOTA_2)/2
Operadores aritmticos Utilizamos os operadores aritmticos para o clculo de expresses matemticas. So eles: Operador + * / div mod ** Significado Adio Subtrao Multiplicao Diviso real Diviso inteira Resto da diviso inteira Exponenciao Exemplo A + B A B A * B A / B A div B A mod B A ** B Tipo de dados Reais e/ou inteiros Reais e/ou inteiros Reais e/ou inteiros Reais e/ou inteiros Inteiros Inteiros Reais e/ou inteiros
Programao de computadores
D <- A div B
// // // //
este comando faz a diviso inteira do contedo da varivel A pelo contedo da varivel B. A varivel D armazena ento o valor 5. este comando apresenta o resto da diviso inteira do contedo da varivel A pelo contedo da varivel B. A v arivel sobra armazena ento o valor 2.
// // // // // // // // //
F <- 2.0 ** B
este comando eleva o valor 2.0 potncia do valor armazenado pela varivel B. A varivel f armazena ento o valor 16.0
fim
Expresses matemticas e frmulas Dentro de uma expresso numrica podem aparecer vrios operadores aritmticos. As operaes sero executadas de acordo com a seguinte ordem: 1 2 3 4 o que estiver entre parnteses; exponenciao; multiplicao, diviso real, diviso inteira ou resto da diviso inteira; adio ou subtrao.
Quando aparecem duas ou mais operaes de mesma hierarquia, estas so executadas na ordem em que aparecem na expresso, da esquerda para a direita. Por exemplo, considere a expresso: 2a 3 3 c 2. 4b O comando para calcular esta expresso :
2 * a 3
4 b
c * *3 2.
Neste caso, no clculo do valor desta expresso, de acordo com a hierarquia, as operaes sero executadas na seguinte ordem: 1 2 2*a (2 * a + 3)
10
3 4 5 6 7
(4 b) c ** 3 diviso do resultado de 2 com o resultado de 3 adio do resultado de 5 com o resultado de 4 subtrao do resultado de 6 com 2
c. 31 div 4 d. 31 mod 4
2. Em cada linha do algoritmo abaixo, fornea os valores armazenados em cada uma das variveis aps a execuo de cada comando.
programa Exercicio_2 variaveis X <- C div 4 A, B : real C <- C mod 2 C, X : inteiro B <- 5.4 inicio C <- C + 1 A <- 6.0 A <- B + 2 B <- A/2 fim C <- 11
Programao de computadores
11
Diga quais os valores armazenados em cada uma das variveis aps a execuo de cada um dos comandos a seguir:
X <- TOTAL / VARI X <- X + 1 A <- A + I PIG <- 10 A <- I div pig A <- A + I mod 6 VALOR_A <- PIG * VALOR_A + X
4. Considerando a, b, c e d como variveis, escreva os comandos para calcular o valor de x das frmulas a seguir. Use a diviso real. b b b 3 4ac 2a 2 4a b. x ! 2a a. x ! a c d 2a b 1 2 3 c
5. Diga qual o valor armazenado em cada varivel aps a execuo de cada um dos comandos do algoritmo a seguir:
programa Exercicio_5 variaveis EX inicio Q <- 10 Q <- Q + 30 W <- -1 W <- W + Q Q <- Q mod W Q <- W div (Q + 40) EX <- 2 * Q / W R <- 0 R <- R + 1 R <- R + 1 fim : real : inteiro Q, W, R
12
Operadores relacionais Expressam operaes de relao. Avaliam o relacionamento entre duas expresses e retornam o resultado 1 se verdadeiro ou 0 se falso. So eles: Operador > >= < <= = <> Significado Maior que Maior ou igual a Menor que Menor ou igual a Igual a Diferente de Exemplo Idade > 18 x >= 2 Nota < 7 Y <= 10 Nome = Joo Carneiro Sexo <> F
Operadores lgicos Expressam operaes lgicas. Usados normalmente com expresses que retornam verdadeiro ou falso (1 ou 0), para fins de testes em declaraes condicionais. Operador e ou no Significado Conjuno Disjuno Negao Exemplo (A = B) e (B = C) (A = B) ou (B = C) no A
Considere, por exemplo, duas sentenas A e B. Vejamos quais so os valores retornados ao usarmos estes operadores lgicos: A Verdadeiro Verdadeiro Falso Falso B Verdadeiro Falso Verdadeiro Falso AeB Verdadeiro Falso Falso Falso A ou B Verdadeiro Verdadeiro Verdadeiro Falso no A Falso Falso Verdadeiro Verdadeiro
Exerccios: 1. Considerando o contedo das variveis abaixo, diga qual o valor lgico de cada uma das expresses a seguir: NOME APELIDO QQUER AUX RESP K KAROL ANA flor ana 10 FALSO 3 2 a. b. c. d.
NOME = APELIDO (NOME = QQUER) e (NOME <> ANa) NOME = NOME (K >= KAROL + 1) ou (QQUER = ana)
Programao de computadores
13
e. no RESP f. (no RESP) e (K < AUX) g. (AUX <= AUX / K + K) flor)) h. K > KAROL + (K KAROL)
i.
((RESP)
ou
(APELIDO
2. Determine os resultados obtidos na avaliao das expresses lgicas seguintes, sabendo que A, B, C, D e E contm respectivamente 2, 7, 3.5, noite e frio e que existe uma varivel lgica L cujo valor falso. a. (B = A * C) e L ou verdadeiro b. (dia= D) ou (E = frio) c. L e (B div A >= C) ou no(A <= C)
14
Algoritmo. Diagramas de blocos e fluxogramas Um diagrama de blocos, tambm denominado fluxograma, estabelece a sequncia de operaes a se efetuar em um programa. Facilita na preparao de um programa, pois demonstra a linha de raciocnio lgico do programador. Esta tcnica permite uma posterior codificao, praticamente em qualquer linguagem de programao, pois na elaborao do fluxograma no se atinge um detalhamento de instrues ou comandos especficos, os quais caracterizam uma linguagem. Como um primeiro exemplo, vamos considerar novamente o problema de uma escola qualquer no qual o clculo da mdia semestral realizado por duas notas bimestrais que determinam a aprovao ou reprovao de seus alunos no semestre. Para que haja a aprovao destes alunos, suas mdias devem ser maiores ou iguais a sete. O algoritmo bsico que resolve este problema : calcular a mdia das duas notas e determinar a aprovao. O diagrama abaixo representa este algoritmo.
Incio
Fim
A segunda etapa apresenta um detalhamento no que se refere entrada e sada de dados, ou seja, 1 2 3 Acessar as duas notas bimestrais; Efetuar o clculo da mdia; Determinar a aprovao e apresent-la.
Programao de computadores
15
Incio
Fim
A terceira etapa consiste em trabalhar o termo determinar a aprovao. Para ser possvel determinar algo necessrio estabelecer uma condio. Assim sendo, uma condio envolve uma deciso a ser tomada segundo um determinado resultado, neste caso, a mdia. Desta forma, a condio de aprovao (mdia maior ou igual a sete) deve ser considerada no algoritmo: 1 2 3 Acessar as duas notas bimestrais; Efetuar o clculo da mdia; Se a mdia for maior ou igual a sete, apresente a aprovao. Caso contrrio, apresente a reprovao.
Calcular a mdia
Calcular a mdia
Mdia >= 7
V
APROVADO
F
REPROVADO Fim
Mdia >= 7
F
REPROVADO
APROVADO
Fim
Fim
16
Muitas vezes prefervel construir o fluxograma trabalhando com as variveis que sero utilizadas.
Incio
Incio
N1, N2
N1, N2
Mn
N1 N 2 2
Mn
N1 N 2 2
M >= 7
V
APROVADO
F
REPROVADO Fim
M >= 7
F
REPROVADO
APROVADO
Fim
Fim
Nos fluxogramas acima alguns smbolos geomtricos foram utilizados. Cada smbolo tem um significado: Terminal smbolo usado como ponto para indicar o incio e/ou fim do fluxo de um programa. Seta de fluxo de dados permite indicar o sentido do fluxo de dados. Serve exclusivamente para conectar os smbolos ou blocos existentes. Processamento smbolo que se utiliza para indicar clculos (algoritmos) a efetuar, atribuies de valores ou qualquer manipulao de dados que tenha um bloco especfico para sua descrio. Entrada de dados utilizado para ler os dados necessrios ao programa fora de linha sem interveno de dispositivos mecnicos. Entrada e sada de dados smbolo em funo de um dispositivo qualquer de entrada ou sada de dados, como fornecedor de informaes para processamento, gravao e outros. Deciso indica a deciso que deve ser tomada, indicando a possibilidade de desvios para diversos outros pontos do fluxo, dependendo do resultado de comparao e de acordo com situaes variveis.
Programao de computadores
17
Preparao refere a um determinado grupo de operaes no includas na diagramao, bom como na elaborao de uma chave que modificar a execuo de um determinado programa. Conector utilizado quando preciso particionar o diagrama. Quando ocorrer mais de uma partio, colocada uma letra ou nmero dentro do smbolo de conexo para identificar os pares de ligao. Conector fora de pgina utilizado quando preciso particionar o diagrama em mais de uma pgina. Quando ocorrer mais de uma partio, colocada uma letra ou nmero dentro do smbolo de conexo para identificar os pares de ligao.
Algoritmo em portugus estruturado O fluxograma (diagrama de bloco) a primeira forma de notao grfica. Mas existe outra, a qual uma tcnica narrativa denominada pseudocdigo, tambm conhecida como portugus estruturado. Esta tcnica baseia-se em uma linguagem de projeto de programao que tem como finalidade mostrar uma notao para elaborao de algoritmos os quais sero utilizados na definio, criao e desenvolvimento de uma linguagem computacional e sua documentao. Abaixo, apresentado o exemplo anterior neste tipo de estrutura.
programa Media variaveis N1, N2, MEDIA RESULTADO inicio leia N1, N2 MEDIA <- (N1 + N2)/2 se (MEDIA >= 7) ento RESULTADO <- APROVADO seno RESULTADO <- REPROVADO fim_se : real
: literal
18
escreva Nota 1: , N1 escreva Nota 2: , N2 escreva Mdia: , MEDIA escreva Resultado: , RESULTADO fim
Obs.: o fluxograma (diagrama de blocos) e o pseudocdigo (portugus estruturado) so duas tcnicas importantes para a documentao da soluo de um problema computacional.
Exerccios: Desenvolva os algoritmos, diagramas de blocos e codificao em portugus estruturado dos seguintes exerccios: 1. Para ler dois valores reais do teclado, calcular e imprimir na tela: a. A soma destes valores. b. O produto deles. c. O quociente entre eles. 2. Desenvolver a lgica de um programa que efetue o clculo da rea de uma circunferncia e apresente este resultado. 3. Ler uma temperatura em graus Centgrados e apresent-la convertida em graus 9C 160 , sendo F a temperatura em Fahrenheit (a frmula de converso F ! 5 Fahrenheit e C a temperatura em Centgrados). 4. Calcular e apresentar o valor do volume de uma lata de leo, utilizando a frmula: vol ! T r 2 h , Sendo, vol o volume, r o raio e h a altura da lata. 5. Uma pessoa comprou dois artigos em uma loja. Para cada artigo, tem nome, -se preo e percentual de desconto. Faa um algoritmo que imprima nome, preo e preo com desconto de cada artigo. Imprima tambm o total a pagar. 6. Suponha que voc foi ao supermercado e comprou: N quilos de caf, cujo custo unitrio Q; L litros de leite, cujo custo unitrio P; B quilos de banana, cujo custo unitrio T.
Programao de computadores
19
Faa um algoritmo que imprima: nome do produto, total gasto com cada produto e o total gasto no mercado. 7. Escreva um algoritmo que determine o nmero de dias que uma pessoa j viveu, a partir dos anos, meses e dias fornecidos pelo usurio. Considere que um ms tenha 30 dias. 8. Ler dois valores para as variveis A e B, efetuar a troca dos valores de forma que a varivel A passe a possuir o valor da varivel B e que a varivel B passe a possuir o valor da varivel A. Apresentar os valores trocados. 9. Ler dois nmeros inteiros, x e y, e imprimir o quociente e o resto da diviso inteira entre eles. 10. Calcular a quantidade de dinheiro gasta por um fumante. Dados: o nmero de anos que ele fuma, o n de cigarros fumados por dia e o preo de uma carteira. 11. Construa um algoritmo que calcula a quantidade de litros de combustvel gastos em uma viagem utilizando-se um automvel que faz 12 Km por litro. Para realizar esse clculo, o usurio dever fornecer o tempo gasto da viagem e a velocidade mdia durante a mesma. O algoritmo dever apresentar como resultado os valores da velocidade mdia, o tempo gasto na viagem, a distncia percorrida e a quantidade de litros utilizada nesta viagem.
20
Desvios condicionais Desvio condicional simples (comando if) Para solucionar alguns problemas propostos ser necessrio trabalhar uma nova instruo, o desvio condicional simples: se...ento...fim_se. Esta instruo tem por finalidade tomar uma deciso. Se a condio for verdadeira, as instrues existentes entre o comando se...ento e o comando fim_se sero executadas. Caso contrrio, ou seja, se a condio for falsa, estas instrues sero desconsideradas. A estrutura do desvio condicional simples (se...ento...fim_se) em diagrama de blocos e em portugus estruturado apresentado a seguir:
F V
Instrues executadas quando condio verdadeira
Condio
se <condio> ento <instruo para condio verdadeira> fim_se <instruo para condio falsa ou aps ser verdadeira>
Como exemplo, considere o seguinte problema: Ler dois valores numricos, efetuar a adio e apresentar seu resultado caso o valor somado seja maior que 10. O algoritmo para resolver este problema : 1 2 3 Conhecer os dois valores numricos, que podem ser denominados A e B; Efetuar a soma dos valores numricos A e B, obtendo o valor da soma X; Apresentar o valor da soma contido na varivel X, caso X > 10.
programa Soma_numeros
A, B
X <- A + B
X >10
Fim
Programao de computadores
21
Desvio condicional composto (comando if them else) Novamente, para solucionar alguns problemas propostos ser necessrio trabalhar outra instruo, o desvio condicional composto: se...ento... seno...fim_se. Nesta instruo, se a condio for verdadeira, as instrues existentes entre o comando se...ento e o comando seno sero executadas. Caso contrrio, ou seja, se a condio for falsa, sero executadas as instrues existentes entre o comando seno e o comando fim_se.
se <condio> ento
Condio
V
seno
Como exemplo, considere o seguinte problema: Ler dois valores numricos, efetuar a adio. Caso o valor somado seja maior ou igual a 10, este dever ser apresentado somando-se a ele o valor 5. Caso contrrio, o valor somado deve ser apresentado subtrado do valor 7. Os passos para resolver este problema so: 1 2 3 Conhecer os dois valores numricos, que podem ser denominados A e B; Efetuar a soma dos valores numricos A e B, obtendo o valor da soma X; Verificar se X maior ou igual a 10. Caso sim, mostrar X + 5. Caso no, apresentar X - 7.
A, B
X <- A + B
leia A, B X <- A + B
F
X-7
X >=10
V
X+5
Fim
22
Estrutura de controle com mltipla escolha (comando caso fim_caso) Quando houver a necessidade de se construir um programa em que seja necessrio utilizar uma sequncia grande de instrues do tipo se, seja esta uma aps a outra ou mesmo encadeadas, poder ser simplificada com a utilizao da instruo: caso...fim_caso.
VAR = VLR1
Instrues 1
caso <varivel>
VAR = VLR2
seja <valor 2> faa <instrues 2> ... seja <valor n> faa <instrues n>
VAR = VLR n
Instrues n
F
Instrues
Como exemplo, considere o seguinte problema: Criar um programa calculadora que apresente um menu de selees no programa principal. Este menu dever dar ao usurio a possibilidade de escolher uma entre quatro operaes aritmticas. Escolhida a opo desejada, dever ser solicitada a entrada de dois nmeros e, processada a operao, dever ser exibido o resultado. Os passos para resolver este problema so: 1 Apresentar um menu de seleo com cinco opes: 1 Adio 2 Subtrao 3 Multiplicao 4 Diviso Ao ser selecionado um valor, a rotina da operao solicitada dever ser executada, Ler dois valores; Efetuar a operao escolhida com os valores lidos no item 3; Apresentar o resultado da operao, obtido no item 4; Finalizar o programa.
Programao de computadores
23
: real
: caractere
OP
A, B
OP = 1
R <- A + B
F
OP = 2
R <- A - B
F
OP = 3
R <- A * B
F
OP = 4
R <- A / B
F
Opo invlida
Fim
24
Exerccios: 1. Indique a sada dos trechos de programa em portugus estruturado mostrado abaixo. Para as entradas, considere os seguintes valores: A = 2, B = 3, C = 5 e D = 9. a. Resposta: b. Resposta:
se no(D > 5) ento X <- (A + B )* D seno X <- (A - B )/ C fim_se escreva X fim_se escreva X seno X <- (A + B)/ D * (C + D) se (A > 2) e (B < 7) ento X <- (A + 2 )* (B - 2)
c. Resposta:
se (A > 2) ou no(B < 7) ento X <- A + B - 2 seno X <- A - B fim_se escreva X
2. Efetuar os algoritmos, diagramas de blocos e codificao em portugus estruturado dos seguintes problemas: a. Ler 3 nmeros reais do teclado e verificar se o primeiro maior que a soma dos outros dois. b. Ler dois valores numricos e apresentar a diferena do maior pelo menor. c. Efetuar a leitura de um valor inteiro positivo ou negativo e apresentar o nmero lido como sendo um valor positivo, ou seja, o programa dever apresentar o mdulo de um nmero fornecido. d. Ler quatro valores referentes a quatro notas esco lares de um aluno e imprimir uma mensagem dizendo que o aluno foi aprovado se o valor da mdia escolar for maior ou igual a cinco. Se o aluno no foi aprovado, indicar uma mensagem informando esta condio. Apresentar junto das mensagens o valor da mdia do aluno para qualquer condio. e. Ler 4 nmeros inteiros e calcular a soma dos que forem par.
Programao de computadores
25
f. Efetuar a leitura de trs valores (variveis A, B e C) e efetuar o clculo da equao de segundo grau, apresentado as duas razes, se para os valores informados for possvel efetuar o referido clculo. g. Efetuar a leitura de trs valores (variveis A, B e C) e apresent-los em ordem crescente. h. Ler trs valores do teclado e dizer se eles formam um tringulo. Caso afirmativo, dizer seu tipo (equiltero, issceles ou escaleno). i. Construa um algoritmo que leia o salrio de 3 pessoas, escreva o maior valor e a diferena percentual para o menor valor. j. Crie um algoritmo que determine se um ponto (X,Y) est dentro de um crculo ou no. Para tanto o programa dever ler os seguintes dados de teclado: coordenadas do centro do crculo; raio do crculo; ponto a ser testado. O programa dever imprimir na tela mensagens perguntado ao usurio os dados necessrios e a seguir permitir que este os digite.
26
Estruturas de repetio Existem situaes em que, para se obter a soluo do problema, necessrio fazer com que um grupo de instrues seja executado vrias vezes. As estruturas de repetio caracterizam-se por efetuar um teste lgico no incio ou no final de um conjunto de instrues, verificando se permitido executar ou re-executar este trecho de instrues subordinado a este looping. Comando enquanto (while) A estrutura em questo possui a estrutura enquanto...faa...fim_enquanto. Esta estrutura tem seu funcionamento controlado por deciso. Sendo assim poder executar um determinado conjunto de instrues enquanto a condio verificada for verdadeira. No momento em que a condio se tornar falsa, o processamento da rotina desviado para fora do looping. Se a condio for falsa logo no incio, as instrues contidas no looping so ignoradas.
Condio
S
Instrues executadas enquanto condio verdadeira
Como um primeiro exemplo, considere o problema: Pedir a leitura de um valor para a varivel X, multiplicar este valor por trs obtendo a varivel de resposta R e apresentar o valor obtido, repetindo esta sequncia por cinco vezes. Observe que, neste problema, um trecho do programa ser executado cinco vezes. Assim, o programa deve controlar o nmero de vezes que a rotina desejada dever ser executada. Para tanto, dever ser utilizado um contador controlado pela instruo enquanto...faa...fim_enquanto. Este contador ser uma varivel inteira definida com valor inicial 1 logo antes de iniciar o looping e somada de uma unidade a cada repetio deste looping. O algoritmo para resolver o problema acima : 1 2 Criar uma varivel para servir como contador com valor inicial 1; Enquanto o valor do contador for menor ou igual a 5, processar os passos 3, 4, 5 e 6; Ler um valor para a varivel X; Efetuar a multiplicao do valor de X por 3, implicando o resultado em R;
3 4
Programao de computadores
27
5 6 7
Apresentar o valor calculado contido na varivel R; Acrescentar 1 varivel do tipo contador, definida no processo 1; Quando o contador for maior que 5, encerrar o processamento do looping.
programa Loopoing_1
Cont <-1
Cont <=5
F
inicio
X, R
V
X
CONT <- 1 enquanto (CONT <= 5) faa leia X R <- 3*X escreva R
R
R <- 3*X
Cont
<- Cont + 1
fim
Fim
Para ilustrar de forma um pouco diferente, imagine que o problema anterior dever ser executado enquanto o usurio queira. Desta forma, em vez de possuir dentro da rotina um contador de vezes, pode-se possuir uma instruo pedindo ao usurio que informe se deseja continuar ou no. Os passos para resolver este novo problema so: 1 2 3 4 5 6 7 Criar uma varivel para ser utilizada como resposta; Enquanto a resposta for sim, processar os passos 3, 4, 5 e 6; Ler um valor para a varivel X; Efetuar a multiplicao do valor de X por 3, implicando o resultado em R; Apresentar o valor calculado contido na varivel R; Perguntar se o usurio deseja continuar; Quando a resposta for diferente de sim, encerrar o processo.
28
V
X
RESP <- sim enquanto (RESP = sim) ou(RESP=s) faa leia X R <- 3*X escreva R
R
R <- 3*X
Deseja continuar?
Resp
Fim
Comando para (for) Vimos uma forma de elaborar um looping usando a estrutura do comando enquanto para contadores finitos. Porm existe outra possibilidade de facilitar o uso de contadores finitos, sem fazer uso desta estrutura. Os loopings que possuem um nmero finito de execues podero ser processados atravs de instrues para...de...at...passo...faa...fim_para. Esta estrutura tem seu funcionamento controlado por uma varivel contador. Sendo assim, poder executar um determinado conjunto de instrues um determinado nmero de vezes.
Var = incio, fim, incremento
Instrues
fim_para
Programao de computadores
29
Como exemplo, considere o mesmo problema anterior: Pedir a leitura de um valor para a varivel X, multiplicar este valor por trs obtendo a varivel de resposta R e apresentar o valor obtido, repetindo esta sequncia por cinco vezes. Os passos para resolver o problema acima so: 1 2 3 4 5 Definir um contador variando de 1 a 5; Ler um valor para a varivel X; Efetuar a multiplicao do valor de X por 3, implicando o resultado em R; Apresentar o valor calculado contido na varivel R; Repetir os passos 2, 3 e 4 at que o contador seja encerrado.
programa Loopoing_3 variaveis CONT X, R inicio para CONT de 1 at 5 passo 1 faa leia X R <- 3*X escreva R fim_para fim : inteiro : real
Cont = 1, 5, 1
R <- 3*X
Fim
Comando repita (repeat) Caracteriza-se por uma estrutura que efetua um teste lgico no fim de um looping, parecida com a estrutura enquanto. Esta estrutura denominada repita, sendo conseguida com a utilizao do conjunto de instrues repita...at_que. A estrutura em questo tem o seu funcionamento controlado por deciso, porm ir efetuar a execuo de um conjunto de instrues pelo menos uma vez antes de verificar a validade da condio estabelecida.
repita
Instrues
<instrues >
Condio
at_que <condio>
30
Como exemplo, vamos continuar com o problema: Pedir a leitura de um valor para a varivel X, multiplicar este valor por trs obtendo a varivel de resposta R e apresentar o valor obtido, repetindo esta sequncia por cinco vezes. O algoritmo para resolver este problema : 1 2 3 4 5 6 Criar uma varivel contador; Ler um valor para a varivel X ; Efetuar a multiplicao do valor de X por 3, implicando o resultado em R; Apresentar o valor calculado contido na varivel R; Acrescentar um ao contador; Repetir os passos 2, 3, 4 e 5 at que o contador seja maior que 5.
variaveis CONT : inteiro : real X, R inicio CONT <- 1 repita leia X R <- 3*X escreva R CONT <- CONT + 1
Cont
<-1
R <- 3*X
F
Cont > 5
V
Fim
A seguir apresentado o exemplo em que no se utiliza o contador como forma de controle de execuo de vezes de uma rotina em uma estrutura de repetio. Neste caso, recorreremos novamente vontade do usurio para continuar o processamento. Os passos para resolver este problema so: 1 2 3 4 Criar uma varivel para ser utilizada como resposta; Ler um valor para a varivel X; Efetuar a multiplicao do valor de X por 3, implicando o resultado em R; Apresentar o valor calculado contido na varivel R;
Programao de computadores
31
5 6
Perguntar se o usurio deseja continuar; Repetir os passos 2, 3, 4 e 5 at que a resposta seja no.
programa Loopoing_5
Resp <- sim
R <- 3*X
Deseja continuar?
escreva Deseja continuar? leia RESP at_que (RESP = no) ou (RESP = n) ou (RESP = nao) fim
Resp
V
Fim
Exerccios: 1. Desenvolva os algoritmos, diagramas de blocos e codificao em portugus estruturado dos problemas abaixo. Usar na resoluo dos problemas a estrutura de repetio do tipo enquanto. a. Apresentar os resultados de uma tabuada de um nmero qualquer. Esta dever ser impressa no seguinte formato (considerando como exemplo o nmero 2): 2x1=2 2x2=4 2x3=6
32
2x4=8 (...) 2 x 10 = 20 b. Apresentar o total da soma obtida dos cem primeiros nmeros inteiros (1 + 2 + 3 + 4 + 5 + ... + 97 + 98 + 99 + 100). c. Apresentar todos os valores numricos inteiros mpares situados na faixa de 0 a 20. d. Apresentar as potncias de 3 variando de 0 a 15. Deve ser considerado que qualquer nmero elevado a zero 1, e elevado a um ele prprio. Dever ser apresentado observando a seguinte definio: 30 = 1 31 = 3 32 = 9 33 = 27 (...) 315 = 14348907 e. Elaborar um programa que apresente o valor de uma potncia de uma base qualquer elevada a um expoente qualquer, ou seja, de NM.
2. Desenvolva os algoritmos, diagramas de blocos e codificao em portugus estruturado dos itens a at e do exerccio 1. Usar na resoluo dos problemas a estrutura de repetio do tipo repita. 3. Desenvolva os algoritmos, diagramas de blocos e codificao em portugus estruturado dos itens a at e do exerccio 1. Usar na resoluo dos problemas a estrutura de repetio do tipo para. 4. Escreva um algoritmo que leia a idade de 20 pessoas, escrevendo a menor idade e a quantidade de pessoas que possuem essa idade (a menor). 5. Construa um algoritmo para entrar com um nmero de 1 a 10 e imprimi-lo o nmero de vezes correspondente ao seu valor. 6. Faa um algoritmo que escreva todos os nmeros mltiplos de 7 entre 1 e N, sendo N um valor introduzido pelo utilizador. Por exemplos: 7, 14, 21, 28, 35.
Programao de computadores
33
Bibliografia
CARBONI, I. F. Lgica de Programao. 1 edio. Thomson, 2003. FORBELLONE, A. L. EBERSPCHER, H. F. Lgica da Programao: a construo de algoritmos e estruturas de dados. 3 edio. Prentice Hall Brasil, 2005. SENNE, E. L. F. Primeiro curso de programao em C 3 ed. Visual Books, 2009. ISBN: . 9788575022450 MANZANO, J. A. N. G.; OLIVEIRA, J. F. Algoritmos: lgica para desenvolvimento de programao. 4 edio. rica, 2004. ARAJO, E. C. Algoritmos: fundamento e prtica. 1 ed. Visual Books, 2007. BORATTI, I.; OLIVEIRA, A. Introduo Programao: Algoritmos. 3 edio. Visual Books, 2007. SCHILDT H. C: Completo e Total. 3 ed. Makron Books, 1997. ZIVIANI, N. Projeto de algoritmos com implementaes em Pascal e C 2 ed. Thomson . Pioneira, 2004.