Você está na página 1de 57

Tec.

de Desenvolvimento
de Algoritmos
A LG O R I T M O S ? VA R I ÁV E I S
I N T E R P R E TA D O R / C O M P I L A D O R E N T R A DA E S A Í D A
TIPOS DE DADOS F U N Ç Õ E S M AT E M ÁT I C A S

Professores: Alcides/Ana/Cristiane/Ledón/Marco/Karina 2023


Algoritmo?
Em computação pode ser definido como uma sequência de instruções ou operações
básicas, cuja execução, em tempo finito resolve um problema computacional.
A partir do algoritmo será construído um programa, que estará escrito em alguma
linguagem de programação para que possa ser executado em um computador.
Como o algoritmo descreve uma lógica geral de solução, poderá ser programado em
diferentes linguagens de programação...
Algoritmo – Representação em Pseudocódigo

ou...
Como a máquina entende os códigos?
Para que o computador "entenda" um programa escrito em uma linguagem (de alto
nível) é necessário um meio de tradução entre a linguagem de alto nível utilizada no
programa e a linguagem de máquina.

Para essa tarefa temos basicamente dois métodos:


▪ Compilador
▪ Interpretador
Interpretador
Traduz e faz a checagem da sintaxe e envia para execução, instrução por instrução.
Precisa estar presente todas as vezes que vamos executar o programa e o processo
acima é repetido.
Programa
Fonte EXECUÇÃO
INTERPRETADOR Resultados
Linguagem
de alto
nível

Vantagem: consome menos memória


Desvantagem: execução mais lenta
Exemplo: Uma página html é interpretada pelo Navegador.
Compilador
Traduz o programa escrito em uma linguagem de programação para um programa
equivalente escrito em linguagem de máquina (programa-objeto).
Programa
Programa
Fonte EXECUÇÃO
Objeto
COMPILADOR Resultados
Linguagem
Linguagem de
de alto
baixo nível
nível
Vantagens:
▪ Velocidade de execução
▪ Oculta o código fonte
Desvantagem: A cada alteração no programa fonte é necessário gerar novamente o
programa-objeto
Tipos de Dados
Quando especificamos um algoritmo, detalhamos:
os DADOS (números binários, isto é, sequências de 0s e 1s, armazenados na
memória, correspondem à porção das informações a serem processadas) que serão
processados e
as INSTRUÇÕES (ou comandos, comandam o funcionamento da máquina e
determinam como devem ser manipulados os dados) que vão operar sobre esses.
O objetivo é classificar os dados de acordo com o tipo de informação contida neles. A
classificação apresentada não se aplica a nenhuma linguagem de programação
específica.
Tipos de Dados
inteiro: informações que não possuem componente decimal ou fracionário, podendo
ser positivo ou negativo.
real: informações que podem possuir componentes decimais ou fracionários, podem
ser positivos ou negativos. A simples existência do ponto decimal diferencia um
dado numérico do tipo inteiro de um do tipo real.
literial ou caracteres: é constituído por uma sequência de caracteres contendo letras,
dígitos e/ou símbolos especiais. São representados nos algoritmos pela coleção de
caracteres, delimitada pelas aspas (“texto”) ou aspas simples para um caracter (‘p’).
lógico: informação que podem assumir apenas dois possíveis valores: verdadeiro ou
falso, sim/não, 1/0, true/false.
Tipos de Dados
Tipos Exemplo de utilização
numérico inteiro idade, ano, quantidade de filhos
real salário, peso, altura
(separador de casas decimais é o ponto)
texto literal opção, primeira letra do nome,
(representa 1 caracter, aspas simples ou operação matemática,
sequencia de caracteres, aspas duplas) nome, cargo, endereço
lógico logico formado, solteiro
(verdadeiro ou falso)
Tipos de Dados Primitivos – Java
Classificação Tipo Descrição
Lógico boolean Pode possuir valores true (verdadeiro) ou false (falso)
byte Abrange de -128 a 127 (8 bits)
short Abrange de -32768 a 32767 (16 bits)
Inteiro
int Abrange de -2.147.483.648 a 2.147.483.647 (32 bits)
long Abrange de -263 a 263 - 1 (64 bits)
Ponto float Abrange de -3.4028E+38 a 3.4028E+38 (32 bit) com precisão simples
flutuante double Abrange de -1.7976E+308 a 1.7976E+308 (32 bit) com precisão dupla
Caracter char Pode armazenar um caracter Unicode (16 bits) ou um inteiro entre 0 e 65535

