Professional Documents
Culture Documents
ICC
UFS
2009/2
Conteúdo
Motivação
Introdução
Conceitos
Algoritmos
– Principais características dos algoritmos
– Quais as limitações dos algoritmos?
– Formas de representar um algoritmo
2
Conteúdo
Algoritmo (Portugol)
– Identificadores, variáveis e constantes
– Tipos de dados
– Operadores aritméticos, relacionais e lógicos
– Comandos de entrada e saída e atribuição
– Conceito de bloco de comandos
– Estruturas de controle de fluxo – condicionais (se, se-
senão e caso)
– Estruturas de controle de fluxo – repetições (enquanto,
repita-até e para)
3
Motivação
Algoritmos
– Resolvem problemas do mundo real;
– Executam operações sobre um conjunto de dados;
– Os dados precisam ser organizados de forma coerente;
– Dados organizados expressam uma abstração do mundo
real.
Conceito de Dado:
– “Informação organizada, com sentido lógico para quem a
manipula”.
Algoritmos 4
Motivação
Algoritmos 5
Introdução
Algoritmos 6
Introdução
ACM/IEEE-CS , 1989
Algoritmo – conceito fundamental
na ciência da computação
Algoritmos 7
Introdução
A Programação de Computadores
– A Ciência da Computação podem ser aplicada
em qualquer área do conhecimento humano.
Algoritmos 8
Introdução
Como programar computadores?
– O computador só entende a linguagem de
máquina
Algoritmos 9
Conceitos
Algoritmos 10
Conceitos
Exemplos
Instruções para preparo de uma receita
Instruções para utilização de caixas bancários
Instruções para utilização de aparelho celular
Regras para cálculo do imposto de renda
Instruções para inscrição em um concurso
...
Algoritmos 11
Conceitos
O que é abstração?
– Operação mental que observa a realidade e
captura apenas os aspectos relevantes para
um contexto.
Algoritmos 12
Abstração
O que você abstrai dessa realidade?
Realidade
Abstração
+
Programação
Algoritmos 13
Conceitos
Hardware
– Conjunto de componentes eletrônicos que formar a
parte física do computador
– Processador, Placa Mãe, Disco rígido
Software
– Conjunto de instruções e dados processado pelos
circuitos eletrônicos do hardware
– Sistemas Operacionais, Editores de textos,Planilhas
eletrônicas, Navegadores
– Programas
Agem como instruções para o processador
Algoritmos 14
Conceitos
Compiladores
– Traduzem programas de linguagem humana para
linguagem de máquina
Linguagens de Programação
– Técnica de comunicação padronizada para enviar
instruções a um computador
– Cada linguagem tem sua própria sintaxe e gramática
– Existem diferentes tipos de linguagens de
programação
Algoritmos 15
Ciclo de Vida do
Desenvolvimento de Programas
Algoritmos 18
Algoritmos
Algoritmos 19
Formas de representar um algoritmo
Como
representar um
algoritmo?
Algoritmos 20
Formas de representar um algoritmo
Algoritmos podem ser representados, dentre
outras maneiras, por:
– DESCRIÇÃO NARRATIVA
Utiliza uma linguagem de escrita natural para descrever
algoritmos.
– FLUXOGRAMA
Utiliza uma linguagem de representação gráfica para
descrever algoritmos.
– PORTUGOL
Utiliza uma linguagem de escrita artificial (PSEUDO-CÓDIGO)
para descrever algoritmos.
Algoritmos 21
Formas de representar um algoritmo
Exemplo:
– Algoritmo para converter um valor em
reais (R$) para Euros (€)
Algoritmos 22
Formas de representar um algoritmo
Algoritmos 23
Formas de representar um algoritmo
Fluxograma do algoritmo Reais-Euros
Início Início do algoritmo
Reais
Entrada de Reais (R$)
Apresentação do resultado
Euros
Fim do algoritmo
Fim
Algoritmos 24
Formas de representar um algoritmo
Portugol do algoritmo Reais-Euros
Algoritmo “Reais-Euros”
Var
Reais, Euros : Real
Inicio
Leia (Reais)
Euros 0.397182 * Reais
Escreva (Euros)
FimAlgoritmo
Algoritmos 25
Formas de representar um algoritmo
Vantagens Desvantagens
Descrição O português é bastante Imprecisão.
Narrativa conhecido por nós. Pouca confiabilidade (a
imprecisão acarreta a
desconfiança).
Extensão (normalmente,
escreve-se muito para dizer
pouca coisa).
Fluxograma Padrão mundial. Complica-se à medida que o
Ferramenta bem algoritmo cresce.
conhecida. Pouca atenção aos dados, não
Figuras dizem muito mais oferecendo recursos para
que palavras. declará-los.
Portugol Independência de Exige a definição de uma
linguagem de programação. linguagem não real para
Usa o português como trabalho.
base. Não é padronizada.
Define-se melhor quais e
como os dados vão estar
estruturados.
Passagem quase imediata
do algoritmo para uma
linguagem de programação
qualquer.
Algoritmos 26
Construindo algoritmos
A programação de um sistema
computacional pode ser resumida em 3
passos básicos
Memória
Algoritmos 27
Construindo algoritmos
Uma boa prática para construir algoritmos
é dividir o problema em 3 fases:
Algoritmos 28
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”
var
“Declaração das variáveis. Devemos aqui, informar
quais e os tipos das variáveis que serão utilizadas no
algoritmo.”
inicio
“Corpo do Algoritmo. Aqui será escrita a sequência de
comandos que devem ser executados para solucionar
o referido problema”
fimalgoritmo
Algoritmos 29
Algoritmo - Tipos de Dados Primitivos
Os dados, ao serem manipulados pelo
computador, precisam ter um tipo
associado a ele
Algoritmos 30
Tipos de Dados Primitivos
Algoritmos 31
Tipos de Dados Primitivos
Tipo de Dados Primitivos
– Não permitem a sua decomposição em outros
tipos
– São a base para os tipos derivados
– Exemplos:
Tipo Valores
Inteiros ...-2, -1, 0, 1, 2, 3...
Reais -0.5, 1.67, -52.92, 1.11
Lógicos True (Verdadeiro), False (Falso)
Caracteres ‘A’, ‘b’, ‘C’, ‘c’, ‘0’, ‘1’, ‘#‘, ...
Algoritmos 32
Tipos de Dados Primitivos
Tipo de Dados Derivados Homogêneos
– Agrupam dados primitivos do mesmo tipo em
um conjunto
– Exemplos:
Tipo Valores
Vetores [0, 1, 2, 3, 4, 5]
Matrizes [0, 1, 2], [4, 5, 6]
Cadeias ‘palavra’
Algoritmos 33
Tipos de Dados Primitivos
Tipo de Dados Derivados Heterogêneos
– Agrupam dados primitivos de tipos diferentes
em um conjunto
– Exemplos:
Tipo Valores
Registro {0, 1, 2.5, ‘palavra’, [0,1],
’s’}
Algoritmos 34
Tipos de Dados Primitivos
Tipo de Dados Estáticos
– Possuem um tamanho finito no número de
elementos de seu conjunto.
– Exemplos: vetores, matrizes, cadeias de
caracteres, etc.
Algoritmos 35
Algoritmo - Identificadores
Representam os nomes escolhidos para rotular
as variáveis, procedimentos, funções e nomes de
programas.
Normalmente, obedecem as seguintes regras:
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,_};
3. Não deve haver espaço em branco;
4. Não deve haver identificadores repetidos;
5. Não existe distinção de maiúsculas e minúsculas;
6. Os nomes escolhidos devem ser claros a fim de
explicitar seu conteúdo uso, mas também não deve ser
extenso para não dificultar a escrita.
Algoritmos 36
Algoritmo - Variáveis
São as unidades básicas de
armazenamento das informações em
programação
Algoritmos 37
Algoritmo - Variáveis
Algoritmos 38
Algoritmo - Constantes
Algoritmos 39
Algoritmo - Operações
Algoritmos 40
Operação de Atribuição
Tem como finalidade armazenar um valor,
variável ou expressão na variável
Algoritmos 41
Operações Aritméticas
Operador Descrição
+, - Operadores unários, isto é, são aplicados a um único operando. Exemplos: -3,
+x
+ Adição
- Subtração
* Multiplicação
/ Divisão
\ Operador de divisão inteira. Por exemplo, 5 \ 2 = 2
MOD ou % Operador de módulo (isto é, resto da divisão inteira).
Por exemplo, 8 MOD 3 = 2
^ Operador de potenciação. Por exemplo, 5 ^ 2 = 25.
Algoritmos 43
Operações Aritméticas
Função Descrição
Quociente(a,b) Retorna o quociente da divisão inteira de a por b
Resto(a,b) Retorna o resto da divisão inteira de a por b
Potência(a,b) Retorna o valor de a elevado a b
Raiz(a,b) Retorna a raiz b de a. Raiz(a,b)
Sorteio(a) Retorna um número aleatório, em intervalo fechado, entre 1 e a
Seno(x) Retorna o seno de x
Cosseno(x) Retorna o cosseno de x
Modulo(x) Retorna o módulo ou valor absoluto de x
Inteiro(x) Retorna a parte inteira de x. Inteiro(10/3) = 3
Algoritmos 44
Operações Relacionais
São utilizados para relacionar variáveis ou
expressões, resultando num valor lógico
(Verdade ou Falso)
Operador Descrição
= Igual
<> Diferente
< Menor
> Maior
<= Menor ou Igual
>= Maior ou Igual
Algoritmos 45
Operações Lógicas
Algoritmos 46
Operações Lógicas
Operador Descrição
Operador que resulta VERDADEIRO somente se seus
e dois operandos lógicos forem verdadeiros.
Algoritmos 47
Prioridade de Operadores
Algoritmos 48
Prioridade de Operadores
5º Operadores Relacionais
6º Operadores Lógicos
Algoritmos 49
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
A sintaxe para ler um dado é mostrada abaixo:
leia (<lista-de-variáveis>)
Ex1: leia(matricula)
Ex2: leia(codigo, curso)
Algoritmos 50
Comandos de Entrada e Saída
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.
A sintaxe do comando de saída é mostrada
abaixo:
escreva (<lista-de-expressões>)
A expressão mostrada acima pode ser uma variável
ou uma cadeia de caracteres, como mostrado nos
exemplos abaixo:
– Ex1: escreva(curso)
– Ex2: escreva(‘Matricula: ‘, matricula)
Algoritmos 51
Comandos de Controle
Algoritmos 52
Sequência
Utilizado para executar comandos passo a
passo, na qual todos os comandos serão
executados nas ordem escrita sem desvio
Algoritmos 53
Sequência
inicio
Comando_1
...
Comando_N
fim
Algoritmos 54
Seleção
Usado para fazer comparações e simular uma
decisão no fluxo do algoritmo
Algoritmos 55
Seleção
A sintaxe do comando simples é mostrada
abaixo:
se <expressão-lógica> entao
<sequência-de-comandos>
fimse
O comando de seleção simples funciona da
seguinte maneira:
1.A expressão lógica é resolvida;
2.Se o resultado da expressão for verdadeiro, então a
sequência-de-comandos será executada;
3.Caso o resultado seja falso a sequência-de-
comandos não será executada.
Algoritmos 56
Seleção
Algoritmos 57
Seleção
Algoritmos 58
Seleção
Duplicidades em Seleção
– Como na seleção composta apenas um blocos de
comandos será executado, atentar para não repetir o
mesmo comandos nos dois blocos
Algoritmos 59
Qualidade de Programação
A qualidade de um software se mede pelo produto
desenvolvido e pelo seu processo de construção
Benefícios de um código com qualidade
– Reduz defeitos e validação dos requisitos de software
– Boa leitura e entendimento
– Facilidade de manutenção
Técnicas de qualidade de programação
– Identação e espaçamentos
– Comentários
Textos explicativos. Não é executado.
EX: {isso é um comentário}
– Clareza na lógica
– Variáveis representativas
Algoritmos 60
Qualidade de Programação
Algoritmo sem qualidade
algoritmo “Maior”
var N1, N2, N3, Ma: Inteiro
Inicio
leia (N1, N2, N3)
se N1 > N2 entao
Ma <- N1
senao
Ma <- N2
fimse
se N3 > Ma entao
Ma <- N3
fimse
escreva(‘O maior é: ‘,Ma)
fimalgoritmo
Algoritmos 61
Qualidade de Programação
Algoritmo com qualidade
{Algoritmo que, dado 3 números inteiros diferentes, identifica quem é o maior}
algoritmo “MaiorNumero”
var numero1, numero2, nunmero3, maiorNumero: Inteiro
Inicio
leia (numero1, numero2, numero3) {lendo os números}
{Verificando quem é o maior número}
se numero1 > numero2 entao
maiorNumero <- numero1 {guardando o 1º número como o maior}
senao
maiorNumero <- numero2 {guardando o 2º número como o maior}
fimse
se nunmero3 > maiorNumero entao
maiorNumero <- nunmero3 {guardando o 3º número como o maior}
fimse
escreva(‘O maior é: ‘, maiorNumero) {exibindo o maior número}
fimalgoritmo
Algoritmos 62
Comando de Seleção Aninhado
Algoritmos 63
Comando de Seleção Aninhado
Abaixo segue um exemplo de um trecho de um
código utilizando comando de seleção aninhado:
Algoritmos 64
Comando escolha
O comando ESCOLHA (CASO), corresponde ao
comando SE-ENTAO, mas de uma forma mais compacta
nas operações de seleção.
escolha <expressão-de-seleção>
caso <exp11>, <exp12>, ..., <exp1n>
<sequência-de-comandos-1>
caso <exp21>, <exp22>, ..., <exp2n>
<sequência-de-comandos-2>
...
outrocaso
<sequência-de-comandos-extra>
fimescolha
Algoritmos 65
Comando de Repetição - Enquanto
A sintaxe do comando enquanto é mostrada
abaixo:
enquanto <expressão-lógica> faca
<sequência-de-comandos>
fimenquanto
Algoritmos 66
Comando de Repetição - Repita
A sintaxe do comando repita é mostrada
abaixo:
repita
<seqüência-de-comandos>
ate <expressão-lógica>
Algoritmos 67
Comandos de Repetição - Observações
Algoritmos 68
Comando de Repetição - Para
A sintaxe do comando para é mostrada abaixo:
para <variável> de <valor-inicial> ate <valor-
limite> [passo <incremento>] faca
<sequência-de-comandos>
fimpara
O <incremento> é opcional.
Quando presente, precedida pela palavra passo,
é 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.
Vale a pena ter em conta que também é possível
especificar valores negativos para <incremento>.
Algoritmos 70