Você está na página 1de 23

Departamento de Informática

Linguagem e Técnicas de Programação I


Bacharelado em Sistemas de Informação
Tecnologia em Processamento de Dados

Algoritmos
Fundamentos Básicos

Prof. Fabrício R. Lazilha


fabricio@cesumar.br
http://www.inf.cesumar.br/fabricio

Sistemas de Computação

Entrada Processamento Saída

Memória

1
Entrada

„ É responsável pelo fornecimento dos dados ao


computador.
„ Os periféricos mais usados são: teclado e mouse.

Saída
„ É responsável pelo fornecimento dos dados do
computador para o usuário.
„ Os periféricos mais utilizados são: o monitor de
vídeo e a impressora.

2
Memória

„ Responsável pelo armazenamento dos dados e


programas.

Processamento/Processador

„ Responsável pela execução dos programas.

3
Unidade Central de Processamento

Entrada
Reg. D
ULA-
Unidade Reg. C
Lógica e Reg. B
Saída Aritmética Acumulador
Registradores

Clock
Memória

Exemplo

„ Somar o conteúdo do endereço 2000 com o endereço 2001 e guardar o resultado em 2002:

Endereço Dado
2000 5 Reg.
Reg. D
2001 3 Reg.
Reg. C
2002 8 5 Reg.
Reg. B
2003 583 Acumulador
2004
Memória Registradores

A UCP copia o conteúdo do endereço 2000 para o acumulador.


A UCP copia o conteúdo do endereço 2001 para o acumulador.O
conteúdo anterior é transferido para o registrador B.
A ULA realiza a operação. O resultado fica no acumulador e B é limpo.
A UCP copia o conteúdo do acumulador para o endereço 2002.

4
Linguagens de Programação

„ Programa: seqüência de instruções que serão


executadas pela UCP.
„ A linguagem que a UCP trabalha chama-se
Linguagem de Máquina e é composta de “0” e “1”
(bits).
„ Linguagem muito difícil de se trabalhar.
„ Exemplo de um comando em Linguagem de
Máquina: 10010010

Linguagens de Alto Nível

„ As linguagens faladas pela UCP são chamadas de


Ling. de Baixo Nível.
„ As linguagens que se aproximam da linguagem
humana são chamadas de Ling. de Alto Nível.
„ Uma Ling. da Alto Nível deve ser traduzida para uma
Ling. de Baixo Nível para poder ser executada pela
UCP.

5
Interpretadores

„ É um processo de tradução onde cada comando em


Ling. de Alto Nível é traduzido para LM e depois
executado pela UCP.
„ Se um comando for executado diversas vezes, ele
será traduzido e executado em LM várias vezes
também.
„ Isto deixa o processo de interpretação lento.

Compiladores

„ Todo o programa é primeiro traduzido para LM e


depois executado pela UCP.
„ Após a tradução é gerado um novo programa,
totalmente em LM.
„ Este programa é de execução muito mais rápida
que o interpretado.

6
Exemplo
Comando LM
Fluxo Comando LM
de
Interpretação exe- Comando LM
(BASIC e cução
LOGO)
Comando LM

Fluxo
de
exe-
Programa cução
Compilação Ling. de LM
Alto Nível
(COBOL,
FORTRAN,
PASCAL,
DELPHI, C)

Algoritmo

7
Definição

„ O desenvolvimento de um programa é muito


complexo.
„ ALGORITMO: é a descrição dos passos necessários
para se resolver um problema.

Problema Algoritmo Programa

Receitas de bolo

„ Um algoritmo é semelhante a uma receita de bolo:


são fornecidos os ingredientes e o modo de fazer.
Seguindo a receita obteremos o bolo.

8
Algoritmos & Receitas

„ Uma receita apresenta certa semelhança com


algoritmos:
„ ENTRADA: São os ingredientes.
„ PROCESSAMENTO: Modo de preparo
„ SAÍDA: O alimento pronto.

Exemplo:

„ Identifique a entrada, processamento e saída na


receita abaixo:
Sanduíche Solduba
Ingredientes:
•2 fatias de pão de forma integral
•1 tomate
•queijo branco
•peito de peru
•orégano
•azeite
•sal
Modo de preparo:
•Corte o tomate e o queijo branco em fatias finas e coloque sobre o pão.
Acrescente o peito de peru, uma pitada de orégano, azeite e sal a gosto.
Feche com a outra fatia. Você pode levar o sanduíche ao forno se preferir.

