Você está na página 1de 76

Algoritmos

Professor Davi Bernardo


AULAS - Relevância da informática
ANTERIORES - Introdução aos algoritmos
ALGORITMO é...
ALGORITMO é uma sequência de instruções a serem
executadas para a obtenção da solução de um
determinado objetivo
ALGORITMO é uma sequência de instruções a serem
executadas para a obtenção da solução de um
determinado objetivo

Os algoritmos podem manipular muitos valores


- Dados do problema
- Dados intermediários
- Solução do problema
AULA DE - Estrutura sequencial
HOJE - Tipos de dados
- Operadores aritméticos
- Variáveis e constantes
- Bloco de instruções
- Entrada e saída de dados
- Teste de mesa
Nome: Godofredo da Silva
Idade: 25
Sexo: M
Salário: 1.200,00

Os valores manipulados dentro do algoritmo podem ser


classificados em diferentes tipos...
Nome: Godofredo da Silva
Idade: 25
Sexo: M
Salário: 1.200,00

Os valores manipulados dentro do algoritmo podem ser


classificados em diferentes tipos...
Mas o que são os tipos?
Tipos de dados

- Definição: conjunto de objetos que têm em comum o mesmo


comportamento diante de um conjunto definido de operações

- Objetivo: manipulação de informações

- Exemplo: todos os seres-humanos formam um conjunto de


objetos que se comportam de forma similar quando:
Tipos de dados

Pessoas = { _____________, _____________, _____________ }


Tipos de dados

Pessoas = { _____________, _____________, _____________ }

___________ = { 2017, ʻ a ʼ, José da Silva, Fusca }


Tipos de dados

Pessoas = { _____________, _____________, _____________ }

___________ = { 2017, ʻ a ʼ, José da Silva, Fusca }

Atenção: os elementos de um tipo de dados têm o


comportamento similar!
Tipos de dados

Alguns tipos são formados por números:


- Inteiros ( Z )
- Reais ( R )

São o conjunto de elementos que suportam


operações matemáticas!
Tipos de dados

Alguns tipos são formados por números:


- Inteiros ( Z )
- Reais ( R )

2.47 E-5 = 2.47 * 10-⁵

São o conjunto de elementos que


suportam operações matemáticas!
Tipos de dados

Outros tipos são formados por cadeias de caracteres:


- '*','a','A','3',' '
- "Olá mundo!"

São o conjunto de elementos que suportam


operações escrita, leitura e concatenação!
Tipos de dados
Por fim, existem os valores lógicos que são oriundos da lógica
matemática. É baseada em um conjunto de dois valores com significados
opostos:

- verdadeiro e falso
- 1e0
São o conjunto de elementos que suportam
operações lógicas!
Expressões lógicas

Valores lógicos podem ser obtidos como resultado de uma afirmação ou


proposição.

1. Cachorros são mamíferos


2. Cachorros são aves
3. Seres humanos pensam
4. 5 > 3
5. 7 = 3
Recapitulando → Tipos de dados

1. numéricos
- inteiro e real
2. textuais
- caractere e string
3. lógicos
- verdadeiro e falso
Tipos de dados

Operadores aritméticos
Operadores aritméticos

Operador Exemplo Descrição Tipos de dados

= a=b O conteúdo de B é atribuído à A reais e/ou inteiros

+ a+b Soma o conteúdo de A e de B reais e/ou inteiros

– a–b Subtrai o conteúdo de B do conteúdo de A reais e/ou inteiros

* a*b Multiplica o conteúdo de A por B reais e/ou inteiros

/ a/b Obtém o quociente da divisão de A por B reais e/ou inteiros

% a%b Obtém o resto da divisão de A por B inteiros


Operadores aritméticos

Operador Exemplo Descrição Tipos de dados

= a=b O conteúdo de B é atribuído à A reais e/ou inteiros

+ a+b Soma o conteúdo de A e de B reais e/ou inteiros

– a–b Subtrai o conteúdo de B do conteúdo de A reais e/ou inteiros

* a*b Multiplica o conteúdo de A por B reais e/ou inteiros

/ a/b Obtém o quociente da divisão de A por B reais e/ou inteiros

% a%b Obtém o resto da divisão de A por B inteiros


Operadores aritméticos

Operador Significado Exemplo Tipos de dados

+ adição a+b reais e/ou inteiros


20 3
- subtração a-b reais e/ou inteiros

multiplicação
2
a*b
6reais e/ou inteiros
*
/ divisão 20 / 3 reais e/ou inteiros

% resto 20 % 3 inteiros
Hierarquia de execução