O double é a opção padrão para a representação de números em ponto flutuante,


devido a baixa precisão do tipo float.
Tipos de Dados Primitivos (C#)
Tipo Tamanho em Bits Valores
bool 8 true ou false
char 16 \u0000' a '\uFFFF
byte 8 0 a 255
sbyte 8 -128 a 127
short 16 -32768 a 32767
ushort 16 0 a 65535
int 32 -2147483648 a 2147483647
uint 32 0 a 4294967296
long 64 -9223372036854775808 a 9233372036854775807
ulong 64 0 a 18446744073709551615
decimal 128 1 X 10e-28 a 7,9 x 10e 28
float 32 1,5 X 10e-45 a 3,4 x10e38
double 64 5,0x10e-324 a 1,7x10e308
Variáveis
Espaço de memória que pode receber um valor e sofrer alteração no decorrer do
algoritmo/tempo.
Toda variável tem um nome único que a identifica (identificador), um valor e o tipo
correspondente à informação a ela atribuída.
Variáveis
Nos algoritmos, cada variável corresponde a uma posição de memória.
Embora uma variável possa assumir diferentes valores, ela só pode armazenar um
valor a cada instante.
Uma variável possui três atributos:
▪ um nome (ou identificador),
▪ um tipo de dado e
▪ a informação por ela guardada.
Cada linguagem de programação estabelece suas próprias regras de formação de
nomes de variáveis.
Variáveis
O nome de uma variável deve ser representativo do seu conteúdo e possui as seguintes
regras:
1. Não pode começar com números, apenas com letras
2. Não pode conter espaços em branco
3. Não pode conter caracteres especiais (#, ?, !, @, +, -, ...)
4. Não pode ser palavra reservada
Válidos Inválidos
qtde_filhos meu nome
idade 1tentativa
nota1 Real
Nome_Completo ficha#2
Declaração de Variáveis
Todas as variáveis utilizadas nos algoritmos devem ser definidas antes de serem
utilizadas. Isto se faz necessário para permitir que o compilador reserve um espaço
na memória para as mesmas.
Para indicar o tipo de uma ou mais variáveis é feita a declaração de variáveis. A partir
do momento da declaração das variáveis, é feita uma associação do nome escolhido,
com a respectiva posição de memória.
Exemplo:
inteiro number1,number2
real arquivo
literal nome
lógico escolha
Constantes
Valor fixo, numérico ou não, que deve permanecer inalterado no decorrer da
execução do algoritmo.
Em programação geralmente as constantes são declaradas com letras maiúsculas.
Após sua declaração, fazemos a inicialização com o valor que será fixo em todo o
nosso programa.
As regras de criação do nome, seguem as mesma de variáveis.
Podemos utilizar a palavra constante em pseudocódigo.
A forma de criar uma constante em programação varia conforme a linguagem de
programação.
Exemplo:
constante real PI = 3.14
constante inteiro VOLUME_MAX = 100
Inicialização de Variáveis
Existem várias maneiras de atribuir valores a variáveis:
Dizendo no algoritmo qual o valor a variável deve assumir:

inicio
real preco
preco = 12.99
Inicialização de Variáveis
Existem várias maneiras de atribuir valores a variáveis:
Definir que uma variável assuma o valor de uma outra variável:

inicio
inteiro n1,n2
n1 = 10
n2 = n1
Inicialização de Variáveis
Existem várias maneiras de atribuir valores a variáveis:
Atribuir uma variável o resultado de uma expressão;

inicio
real a,b,c
a = 12.05
b = 5.20
c = a*b
Usuário digitar o valor (comando de entrada, como veremos a seguir)
Comandos de Entrada e Saída (Input/Output)
Os algoritmos precisam ser “alimentados” com dados provenientes do meio externo para
efetuarem as operações e cálculos e é necessário também mostrar os resultados.

Comando de entrada:

LEIA ➔ tem como finalidade atribuir o dado a ser fornecido à variável identificada.

Exemplo: leia (variável)


Comandos de Entrada e Saída (Input/Output)
Comando de saída:

ESCREVA ➔ cuja finalidade é exibir uma mensagem, essa mensagem pode ser um
texto ou o conteúdo de uma variável, ou ambos juntos

Exemplos:
escreva (“Mensagem”)
escreva (“Mensagem” + variável)
escreva (variável)
Exemplos de aplicação
1- Crie um algoritmo que solicita ao usuário a sua idade e armazena essa informação em
uma variável, solicita também a profissão e armazena em outra variável. Após obter os
dados, apresente em uma única mensagem os valores digitados (variáveis)
Exemplos de aplicação O usuário deve digitar a informação
1- Crie um algoritmo que solicita ao usuário
a sua idade e armazena
solicitada essa armazena
e o programa informação em
uma variável, solicita também a profissão e
armazenaem em outra variável. Após obter os
uma variável
dados, apresente em uma única mensagem os valores digitados (variáveis)
O usuário deve digitar a
Qual é a sua idade? _ informação solicitada e o
programa armazena em uma
Qual é a sua profissão? _ variável

Idade = O usuário deve digitar a


Profissão = informação solicitada e o
programa armazena em uma
variável
Exemplos de aplicação
algoritmo Dados RESOLUÇÃO EXEMPLO 1
início
inteiro idade
literal profissao
escreva (“Digite a sua idade”)
leia (idade)
escreva (“Digite a sua profissão”)
leia (profissao)
escreva (“Idade = “ + idade + “\nProfissão = “+
profissao)
fim
Exemplos de aplicação
2- Crie um algoritmo que solicita ao usuário o modelo de um carro, a quantidade de
quilometros rodados e o seu valor. Após, mostre os dados do carro.
Exemplos de aplicação
algoritmo Carros RESOLUÇÃO EXEMPLO 2
início
real valor, km
literal modelo
escreva (“Digite o modelo do carro”)
leia (modelo)
escreva (“Digite a quilometragem do carro”)
leia (km)
escreva (“Digite o valor do carro”)
leia (valor)
escreva (“Os dados do carro são: Modelo = “+ modelo+
“Quilometragem = “+ km+ “Valor = “+ valor)
fim
Exemplos de aplicação
3- Crie um algoritmo que calcule a média aritmética de 4 números reais digitados pelo
usuário e exiba o resultado.
Exemplos de aplicação
algoritmo media_quatro_valores RESOLUÇÃO EXEMPLO 3
início
real: n1, n2, n3, n4, media
escreva ("Digite o 1º valor: ")
leia (n1)
escreva ("Digite o 2º valor: ")
leia (n2)
escreva ("Digite o 3º valor: ")
leia (n3)
escreva ("Digite o 4º valor: ")
leia (n4)
media ← (n1+n2+n3+n4)/4
escreva ("A média dos valores é: " + media)
fim
Exemplos de aplicação
4- Crie um algoritmo que leia os valores dos lados de um retângulo e calcule/exiba o
perímetro e a área do mesmo.
Exemplos de aplicação
algoritmo retangulo RESOLUÇÃO EXEMPLO 4
início
real: ladoA, ladoB, perim, area
escreva ("Digite o valor de um lado (em cm): ")
leia (ladoA)
escreva ("Digite o valor de outro lado (em cm): ")
leia (ladoB)
perim ← 2*ladoA + 2*ladoB
escreva ("Perímetro: " + perim + " cm ")
area ← ladoA * ladoB
escreva ("Área do retângulo: " + area + " cm² ")
fim
Exemplos de aplicação
5- Elaborar um algoritmo que solicite os dados de altura (em metros) e peso (em Kg) de
uma pessoa e calcule/visualize seu IMC (Índice de Massa Corporal).

Lembre que IMC = peso/altura²


Exemplos de aplicação
RESOLUÇÃO EXEMPLO 5
algoritmo imc

início
real: peso, altura, imc
escreva ("Digite o peso da pessoa (em Kg): ")
leia (peso)
escreva ("Digite a altura da pessoa (em m): ")
leia (altura)
imc ← peso / (estatura*estatura)
escreva ("O IMC da pessoa é: " + imc + " Kg/m² ")
fim
Pausa para programação
# Exemplo 5 de cálculo do IMC em Python

peso = float(input("Digite o peso em Kg: "))


altura = float(input("Digite a estatura em m: "))
imc = peso / altura**2
print("O IMC é ", imc, " Kg/m²")
Pausa para programação
# Exemplo de cálculo do IMC em Java
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("Digite seu peso");
float peso = sc.nextFloat();
System.out.println("Digite sua altura");
float altura = sc.nextFloat();
float imc = peso / altura * altura;
System.out.println("O seu IMC é " + imc + "kg/m²");
}
}
Pausa para programação
# Exemplo de cálculo do IMC em C#
using System;
public class Program{
public static void Main(){
float peso, altura, imc;
Console.Write("Digite sua altura: ");
altura = float.Parse(Console.ReadLine());
Console.Write("Digite seu peso: ");
peso = float.Parse(Console.ReadLine());
imc = peso / altura * altura;
Console.Write("O seu IMC é " + imc + "kg/m²");
}
}
Convenção para o pseudocódigo
Operador Descrição
Operadores + para soma
- para subtração
Lógicos /
/ para divisão
Matemáticos * para multiplicação
() para agrupar termos
mod ou % resto da divisão
← ou = para atribuir um valor
^ para potência
< <= > >= <> == para operadores de relação (comparação)
E OU NÃO para operadores lógicos
Conjunção – Tabela verdade Obs: Alguns autores
utilizam valores 0 e 1,
p q p E q sendo que 0 é falso e 1
é verdadeiro
F F F
F V F
p q p^q
V F F
0 0 0
V V V
0 1 0
1 0 0
1 1 1
Disjunção – Tabela verdade Obs: Alguns autores
utilizam valores 0 e 1,
p q p OU q sendo que 0 é falso e 1
é verdadeiro
F F F
F V V
p q pvq
V F V
0 0 0
V V V
0 1 1
1 0 1
1 1 1
Negação – Tabela verdade
p ~ p ou NÃO p
F V
V F

