Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
PROGRAMAR
DO ZERO
LÓGICA DE PROGRAMAÇÃO
DANIEL G. SOUTO
EDUARDO M. SILVA
WWW.CRIANDOCODIGO.COM.BR Criando
C ó d i g o
"O seu tempo é limitado, então não o desperdice
vivendo a vida de outra pessoa..."
STEVE JOBS
AUTORES
Daniel G. Souto
Eduardo M. Silva
DICAS
Segue aqui algumas dicas para que você possa obter o melhor aproveitamento
possível deste livro:
A ideia é que esse livro nunca tenha um fim. Ele será atualizado continuamente para
que você sempre esteja com o que há de mais moderno no estudo da lógica de programação.
A cada nova versão, eu mostro o que foi mudado para que você leia somente as partes
atualizadas (não tendo que ler o livro todo novamente, se não quiser ou não tiver tempo).
SUMÁRIO
1 ALGORITMOS ....................................................................................................... 8
1.1 Lógica de programação ............................................................................................. 8
1.2 Algoritmos ................................................................................................................. 8
1.3 Formas de representação ......................................................................................... 9
1.3.1 Descrição narrativa ....................................................................................................................... 9
1.3.2 Pseudocódigo ............................................................................................................................... 9
1.3.3 Diagrama de bloco ...................................................................................................................... 10
2 MEMÓRIA, TIPOS DE DADOS E VARIÁVEIS .......................................................... 13
2.1 Identificadores ......................................................................................................... 13
2.2 Tipos de dados primitivos ........................................................................................ 14
2.2.1 Inteiros ..................................................................................................................................... 14
2.2.2 Reais ........................................................................................................................................ 14
2.2.3 Literais ..................................................................................................................................... 14
2.2.4 Lógicos ..................................................................................................................................... 14
2.3 Constantes ............................................................................................................... 14
2.4 Variáveis................................................................................................................... 14
3 COMENTÁRIOS ................................................................................................... 18
4 VISUALG............................................................................................................. 20
5 OPERADORES .................................................................................................... 23
5.1 Operadores aritméticos........................................................................................... 23
5.2 Operadores relacionais ........................................................................................... 24
5.3 Operadores lógicos .................................................................................................. 24
5.3.1 Operador lógico E ....................................................................................................................... 25
5.3.2 Operador lógico OU ..................................................................................................................... 25
5.3.3 Operador lógico NAO ................................................................................................................... 25
5.3.4 Operador lógico XOU ................................................................................................................... 25
5.4 Exercícios................................................................................................................. 26
6 ESTRUTURAS DE CONTROLE ............................................................................. 28
6.1 Estrutura seqüencial ............................................................................................... 28
6.2 Estrutura de decisão ............................................................................................... 28
6.2.1 Decisão simples ......................................................................................................................... 28
6.2.2 Decisão composta ...................................................................................................................... 29
6.2.3 Seleção encadeada ..................................................................................................................... 30
6.2.4 Decisão múltipla ........................................................................................................................ 32
6.3 Estrutura de repetição ............................................................................................ 34
6.3.1 Variável de controle .................................................................................................................... 34
6.3.2 Laços condicionais ..................................................................................................................... 36
6.3.2.1 Teste lógico no início do laço .................................................................................................. 36
6.3.2.2 Teste lógico no final do laço .................................................................................................... 37
6.3.3 Interrompendo as estruturas de laço ............................................................................................ 38
6.4 Exercícios................................................................................................................. 39
7 ESTRUTURA DE DADOS HOMOGÊNEAS .............................................................. 42
7.1 Vetores ..................................................................................................................... 42
7.2 Matrizes ................................................................................................................... 43
7.3 Exercícios................................................................................................................. 44
8 MODULARIZAÇÃO .............................................................................................. 46
8.1 Subprogramas ......................................................................................................... 46
8.2 Procedimentos ........................................................................................................ 46
8.3 Funções ................................................................................................................... 47
8.4 Variáveis locais e globais......................................................................................... 48
8.5 Passagem de parâmetros por referência ............................................................... 48
8.6 Funções do VisuAlg ................................................................................................. 49
8.7 Exercícios................................................................................................................. 52
9 RESOLUÇÃO DOS EXERCÍCIOS ........................................................................... 54
1 ALGORITMOS
1 Algoritmos
1.2 Algoritmos
Definição:
1. Um algoritmo é um conjunto não ambíguo e ordenado de passos executáveis que
definem um processo finito1.
Exigem várias formas que podem ser usadas na representação de algoritmos, as mais
comumente utilizadas são: Descrição narrativa, pseudocódigo e fluxograma.
1.3.2 Pseudocódigo
O código inicia com a palavra algoritmo que define o título do programa. Em var temos
a área onde as variáveis são declaradas. inicio e fimalgoritmo determinam o inicio e fim da
área reservada aos comandos.
Terminação sinaliza o
início ou fim do fluxo de um
programa.
Fluxo do algoritmo
representa o sentido do fluxo
conectando os símbolos.
Processo utilizado
para indicar que algum
cálculo, atribuição ou outra
manipulação de dados será
realizado.
Entrada de dados
indica que novos dados serão
inseridos atraves de algum
dispositivo.
Saída de dados indica
a saída dos dados
processados.
Decisão determina
uma mudança no fluxo após
o resultado de uma
comparação.
Preparação
Representa um grupo de
operações que não estão
Conector utilizado
para conectar pares.
2.1 Identificadores
•
• Não são permitidos espaços em branco
• Os caracteres utilizados devem ser números, letras minúsculas, letras maiúsculas e o
caractere sublinhado
• Palavras reservadas não podem ser usadas como identificadores
Alguns exemplos:
Identificadores válidos
X
nome_aluno
rua2020
abc_123
LOGICA
Identificadores inválidos
3X // iniciando com número
2.2.1 Inteiros
2.2.2 Reais
2.2.3 Literais
São tipos de dados que tem como característica possuírem uma cadeia de caracteres
como delimitadores. Uma cadeia de caracteres é também conhecida como string. Exemplos:
Avenida Paulista, 1234 99)3444-
2.2.4 Lógicos
São tipos de dados que recebem valores verdadeiro ou falso. Também conhecido
como tipo booleano devido à contribuição do matemático e filósofo George Boole.
2.3 Constantes
As constantes são valores fixos e que não podem ser alterados durante a execução de
um programa. Exemplos:12, 102.48, "palavra", -5.8, entre outros.
2.4 Variáveis
Uma variável pode armazenar apenas um valor e seu conteúdo pode ser modificado
programaticamente durante a execução do programa. Tal modificação é possível ao executar
o comando de atribuição. O comando de atribuição é representado por uma seta apontando
para esquerda.
Uma variável é também um identificador e na figura 2.1 temos uma variável recebendo
um valor (expressão), pode- A seguir alguns
exemplos de uso:
Os nomes das variáveis devem começar por uma letra e depois conter letras, números
ou sublinhado, até um limite de 30 caracteres no VisuAlg. A declaração de uma variável deve
seguir o padrão mostrado a seguir:
<lista-de-variáveis>: <tipo-de-dado>
valor: real
x, y, z: inteiro
aprovado: logico
nome, rua, cidade, telefone: caractere
As variáveis são declaradas após a palavra-chave var e recebem valor após inicio:
Algoritmo "exemplo"
var
nota: real
X, Y, Z: inteiro
nome: caractere
resposta: logico
inicio
Os comentários servem para descrever partes, ou blocos, de código para facilitar a sua
leitura ou quando o programador passar muitos dias sem trabalhar e ter dificuldade em
relembrar a funcionalidade de determinado código. No VisuAlg o delimitador // indica que a
linha, ou parte da linha, é um comentário, exemplo:
Assim que você inicia o VisuAlg ele nos fornece um esqueleto de um programa. Como
pode ser visto no quadro abaixo há vários comentários com informações sobre o autor e as
seções do código.
algoritmo "semnome"
// Disciplina : [Linguagem e Lógica de Programação]
// Professor : Antonio Carlos Nicolodi
// Descrição : Aqui você descreve o que o programa faz! (função)
// Autor(a) : Nome do(a) aluno(a)
// Data atual : 23/3/2018
var
// Seção de Declarações das variáveis
inicio
// Seção de Comandos, procedimento, funções, operadores, etc...
fimalgoritmo
Neste capítulo iremos apresentar o editor VisuAlg que permite criar, interpretar e
executar algoritmos em português estruturado como se fosse um programa de computador.
O VisuAlg simula um ambiente de execução de um programa real onde os resultados
serão mostrados numa tela de texto (semelhante ao MS-DOS), com recursos como
depuração de erros e a possibilidade de exportar o código para outras linguagens de
programação.
Neste e-book todos os exemplos de código serão criados na versão 3.0.6.5 do VisuAlg,
para baixa-lo acesse o site http://visualg3.com.br.
Na tela principal do VisuAlg (figura 4.1) você tem a área para digitação do código, área
para visualizar o valor de cada variável e uma área com os resultados.
O menu que você irá usar bastant .2), as opções desse
menu lhe permitirá executar os algoritmos apresentados em cada capitulo.
Para rodar um algoritmo utilize a tecla de atalho F9. Quando quiser testar o código
linha por linha coloque o cursor na linha desejada e tecle F5 para ativar o ponto de parada
(breakpoint) e tecle F8 para rodar o algoritmo passo a passo (modo depuração).
Rodar Passo a passo: Inicia (ou continua) a execução linha por linha do pseudocódigo,
dando ao usuário a oportunidade de acompanhar o fluxo de execução, os valores das
variáveis e a pilha de ativação dos subprogramas.
Rodar com tempo: Insere um atraso (que pode ser especificado) antes da execução de
cada linha. Também realça em fundo azul o comando que está sendo executado, da mesma
forma que na execução passo a passo.
Executar em modo DOS: Com esta opção ativada, tanto a entrada como a saída-
padrão passa a ser uma janela que imita o MS-DOS, simulando a execução de um programa
neste ambiente.
Perfil: Após a execução de um pseudocódigo, exibe o número de vezes que cada umas
das linhas foi executada. É útil para a análise de eficiência (por exemplo, métodos de
ordenação)
Para criar uma expressão aritmética devemos utilizar variáveis de tipo inteiro ou real e
os operadores aritméticos. Existem dois tipos de operadores aritméticos: unários e binários.
• Unários: Operadores que usam apenas um operando. Por exemplo, quando queremos
inverter um valor de positivo para negativo.
• Binários: Operadores que usam dois operando. Exemplos: exponenciação,
multiplicação, adição, subtração e divisão.
2 Binário ^ Exponenciação
3 Binário / Divisão
3 Binário * Multiplicação
4 Binário + Adição
4 Binário - Subtração
Tabela 5.1
Exemplos de uso de operadores:
x <- 3 * 10
y <- x - 1
x <- x * y + 5
z <- x + (y * x)
x <- (y / z)^2
Expressão original:
𝑥+𝑦
[ + (10 𝑥 4)] + 18
2
Expressão em VisuAlg:
((x+y)/2+(10*4))+18
Os operadores relacionais são usados para comparar dois valores do mesmo tipo. São
operadores binários e retornam apenas dois valores: verdadeiro ou falso.
Símbolo Significado
= Igual
< Menor
> Maior
<= Menor ou igual
>= Maior ou igual
<> Diferente
Tabela 5.2
Exemplos:
x <- 8
y <- 1
nome <- "Maria"
letra <- "A"
x = 4 //falso
x > 1 //verdadeiro
x = x + 1 //falso
x = y //falso
y <= x //verdadeiro
y <> x //verdadeiro
nome = "João" //falso
letra < "B" //verdadeiro
Operador que resulta VERDADEIRO somente se seus dois operandos lógicos forem
verdadeiros. Na tabela 5.3 temos a tabela verdade do operador E.
Operador que resulta VERDADEIRO quando um dos seus operandos lógicos for verdadeiro.
A seguir, na tabela 5.4, temos a tabela verdade do operador OU.
Operando Resultado
Falso Verdadeiro
Verdadeiro Falso
Tabela 5.5
Lê-se ou exclusivo. Operador que resulta VERDADEIRO se seus dois operandos lógicos
forem diferentes, e FALSO se forem iguais. A tabela 5.6 mostra a tabela verdade do operador XOU.
Exemplos:
x <- 8
y <- 1
r <- falso
(x > 0) ou (y = 3) //verdadeiro
nao r //verdadeiro
nao ((x > 0) ou (y = 3)) //falso
(x <> y) e ("A" = "B") ou (r = falso) //verdadeiro
(x > 0) e (x < 5) //falso
(x > 0) xou (x < 5) // verdadeiro
5.4 Exercícios
Veja no capítulo 8.6 como usar os comandos LEIA para entrada de dados e ESCREVA para
saída de dados (imprimir textos e variáveis na tela).
5. Leia dois números inteiros para as variáveis X e Y, e realize a troca de valores entre as
duas variáveis. Faça com que a variável X tenha o valor Y e a variável Y tenha o valor de X.
Imprima os valores trocados.
6. Leia dois números reais A, B e C. Crie uma variável X e atribua a ela o quadrado da soma
de A, B e C. Imprima o resultado de X.
7. Ler dois números inteiros que serão o numerador e denominador de uma fração e atribuir
o resultado a uma variável real. Imprima o resultado.
No capítulo 1 vimos que os algoritmos são compostos por blocos de código que se
conectam por meio de três estruturas: sequenciação, seleção e repetição. Neste capítulo
veremos em detalhes como construir cada estrutura.
inicio
x <- 100
y <- 200
soma <- x +y
escreva(soma)
fimalgoritmo
se <expressão-lógica> entao
<sequência-de-comandos>
fimse
inicio
x <- 10
fimalgoritmo
Figura 6.1
se <expressão-lógica> entao
<sequência-de-comandos>
senao
<sequência-de-comandos>
fimse
inicio
escreva("digite um número e tecle enter: ")
leia(numero)
fimalgoritmo
Nota: Existindo duas ou mais expressões lógicas após o comando SE essas expressões devem ser
agrupadas usando parênteses.
Figura 6.2
se <expressão-lógica-1> entao
Exemplo de algoritmo:
inicio
escreva("digite a nota media do aluno: ")
leia(media)
fimalgoritmo
Figura 6.3
6.2.4 Decisão múltipla
escolha<expressão-de-seleção>
caso<exp-1>, <exp-2>, ..., <exp-n>
<sequência-de-comandos-1>
caso<exp-1>, <exp-2>, ..., <exp-n>
<sequência-de-comandos-2>
.
.
.
outrocaso
<sequência-de-comandos-extra>
fimescolha
algoritmo "Times"
var
time: caractere
inicio
escreva("Entre com o nome de um time de futebol: ")
leia(time)
escolha time
caso "Flamengo", "Fluminense", "Vasco", "Botafogo"
escreval("É um time carioca.")
caso "São Paulo", "Palmeiras", "Santos", "Corinthians"
escreval("É um time paulista.")
outrocaso
escreval("É de outro estado.")
fimescolha
fimalgoritmo
Figura 6.4
para<variável>de<valor-inicial>ate<valor-limite> [passo<incremento>]
faca
<sequência-de-comandos>
fimpara
<valor-inicial> é uma expressão que especifica o valor de inicial da variável contadora antes
da primeira repetição do laço.
<valor-limite> é uma expressão que especifica o valor máximo que a variável contadora pode
alcançar.
<incremento> é opcional. Quando presente é uma expressão que especifica o incremento que
será acrescentado à variável contadora em cada repetição do laço. Quando esta opção não é
utilizada, o valor padrão de <incremento> é 1. É possível especificar valores negativos para
<incremento>.
fimpara Indica o fim da sequência de comandos a serem repetidos. Cada vez que o programa
chega neste ponto, é acrescentado à variável contadora o valor de <incremento>, e
comparado a <valor-limite>.
fimalgoritmo
fimalgoritmo
Figura 6.5
São laços em que a variável que controla a repetição é testada no início ou no final. A
repetição está condicionada a atualização da variável no interior do laço. Caso a variável não
seja incrementada o laço nunca terminará, deixando o programa em loop infinito.
Estrutura de laço que realiza teste lógico no início do loop, verificando se o valor da
expressão é VERDADEIRO antes da executar os comandos internos do loop.
enquanto<expressão-lógica>faca
<sequência-de-comandos>
fimenquanto
fimalgoritmo
Figura 6.6
repita
<sequência-de-comandos>
ate<expressão-lógica>
fimalgoritmo
Figura 6.7
repita
x <- x + 1
escreva(x)
se x = 10 entao
interrompa
fimalgoritmo
6.4 Exercícios
9. Entrar com um número e imprimir se ele está na faixa de 1 a 30 e qualquer outro número
imprima uma mensagem dizendo que está fora da faixa.
10. Ler uma entrada de caracteres que identifique as palavras azul, verde ou vermelho como
uma cor primaria e qualquer outra palavra como cor desconhecida.
13. Entrar com três números e armazenar o maior número em uma variável.
15. Entrar com a idade de uma pessoa e informar se é maior de idade, menor de idade ou se
é maior ou igual a 65 anos.
17. Ler a entrada de três varáveis A, B e X. Somente será efetuado o cálculo de C <-
(A+B)*X , se o valor da variável X não for maior que 3. Qualquer valor de 3 para cima efetua
o cálculo C <- (A-B)*X. Utilize o operador NAO para este exercício.
18. Entrar com uma temperatura em graus centígrados e exibi-la em Fahrenheit. A fórmula
9.𝐶 + 160
de conversão é𝐹 = onde F é a temperatura em Fahrenheit e C é a temperatura em
5
centígrados.
19. Criar um algoritmo que calcule o Índice de Massa Corporal (IMC), usando a seguinte
formula:
𝑝𝑒𝑠𝑜
IMC =
𝑎𝑙𝑡𝑢𝑟𝑎2
20. Crie um algoritmo que leia o dia, mês e ano e imprima se a data é válida ou não.
23. Escreva um algoritmo que crie 30 números aleatórios entre 15 e 53 e imprima somente
os números impares. Para gerar um número aleatório use a função RandI(limite) que recebe
como parâmetro um número inteiro limite.
24. Utilizando um laço crie um algoritmo que permita a entrada de 4 números reais e
imprima a média aritmética.
25. Imprima a tabuada de multiplicar (de 1 até 10) de um número qualquer. O número deve
ser inserido pelo usuário.
26. Utilizando a estrutura de seleção múltipla faça um algoritmo que simule uma calculadora
de números inteiros que possua as quatro operações básicas. Permita que o usuário possa
sair seja pressionada.
7.1 Vetores
São variáveis que tem o mesmo nome mas podem armazenar uma informação
diferente do mesmo tipo. Conhecido como variável indexada, tabela ou array, uma variável
vetor possui índices que indicam as posições onde o valor está armazenado. A figura 7.1
representa um vetor:
V= 5 2 7 1 0 8 3
Figura 7.1
Índice Elemento
1 5
2 2
3 7
4 1
5 0
6 8
7 3
Sintaxe de um vetor:
<nome_da_variavel>:vetor[<coluna_inicial>..<coluna_final>]de<tipo_de
_dado>
algoritmo "vetores"
var
vet: vetor [1..10] de inteiro
j: inteiro
inicio
vet[1] <- 5
vet[2] <- 2
vet[3] <- 7
vet[4] <- 41
vet[5] <- 3
vet[6] <- 10
fimalgoritmo
7.2 Matrizes
As matrizes são vetores bidimensionais que utilizam dois índices para representarem
as linhas e colunas. Na figura 7.2 temos um exemplo de matriz 3x4:
M= 4 10 9 6
3 5 1 31
6 32 42 8
Figura 7.2
Podemos acessar os elementos dos arrays através dos índices de linha e coluna:
1 2 3 4
1 4 10 9 6
2 3 5 1 31
3 6 32 42 8
No exemplo abaixo utilizamos dois laços para preencher cada posição da matriz com o
valor zero. Observe que o laço mais externo percorre as linhas da matriz enquanto o outro
laço percorre as colunas da matriz:
algoritmo "Matrizes"
var
matriz: vetor [1..3, 1..4] de inteiro
linha, coluna: inteiro
inicio
fimalgoritmo
7.3 Exercícios
27. Crie um algoritmo que permita a entrada de 4 nomes que serão armazenados em um
vetor e imprima-os na ordem inversa usando um laço.
29. Escreva um algoritmo que preencha uma matriz 10x10 com números inteiros aleatórios
com valores entre 1 e 100 e imprima no formato de uma tabela. Para gerar um número
aleatório use a função RandI(limite).
30. Elabore um algoritmo que leia a entrada de um vetor A com 10 elementos. Construa um
vetor B e preencha-o com os valores do vetor A multiplicados pelo número do índice.
Imprima o vetor B em ordem decrescente.
8.1 Subprogramas
8.2 Procedimentos
Sintaxe de um procedimento:
procedimento<nome-de-procedimento> [(<sequência-de-declarações-de-
parâmetros>)]
// Seção de Declarações Internas
inicio
// Seção de Comandos
fimprocedimento
procedimento soma
inicio
resultado <- x + y
fimprocedimento
var
resultado: inteiro
inicio
soma(10, 20)
escreva(resultado)
fimalgoritmo
8.3 Funções
O valor retornado pela função será do tipo especificado na sua declaração <tipo-de-
dado>. Em alguma parte da função, este valor deve ser retornado através do comando
retorne.
inicio
escreva(soma(10,20))
fimalgoritmo
Um subprograma pode ter suas próprias variáveis da mesma forma que um programa
principal. As variáveis declaradas no início do algoritmo são chamadas de globais, elas são
declaradas depois da palavra-chave var. As variáveis globais podem ser vistas em qualquer
parte do programa principal e inclusive em todos os subprogramas.
Quando as variáveis são declaradas no início de um subprograma elas são chamadas
de locais. Essas variáveis locais só podem ser usadas dentro do subprograma que as
declarou.
Exemplo de declaração de variáveis locais e globais:
var
total: inteiro// variável global
inicio
total <- 40 + 30
escreval("Total da função: ", soma(10, 20))
escreval("Total da variável global: ", total)
fimalgoritmo
No exemplo acima temos duas variáveis de mesmo nome chamada total, uma
declarada no início do programa (global) e outra declarada no início da função (local). A
variável local da função soma não afetará a variável global.
var
X: inteiro
inicio
X <- 1
escreva("Valor de X antes da função soma: ", X)
soma(X)
escreva("Valor de X depois da função soma: ", X)
fimalgoritmo
var
X: inteiro
inicio
X <- 1
escreva("Valor de X antes da função soma: ", X)
soma(X)
escreva("Valor de X depois da função soma: ", X)
fimalgoritmo
escreva("visualg")
escreva(x)
escreva("123", x, y, z, "abc")
escreva("aluno: ", nome, "idade: ", numero)
escreval(<lista-de-expressões>) Idem ao anterior, com uma única diferença que pula uma
linha em seguida.
leia(x)
leia(nome)
leia(rua, endereco, x, y)
Asc (s: caracter) - Retorna um inteiro com o código ASCII do primeiro caracter da expressão.
Carac (c: inteiro) - Retorna o caractere cujo código ASCII corresponde à expressão.
Copia (c: caracter; p, n: inteiro) - Retorna um valor do tipo caracter contendo uma cópia
parcial da expressão, a partir do caracter p, contendo n caracteres. Os caracteres são
numerados da esquerda para a direita, começando de 1.
Abs(expressão) - Retorna o valor absoluto de uma expressão do tipo inteiro ou real. Equivale
a | expressão | na álgebra.
Exp( base, expoente) - Retorna o valor de base elevado a expoente, sendo ambos expressões
do tipo real.
8.7 Exercícios
31. Escreva um algoritmo que receba dois números reais e uma função chamada maior que
retorne o maior número entre dois números passados por parâmetro.
32. Elabore um algoritmo que tenha uma função para calcular e retornar o valor de uma
potência de um número qualquer. A função receberá dois parâmetros, o primeiro será a base
e o segundo o expoente, onde p1 será elevado a p2. Use o operador de exponenciação para
efetuar o cálculo. O usuário deve fornecer os dois números reais para função.
33. Elabore um algoritmo que tenha um subprograma do tipo função que retorne o fatorial
de um número inteiro qualquer. Fatorial é o produto dos números naturais desde 1 até o
inteiro n. Por exemplo, no fatorial de 5 temos que 5! = 5 x 4 x 3 x 2 x 1 ou seja 5! = 120.
34. Criar um algoritmo com uma função que receba uma string como parâmetro e retorne
uma nova string. Essa nova string terá o mesmo conteúdo da string do parâmetro com a
primeira letra modificada para ficar maiúscula. Para realizar este exercício você precisará
das seguintes funções do VisuAlg: Maiusc(c: caracter) e Copia(c: caracter; p, n: inteiro).
Capítulo 5
1.
algoritmo "exercício 1"
var
num1, num2: inteiro
inicio
escreval("Entre com um número: ")
leia(num1)
escreval("Entre com outro número: ")
leia(num2)
escreval(num1, "", num2)
fimalgoritmo
2.
algoritmo "exercício 2"
var
produto: inteiro
inicio
produto <- 15 * 36
escreva(produto)
fimalgoritmo
3.
algoritmo "exercício 3"
var
media: real
inicio
media <- (4 + 5 + 2) / 3
escreva("Média aritmética é: ", media)
fimalgoritmo
4.
algoritmo "exercício 4"
var
nome, endereço, telefone: caractere
inicio
escreva("Entre com nome: ")
leia(nome)
escreva("Entre com endereço: ")
leia(telefone)
escreva("Entre com telefone: ")
leia(telefone)
escreval("Nome: ", nome)
escreval("Endereço: ", endereco)
5
algoritmo "exercício 5"
var
X, Y, aux: inteiro
inicio
escreva("Digite o número X: ")
leia(X)
escreva("Digite o número Y: ")
leia(Y)
aux<- X
X <- Y
Y <- aux
escreval("X: ", X)
escreval("Y: ", Y)
fimalgoritmo
6.
algoritmo "exercício 6"
var
A, B, C, X: real
inicio
escreva("Entre com o número A: ")
leia(A)
escreva("Entre com o número B: ")
leia(B)
escreva("Entre com o número C: ")
leia(C)
X <- (A + B + C) ^ 2
escreva("Valor de X é ", X)
fimalgoritmo
7.
algoritmo "exercício 7"
var
num, den: inteiro
res: real
inicio
escreva("Entre com o numerador: ")
leia(num)
escreva("Entre com o denominador: ")
leia(den)
res <- num / den
escreva("resultado: ", res)
fimalgoritmo
Capítulo 6
9.
algoritmo "exercício 9"
var
numero: inteiro
inicio
leia(numero)
10.
algoritmo "exercício 10"
var
cor: caractere
inicio
leia(cor)
12.
algoritmo "exercício 12"
var
num: real
inicio
escreva("Digite um número: ")
leia(num)
se num > 0 entao
escreval("Positivo")
senao
se num < 0 entao
escreval("Negativo")
senao
escreval("Nulo")
fimse
fimse
fimalgoritmo
13.
algoritmo "exercício 13"
var
a, b, c, maior: real
inicio
escreva("Digite um número: ")
leia(a)
escreva("Digite outro número: ")
leia(b)
escreva("Digite mais um número: ")
leia(c)
maior <- a
se b > maior entao
maior <- b
fimse
se c > maior entao
maior <- c
fimse
14.
algoritmo "exercício 14"
var
a, b, c, aux: real
inicio
escreva("Digite um número: ")
leia(a)
escreva("Digite outro número: ")
leia(b)
escreva("Digite mais outro número: ")
leia(c)
se a > b entao
aux <- a
a <- b
b <- aux
fimse
se a > c entao
aux<- a
a <- c
c <- aux
fimse
se b > c entao
aux<- b
b <- c
c <- aux
fimse
escreval("Ordem crescente: ", a, "", b, "", c)
fimalgoritmo
15.
algoritmo "exercício 15"
var
idade: inteiro
inicio
escreva("Digite sua idade: ")
leia(idade)
se idade >= 65 entao
escreva("maior de 65 anos")
senao
se idade >= 18 entao
escreva("maior de idade")
senao
escreva("menor de idade")
fimse
fimse
fimalgoritmo
escolha mes
caso 1
escreva("janeiro")
caso 2
escreva("fevereiro")
caso 3
escreva("março")
caso 4
escreva("abril")
caso 5
escreva("maio")
caso 6
escreva("junho")
caso 7
escreva("julho")
caso 8
escreva("agosto")
caso 9
escreva("setembro")
caso 10
escreva("outubro")
caso 11
escreva("novembro")
caso 12
escreva("dezembro")
outrocaso
escreva("mês inexistente")
fimescolha
fimalgoritmo
17.
algoritmo "exercício 17"
var
A, B, C, X: inteiro
inicio
leia(A, B, X)
escreva(C)
18.
algoritmo "exercício 18"
var
f, c: real
inicio
escreva("Entre com o valor da temperatura em graus centigrados: ")
leia(c)
f <- (9 * c + 160) / 5
escreval("O valor da temperatura em graus fahrenheit é: ", f)
fimalgoritmo
19.
algoritmo "exercício 19"
var
peso, altura, imc: real
inicio
escreva("Digite o peso: ")
leia(peso)
escreva("Digite a altura: ")
leia(altura)
imc <- peso / altura ^ 2
20.
algoritmo "exercício 20"
var
dia, mes, ano: real
val: logico
inicio
escreva("Digite o dia: ")
leia(dia)
21.
algoritmo "exercício 21"
var
i: inteiro
inicio
para i de 1 ate 100
escreval(i)
fimpara
fimalgoritmo
22.
algoritmo "exercício 22"
var
i: inteiro
23.
Algoritmo "exercício 23"
var
i, r: inteiro
inicio
para i de 1 ate 30 faca
r <- randi(53) + 15
se r % 2 <> 0 entao
escreval(r)
fimse
fimpara
Fimalgoritmo
24.
algoritmo "exercício 24"
var
i, num, total: real
inicio
total <- 0
25.
algoritmo "exercício 25"
var
i, x: inteiro
inicio
leia(x)
repita
escreval("Entre com dois números: ")
leia(x, y)
Capítulo 7
27.
algoritmo "exercício 27"
var
vnome: vetor [1..4] de caractere
nome: caractere
i: inteiro
inicio
para i de 1 ate 4 faca
escreva("Entre com um nome: ")
leia(nome)
vnome[i] <- nome
fimpara
28.
algoritmo "exercicio 28"
var
nome: vetor[1..10] de caractere
i, j: inteiro
X: caractere
inicio
para i de 1 ate 10 faca
escreva("Digite o nome ",i,": ")
leia(nome[i])
fimpara
29.
algoritmo "exercício 29"
var
numeros: vetor[1..10, 1..10] de inteiro
i, j: inteiro
inicio
para i de 1 ate 10 faca
para j de 1 ate 10 faca
numeros[i,j] <- RandI(100) + 1
escreva(numeros[i,j], " ")
fimpara
escreval()
fimpara
fimalgoritmo
30.
algoritmo "exercício 30"
var
A, B: vetor[1..12] de inteiro
Capítulo 8
31.
algoritmo "exercício 31"
var
num1, num2: real
inicio
escreva("Entre com número 1: ")
leia(num1)
escreva("Entre com número 2: ")
leia(num2)
escreva(maior(num1, num2))
fimalgoritmo
var
num, pot: real
inicio
escreva("Entre com um número: ")
leia(num)
escreva("Entre o valor da potência: ")
leia(pot)
escreva("resultado: ", potencia(num, pot))
fimalgoritmo
33.
algoritmo "exercício 33"
retorne fat
fimfuncao
var
num: inteiro
inicio
escreva("Entre com um número: ")
leia(num)
escreva("Fatorial de", num, ": ", fatorial(num))
fimalgoritmo
34.
algoritmo "exercício 34"
var
txt: caractere
inicio
escreva("Entre com um texto: ")
leia(txt)
escreva(maiusculo(txt))
fimalgoritmo