Você está na página 1de 71

Introdução à Ciência da Computação

ALGORITMO

Professor
Lauro Barreto Fontes, M.Sc.

Slide 1
Introdução

▪ O mundo hoje literalmente não vive sem um


computador

▪ O que aconteceria, por exemplo, com um aeroporto


ou com um hospital caso parasse de funcionar os
computadores?

Slide 2
Introdução

▪ Qual a diferença entre hardware e software?

▪ E o que são os computadores sem os softwares?

▪ É partindo desse idéia que a disciplina de


Programação é de extrema importância na área de
TI

Slide 3
Algoritmos - Definição

▪ “Algoritmos, de maneira geral, representam um


conjunto de passos ou instruções que têm por
objetivo resolver um determinado problema ”

▪ Como seria o algoritmo para fritar um ovo?

▪ Como seria o algoritmo para trocar um pneu do


carro?

Slide 4
Algoritmos - Definição

▪ Ao criar um software identificamos três fases


distintas
✓A fase de identificação do problema
✓A fase de resolução do problema
✓A fase de implementação

Slide 5
Algoritmos - Definição

Slide 6
Algoritmos - Definição

▪ Para se adequar a realidade computacional é


necessário que a definição de algoritmos seja
refinada:
✓ “Uma seqüência ordenada de passos finitos, sem
ambigüidade, que levem à solução de um determinado
problema”

Slide 7
Algoritmos - Definição

▪ Como conseqüência dessa definição, o algoritmo


possui três propriedades:
✓Ter Início e Fim (um conjunto finito de passos)
✓Seus passos devem ser simples e sem ambigüidade
✓Seus passos devem seguir uma seqüência
ordenada

Slide 8
Linguagem de Descrição de
Algoritmo (LDA)
▪ Como o próprio nome diz é uma linguagem
utilizada para descrever um algoritmo

▪ Essa linguagem pode ser gráfica ou escrita

▪ A figura abaixo ilustra uma linguagem gráfica

Slide 9
Linguagem de Descrição de
Algoritmo (LDA)

início/fim processamento Entrada/Saída Decisão

Início

Leia Nota1,
Nota2, Nota3

Média = (Nota1 + Nota2 + Nota3) / 3

Slide 10
Linguagem de Descrição de
Algoritmo (LDA)
▪ A linguagem gráfica não costuma ser utilizada por
apresentar os seguintes problemas:
✓Dificuldade na escrita, entendimento e alterações
✓Muito distante da realidade computacional
(implementação)

▪ A LDA largamente utilizada é a escrita (Portugol)

Slide 11
Portugol - Estrutura

▪ É importante ressaltar que não existe um padrão


em relação a sintaxe a ser seguido pelo Portugol
✓Ex: A sintaxe na declaração das variáveis

▪ A semântica, porém, tem que ser a mesma

▪ A seguir será apresentado a estrutura de um


algoritmo em Portugol

Slide 12
Portugol - Estrutura

Algoritmo Nome_Do_Algoritmo;
“Tem como objetivo identificar o algoritmo, devemos utilizar um
Nome_Do_Algoritmo o mais claro possível, para facilitar a
identificação”
Variáveis
“Declaração das variáveis. Devemos aqui, informar quais e os
tipos das variáveis que serão utilizadas no algoritmo.”
Início
“Corpo do Algoritmo. Aqui será escrita a sequência de
comandos que devem ser executados para solucionar o
referido problema”
Fim.

Slide 13
Algoritmo - Exemplo

Algoritmo Imprime_Situacao;
Variaveis
Nota1, Nota2, Nota3: Inteiro;
Media: Real;
Início
Escreva(‘Entre com as três notas: ’);
Leia (Nota1, Nota2, Nota3);
Media <- (Nota1 + Nota2 + Nota3) / 3;
Se Media >= 5 Então
Escreva(‘Aprovado’);
Senão
Escreva(‘Reprovado’);
Fim.
Slide 14
Algoritmo - Tipos de Dados
Primitivos
▪ Os dados, ao serem manipulados pelo
computador, precisam ter um tipo associado a ele