9
Imprecisões das Receitas

„ A linguagem utilizada nas receitas é muito vaga para


ser utilizada no desenvolvimento de programas.
„ Por exemplo, na receita anterior não foi especificada
a quantidade de queijo nem se o peito de peru
deveria ser fatiado ou não!

Linguagens para algoritmos

Para formalizar a construção de algoritmos, são


utilizadas as seguintes linguagens:

„ Formato livre
„ Fluxogramas
„ Pseudocódigos

10
Formato livre

„ Consiste em se escrever os passos necessários


numerados item a item. Exemplo:
1- Fornecer o primeiro valor
2- Fornecer o segundo valor
3 - Somar os dois valores
4 - Mostrar o resultado
(O que faz o algoritmo acima?)

Desvantagem do formato livre

„ O formato livre pode apresentar imprecisões em


algoritmos mais complexos.

„ O formato livre só é vantajoso em algoritmos muito


simples.

11
Fluxogramas Início

Introduzir 1º valor

„ É uma representação gráfica do


formato livre. Exemplo:
Introduzir 2º valor

Calcular a soma
dos dois valores

Mostrar o
resultado

Fim

Fluxogramas

„ Um fluxograma pode se tornar muito difícil de se ler


quando o algoritmo se torna complexo, além de
gastar muito papel para ser desenhado!

12
Pseudocódigo

„ Os algoritmos atuais são muito complexos.


„ Para facilitar o desenvolvimento, o algoritmo é
dividido em blocos, que realizam determinadas
tarefas que quando juntos formam a solução
completa.
„ Esta forma de desenvolvimento se chama
Programação Estruturada.
Estruturada

Programação estruturada

„ A programação estruturada produz algoritmos complexos mas


fáceis de se ler (e entender!).

„ O formato livre e o fluxograma não se adaptam à programação


estruturada. Sua forma de programação chama-se
PROGRAMAÇÃO LINEAR.LINEAR

„ Para se escrever algoritmos estruturados são usados os


PSEUDOCÓDIGOS.
PSEUDOCÓDIGOS

13
Algoritmos estruturados

„ No desenvolvimento dos algoritmos estruturados devem ser


observados 3 items básicos:

1-FUNCIONABILIDADE: o algoritmo deve funcionar!


2-SIMPLICIDADE: o algoritmo não deve realizar tarefas inúteis. Ele deve
ser feito da forma mais simples possível.
3-CLAREZA: o algoritmo deve ser claro, isto é, fácil de se ler e entender.

„ Sem estas características, o algoritmo estará ERRADO!


ERRADO

Pseudocódigo - Português Estruturado

„ O Pseudocódigo utilizado no desenvolvimento de


algoritmos estruturados é chamado de Português
Estruturado.
Estruturado

„ Nas próximas telas veremos como são escritas as


estruturas usando o Português Estruturado.

14
Estrutura de um algoritmo

„ Um algoritmo escrito em pseudocódigo possui a seguinte estrutura:

Programa Nome
var
Declaração de variáveis
início
Instruções a serem executadas
fim
Obs.: Não utilize espaços
no nome do algoritmo!

Contantes

„ Uma constante é um identificador que possui valor fixo, ou seja,


que não se modifica ao longo do tempo, durante a execução de
um programa.
„ Pode ser um número (como conhecemos na matemática), um
valor lógico, um caracter ou uma seqüência destes com algum
significado para o problema em estudo.
„ Conforme o seu tipo, a constante é classificada como sendo
numérica, lógica ou literal.

15
Contante Numérica

„ A representação de uma constante numérica nos algoritmos é


feita no sistema decimal, podendo ser um número com ou sem
parte fracionária.
Exemplos:
28
3.14
„ A constante numérica pode ser positiva ou negativa, de acordo
com o sinal que precede os algarismos formadores do número.
Caso não exista um sinal, a constante é considerada positiva.

Contante Literal
„ Uma constante desse tipo pode ser qualquer seqüência de
caracteres (letras, dígitos ou símbolos especiais) que forme um
literal com algum significado para o problema em estudo. Toda
constante literal que seja utiliza no algoritmo deve ser colocada entre
apóstrofo para que não seja confundida com outros itens
importantes em um programa (variável, instrução, palavra reservada)
no qual estudaremos mais adiante.

Exemplos:
“Ana Maria”
„ “O Grêmio é o melhor time do mundo”
„ “12345”
“x+y=9!”
“14/08/1999”

16
Contante Literal