Precedência Descrição Associatividade

1º O que estiver entre parênteses esquerda para direita

2º Multiplicação, divisão e resto esquerda para direita

3º Adição e subtração esquerda para direita


Problema 1. Resolva as operações abaixo

A. 12 + 3 / 2
B. (12 + 3) / 2
C. 45 / 2
D. 45 % 2
E. 45.0 / 2.0
F. (12 + 3) * 10 / 5
G. 12 + 3 * 10 / 5
Operadores aritméticos

Variáveis e constantes
Variáveis
Variáveis
Variáveis

- Definição: são repositórios de elementos pertencentes aos tipos

- Nome significativo: o nome deve identificar o objeto que é ali guardado


- Uma garagem de ferrari pode estar guardando um fusca?

- Tipo: uma garagem de carros não pode guardar aviões!


Uma posição de memória sempre armazena um valor
Uma posição de memória sempre armazena um valor

18

Se outro valor é atribuído, o antigo é destruído


O conteúdo de uma posição pode variar ao longo de um
algoritmo
chamada VARIÁVEL

Portanto, VARIÁVEL é uma posição de memória que deve ter um


nome e armazena um determinado valor que pode ser alterado ao
longo do algoritmo
Exemplo:
idade = 18
idade = 18 + 1
A declaração de uma variável é feita da seguinte forma:

<tipo1> <identificador1>;
<tipo2> <identificador2>, <identificador3>;

- Os identificadores são nomes escolhidos pelo programador


- pode conter letras, números ou caracteres underline “_”
- mas deve iniciar com letras minúsculas
- precisam ter nomes significativos, ou seja, que contenha informações do
que se tenta identificar

Salario Familia salario_familia


Salario.Familia salarioFamilia
A declaração de uma variável é feita da seguinte forma:

<tipo1> <identificador1>;
<tipo2> <identificador2>, <identificador3>;

- Os identificadores são nomes escolhidos pelo programador


- pode conter letras, números ou caracteres underline “_”
- mas deve iniciar com letras minúsculas
- precisam ter nomes significativos, ou seja, que contenha informações do
que se tenta identificar

Atenção: o nome dos identificadores não podem ser


iniciados com números!
Resumindo...
- Variável é uma posição de memória que armazena um valor

<tipo1> <identificador1>; 18
- deve ter um tipo: inteiro
- deve ter um nome: idade
- pode receber um valor: 18

Exemplo:inteiro idade = 18;


Constantes são valores que não podem ser alterados!
Ou seja, é uma quantidade fixa (INVARIÁVEL), cujo valor é definido no início do
algoritmo e não pode ser alterado durante a sua execução

E por que usar?


Facilidade de manutenção futura!
Exemplo: se a média mudar, basta alterar em um local e automaticamente
todas as instruções que utilizam essa constante serão atualizadas
A declaração de uma constante é feita da seguinte forma:
constante <IDENTIFICADOR1> <valor1>
constante <IDENTIFICADOR2> <valor2>

- Os identificadores são nomes escolhidos pelo programador


- pode conter letras, números ou caracteres underline “_”
- mas deve conter todas as letras maiúsculas
- precisam ter nomes significativos, ou seja, que contenha informações do
que se tenta identificar
Salario Familia
SALARIO_FAMILIA
Salario.Familia
A declaração de uma constante é feita da seguinte forma:
constante <IDENTIFICADOR1> <valor1>
constante <IDENTIFICADOR2> <valor2>

- Os identificadores são nomes escolhidos pelo programador


- pode conter letras, números ou caracteres underline “_”
- mas deve conter todas as letras maiúsculas
- precisam ter nomes significativos, ou seja, que contenha informações do
que se tenta identificar

Atenção: o nome dos identificadores não podem ser


iniciados com números!
Declaração de variáveis dos tipos básicos

________ MAXIMO 100

________ quantidade, filhos, netos;


________ aberto;
________ altura;
________ resposta;
Declaração de variáveis dos tipos básicos:

constante MAXIMO 100

inteiro quantidade, filhos, netos;


booleano aberto;
real altura;
caractere resposta;
Declaração de variáveis dos tipos básicos:

constante MAXIMO 100

inteiro quantidade, filhos, netos;


booleano aberto;
real altura;
caractere resposta;

Atenção: palavras reservadas não podem ser utilizadas


como identificadores definidos pelo programador!
constante MAXIMO 100
Atribuição de valores
inteiro quantidade, filhos, netos;
altura = 1.80; booleano aberto;
real altura;
filhos = 3;
caractere resposta;
netos = filhos * 2 - 3; ...