▪ Os tipos primitivos são os tipos que são nativos da


linguagem de programação

▪ Veremos mais adiante que podemos criar os


nossos próprios tipos

Slide 15
Algoritmo - Tipos de Dados
Primitivos
▪ Existem quatro tipos primitivos de dados:
✓Inteiro: Toda e qualquer informação que pertença
ao conjunto dos números inteiros
✓Real: Toda e qualquer informação que pertença ao
conjunto dos números reais
✓Caracter: Toda e qualquer informação composta por
uma seqüência de caracterer alfa numéricos(a, b,
c,...z, A, B, C, ...Z) e especiais (#,@,!,?)
• Uma cadeia de caracter deve ser indicada entre
aspas “ ”

Slide 16
Algoritmo - Tipos de Dados
Primitivos
✓Lógico: Toda e qualquer informação representada
por apenas dois valores (Verdade ou Falso)
• Esse tipo será muito utilizado para testar alguma
condição

Slide 17
Algoritmo - Tipos de Dados
Primitivos
▪ Quais são os tipo para os dados abaixo?
1) 1000 2) 0 3) “-900” 4) VERDADE
5) -456 6) -2,3 7) “!#Casa” 8) “FALSO”

Slide 18
Algoritmo - Identificadores

▪ Representam os nomes escolhidos para rotular as


variáveis, procedimentos, funções, nomes de
programas

▪ As características desses identificadores são:


1. O primeiro caracter deve ser uma letra
2. Os nomes devem ser formados por caracteres
pertencentes ao seguinte
conjunto:{a,b,c,..z,A,B,C,...Z,0,1,2,...,9,_}

Slide 19
Algoritmo - Identificadores

3. Não deve haver espaço em branco


4. Não deve haver identificadores repetidos
5. Existe distinção de maiúsculas e minúsculas;
6. Os nomes escolhidos devem ser claros a fim de
explicitar seu conteúdo, mas também não deve ser
extenso para não dificultar a escrita

Slide 20
Algoritmo - Identificadores

▪ Quais desses são Identificadores?


1)Endereço 2)21BRASIL
3)FONESE$CO 4)NOME_USUARIO
5)USUARIO6 6)NOME*SEXO

Slide 21
Algoritmo - Variáveis

▪ São as unidades básicas de armazenamento das


informações em programação

▪ As variáveis representam espaços onde podemos


armazenar e manipular dados

▪ Para cada variável é necessário ter um tipo


associado a ela

Slide 22
Algoritmo - Variáveis

▪ As variáveis devem ser declaradas da seguinte


forma:
Variaveis
X, Num : Inteiro;
Nome, Endereco: Caracter;
Nota, Peso: Real;
Resposta : Lógico;

Slide 23
Algoritmo - Constantes

▪ São usadas em expressões para atribuir valores a


variáveis ou em comandos

▪ Seus valores serão sempre os mesmos, ou seja,


uma vez declarado, o seu valor não se altera mais
durante o algoritmo

Slide 24
Algoritmo - Constantes

▪ Existem três tipos de constantes:


✓Numérica
✓Lógica
✓Caracter

Slide 25
Algoritmo - Constantes

▪ As constantes devem ser declaradas da seguinte


forma:
Constantes
Pi = 3,14;
Variaveis
X, Num : Inteiro;
Nome, Endereço: Caracter;
Nota, Peso: Real;
Resposta : Lógico;

Slide 26
Algoritmos - Operações

▪ Para solucionar alguns problemas


computacionalmente será necessário a utilização
de algumas operações

▪ Temos quatro tipos de operações:


✓Operação de Atribuição
✓Operação Aritmética
✓Operação Relacional
✓Operação Lógica

Slide 27
Algoritmos – Operação de Atribuição