Exemplos
p: a lua é um satélite da terra
~p: a lua não é um satélite da terra
ou
NÃO p: não é verdade que a lua é um satélite da terra
Prioridade dos operadores aritméticos
Operador Operação Prioridade
+ Soma 4o
- Subtração 4o
* Multiplicação 3o
/ Divisão 3o
mod ou % Resto de uma divisão inteira 2o
+ Manutenção de sinal 1o
- Inversão de sinal 1o
Prioridade dos operadores aritméticos

Observação
importante!

▪ Em uma expressão com operadores da mesma


prioridade, as operações serão executadas de
esquerda a direita.
▪ Nas linguagens com operadores para potência,
eles teriam prioridade maior que + - / *
Precedência de Sinais e Operações
Exemplo 6: Exemplo 7:
3 * (4 + 5) = 27 3 * 4 + 5 = 17
equivale a: equivale a:
4+5=9 3 * 4 = 12
3 * 9 = 27 12 + 5 = 17
Exemplos de aplicação
8- Faça um algoritmo que obtenha um número inteiro, calcule e mostre o resultado do
quadrado desse número.
Exemplos de aplicação
8- Faça um algoritmo que obtenha um número inteiro, calcule e mostre o resultado do
quadrado desse número.

algoritmo Quadrado de um Número


