Escolar Documentos
Profissional Documentos
Cultura Documentos
2
7 SUB-ROTINAS ................................................................................................................................. 31
7.1 Procedimentos ........................................................................................................................... 32
7.2 Função....................................................................................................................................... 32
7.3 Parâmetros ................................................................................................................................ 33
8 VETORES E MATRIZES ................................................................................................................. 35
8.1 Vetor ......................................................................................................................................... 35
8.1.1 Exercício ............................................................................................................................... 36
8.2 Matriz Bidirecional ................................................................................................................... 37
8.2.1 Exercícios ............................................................................................................................. 37
3
1 INTRODUÇÃO
1.1 Lógica
É a forma correta de organizar os pensamentos e demonstrar
o raciocínio de maneira correta.
1.2 Algoritmo
“Algoritmo : Conjunto de regras e operações bem definidas e
ordenadas, destinadas à solução de um problema, ou de uma
classe de problemas, em um número finito de etapas” -
Dicionário Aurélio
4
Portanto, a resolução de um problema passa pela elaboração
da sequência de passos necessários para chegar-se até a
solução. Esta sequência de passos é chamada de algoritmo.
5
programação e outras utilizando formas gráficas de
representação dos algoritmos.
Algoritmos SÓ se aprende:
construindo algoritmos
testando algoritmos
2 FORMA DE
REPRESENTAÇÃO
Uma das dificuldades constatadas no aprendizado de
algoritmos é a passagem de uma língua natural, de expressão
completamente livre, para uma restrição de linguagem,
rigidamente formalizada, com sintaxe não familiar e, em
geral, um uma língua estrangeira.
6
Certamente, uma passagem por uma linguagem algorítmica,
embora mais restrita que a língua natural, mas com sintaxe1
conhecida e em português, representa uma transição mais
fácil.
const
// declaração de constantes se houverem
var
// declaração e classificação das variáveis
Exemplo:
programa CALCULA_MEDIA
var
resultado : caractere
nota1, nota2, nota3, nota4 : real
soma, media : real
início
1
Segundo o Dicionário Aurélio, sintaxe é “Parte da gramática que
estuda a disposição das palavras na frase e a das frases no
discurso, bem como a relação lógica das frases entre si;
construção gramatical”. Podemos entender sintaxe em computação
como sendo a forma como os comandos devem ser escritos.
7
mostre ”nota 2 : “ , nota2
mostre ”nota 3 : “ , nota3
mostre ”nota 4 : “ , nota4
mostre ”soma : “ , media
mostre ”media : “ , resultado
fim
3 TIPOS DE DADOS
Tipos de Informações
DADOS
INSTRUÇÕES
3.1 Dados
Os DADOS são representados pelas informações a serem tratadas
(processadas) por um computador.
Tipos Inteiros
São caracterizados como tipos inteiros os dados numéricos
positivos ou negativos, excluindo-se destes qualquer número
fracionário.
45
0
-56
Tipos Reais
São caracterizados como tipos reais os dados numéricos
positivos, negativos e números fracionários.
45
0
8
-56
1.2
-45.897
Tipos Caracteres
São caracterizados como tipos caracteres as sequencias
contendo letras, números e símbolos especiais.
“PROGRAMACAO”
“Rua Alfa, 52 Ap. 1”
“Fone: 574-9988”
“04367-722”
“ “
“7”
“3.3”
Tipos Lógico
São caracterizados como tipos lógicos os dados com valores
VERDADEIRO e FALSO, sendo que este tipo de dado poderá
representar apenas um dos dois valores.
.Falso.
.F.
.N.
.Verdadeiro.
.V.
.S.
Uso de Variáveis
9
O nome de uma variável é utilizado para a sua identificação
e posterior uso dentro de um programa.
Válidos:
NOMEUSUARIO
FONE1
X
DELTA25
Z4
CODIGO_PRODUTO
Inválidos:
NOME USUÁRIO
1X
FONE#
MOSTRE
Uso de Constantes
Operadores Aritméticos
10
Expressões Aritméticas
x = 2 + 3
x = 4 * 5 * 3
x = 4 + 6 / 2
x = ( 4 + 6 ) / 2
area = 3.14 * raio * raio
area = 3.14 * raio ^ 2
area = ( base * altura ) / 2
3.2 Instruções
As instruções são representadas pelo conjunto de palavras-
chave (vocabulário) de uma determinada linguagem de
programação.
Tem por finalidade comandar em um computador o seu
funcionamento e a forma como os dados armazenados serão
tratados.
A mesma instrução poderá ser escrita de forma diferente
dependendo da linguagem
11
Portugol ou Português Estruturado:
Teste de Mesa
12
as dimensões do campo, calculando a área total de grama
necessitada e mostrando na tela esta área
programa atribuicao
var nome : caractere
valor1, valor2 : real
valor3 : inteiro
início
nome = "algoritmos"
valor1 = 2.34
valor2 = 7.01
valor3 = 3
valor1 = 5.5 * 3
valor3 = 100 - 66
nome = "quarta"
valor2 = valor1
valor1 = valor2 * 2 + 5.8
valor3 = valor3 / 2
valor2 = valor2 + valor1 - 233
leia nome
leia valor1
valor1 = valor1 * ( 4 - 2 ) 3
mostre "fim: ", nome, valor1, valor2, valor3
fim
13
Observe este algoritmo:
programa troca_variaveis
início
leia valor1, valor2
mostre valor1, valor2
valor1 = valor2
valor2 = valor1
mostre valor1, valor2
fim
programa troca_variaveis
início
leia valor1, valor2
mostre valor1, valor2
temp = valor1
valor1 = valor2
valor2 = temp
mostre valor1, valor2
fim
programa constantes
const PI = 3.1415
início
leia raio
area = PI * raio 2
mostre area
fim
14
3.2.2 Exercícios
1) FUAQ leia três notas de um aluno. Após, calcule a média
das notas e mostre-as.
15
4 ESTRUTURAS DE
CONTROLE
se ( <condição> ) então
<instruções para condição verdadeira>
fim_se
Exemplo:
a = 23
se ( a > 12 ) então
mostre “VIVA O COLORADO”
fim_se
Operadores Relacionais
16
4.2 Desvio Condicional Composto
Estrutura:
se ( <condição> ) então
<instruções para condição verdadeira>
senão
<instruções para condição falsa>
fim_se
Exemplo:
a = 23
se ( a > 12 ) então
mostre “VIVA O COLORADO”
senão
mostre “O DIA ESTÁ LINDO”
fim_se
4.2.1 Exercícios
8) FUAQ leia nos números NUM1 e NUM2 e calcula a adição dos
mesmos. Caso a soma seja maior ou igual a 10 deve ser
calculado e mostrado o resultado da soma adicionado de 5; se
não, deve ser calculado e mostrado o resultado da soma
subtraído de 7
17
limitações impostas pelo supermercado, isto é, se o cliente
pediu mais unidades do que o permitido deve-lhe ser debitado
apenas o limite permitido. Deverá escrever o número de itens
de cada tipo efetivamente fornecido e o valor total a ser
pago
...
a, b, c, d // 10 30 8 8
se ( a+b+c <> d ) então
d = a+b+c
fim_se
se ( a > b ) então
b = a*3
a = 10
senão
a = b*3
b = 10
fim_se
mostre a, b
se ( c == d ) então
se ( a+b == c ) então
c = a+b
senão
c = a*b
fim_se
b = a+c+d
fim_se
mostre a, b, c, d
18
4.3.1 Exercícios
12) FUAQ lê duas notas de alunos e calcule a média aritmética
delas. Se o aluno ficar com média abaixo de 3 mostrar na
tela “REPROVADO”. Se a média for maior ou igual a 7 mostrar
“APROVADO”. Se não for nenhum dos dois casos, mostrar “EM
EXAME”.
programa TESTA_LOGICA_E
var
NUMERO : inteiro
início
leia NUMERO
se (NUMERO >= 20) .e. (NUMERO <= 90) então
mostre “Numero entre 20 a 90”
senão
mostre “Numero fora de 20 a 90”
fim_se
fim_se
19
4.4.2 .ou.
programa testa_logica_ou
Var
sexo : caractere
Início
leia sexo
se (sexo == “m”) .ou. (sexo == “f”) então
mostre “sexo válido”
senão
mostre “sexo inválido”
fim_se
Fim_se
4.4.3 .não.
programa testa_logica_nao
20
Var
a, b, c, x : inteiro
Início
leia a, b, x
se .não. ( x > 5 ) então
c = ( a+b ) * x
senão
c = ( a-b ) * x
fim_se
mostre c
Fim_se
EXEMPLO:
programa triangulo
var a, b, c : inteiro
início
leia a, b, c
se (a<b+c) .e. (b<a+c) .e. (c<a+b) então
se (a==b) .e. (b==c) então
mostre “triângulo equilátero”
senão
se (a==b) .ou. (a==c) .ou. (c==b) então
mostre “triângulo isóceles”
senão
mostre “triângulo escaleno”
fim_se
fim_se
senão
mostre “as medidas não formam triangulo”
fim_se
fim
4.5 Exercícios
14) FUAQ leia o salário de um funcionário e calcula seu
reajuste. O funcionário deverá receber um reajuste de 15%
caso seu salário seja < 500. Se o salário for >= 500 e
<=1000, o reajuste deverá ser de 10%. E caso seja > 1000 o
índice de reajuste deverá ser lido do teclado. No final,
mostre o valor do antigo salário, o valor do reajuste e o
valor do novo salário.
21
15) FUAQ leia as médias finais de 3 alunos nas variáveis
MEDIA1, MEDIA2 e MEDIA3. Se o valor correspondente a 50% da
média dos 3 médias dos 3 alunos for maior que 30 o algoritmo
deve mostrar a maior média dentre os 3 alunos, senão deve
mostrar as médias em ordem decrescente.
Se Salário Bruto > 1500,00 então Imposto de Renda = 15% do Salário Bruto;
Se Salário Bruto > 500,00 e Salário Bruto ≤ 1500,00 então Imposto de
Renda = 10% do Salário Bruto
Se Salário Bruto < 500,00 então Imposto de Renda = 0.
5 LAÇOS DE REPETIÇÃO
5.1 para
para <var> de <inicio> até < fim> passo <incr> faça
......
fim_para
onde
22
<var> variável de controle do laço
<inicio> valor de início do laço
pode ser uma variável, expressão ou
constante
<fim> valor de fim do laço
pode ser uma variável, expressão ou
constante
<incr> valor de incremento ou decremento do laço
pode ser uma variável, expressão ou
constante
Exemplos:
a = 20; b = 30; c = 3;
para kk de a até b-2 passo c faça
mostre kk
fim_para
programa MEDIA_ALUNOS
var qtde_alunos , i : inteiro
nota1, nota2, media : real
inicio
leia qtde_alunos
para i de 1 ate atde_alunos passo 1
leia nota1, nota1
media = ( nota1 – nota2 ) / 2
23
mostre media
fim_para
fim
5.1.1 Exercícios
19) FUAQ leia 2 notas de um total de 50 alunos, calcule e
mostre a média aritmética das 2 notas de cada aluno. Por
fim, mostrar qual a maior média de notas obtida pelos alunos.
5.2 enquanto
enquanto <condição> faça
....
fim_enquanto
onde:
Exemplos:
i = 1
enquanto ( i <= 5) faça
mostre i
i = i + 1
fim_enquanto
f = -2
enquanto ( f <= 1 ) faça
mostre f
f = f + 2
fim_enquanto
24
a = 20; b = 30; c = 3;
enquanto ( a < b-2 ) faça
mostre a
a = a + C
fim_enquanto
leia a
enquanto ( a <= 10 )faça
mostre a
fim_enquanto
leia a
enquanto ( a <= 10 )faça
mostre a
leia a
fim_enquanto
opcao = ”s”;
enquanto ( opcao <> ”f” ) faça
leia valor1, valor2
mostre ”soma dos valores: ”, valor1 + valor2
mostre ”Continua? (s/n)”
leia opcao
fim_enquanto
leia nome
enquanto ( nome <> ”viapas” )faça
leia nota1, nota2;
mostre ”Media do ” , nome , ” = ” , (nota1+nota2)/2
mostre nome
leia nome
fim_enquanto
programa MEDIA_ALUNOS
var qtde_alunos , i : inteiro
nota1 , nota2 : real
inicio
leia qtde_alunos
i = 1
enquanto ( i <= qtde_alunos ) faça
leia nota1 , nota2
media = ( nota1 + nota2 ) / 2
mostre media
i = i + 1
25
fim_enquanto
fim
5.2.1 Exercícios
22) FUAQ lê 10 valores, um de cada vez, e conta quantos deles
estão no intervalo [10,20] e quantos deles estão fora deste
intervalo, escrevendo estas informações.
5.3 repita
repita
...
até_que <condição>
onde:
Exemplos:
i = 1
repita
mostre i
i = i + 1
até_que ( i == 5 )
f = -2
repita
f = f + 2
mostre f
até_que ( f > 1 )
a = 20; b = 30; c = 3;
26
repita
a = a + c
mostre “AMOR”
até_que ( a >= b-2 )
repita
leia nome
leia nota1, nota2;
mostre ”Media do ” , nome , ” = ” , (nota1+nota2)/2
mostre nome
até_que ( nome == ”viapas” )
programa MEDIA_ALUNOS
var qtde_alunos , i : inteiro
nota1 , nota2 : real
inicio
leia qtde_alunos
i = 1
repita
leia nota1 , nota2
media = (nota1+nota2) / 2
mostre media
i = i + 1
até_que ( i == QTDE_ALUNOS )
fim
6 MODIFICADORES
6.1 Continue
Força uma próxima iteração do laço. Ou seja, faz com que o
algoritmo pule deste ponto para o teste de condição de fim
de laço, ignorando os comandos que vierem após o continue
6.2 Break
Força o encerramento do laço. O algoritmo continua no
primeiro comando após o fim do laço
27
pressao = sensor * 4.56
mostre pressao
fim_para
repita
leia produto, valor, qtde
se ( qtde <= 0 ) continue
mostre ”Custo do” , produto , ” : ” , qtde*valor
até_que ( produto == ”banana” )
repita
leia temperatura
se ( temperatura < 0 ) break
mostre temperatura
até_que ( temperatura == 24 )
6.3 Contadores
programa contar_par
var i , valor, cont : inteiro
inicio
cont = 0
para i de 1 ate 10 passo 1 faça
ler valor
se ( valor % 2 == 0 )
então
cont = cont + 1
fim_se
fim_para
mostre “total de pares : “, cont
fim
programa somar_carga
var i , peso , soma: inteiro
produto : caractere
inicio
28
soma = 0
para i de 1 ate 20 passo 1 faça
ler produto , peso
soma = soma + peso
fim_para
mostre “Peso total da carga : “, soma
fim
6.4 Multiplicadores
programa fatorial
var i , num , fat : inteiro
inicio
fat = 1
ler num
para i de num ate 1 passo -1 faça
fat = fat * i
fim_para
mostre “Fatorial de “ , num , “ : “ , fat
fim
6.5 Sinalizadores
programa entrou_negativo
var i , num , flag : inteiro
inicio
flag = 0
para i de 1 ate 10 passo 1 faça
ler num
se ( num < 0 )
então
flag = 1
fim_se
fim_para
se ( flag == 1 )
então
mostre “Foi digitado valor negativo”
senão
mostre “Nao foi digitado valor negativo”
fim_se
fim
29
6.6 Maior
programa maior_valor
var i , num , maior: inteiro
inicio
para i de 1 ate 10 passo 1 faça
ler num
se ( i == 1 ) então maior = num
se ( num > maior ) então maior = num
fim_para
mostre “Maior valor digitado : “ , maior
fim
6.7 Menor
programa menor_valor
var i , num , menor: inteiro
inicio
para i de 1 ate 10 passo 1 faça
ler num
se ( i == 1 ) então menor = num
se ( num > menor ) então menor = num
fim_para
mostre “Menor valor digitado : “ , menor
fim
6.8 Exercícios
25) Escrever um algoritmo que gera e escreve os números
ímpares entre 100 e 200
26) FUAQ lê valores para uma variável VALOR até que seja
digitado o valor 0 (zero) para a variável VALOR. Verificar
a cada VALOR lido se ele é maior que 100 e menor que 500. Se
for, calcular e mostrar o somatório de todos os valores entre
101 e o VALOR lido; se não for, mostrar a mensagem “FORA DO
INTERVALO”.
30
28) FUAQ lê uma quantidade indeterminada de valores para uma
variável VALOR (após cada valor lido para VALOR o algoritmo
deve solicitar ao usuário se ele quer ler mais valores ou
não). Para cada VALOR lido verificar se é impar ou par. Se
for par, calcular e mostrar o fatorial de VALOR; se for
ímpar, calcular e mostrar o somatório dos valores entre 1 e
VALOR.
7 SUB-ROTINAS
Utilizadas para isolar trechos de códigos que façam uma
finalidade específica
31
Funções : quando a sub-rotina retorna valor para a
rotina que a chamou
7.1 Procedimentos
Estrutura:
procedimento nome_procedimento
var //var. locais–se houver
início
... // comandos
...
fim
exemplo:
procedimento calcula_fatorial
var valor , i , fat : inteiro
início
leia valor
fat = 1
para i de 1 até valor passo 1 faça
fat = fat * i
fim_para
mostre fat
fim
Chamada de um procedimento:
programa x
var i , qtd: inteiro
início
leia qtd
para i de 1 ate qtd passo 1 faça
calcula_fatorial()
fim_para
fim
7.2 Função
Estrutura:
32
função nome_func: <tipo_dado_retorno>
var //var.locais – se houver
início
... // comandos
...
retorna xxxxxx //valor dev.
fim
Exemplo:
programa x
var i , qtd , result : inteiro
início
leia qtd
para i de 1 ate qtd passo 1 faça
result = calcula_fatorial
mostre result
fim_para
fim
7.3 Parâmetros
São informações (valores) que passamos ou recebemos de uma
função ou procedimento
33
Passagem por referência : A função ou procedimento
recebe a informação e o que for alterada nela refletirá
na variável que passou a informação
Exemplo:
Exemplo:
34
início
leia valor
num = num * valor
fim
8 VETORES E MATRIZES
Agrupamento de várias informações dentro de uma mesma
variável
8.1 Vetor
Matrizes de uma dimensão (unidimensional)
Definida uma única variável com um determinado tamanho
(constante inteira e positiva)
Forma de representação:
nome_variável[ índice ]
Definição:
Var
35
nome : conjunto[1..TAM] de <tipo_dado>
Exemplo
Atribuição a vetores:
dados[ 1 ] = 10
dados[ 8-3 ] = num * 3
dados[ indice ] = 34
8.1.1 Exercício
32) FUAQ que crie uma rotina para leitura de um vetor de
inteiros de tamanho 10. Após, fazer outra rotina que mostre
o conteúdo do vetor
36
ímpares do vetor da seguinte forma: cada índice ímpar
receberá a soma de todos os valores contidos nos índices
pares anteriores a ele. Por fim, crie uma rotina que mostre
todo o vetor.
Forma de representação:
Cada índice de uma matriz pode ser visto como uma variável
Definição
Var
nome : conjunto[1..TAM_LIN][1..TAM_COL] de <tipo_dado>
Exemplo
dados[ 1 ][ 2 ] = 10
dados[ 8 ][ i ] = num * 3
dados[ ind1 ][ ind2 ] = 34
valor = dados[ 4 ][ 1 ]
valor = dados[ a ][ b ]
valor = dados[ 2 ][ 2 ] * 3
8.2.1 Exercícios
37
37) FUAQ leia uma matriz de inteiros de tamanho [20][20] e
mostre o somatório de todos os valores presentes na matriz.
Após, mostre o totalizador dos valores que estão na diagonal
principal.
39) FUAQ crie uma rotina para leitura de uma matriz [30][20]
de inteiros. Após, crie uma rotina para colocar em um vetor
os maiores valores contido em cada linha da matriz (no índice
0 do vetor colocar o maior valor contido na linha 0 da
matriz, assim sucessivamente). Por fim, crie uma rotina para
mostrar os valores do vetor.
40) FUAQ crie uma rotina que leia uma matriz [22][22] de
inteiros. Após, crie outra rotina que calcule o somatório do
triângulo superior da matriz, retornando este valor. Mostre
este somatório no programa principal.
38