▪ Tem como finalidade armazenar um valor, variável


ou expressão na variável

▪ É necessário que o tipo do valor, variável ou


expressão seja compatível com o tipo da variável

Slide 28
Algoritmos – Operação de Atribuição

▪ A sintaxe de uma operação de atribuição é a


seguinte:
NomeDaVariavel <- Valor, Variável ou Expressão;

▪ Ex: Media <- 7;


Delta <- X;
Soma <- X + Y;

Slide 29
Algoritmos – Operação Aritmética

▪ São utilizados em expressões para realizar operações


aritméticas com variáveis

▪ Os operadores e funções recebem argumentos


(parâmetros) e retornam um resultado, o qual pode ser
atribuído a uma variável ou utilizado numa expressão

▪ Os operadores são representados por símbolos e


as funções por palavras

Slide 30
Algoritmos – Operação Aritmética

Slide 31
Algoritmos – Operação Aritmética

▪ Ex: Suponha que A=6, B=1 e C= 16 , então:


A <- A + B + 14 = ?
B <- C * B = ?
A <- Resto(C,A) = ?
A <- Quociente (C,A) = ?

Slide 32
Algoritmos – Operação Relacional

▪ São utilizados para relacionar variáveis ou


expressões, resultando num valor lógico (Verdade
ou Falso)

Slide 33
Algoritmos – Operação Relacional

▪ Ex: Suponha que A = 1 e B = 6, então:


A>B=?
A >= B = ?
A=B=?
A<B=?

Slide 34
Algoritmos – Operação Lógica

▪ São utilizadas para avaliar expressões lógicas

▪ Uma expressão lógica representa a união de


operações relacionais

▪ Uma operação lógica permite que o resultado de


várias expressões relacionais seja transformado
em um único resultado lógico

Slide 35
Algoritmos – Operação Lógica

▪ Os operadores lógicos são:


✓E (Conjunção)
✓OU (Disjunção)
✓NÃO (Negação)

Slide 36
Algoritmos – Prioridade de
Operadores
▪ Durante a execução de uma expressão que
envolve vários operadores, é necessário a
existência de prioridades

▪ Caso não exista essa prioridade entre operadores


é possível obter valores não condizentes com a
realidade

Slide 37
Algoritmos – Prioridade de
Operadores

Slide 38
Comandos de Entrada e Saída

▪ O comando de entrada é utilizado para que se


possa ler um determinado dado do meio externo

▪ Esse dado é geralmente passado pelo usuário


através do teclado ou de outros dispositivos de
entrada

▪ Esses dados lidos serão armazenados na memória


do computador através das variáveis

Slide 39
Comandos de Entrada e Saída

▪ A sintaxe para ler um dado é mostrada abaixo:


✓ Leia( Variável );
• Ex: Leia(N1);

▪ O comando de saída é utilizado para permitir que


se possa escrever algo na tela do computador
✓Ex: Um resultado, uma mensagem de erro, etc.

Slide 40
Comandos de Entrada e Saída

▪ A sintaxe do comando de saída é mostrada abaixo:


✓Escreva ( expressão );
• A expressão mostrada acima pode ser uma variável
ou uma cadeia de caracteres, como mostrado nos
exemplos abaixo:
– Ex1: Escreva(V1);
– Ex2: Escreva(“Entre com o primeiro numero: ”);

Slide 41
Comandos de Controle

▪ São os comandos utilizados nos algoritmos para


ajudar a solucionar o problema em questão

▪ São três os comandos de controles conhecidos e


utilizados na programação:
✓Seqüência
✓Seleção
✓Repetição (Para Faça, Enquanto e Repita)

Slide 42
Seqüência

▪ Utilizado para executar comandos passo a passo,


na qual todos os comandos serão executados nas
ordem escrita sem desvio

▪ Pode possuir um ou mais comandos