início
inteiro q,n
escreva (“Entre com o número”)
leia (n)
q = n*n
escreva (“O quadrado de “ + n + “ é ” + q)
fim
Prioridade dos grupos de operadores

Operadores Prioridade menor


Lógicos 4o
Relacionais 3o
Aritméticos 2o
Parênteses 1o maior
Convenção para o pseudocódigo
• sen(x)
Utilização de •

cos(x)
tan(x) ou tg(x)
funções • arcsen(x) ou sen-1(x)
• arccos(x) ou cos-1(x)
• arctg(x) ou arctan(x) ou tg-1(x)
• log(x)
• ln(x)
• raiz(x)

Podemos utilizar no pseudocódigo as funções que utilizamos no dia a dia, mas as


linguagens de programação são rigorosas quanto a isto. Você deve sempre verificar a
sintaxe na linguagem escolhida para tais funções.
Exemplos de aplicação
9- Algoritmo para calcular o valor de y em função de x, segundo a função y = f(x) = 3 +
2x.
algoritmo funcao
real x, y
início
escreva ("Entre com o valor de x:")
leia (x)
y = 3 + 2*x
escreva ("y=" + y)
fim

Obs.: Aqui não precisamos usar parênteses, porque a prioridade de * é maior que +
Exemplos de laboratório
Dadas as variáveis abaixo: Determine o resultado da avaliação das expressões a
L=V seguir:
M=F
B=2 a) X * (X + Y) =
C=3 b) X * Y + B * C =
X = 2.0 c) X * (Y + B) * C =
Y = 10.0 d) L OU M =
e) (L E (NÃO M)) =
f) (L E (NÃO M)) OU (M E (NÃO L)) =
g) X>Y E C<=B =
h) (B>=5) OU ( (C>X) E (X-Y+B>3*Y) ) =
Exemplos de laboratório
Dadas as variáveis abaixo: Determine o resultado da avaliação das expressões a
L=V seguir:
M=F
B=2 a) X * (X + Y) = 24.0
C=3 b) X * Y + B * C = 26.0
X = 2.0 c) X * (Y + B) * C = 72.0
Y = 10.0 d) L OU M = V
e) (L E (NÃO M)) = V
f) (L E (NÃO M)) OU (M E (NÃO L)) = V
g) X>Y E C<=B = F
h) (B>=5) OU ( (C>X) E (X-Y+B>3*Y) ) = F
Exercícios
1- Faça um algoritmo que solicite ao usuário o nome de dois medicamentos e também o
valor de venda de cada medicamento. Mostre os dados (nome e valor) dos dois
medicamentos na tela.
2- Faça um algoritmo que solicite ao usuário o nome de um funcionário, a quantidade de
dependentes e o cargo ocupado pelo funcionário. Mostre os dados (nome, quantidade de
dependentes e cargo) digitados.
3- Elaborar um algoritmo que solicite os dados de 2
retângulos para calcular e visualizar três áreas: AT (área total
das duas figuras), A1 e A2 (áreas dos retângulos superior e
inferior). Os únicos dados conhecidos são os valores a, b, d.
Exercícios
4- Construir um algoritmo que calcule e visualize a área da base e o volume de um
cilindro, sabendo que para isso é necessário conhecer o raio (r) e a altura (h) do cilindro.