„ Note que um numeral entre apostrofo é considerado como


uma seqüência de dígitos (literal), e não como uma
constante numérica. Também não se deve confundir uma
constante lógica (por exemplo, falso) como uma seqüência
de caracteres (literal), que apareça entre apóstrofos (por
exemplo, “falso”).

Pseudocódigo: Variáveis

„ As variáveis são utilizadas para guardar valores na memória.


„ São utilizadas no lugar do endereço de memória.
„ São identificadas por um nome ou identificadores.
„ Os nomes devem obedecer às seguintes regras:
1-Só podem começar por LETRA.
2-Só podem ter LETRAS, NÚMEROS e o caractere _ (sublinhado).
„ Exemplos:
– A, B, A2, Contador, X_2, ABC2, Nome_Cliente (válidos)
– 2A, ABC$%, A B C, Nome Cliente 2, Início (inválidos)
„ Os comandos do pseudocódigo são palavras reservadas e não podem
ser usados como nome de variáveis. Por isso, as palavras reservadas
devem ser sublinhadas!

17
Declaração de variáveis

„ Equivale à lista de ingredientes da receita. Serve para informar quais


os tipos de variáveis utilizadas no algoritmo.

var
NomeDaVariável : tipo

„ Os tipos de variáveis são os seguintes:


– Inteiro: Números sem parte decimal.
– Real: Números com parte decimal.
– Booleano: Valores VERDADEIRO e FALSO.
– Caractere: Conjunto de caracteres. Armazena um texto.

Exemplos:

var
X : real
i,j : inteiro
Nome_cliente : caracter
Valor1, Valor2 : real
Letra : caractere

18
Atribuição de valores

„ Indicam o valor que uma variável deve receber em


um algoritmo.
variável ← valor
„ Exemplos:
x←2
x←y
x←y + 2

Operadores Aritméticos

„ São utilizados os seguintes operadores:

Operador Operação Resultado


+ Manutenção de Sinal (números positivos)
- Inversão de Sinal (números negativos)
% Resto da divisão inteiro
/ Divisão Inteiro ou real
* Multiplicação Inteiro ou real
+ Adição Inteiro ou real
- Subtração Inteiro ou real

19
Exemplos:

x ← a + b
y ← 2 * x
z ← 5 / 2
r ← 5 % 2 (quanto vale r?)

Entrada e Saída

„ Entrada:
Entrada indica que algum dado deve ser fornecido
ao algoritmo (programa) pelo USUÁRIO.

„ Saída:
Saída indica que algum dado deve ser fornecido
pelo algoritmo (programa) ao USUÁRIO.

20
Pseudocódigo: Entrada

Leia Variável

„ O valor digitado pelo usuário será armazenado na


Variável. Exemplo:
Leia X
„ O valor digitado será armazenado na variável X.

Pseudocódigo: Saída

Escreva Variável
Escreva “Mensagem”
„ No primeiro caso, o valor da Variável será exibido ao
usuário; no segundo, será mostrada a mensagem
entre aspas (“”). Ex.:
Escreva X
Escreva “Bom dia!”

21
Problema/Exemplo
Desenvolva um programa que efetue a leitura de dois valores numéricos inteiros.
Faça a operação de adição entre os dois valores e apresente o resultado obtido.

„ Antes de começarmos a escrever um algoritmo que resolva este


problema ou um programa em uma linguagem de programação,
devemos inicialmente responder algumas perguntas:

„ Este problema tem uma solução geral?

„ Você programador conhece esta solução?

Problema/Exemplo

Estas perguntas são fundamentais. Não podemos


escrever um algoritmo que resolva todos os problemas
do mundo. Isso é impossível. Lembra-se do conceito?

“Um algoritmo é uma seqüência de instruções executadas


pelo computador para se resolver um problema do
mundo real”.

22
Problema/Exemplo
Montar uma estratégia passo-a-passo da solução do problema. No
caso do nosso exemplo, devemos recorrer à matemática.

„ Estratégia
• Ler um valor inteiro para a variável A;
• Ler outro valor inteiro para a variável B;
• Efetuar a adição dos valores contidos nas variáveis A e B e
implicar o resultado obtido em X;
• Apresentar o valor da variável X após a operação de adição
dos dois valores fornecidos.

Problema/Exemplo
Elaborar um algoritmo que represente a solução genérica do
problema:

Programa soma
Var
a, b, x : inteiro
início
leia a
leia b
x ← a+b
escreva x
fim

23