• Quando tiver mais de um comando, identificar pelos
identificadores Início e Fim (Obrigatório)
• Quando tiver apenas um comando, o uso do Inicio e
Fim é condicional

Slide 43
Seqüência

▪ Importante a endentação dos comandos (recuo


para direita) e também a linha indicando o início e
fim
✓Lembrar que o programa não será mantido apenas
por você, outras pessoas irão também dar
manutenção nele

Slide 44
Seleção

▪ Usado para fazer comparações e simular uma


decisão no fluxo do algoritmo

▪ Usado para tomar decisões, ou seja, desviar a


condição do algoritmo de acordo com uma
condição

Slide 45
Seleção

▪ O comando de seleção pode ser de dois tipos:


✓Simples
✓ Composto

▪ A sintaxe do comando simples é mostrada abaixo:


SE (Expressão Lógica) ENTAO
Sequencia

Slide 46
Seleção

Slide 47
Seleção

▪ A sintaxe do comando composto é mostrada


abaixo:
SE (Expressão Lógica) ENTAO
Sequencia 1
SENAO
Sequencia 2

Slide 48
Seleção

Slide 49
Comando de Seleção Aninhado

▪ É possível ter casos em que seja necessário a


utilização de um comando de seleção dentro de
outro comando de seleção

▪ O comando de seleção aninhado permiti a


avaliação de diversas condições para os possíveis
valores de um dado conjunto de variáveis

Slide 50
Comando de Seleção Aninhado

▪ Abaixo segue um exemplo de um trecho de um


código utilizando comando de seleção aninhado:
Se (Num1 > Num2 ) Entao
Escreva(“O maior número é: “, Num1);
Senao
Se (Num1 < Num2) Entao
Escreva(“O maior número é: “, Num2);
Senao
Escreva(“Os números são iguais”);

Slide 51
Comandos de Repetição

▪ Existem situações em que processar um único


valor não satisfaz o problema

▪ Os comandos de repetição são comandos que


permitem efetuar um conjunto de ações repetidas
vezes

Slide 52
Comandos de Repetição

▪ Como fazer para imprimir um número de 1 à 1000


ou para imprimir todos os alunos de uma turma?

▪ Para resolver esses tipos de problema é


necessário a utilização dos comandos de repetição

Slide 53
Comandos de Repetição

▪ Os comandos de repetição frequentemente


utilizados são:
✓Para Faça
✓Enquanto Faça
✓Repita Até

▪ Os comandos de repetição também são


conhecidos como laços (loops)

Slide 54
Comandos de Repetição – Para Faça

▪ Permite que um bloco de comandos seja repetido


um número de vezes específico

▪ A sintaxe do comando é mostrada abaixo


PARA variável_controle  valor_inicial ATE valor_final FACA
INICIO
comando1
comando2
comando 3
.
.
.
FIM PARA

Slide 55
Comandos de Repetição – Para Faça

▪ Variável_controle: é a variável que será


incrementada ou decrementada a partir de um
valor inicial previamente estabelecido.

▪ Valor_inicial: primeiro valor que a variável_controle


irá assumir

▪ Valor_final: valor limite que a variável_controle


poderá assumir

Slide 56
Comandos de Repetição –
Enquanto Faça
▪ Executa um bloco de comandos vária vezes até
que uma condição não seja satisfeita

▪ Sua sintaxe é a mostrada abaixo:


ENQUANTO condicao FACA
INICIO
comando1
comando2
comando3
..
.
FIM ENQUANTO

Slide 57
Comandos de Repetição –
Enquanto Faça
▪ O comando Enquanto funciona da seguinte forma:
✓ É testada a condição (Resultado só pode ter dois valores:
Verdade ou Falso).
✓ Se for Verdade, os comandos do enquanto são executados
✓ Quando o compilador encontra o Fim do Enquanto ele testa
novamente a condição
✓ Se a condição for verdade ele executa novamente os
comandos dentro do Enquanto. Se for Falso, ele sai do
Enquanto