quantidade = MAXIMO - 10;


aberto = F;
aberto = aberto e V;
aberto = quantidade < MAXIMO;
resposta = ‘S’; Os comandos de atribuição permitem que valores sejam
armazenados na posição de memória
Variáveis e constantes

Bloco de instruções
Bloco de instruções

<declaração de constantes>
início
<declaração de variáveis>

<primeira instrução do bloco>


<segunda instrução do bloco>
...
<última instrução do bloco>
fim
Indentação de código-fonte

<declaração de constantes>
início
<declaração de variáveis>

<primeira instrução do bloco>


<segunda instrução do bloco>
...
<última instrução do bloco>
fim
Bloco de instruções

<declaração de constantes>
início
<declaração de variáveis>

<primeira instrução do bloco>


<segunda instrução do bloco>
...
<última instrução do bloco>
fim
constante MAXIMO 100
início
inteiro quantidade, filhos, netos;
booleano aberto;
real altura;
altura = 1.80;
filhos = 3;
netos = filhos * 2 - 3;
quantidade = MAXIMO - 10;
aberto = F;
aberto = aberto e V;
aberto = quantidade < MAXIMO;
fim
constante MAXIMO 100
início
inteiro quantidade, filhos, netos;
booleano aberto; DECLARAÇÃO DE VARIÁVEIS
real altura;
altura = 1.80;
filhos = 3;
netos = filhos * 2 - 3;
quantidade = MAXIMO - 10; INSTRUÇÕES DO BLOCO
aberto = F;
aberto = aberto e V;
aberto = quantidade < MAXIMO;
fim
Problema 2. Escreva uma instrução em pseudocódigo para cada uma dos tópicos a seguir:

a. Declarar uma constante com qualquer valor inteiro;


b. Inicializar o algoritmo
c. Declarar uma variável para armazenar um valor inteiro;
d. Declarar uma variável para armazenar o resto de uma divisão;
e. Atribuir um valor qualquer à variável inteira declarada;
f. Aumentar cinco unidades no conteúdo da variável inteira;
g. Calcular o resto da divisão entre o conteúdo da variável inteira e o valor 2;
h. Atribuir à variável inteira a soma entre a constante e o resto da divisão;
i. Finalizar o algoritmo.
Malhação Cerebral
Problema 3. Calcular a média aritmética
Sabendo que as notas escolares podem variar de 0 a 100, calcule a média aritmética
entre duas notas.

mediaAritmetica = (nota1 + nota2) / 2


Problema 3. Calcular a média aritmética
Sabendo que as notas escolares podem variar de 0 a 100, calcule a média aritmética
entre duas notas.

mediaAritmetica = (nota1 + nota2) / 2

Linguagem C
Documentação usada para análise e manutenção futura
/* Programa para calcular a média
* Autor(a): Gertrudes da Silva
*/
...
real media; // variável utilizada para receber três valores
Problema 4. Calcular o número de vértices de um cubo
Sabendo que a relação entre vértices, arestas e faces de um objeto geométrico é dada
pela fórmula:

vertices = arestas + 2 – faces

calcule o número de vértices de um cubo (6 faces e 12 arestas)


Resumo até aqui…

- Tipos de dados
- Operadores aritméticos
- Hierarquia de execução
- Variável e constante
- Indentação
- Code Blocks
- Comentários
Bloco de instruções

Entrada e saída de dados


Problema: até agora os algoritmos resolvem um
problema estático!

Isso exige conhecimento para alterar e compilar programas

O ideal seria que o usuário pudesse informar valores para que fossem
processados pelo computador que, por sua vez, retornasse o resultado do
processamento
Entrada de dados

- É a transferência de dados do meio externo para a memória de trabalho do


computador
- A leitura de um valor implica o uso de uma variável, pois tal valor precisa
ser armazenado em algum local para futura manipulação

Pseudocódigo
real numero;

leia(numero);
Entrada de dados

- É a transferência de dados do meio externo para a memória de trabalho do


computador
- A leitura de um valor implica o uso de uma variável, pois tal valor precisa
ser armazenado em algum local para futura manipulação

Pseudocódigo Linguagem C
real numero; float numero;
… …
leia(numero); scanf("%f", &numero);
Saída de dados

- É utilizada para apresentar os valores ao meio externo

- O valor a ser escrito na tela do monitor pode ser um texto, o conteúdo de


uma variável ou constante

Pseudocódigo
real soma;

imprima(soma);
Saída de dados

- É utilizada para apresentar os valores ao meio externo

- O valor a ser escrito na tela do monitor pode ser um texto, o conteúdo de


