Universidade Paulista - Unip
2011
2
2
Programação de computadores
3
Introdução
Um computador é simplesmente uma máquina que executa ordens. Assim, para que ele apresente a solução de um problema, é necessário que execute um programa, o qual fará com que se obtenha a solução. Como uma definição preliminar, pode-se dizer que programar um computador consiste na elaboração de uma sequência de instruções, de forma que, ao ser executada, o computador obtenha a solução de um determinado problema. Esta sequência de instruções é chamada de algoritmo. Por exemplo, deseja-se calcular a média das duas notas obtida por um aluno do curso de Engenharia em uma determinada disciplina. Sabemos que para este cálculo, basta somarmos as notas e dividirmos o resultado por dois. Mas como deveríamos proceder ao recorrer à programação? Neste caso precisamos montar um algoritmo que acesse as duas notas do aluno. Estes valores (a primeira e a segunda nota) são denominados de Entradas. A média calculada será o resultado deste problema e apresentado ao usuário, a Saída. Assim, para cada problema considerado, temos os valores que acessaremos e os resultados apresentados, ou seja, as entradas e as saídas. Para que o computador calcule a média das notas deste aluno, este precisa primeiro acessar estas notas. Mas como este processo se realiza? Primeiramente, entenda o computador como uma máquina que saiba: Ler;
Escrever; Efetuar operações aritméticas básicas: adição, subtração, multiplicação e divisão.
Portando, para resolvermos o nosso problema de cálculo da média do aluno, utilizaremos exatamente estas funções básicas: inicio leia
NOTA_1
leia
NOTA_2
MEDIA <- (NOTA_1 + N OTA_2)/2 OTA_2)/2
escreva
MEDIA
fim
Observe que o exemplo acima tem um inicio e um fim . Estes comandos indicam, respectivamente, o início e o fim do corpo lógico do algoritmo, onde estarão contidos todos os comandos c omandos executados pelo computador.
4
A execução da instrução: leia
NOTA_1
faz com que o computador fique aguardando até o usuário digite um valor. Este valor digitado é então lido pelo computador e armazenado na posição de memória denominada NOTA_1. O mesmo processo ocorre quando a instrução leia
NOTA_2
é executada. A instrução: MEDIA <- (NOTA_1 + N OTA_2)/2
faz com que o computador copie os valores contidos nas posições de memória NOTA_1 e NOTA_2, some-as e divida o resultado por 2. O resultado final deve ser armazenado na posição de memória MEDIA, conforme determina a instrução. Observe que nesta instrução utilizamos os caracteres µ+¶ e µ/¶ para representar as operações adição e divisão, respectivamente. Já o símbolo µ <-¶ é usado para indicar que o resultado da expressão à direita deve ser armazenado na posição de memória especificada à esquerda, ou seja, na posição de memória MEDIA. Com a execução da instrução: escreva
MEDIA
o valor armazenado na posição de memória MEDIA será copiado e mostrado na tela.
Tipos de dados
Um algoritmo pode manipular vários tipos de dados. Estes dados podem ser os valores apresentados pelo problema, os valores gerados durante a execução do algoritmo ou mesmo os valores que representam a solução do problema. Por exemplo: Ficha de inscrição Nome: João Carneiro Idade: 22
Sexo: M
Salário (R$): 1200.00
Neste caso, vários tipos de informações são utilizados. Note que ³João Carneiro´ (o nome do indivíduo) é uma informação diferente de ³22´ (a idade deste indivíduo).
Programação de computadores
5
Assim como, ³M´ (o sexo do indivíduo) é uma informação diferente de ³1200.00´ (o salário deste indivíduo). Portanto podemos concluir que informações manipuladas dentro de um algoritmo podem ser classificadas em vários tipos de dados. São eles: toda informação numérica que pertença ao conjunto dos números inteiros (negativo, nulo ou positivo). Por exemplo, idade, número de filhos por casal, número de alunos na sala de aula, número de páginas de um livro, etc.
Inteiro:
toda informação numérica que pertença ao conjunto dos números reais (valores que podem ser fracionados, sendo negativos, nulos ou positivos). Por exemplo, salário, altura, a média das notas dos alunos de uma sala de aula, etc. Vamos assumir que tais dados serão sempre representados utilizando-se o ponto decimal (3.6, -1.2, 1200.00).
Real:
toda informação que possui somente um caractere alfanumérico, ou seja, pode ser composto de um número (0, ..., 9) ou de uma letra (a, b, ...., z). Um dado tipo caractere também pode armazenar caracteres especiais, tais como #, @, $, %, ?, entre outros. Vamos assumir que tais dados devem ser sempre apresentados entre aspas (³M´, ³F´, ³$´, ³10´, ³ ´).
Caractere:
toda informação composta por um conjunto de caracteres alfanuméricos e/ou especiais. Vamos assumir, novamente, que tais dados devem ser sempre apresentados entre aspas (³João Carneiro´, ³Rua Araújo Leite 13-35´).
Literal:
toda informação que assume apenas dois valores: verdadeiro e falso. São utilizados na representação do valor de uma expressão lógica ou um sentença, tais como 4<7 ( verdadeiro) ou ³o Sol gira em torno da Terra´ ( falso).
Lógico:
Exercícios:
1.
2.
ndique com um X quais dos tipos de dados abaixo é do tipo Inteiro.
I
( ) 1000
( ) verdadeiro
( ) ³casa 8´
( ) ³0´
( ) -436
( ) 0
( ) ³-90´
( ) 34
( ) -1.56
ndique com um X quais dos tipos de dados abaixo é do tipo Real.
I
( ) -678
( ) verdadeiro
( ) ³cinco´
( ) ³0.87´
( ) -456
( ) 45.8976
( ) ³-9.35´
( ) -99.8
( ) falso
6
3.
4.
ndique com um X quais dos tipos de dados abaixo é do tipo Literal.
I
( ) -678
( ) verdadeiro
( ) ³cinco´
( ) ³0.87´
( ) -456
( ) 45.8976
( ) ³-9.35´
( ) -99.8
( ) falso
ndique com um X quais dos tipos de dados abaixo é do tipo Lógico.
I
( ) -678
( ) verdadeiro
( ) ³cinco´
( ) ³0.87´
( ) -456
( ) 45.8976
( ) ³-9.35´
( ) -99.8
( ) falso
Programação de computadores
7
Vari áveis
Uma posição de memória sempre armazena um determinado valor. Se outro valor for atribuído à posição, então o valor anterior será descartado. Assim o conteúdo de uma posição de memória pode variar durante a execução de um algoritmo. Por isso denominamos esta posição de memória de variável . Cada linguagem de programação tem suas próprias regras para formação do nome de uma variável. Vamos assumir aqui as regras da linguagem C:
O nome de uma variável pode ser composto por letras, números e o caractere sublinhado ( _ ), sendo que o primeiro caractere deve ser sempre uma letra ou o ³_´. Nunca use espaço em branco, acentos ou caracteres especiais nos nomes das variáveis. Na linguagem C, letras maiúsculas e minúsculas são tratadas como diferentes. Assim, cont, Cont e CONT são três variáveis distintas nesta linguagem.
Cada variável 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 variável definida como sendo do tipo inteiro só poderá receber dados do tipo inteiro. Faremos da seguinte maneira: :
como, por exemplo: NOME
: literal
IDADE
: inteiro
SEXO
: caractere
SALARIO : real
Exercícios:
1. Assinale com um X os nomes válidos para uma variável.
( ) ENDEREÇO
( ) NOMEUSUÁR IO
( ) END*A-6
( ) 21BRAS IL
( ) NOME_USUÁR IO
( ) CIDADE3
( ) FONE$COM
( ) NOME*USUAR IO
( ) #CABEC
8
Comando de atr ibuição
A atribuição é uma notação utilizada para atribuir um valor a uma variável, ou seja, para armazenar um determinado conteúdo em uma variável. É, normalmente, representada por uma seta apontando para a esquerda ( <-). Existem outros símbolos para representar a atribuição, dependendo da linguagem de programação. Na tabela a seguir, são apresentados alguns exemplos de atribuições possíveis: Atribuições
possí veis
Exemplo
<-
NOTA_1 <- 5
<-
NOTA_1 <- NOTA_2
<-
MEDIA <- (NOTA_1 + NOTA_2)/2
Operadores
aritméticos
Utilizamos os operadores aritméticos para o cálculo de expressões matemáticas. São eles: Operador
+ * / d iv mod **
Significado
Exemplo
Tipo de dados
Adição Subtração Multiplicação Divisão real Divisão inteira Resto da divisão inteira Exponenciação
A + B
Reais e/ou inteiros Reais e/ou inteiros Reais e/ou inteiros Reais e/ou inteiros Inteiros Inteiros Reais e/ou inteiros
A ± B A * B A / B A d iv B A mod B A ** B
Vejamos o exemplo a seguir: programa Exemplo
variaveis A, B, D, SOBRA
: inteiro
C, F : real
inicio A <- 22
// armazena o valor 22 na variável A
B <- 4 C <- A/B
// // // //
este comando faz a divisão real do conteúdo da variável A pelo conteúdo da variável B. A variável C armazena o resultado desta divisão, ou seja, 5.5
Programação de computadores
D <- A div B
// // // //
SOBRA <-A mod B
F <- 2.0 ** B
9
este comando faz a divisão inteira do conteúdo da variável A pelo conteúdo da variável B. A variável D armazena então o valor 5.
// // // // // // // // //
este comando apresenta o resto da divisão inteira do conteúdo da variável A pelo conteúdo da variável B. A v ariável sobra armazena então o valor 2.
este comando eleva o valor 2.0 à potência do valor armazenado pela variável B. A variável f armazena então o valor 16.0
fim
Expressões
matemáticas e f órmulas
Dentro de uma expressão numérica podem aparecer vários operadores aritméticos. As operações serão executadas de acordo com a seguinte ordem: 1º
o que estiver entre parênteses;
2º
exponenciação;
3º
multiplicação, divisão real, divisão inteira ou resto da divisão inteira;
4º
adição ou subtração.
Quando aparecem duas ou mais operações de mesma hierarquia, estas são executadas na ordem em que aparecem na expressão, da esquerda para a direita. Por exemplo, considere a expressão: 2a 3 3 c 2. 4b O comando para calcular esta expressão é:
2 * a 3 4 b c * *3 2. Neste caso, no cálculo do valor desta expressão, de acordo com a hierarquia, as operações serão executadas na seguinte ordem: 1º
2*a
2º
(2 * a + 3)
10
3º
(4 ± b)
4º
c ** 3
5º
divisão do resultado de 2º com o resultado de 3º
6º
adição do resultado de 5º com o resultado de 4º
7º
subtração do resultado de 6º com 2
Exercícios:
1. Quais os valores das expressões a seguir: a. 2 + 3 * 6 b. 12 / 3 * 2 ± 5
c. d.
31 div 4 31 mod 4
2. Em cada linha do algoritmo abaixo, forneça os valores armazenados em cada
uma das variáveis após a execução de cada comando. programa Exercicio_2
variaveis X <- C d iv 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
3.
Considere o seguinte trecho de algoritmo: programa Exercicio_3
variaveis VALOR_A, X : real PIG, VARI, TOTAL, A, I
inicio VARI <- 2 TOTAL <- 10 VALOR_A <- 7.0 A <- -4 I <- 80 X <- 4.0
: inteiro
Programação de computadores
11
Diga quais os valores armazenados em cada uma das variáveis após a execução de cada um dos comandos a seguir: X <- TOTAL / VARI X <- X + 1 A <- A + I PIG <- 10 A <- I d iv pig A <- A + I mod 6 VALOR_A <- PIG * VALOR_A + X
4. Considerando a, b, c e d como variáveis, escreva os comandos para calcular o valor de x das fórmulas a seguir. Use a divisão real. b
3
4a
b. x !
a. x ! a c d 2a
3 c
b b 4ac 2a
2
2a b 12
5. Diga qual é o valor armazenado em cada variável após a execução de cada um dos
comandos do algoritmo a seguir: programa Exercicio_5
variaveis EX
: real
Q, W, R
: inteiro
inicio Q <- 10 Q <- Q + 30 W <- -1 W <- W + Q Q <- Q mod W Q <- W d iv (Q + 40) EX <- 2 * Q / W R <- 0 R <- R + 1 R <- R + 1 fim
12
Operadores
relacionais
Expressam operações de relação. Avaliam o relacionamento entre duas expressões e retornam o resultado 1 se verdadeiro ou 0 se falso. São eles: Operador
> >= < <= = <>
Operadores
Significado
Exemplo
Maior que Maior ou igual a Menor que Menor ou igual a Igual a Diferente de
dade > 18 x >= 2 Nota < 7 Y <= 10 Nome = ³João Carneiro´ Sexo <> ³F´ I
lógicos
Expressam operações lógicas. Usados normalmente com expressões que retornam verdadeiro ou falso (1 ou 0), para fins de testes em declarações condicionais. Operador
e ou não
Significado
Exemplo
Conjunção Disjunção Negação
(A = B) e (B = C) (A = B) ou (B = C) não A
Considere, por exemplo, duas sentenças retornados ao usarmos estes operadores lógicos:
eB Verdadeiro Falso Falso Falso A
A
B
Verdadeiro Verdadeiro Falso Falso
Verdadeiro Falso Verdadeiro Falso
A
e
B.
Vejamos quais são os valores
ou B Verdadeiro Verdadeiro Verdadeiro Falso
não A Falso Falso Verdadeiro Verdadeiro
A
Exercícios:
1. Considerando o conteúdo das variáveis abaixo, diga qual o valor lógico de cada
uma das expressões a seguir: NOME
APELIDO
QQUER
AUX
RESP
K
KAROL
³ANA´
³flor´
³ana´
10
FALSO
3
2
a. NOME = APELIDO b. (NOME = QQUER) e (NOME <> ³ANa´) c. NOME = ³NOME´ d. (K >= KAROL + 1) ou (QQUER = ³ana´)
Programação de computadores
13
e. não RESP f .
(não RESP) e (K < AUX)
g. (AUX <= AUX ³flor´))
/
K
+
K)
e
((RESP)
ou
(APELIDO
=
h. K > KAROL + (K ± KAROL) i. ((não RESP e RESP) ou (não RESP)) e (RESP ou (não RESP))
2. Determine os resultados obtidos na avaliação das expressões lógicas seguintes,
sabendo que A, B, C, D e E contêm respectivamente 2, 7, 3.5, ³noite´ e ³frio´ e que existe uma variável lógica L cujo valor é falso. a. (B = A * C) e L ou verdadeiro b. (³dia´= D) ou (E = ³frio´) c. L e (B d iv A >= C) ou não(A <= C)
14
Algoritmo.
Diagramas de blocos e f luxogramas
Um diagrama de blocos, também denominado fluxograma, estabelece a sequência de operações a se efetuar em um programa. Facilita na preparação de um programa, pois demonstra a linha de raciocínio lógico do programador. Esta técnica permite uma posterior codificação, praticamente em qualquer linguagem de programação, pois na elaboração do fluxograma não se atinge um detalhamento de instruções ou comandos específicos, os quais caracterizam uma linguagem. Como um primeiro exemplo, vamos considerar novamente o problema de uma escola qualquer no qual o cálculo da média semestral é realizado por duas notas bimestrais que determinam a aprovação ou reprovação de seus alunos no semestre. Para que haja a aprovação destes alunos, suas médias devem ser maiores ou iguais a sete. O algoritmo básico que resolve este problema é: cal cular a média das d uas notas e determinar a aprovação . O diagrama abaixo representa este algoritmo. nício
I
Calcular a média das 2 notas e determinar a aprovação
Fim
A segunda etapa apresenta um detalhamento no que se refere à entrada e saída de dados, ou seja, 1º
Acessar as duas notas bimestrais;
2º
Efetuar o cálculo da média;
3º
Determinar a aprovação e apresentá-la.
Este algoritmo está representado nos diagramas de blocos a seguir:
Programação de computadores
15 nício
I
Entrada das 2 notas
Calcular a média e determinar a aprovação
Apresentar se houver ou não aprovação
Fim
A terceira etapa consiste em trabalhar o termo ³determinar a aprovação´. Para ser possível determinar algo é necessário estabelecer uma condição. Assim sendo, uma condição envolve uma decisão a ser tomada segundo um determinado resultado, neste caso, a média. Desta forma, a condição de aprovação (média maior ou igual a sete) deve ser considerada no algoritmo: 1º
Acessar as duas notas bimestrais;
2º
Efetuar o cálculo da média;
3º
Se a média for maior ou igual a sete, apresente a aprovação. Caso contrário, apresente a reprovação.
Este algoritmo está representado nos diagramas de blocos abaixo: nício
I
nício
I
Duas representações do mesmo problema
Entrada das 2 notas
Entrada das 2 notas
Calcular a média
Calcular a média
Média >= 7
F
V
³APROVADO´
F
Média >= 7
³ REPROVADO´
³APROVADO´
Fim ³REPROVADO´
Fim
V
Fim
16
Muitas vezes é preferível construir o fluxograma trabalhando com as variáveis que serão utilizadas. Duas representações do mesmo problema
nício
I
nício
I
N 1, N 2
M n
N1, N2
N 1 N 2
M n
2
M >=
7
F
V
³APROVADO´
F
N 1 N 2
2
M >= 7
³REPROVADO´
V
³APROVADO´
Fim ³REPR VAD ´ Fim
Fim
Nos fluxogramas acima alguns símbolos geométricos foram utilizados. Cada símbolo tem um significado: ± símbolo usado como ponto para indicar o início e/ou fim do fluxo de um programa. Terminal
Seta de f luxo de dados ± permite indicar o sentido do fluxo de dados.
Serve exclusivamente para conectar os símbolos ou blocos existentes. Processamento ± símbolo que se utiliza para indicar cálculos
(algoritmos) a efetuar, atribuições de valores ou qualquer manipulação de dados que tenha um bloco específico para sua descrição. Entrada
de dados ± utilizado para ler os dados necessários ao
programa fora de linha sem intervenção de dispositivos mecânicos. Entrada
e saí da de dados ± símbolo em função de um dispositivo
qualquer de entrada ou saída de dados, como fornecedor de informações para processamento, gravação e outros. Decisão ± indica a decisão que deve ser tomada, indicando a
possibilidade de desvios para diversos outros pontos do fluxo, dependendo do resultado de comparação e de acordo com situações variáveis.
Programação de computadores
17
Preparação ± refere a um determinado grupo de operações não
incluídas na diagramação, bom como na elaboração de uma chave que modificará a execução de um determinado programa. utilizado quando é preciso particionar o diagrama. Quando ocorrer mais de uma partição, é colocada uma letra ou número dentro do símbolo de conexão para identificar os pares de ligação. Conector ±
Conector f ora de página ± utilizado
quando é preciso particionar o diagrama em mais de uma página. Quando ocorrer mais de uma partição, é colocada uma letra ou número dentro do símbolo de conexão para identificar os pares de ligação.
Algoritmo
em português estruturado
O fluxograma (diagrama de bloco) é a primeira forma de notação gráfica. Mas existe outra, a qual é uma técnica narrativa denominada pseudocódigo , também conhecida como port u g uê s estr ut urado. Esta técnica baseia-se em uma linguagem de projeto de programação que tem como finalidade mostrar uma notação para elaboração de algoritmos os quais serão utilizados na definição, criação e desenvolvimento de uma linguagem computacional e sua documentação. Abaixo, é apresentado o exemplo anterior neste tipo de estrutura. programa Media
variaveis N1, N2, MEDIA RESULTADO
: real
: literal
inicio leia N1, N2 MEDIA <- (N1 + N2)/2
se (MEDIA >= 7) então RESULTADO <- ³APROVADO´
senão RESULTADO <- ³REPROVADO´ fim_se
18
escreva ³Nota 1: ´, N1 escreva ³Nota 2: ´, N2 escreva ³Média: ´, MEDIA escreva ³Resultado: ´, RESULTADO fim
Ob s.: o fluxograma (diagrama de blocos) e o pseudocódigo (português estruturado) são
duas técnicas importantes para a documentação da solução de um problema computacional.
Exercícios:
Desenvolva os algoritmos, diagramas de blocos e codificação em português estruturado dos seguintes exercícios: 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 lógica de um programa que efetue o cálculo da área de uma
circunferência e apresente este resultado. 3.
er uma temperatura em graus Centígrados e apresentá-la convertida em graus 9C 160 Fahrenheit (a fórmula de conversão é F ! , sendo F a temperatura em 5 Fahrenheit e C a temperatura em Centígrados). L
4. Calcular e apresentar o valor do volume de uma lata de óleo, utilizando a fórmula:
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-se nome,
preço e percentual de desconto. Faça um algoritmo que imprima nome, preço e preço com desconto de cada artigo. Imprima também o total a pagar. 6. Suponha que você foi ao supermercado e comprou:
N quilos de café, cujo custo unitário é Q; L litros de leite, cujo custo unitário é P; B quilos de banana, cujo custo unitário é T.
Programação de computadores
Faça 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 número de dias que uma pessoa já viveu, a
partir dos anos, meses e dias fornecidos pelo usuário. Considere que um mês tenha 30 dias. er dois valores para as variáveis A e B, efetuar a troca dos valores de forma que a variável A passe a possuir o valor da variável B e que a variável B passe a possuir o valor da variável A. Apresentar os valores trocados.
8.
L
9.
L
er dois números inteiros, x e y, e imprimir o quociente e o resto da divisão inteira entre eles.
10. Calcular a quantidade de dinheiro gasta por um fumante. Dados: o número de anos
que ele fuma, o nº de cigarros fumados por dia e o preço de uma carteira. 11. Construa um algoritmo que calcula a quantidade de litros de combustível gastos em
uma viagem utilizando-se um automóvel que faz 12 Km por litro. Para realizar esse cálculo, o usuário deverá fornecer o tempo gasto da viagem e a velocidade média durante a mesma. O algoritmo deverá apresentar como resultado os valores da velocidade média, o tempo gasto na viagem, a distância percorrida e a quantidade de litros utilizada nesta viagem.
19
20
Desvios condicionais
(comando if) Para solucionar alguns problemas propostos será necessário trabalhar uma nova instrução, o desvio condicional simples: se...então...fim_se. Esta instrução tem por finalidade tomar uma decisão. Se a condição for verdadeira, as instruções existentes entre o comando se...então e o comando fim_se serão executadas. Caso contrário, ou seja, se a condição for falsa, estas instruções serão desconsideradas. Desvio condicional simples
A estrutura do desvio condicional simples (se...então... fim_se) em diagrama de blocos e em português estruturado é apresentado a seguir: F
se então
V
Condi ão
nstruções executadas quando condição verdadeira
I
fim_se
Instruções executadas quando a condição for falsa ou após ser verdadeira
Como exemplo, considere o seguinte problema: ³ Ler dois valores n uméricos, efet uar a adição e apresentar se u resultado caso o valor somado seja maior q ue 10´. O algoritmo para resolver este problema é: 1º
Conhecer os dois valores numéricos, que podem ser denominados A e B;
2º
Efetuar a soma dos valores numéricos A e B, obtendo o valor da soma X;
3º
Apresentar o valor da soma contido na variável X, caso X > 10.
Assim, o diagrama de blocos e a codificação em português estruturado ficam da seguinte maneira: nicio
I
programa Soma_numeros
variaveis
A, B
A, B, X
: real
inicio
X <- A + B
leia A, B
F
X >10
X <- A + B
V
se (X > 10) então X
escreva X fim_se fim
Fim
Programação de computadores
21
(comando if them else) Novamente, para solucionar alguns problemas propostos será necessário trabalhar outra instrução, o desvio condicional composto: se...então... senão... fim_se. Nesta instrução, se a condição for verdadeira, as instruções existentes entre o comando se...então e o comando senão serão executadas. Caso contrário, ou seja, se a condição for falsa, serão executadas as instruções existentes entre o comando senão e o comando fim_se. Desvio condicional composto
se então
F
nstruções executadas quando condição verdadeira
nstruções executadas quando condição falsa
I
I
V
Condição
senão fim_se
Como exemplo, considere o seguinte problema: ³ Ler dois valores n uméricos, efet uar a adição. C aso o valor somado seja maior o u ig ual a 10, este deverá ser apresentado somando-se a ele o valor 5. C aso contrário, o valor somado deve ser apresentado s ubtraído do valor 7 ´. Os passos para resolver este problema são: 1º
Conhecer os dois valores numéricos, que podem ser denominados A e B;
2º
Efetuar a soma dos valores numéricos A e B, obtendo o valor da soma X;
3º
Verificar se X é maior ou igual a 10. Caso sim, mostrar X + 5. Caso não, apresentar X - 7.
Assim, o diagrama de blocos e a codificação em português estruturado ficam da seguinte maneira: nicio
I
programa Teste_soma_numeros
variaveis
A, B
A, B, X
: real
inicio leia A, B
X <- A + B
X <- A + B
F
X >=10
V
se (X >= 10) então escreva (X + 5) X+5
X-7
senão escreva (X ± 7) fim_se fim
Fim
22
(comando caso fim_caso) Quando houver a necessidade de se construir um programa em que seja necessário utilizar uma sequência grande de instruções do tipo se, seja esta uma após a outra ou mesmo encadeadas, poderá ser simplificada com a utilização da instrução: caso...fim_ caso. Estrutura de controle com múltipla es colha
VAR = V LR1
V
nstruções 1
I
caso VAR = V LR2
V
nstruções 2
seja faça
I
seja faça ... seja faça VAR = VLR n
V
nstruções n
I
senão fim_caso
F nstruções
I
Como exemplo, considere o seguinte problema: ³ C riar um programa cal culadora que apresente um menu de seleções no programa prin cipal. Este menu deverá dar ao u suário a possi bilidade de es col her uma entre quatro operações aritméti cas. Es col hida a opção desejada, deverá ser soli citada a entrada de dois números e, pro cessada a operação, deverá ser exi bido o res ultado´. Os passos para resolver este problema são: 1º
2º
Apresentar um menu de seleção com cinco opções: 1 ± Adição 2 ± Subtração 3 ± Multiplicação 4 ± Divisão Ao ser selecionado um valor, a rotina da operação solicitada deverá ser executada,
correspondendo aos passos 4º e 5º; er dois valores;
3º
L
4º
Efetuar a operação escolhida com os valores lidos no item 3º;
5º
Apresentar o resultado da operação, obtido no item 4º;
6º
Finalizar o programa.
Programação de computadores
23
Assim, o diagrama de blocos e a codificação em português estruturado ficam da seguinte maneira: programa Calculadora
variaveis A, B, R
OP
: real
: caractere
inicio escreva ³1 ± Adição´ escreva ³2 ± Subtração´ escreva ³3 ± Multiplicação´ escreva ³4 ± Divisão´ escreva ³Escolha uma opção: ´ leia OP escreva ³Digite o primeiro valor: ´ leia A escreva ³Digite o segundo valor: ´
nicio
I
leia B caso OP
³Menu: 1 ± Adição 2 ± Subtração 3 ± Multiplicação 4 ± Divisão´
seja ³1´ então R <- A + B
escreva R seja ³2´ então R <- A - B
OP
escreva R seja ³3´ então R <- A * B
A, B
escreva R OP = ³1´
V
R <- A + B
seja ³4´ então R
R <- A / B
F OP = ³2´
escreva R V
R <- A - B
senão
R
escreva ³Opção inválida´
F OP = ³3´
fim_caso V
R <- A * B
R
R <- A / B
R
F OP = ³4´
F ³Opção inválida´
Fim
V
fim
24
Exercícios:
1.
ndique a saída dos trechos de programa em português estruturado mostrado abaixo. Para as entradas, considere os seguintes valores: A = 2, B = 3, C = 5 e D = 9. b. Resposta: a. Resposta: I
se não(D > 5) então
se (A > 2) e (B < 7) então
X <- (A + B )* D
senão
X <- (A + 2 )* (B - 2)
senão X <- (A - B )/ C
X <- (A + B)/ D * (C + D)
fim_se
fim_se
escreva X
escreva X
Resposta:
c.
se (A > 2) ou não(B < 7) então X <- A + B - 2
senão X <- A - B fim_se
escreva X
2. Efetuar os algoritmos, diagramas de blocos e codificação em português
estruturado dos seguintes problemas: a. Ler 3 números reais do teclado e verificar se o primeiro é maior que a soma dos outros dois. er dois valores numéricos e apresentar a diferença do maior pelo menor.
b.
L
c.
Efetuar a leitura de um valor inteiro positivo ou negativo e apresentar o número lido como sendo um valor positivo, ou seja, o programa deverá apresentar o módulo de um número fornecido.
d.
L
e.
L
er quatro valores referentes a quatro notas escolares de um aluno e imprimir uma mensagem dizendo que o aluno foi aprovado se o valor da média escolar for maior ou igual a cinco. Se o aluno não foi aprovado, indicar uma mensagem informando esta condição. Apresentar junto das mensagens o valor da média do aluno para qualquer condição. er 4 números inteiros e calcular a soma dos que forem par.
Programação de computadores
f .
Efetuar a leitura de três valores (variáveis A, B e C) e efetuar o cálculo da equação de segundo grau, apresentado as duas raízes, se para os valores informados for possível efetuar o referido cálculo.
g.
Efetuar a leitura de três valores (variáveis A, B e C) e apresentá-los em ordem crescente.
h.
L
i.
Construa um algoritmo que leia o salário de 3 pessoas, escreva o maior valor e a diferença percentual para o menor valor.
j.
Crie um algoritmo que determine se um ponto (X,Y) está dentro de um círculo ou não. Para tanto o programa deverá ler os seguintes dados de teclado: coordenadas do centro do círculo; raio do círculo; ponto a ser testado. O programa deverá imprimir na tela mensagens perguntado ao usuário os dados necessários e a seguir permitir que este os digite.
er três valores do teclado e dizer se eles formam um triângulo. Caso afirmativo, dizer seu tipo (equilátero, isósceles ou escaleno).
25
26
Estruturas
de repetição
Existem situações em que, para se obter a solução do problema, é necessário fazer com que um grupo de instruções seja executado várias vezes. As estruturas de repetição caracterizam-se por efetuar um teste lógico no início ou no final de um conjunto de instruções, verificando se é permitido executar ou re-executar este trecho de instruções ³subordinado´ a este looping. enquanto (while) A estrutura em questão possui a estrutura enquanto...f aça...fim_enquanto. Esta estrutura tem seu funcionamento controlado por decisão. Sendo assim poderá executar um determinado conjunto de instruções enquanto a condição verificada for verdadeira. No momento em que a condição se tornar falsa, o processamento da rotina é desviado para fora do looping. Se a condição for falsa logo no início, as instruções contidas no looping são ignoradas. Comando
Condição
N
S Instruções executadas enquanto condição verdadeira
enquanto faça fim_enquanto
Como um primeiro exemplo, considere o problema: ³ Pedir a leit ura de um valor para a variável X, multiplicar este valor por tr ê s obtendo a variável de resposta R e apresentar o valor o btido, repetindo esta sequência por cinco vezes´.
Observe que, neste problema, um trecho do programa será executado cinco vezes. Assim, o programa deve controlar o número de vezes que a rotina desejada deverá ser executada. Para tanto, deverá ser utilizado um contador controlado pela instrução enquanto...f aça...fim_enquanto . Este contador será uma variável inteira definida com valor inicial 1 logo antes de iniciar o looping e somada de uma unidade a cada repetição deste looping. O algoritmo para resolver o problema acima é: 1º
Criar uma variável para servir como contador com valor inicial 1;
2º
Enquanto o valor do contador for menor ou igual a 5, processar os passos 3º, 4º, 5º e 6º;
3º
L
4º
Efetuar a multiplicação do valor de X por 3, implicando o resultado em R;
er um valor para a variável X;
Programação de computadores
27
5º
Apresentar o valor calculado contido na variável R;
6º
Acrescentar 1 à variável do tipo contador, definida no processo 1º;
7º
Quando o contador for maior que 5, encerrar o processamento do looping.
Assim, o diagrama de blocos e a codificação em português estruturado ficam da seguinte maneira: nici
I
programa Loopoing_1
Cont <-1
Cont <=5
variaveis
F
CONT
: inteiro
X, R
: real
inicio V
CONT <- 1 X
enquanto (CONT <= 5) faça leia X R <- 3*X
R <- 3*X
escreva R CONT <- CONT + 1
R
fim_enquanto
Cont <- Cont + 1
fim
Fim
Para ilustrar de forma um pouco diferente, imagine que o problema anterior deverá ser executado enquanto o usuário queira. Desta forma, em vez de possuir dentro da rotina um contador de vezes, pode-se possuir uma instrução pedindo ao usuário que informe se deseja continuar ou não. Os passos para resolver este novo problema são: 1º
Criar uma variável para ser utilizada como resposta;
2º
Enquanto a resposta for sim, processar os passos 3º, 4º, 5º e 6º;
3º
L
4º
Efetuar a multiplicação do valor de X por 3, implicando o resultado em R;
5º
Apresentar o valor calculado contido na variável R;
6º
Perguntar se o usuário deseja continuar;
7º
Quando a resposta for diferente de sim, encerrar o processo.
er um valor para a variável X;
28
Assim, o diagrama de blocos e a codificação em português estruturado ficam da seguinte maneira: nicio
I
Resp <- ³sim´
programa Loopoing_2
variaveis Resp = ³sim´ ou Resp = ³s´
F
RESP
: literal
X, R
: real
inicio V
RESP <- ³sim´ X
enquanto (RESP = ³sim´) ou(RESP=³s´) faça leia X R <- 3*X
R <- 3*X
escreva R escreva ³Deseja continuar?´
R
leia RESP ³Deseja c ntin ar ?´
fim_enquanto fim
Resp
Fim
Comando para
(for) Vimos uma forma de elaborar um looping usando a estrutura do comando enquanto para contadores finitos. Porém existe outra possibilidade de facilitar o uso de contadores finitos, sem fazer uso desta estrutura. Os loopings que possuem um número finito de execuções poderão ser processados através de instruções para...de...até...passo...f aça...fim_ para. Esta estrutura tem seu funcionamento controlado por uma variável contador. Sendo assim, poderá executar um determinado conjunto de instruções um determinado número de vezes. Var = início, fim, incremento
para d e até passo faça
nstruções
I
fim_ para
Programação de computadores
29
Como exemplo, considere o mesmo problema anterior: ³ Pedir a leit ura de um valor para a variável X, m ultiplicar este valor por tr ê s obtendo a variável de resposta R e apresentar o valor o btido, repetindo esta seq uência por cinco vezes´.
Os passos para resolver o problema acima são: 1º
Definir um contador variando de 1 a 5;
2º
L
3º
Efetuar a multiplicação do valor de X por 3, implicando o resultado em R;
4º
Apresentar o valor calculado contido na variável R;
5º
Repetir os passos 2º, 3º e 4º até que o contador seja encerrado.
er um valor para a variável X;
Assim, o diagrama de blocos e a codificação em português estruturado ficam da seguinte maneira: programa Loopoing_3
nicio
I
variaveis Cont = 1, 5, 1
CONT
: inteiro
X, R
: real
inicio
X
para CONT d e 1 até 5 passo 1 faça
leia X
R <- 3*X
R <- 3*X
escreva R
R
fim_ para fim
Fim
repita (repeat) Caracteriza-se por uma estrutura que efetua um teste lógico no fim de um looping, parecida com a estrutura enquanto . Esta estrutura é denominada repita, sendo conseguida com a utilização do conjunto de instruções repita...até_que. A estrutura em questão tem o seu funcionamento controlado por decisão, porém irá efetuar a execução de um conjunto de instruções pelo menos uma vez antes de verificar a validade da condição estabelecida. Comando
nstruções
re pita
I
F
Condição V
até_que
30
Como exemplo, vamos continuar com o problema: ³ Pedir a leit ura de um valor para a variável X, multiplicar este valor por tr ê s obtendo a variável de resposta R e apresentar o valor o btido, repetindo esta sequência por cinco vezes´.
O algoritmo para resolver este problema é: 1º
Criar uma variável contador;
2º
L
3º
Efetuar a multiplicação do valor de X por 3, implicando o resultado em R;
4º
Apresentar o valor calculado contido na variável R;
5º
Acrescentar um ao contador;
6º
Repetir os passos 2º, 3º, 4º e 5º até que o contador seja maior que 5.
er um valor para a variável X ;
Assim, o diagrama de blocos e a codificação em português estruturado ficam da seguinte maneira: programa Loopoing_4
nicio
I
variaveis
Cont <-1
CONT
: inteiro
X, R
: real
inicio
X
CONT <- 1
re pita
R <- 3*X
leia X R <- 3*X
R
escreva R Cont <- Cont + 1
F
CONT <- CONT + 1
até_que (CONT < 5)
V
Cont > 5
Fim
fim
A seguir é apresentado o exemplo em que não se utiliza o contador como forma de controle de execução de vezes de uma rotina em uma estrutura de repetição. Neste caso, recorreremos novamente à vontade do usuário para continuar o processamento. Os passos para resolver este problema são: 1º
Criar uma variável para ser utilizada como resposta;
2º
L
3º
Efetuar a multiplicação do valor de X por 3, implicando o resultado em R;
4º
Apresentar o valor calculado contido na variável R;
er um valor para a variável X;
Programação de computadores
31
5º
Perguntar se o usuário deseja continuar;
6º
Repetir os passos 2º, 3º, 4º e 5º até que a resposta seja não.
Assim, o diagrama de blocos e a codificação em português estruturado ficam da seguinte maneira: nicio
I
programa Loopoing_5
Resp <- ³sim´
variaveis
X
RESP
: literal
X, R
: real
inicio RESP <- ³sim´
R <- 3*X
re pita leia X
R
R <- 3*X
escreva R ³Deseja continuar?´
escreva ³Deseja continuar?´ leia RESP até_que (RESP = ³não´) ou
Resp
(RESP = ³n´) ou (RESP = ³nao´) fim
F
Resp = ³não´ ou Resp = ³n´ ou Resp = ³nao´
V
Fim
Exercícios:
1. Desenvolva os algoritmos, diagramas de blocos e codificação em português
estruturado dos problemas abaixo. Usar na resolução dos problemas a estrutura de repetição do tipo enquanto. a. Apresentar os resultados de uma tabuada de um número qualquer. Esta deverá ser impressa no seguinte formato (considerando como exemplo o número 2): 2x1=2 2x2=4 2x3=6
32
2x4=8 (...) 2 x 10 = 20 b. Apresentar o total da soma obtida dos cem primeiros números inteiros (1 + 2 + 3 + 4 + 5 + ... + 97 + 98 + 99 + 100). c.
Apresentar todos os valores numéricos inteiros ímpares situados na faixa de 0 a 20.
d. Apresentar as potências de 3 variando de 0 a 15. Deve ser considerado que
qualquer número elevado a zero é 1, e elevado a um é ele próprio. Deverá ser apresentado observando a seguinte definição: 30 = 1 31 = 3 32 = 9 33 = 27 (...) 315 = 14348907 e. Elaborar um programa que apresente o valor de uma potência de uma base
qualquer elevada a um expoente qualquer, ou seja, de N M.
2. Desenvolva os algoritmos, diagramas de blocos e codificação em português estruturado dos itens a até e do exercício 1. Usar na resolução dos problemas a estrutura de repetição do tipo repita. 3.
Desenvolva os algoritmos, diagramas de blocos e codificação em português estruturado dos itens a até e do exercício 1. Usar na resolução dos problemas a estrutura de repetição 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 número de 1 a 10 e imprimi-lo o
número de vezes correspondente ao seu valor. 6. Faça um algoritmo que escreva todos os números múltiplos de 7 entre 1 e N,
sendo N um valor introduzido pelo utilizador. Por exemplos: 7, 14, 21, 28, 35.