Slide 58
Comandos de Repetição –
Enquanto Faça
▪ Pode se utilizar o comando Enquanto basicamente
de três maneiras:
✓Utilizando um Contador:
• Simula o comando Para Faça
• Uma variável (contador) é utilizada para contar
quantas vezes o bloco de comando do enquanto foi
executado
• Esta variável fará parte da condição
• Ex: Ler o saldo de 5 contas bancárias

Slide 59
Comandos de Repetição –
Enquanto Faça
✓Utilizando um Flag:
• Diferente do contador na qual se sabe quantas vezes
será processado um determinado comando, o flag
não se sabe e não importa quantas vezes será
processado os comandos
• É utilizado quando não se sabe o número de vezes
que haverá dados de entrada
• O Flag deve ser um valor absurdo e que seja do
mesmo tipo dos dados a serem lidos
• Ex: Ler o salário dos empregados de uma empresa e
calcular a média salarial desta empresa.(O programa
deverá sair quando o salário for igual a -1)
Slide 60
Comandos de Repetição –
Enquanto Faça
✓Utilizando uma variável do Tipo Lógico:
• É criado uma variável do Tipo Lógico para fazer parte
da condição do Enquanto
• É preciso inicializar essa variável antes do comando
Enquanto e alterar o seu valor dentro do próprio
comando para que o mesmo não entre em um Loop
Infinito
• Ex: Ler o salário dos empregados de uma empresa.
Quando for encontrado um salário maior igual a
10.000, o programa deverá calcular a media salarial
desta empresa e depois finalizar a sua execução.

Slide 61
Repita Até

▪ Tem a mesma característica do comando


Enquanto Faca

▪ A diferença básica é que no comando Repita os


comandos são executados antes de verificar a
condição

Slide 62
Repita Até

▪ A sintaxe do comando Repita..Ate é:


REPITA
comando1
comando2
comando3
ATE condicao

Slide 63
Repita Até

▪ O Comando Repita Até funciona da seguinte


forma:
✓Executa os comandos um a um dentro do comando
Repita
✓Ao final, testa a condição
✓Se for Falso, ele continua o fluxo do programa
normalmente
✓Caso seja Verdade, ele volta ao Repita e executa
novamente o bloco de comandos dentro do Repita

Slide 64
Vetor

▪ Existem situações em um problema que será


preciso armazenar várias informações

▪ Como fazer, por exemplo, para armazenar um


conjunto de nomes de uma turma?
✓Resp: Uma solução seria a utilização de vetores

Slide 65
Vetor

▪ Vetor é um conjunto unidimensional de dados de


um mesmo tipo com um número fixo de elementos

▪ Em sua declaração deve ser informado o seu


tamanho e tipo.

Slide 66
Vetor

▪ Segue abaixo a sintaxe para a declaração de um


vetor:
nome_do_vetor [ TAMANHO] : Tipo_do_Vetor;

▪ Ex: v1[100 ] : Inteiro;


nome_aluno[50] : Caracter;

Slide 67
Vetor

▪ Cada elemento do vetor é identificado por um


índice, o qual representa a sua posição no vetor

▪ Segue abaixo a forma de como deve ser


referenciado um vetor:
Nome_Do_Vetor[índice];

▪ Ex: Nome_Aluno[3];

Slide 68
Vetor

▪ Dessa forma, quando for preciso obter alguma


informação do Vetor basta apenas referenciá-lo,
como mostrado abaixo:
▪ Ex:Nome <- Nome_Aluno[4];

▪ O mesmo acontece quando for preciso armazenar


alguma informação no vetor:
✓Ex1: Nome_Aluno[1] <- “Lauro Fontes”;

Slide 69
Vetor

▪ É importante lembrar que os índices serão sempre


do tipo inteiro.

▪ O primeiro índice do vetor começa sempre com o


valor 0 (zero).

Slide 70
FIM!

Slide 71

Você também pode gostar