uma variável ou constante

Pseudocódigo Linguagem C
real soma; float soma;
… …
imprima(soma); printf("%f", soma);
Saída de dados

- É utilizada para apresentar os valores ao meio externo

- O valor a ser escrito na tela do monitor pode ser um texto, o conteúdo de


uma variável ou constante
- Pode intercalar textos com variáveis, separando-os com vírgulas

Pseudocódigo Linguagem C
real soma; float soma;
… …
escreva(soma); printf("%f", soma)
escreva("A soma dos é: ", soma); printf("A soma é: %f", soma);
Problema 5. Calcular o número de vértices de um objeto genérico

Sabendo que a relação entre vértices, arestas e faces de um objeto geométrico é dada
pela fórmula:

vertices = arestas + 2 – faces

calcule o número de vértices de um objeto geométrico genérico. A entrada será o


número de faces e arestas (dadas por um número inteiro e positivo) e a saída será o
número de vértices.
Entrada e saída de dados

Teste de mesa
O algoritmo construído realiza a tarefa para a
qual foi projetado?

Um algoritmo só é correto se produz o resultado esperado para


qualquer entrada possível!
O algoritmo construído realiza a tarefa para a qual
foi projetado?

Um algoritmos só é correto se produz o resultado esperado


PARA QUALQUER ENTRADA POSSÍVEL!

Atenção: a correção de algoritmos é uma das características


essenciais!
Teste de mesa

É um meio pelo qual...


- Pode-se acompanhar a execução de um algoritmo, passo a passo
- Pode-se encontrar erros e confirmar se a lógica está correta
- É necessário verificar o estado dos dados a cada instrução
início
real a, b;
inteiro c, x;

a = 6.0;
b = a / 2;
c = 11;
x = c / 4;
c = c % 2;
b = 5.4;
c = c + 1;
a = b + 2;
fim
início a b c x
real a, b; ? ? -- --
inteiro c, x; ? ? ? ?

a = 6.0; 6.0 ? ? ?
b = a / 2; 6.0 3.0 ? ?
c = 11; 6.0 3.0 11 ?
x = c / 4; 6.0 3.0 11 2
c = c % 2; 6.0 3.0 1 2
b = 5.4; 6.0 5.4 1 2
c = c + 1; 6.0 5.4 2 2
a = b + 2; 7.4 5.4 2 2
fim
início a b c x
real a, b; ? ? -- --
inteiro c, x; ? ? ? ?
? ? ? ?
a = 6.0; 6.0 ? ? ?
b = a / 2; 6.0 3.0 ? ?
c = 11; 6.0 3.0 11 ?
x = c / 4; 6.0 3.0 11 2
c = c % 2; 6.0 3.0 1 2
b = 5.4; 6.0 5.4 1 2
c = c + 1; 6.0 5.4 2 2
a = b + 2; 7.4 5.4 2 2
fim
Problema 5: Teste de mesa

início

inteiro vertices, faces, arestas;

1 escreva(“Entre com o n° de faces do objeto: ”);

2 leia(faces);

3 escreva(“Entre com o n° de arestas do objeto: ”);

4 leia(arestas);

5 vertices = arestas + 2 - faces;

6 escreva(“O n° de vértices do objeto é: ”, vertices);

fim
Problema 5: Teste de mesa

Linha vértices faces arestas Comentários

1 ? ? ? Variáveis com valores indefinidos

2 ? [6] ? faces lidas

3 ? 6 ?

4 ? 6 [12] arestas lida

5 [8] 6 12 Cálculo de vértices

6 8 6 12 Saída com números de vértices


Problema 6. Intercambiar os valores de duas variáveis

Escreva um algoritmo que armazene dois números em duas variáveis e que troque os
valores das variáveis

Linha num1 num2 aux Comentários

5
LIÇÃO DE CASA
Lista de exercícios 1

1. Escreva um algoritmo que receba dois números, calcule e mostre a subtração do


primeiro número pelo segundo.

2. Escreva um algoritmo que receba três números, calcule e mostre a multiplicação dos
três números.

3. Escreva um algoritmo que receba dois números, calcule e mostre a divisão do


primeiro pelo segundo. Sabe-se que o segundo número não pode ser zero, portanto,
não é necessário se preocupar com validações.

4. Escreva um algoritmo que receba o preço de um produto, calcule e mostre o novo


preço sabendo-se que este produto sofreu um desconto de 10%.

5. Escreva um algoritmo que, para um valor inteiro, escreva o seu sucessor.


Bibliografia básica
Algoritmos
Professor Davi Bernardo

Você também pode gostar