Lembrar que:

Volume = h . π . r2

área da base
Exercícios
5- Construir um algoritmo que calcule as duas raízes de uma equação de 2º grau
ax2+bx+c, conhecendo os valores dos coeficientes da mesma (a, b, c). Suponha que as
raízes são reais.
Lembre-se que para calcular as duas raízes:

com
Exercícios
6- Um agricultor está cercando um terreno triangular e conseguiu cercar os lados a e b
que limitam com as estradas (na cor cinza), mas acabou a cerca. Quantos metros de
cerca terá que comprar para fechar completamente o triângulo desejado?

Rua do Sol
a

b
Estrada dos pássaros verdes
Exercícios
7- Faça um algoritmo que leia a cotação do dólar (taxa de conversão), leia um valor em
dólares e converta e mostre o valor equivalente em Reais.
8- Faça um algoritmo que leia dois valores inteiros representando, respectivamente, um
valor de hora e um de minutos e informe quantos minutos se passaram desde o início
do dia. Exemplo:
valores lidos: 13 e 15
impressão: 795 minutos
9- Elabore um algoritmo que leia dois números inteiros e imprima o resto da divisão
inteira de um pelo outro.
Exercícios
10- Faça um algoritmo que leia um valor representando o gasto realizado por um cliente
do restaurante ComaBem e visualize o valor total a ser pago, considerando os 10% do
garçom.
11- Faça um algoritmo que leia dois números inteiros e calcule e mostre o resultado das
seguintes operações aritméticas: soma, subtração, multiplicação, divisão e resto da
divisão.
12- Crie um algoritmo que obtenha um número real, calcule e mostre o valor de seu
triplo.
13- Crie um algoritmo que obtenha o valor da altura e da base de um triangulo (ambos
do tipo real), calcule e mostre a sua área, sabendo que:
Sugestão: Programação Java ou Python
Utilizando uma ferramenta on-line de sua preferência, procure implementar alguns dos
exercícios propostos nesta aula em Java ou Python.

Algumas ferramentas on-line:


https://www.programiz.com/python-programming/online-compiler/
https://repl.it/languages/
Até a próxima pessoal!

marco.sanches@cruzeirodosul.edu.br

Você também pode gostar