Algoritmos
Prof. Msc. Carlos Queiroz
Semestre 2014.2
Agenda
Apresentao
Ementa da Disciplina
Avaliao
Bibliografia
Introduo
2
Apresentao
Carlos Alberto
Graduao
Especializao
Mestrado
Histrico Profissional
3
Apresentao (Alunos)
Algoritmo para apresentao: Faa:
Diga o seu Nome; Responda: J possui algum conhecimento relacionado a
disciplina?
Indique um colega para se apresentar; Enquanto (tiverem alunos que no se apresentaram )
4
Ementa
Ementa disponvel no Plano de Ensino
5
Avaliao
3 Provas Avaliao Parcial 1 (AP1) -> Peso 30% da nota final Avaliao Parcial 2 (AP2) -> Peso 30% da nota final Avaliao Parcial 3 (AP3) -> Peso 40% da nota final
Mdia deve ser superior a 5,0. Caso contrrio, nos veremos no prximo semestre =)
Obs.: Terceira prova elaborada pela prpria faculdade (25 questes)
6
Bibliografia Bsica
FORBELLONE, Andr Luiz Villar. Lgica de Programao: a Construo de Algoritmos e Estrutura de Dados. So Paulo: Pearson, 2005.
GUIMARAES, Angelo de Moura; LAGES, N. A. C. Algoritmos e Estrutura de Dados. Rio de Janeiro : LTC, 2008.
SEBESTA, Robert W. Conceitos de Linguagens de Programao. So Paulo: Bookman, 2003.
7
8
Aula 1 - Introduo
Agenda
Conceito de Algoritmo
Conceito de programa de computador
9
Conceito de Algoritmo
10
Conceito de Algoritmo (cont.)
Algoritmos esto em toda parte
Receita de bolo
Descrio de um caminho
Instrues medicamentosas
Manual de instrues
Atividades cotidianas
Etc...
11
Conceito de Algoritmo (cont.)
12
Conceito de Algoritmo (cont.)
13
Conceito de Algoritmo (cont.) Exemplo
Trocar uma lampada...
Pegar Lmpada nova
Pegar Escada
Posicionar escada embaixo da lmpada queimada
Subir na escada com a lmpada nova na mo
Retirar lmpada queimada
Colocar lmpada nova
Descer da escada
Testar no interruptor
Guardar a escada
Descartar Lmpada velha
14
Conceito de Algoritmo (cont.)
Exemplo
Calcular mdia
Pegar nota da primeira prova
Multiplicar primeira nota por 0,3 e guarde o resultado
Pegar nota da segunda prova
Multiplicar segunda nota por 0,3 e guarde o resultado
Pegar nota da terceira prova
Multiplicar terceira nota por 0,4 e guarde o resultado
Some todos os resultados que foram guardados
Mostre ao seu professor
15
Conceito de Algoritmo (cont.)
Computadores podem ajudar na realizao de tarefas mais complexas
Problemas envolvendo um grande volume de dados
Problemas que exijam um grande nmero de operaes
Problemas que exijam preciso
Caractersticas de um bom Algoritmo
Finitude
Exatido
Entradas e Sadas determinadas
Efetividade
16
Conceito de Algoritmo (cont.)
Representao
Linguagem Natural
Descrio textual da tarefa em linguagem natural
Forma narrativa
Ex.: Para chegar na minha casa basta que voc siga pela rua A por 2 quilmetros. Quando voc passar em frente a padaria vire esquerda e siga por mais 100 metros. Minha casa ficar logo sua direita.
17
Conceito de Algoritmo (cont.)
Representao
Fluxograma
Representao Grfica estruturada e simplificada
Ilustra o fluxo de operaes
Sintaxe e Semntica bem definidos
Fcil para traduzir para uma linguagem de programao
18
Conceito de Algoritmo (cont.)
Fluxograma
19
Conceito de Algoritmo (cont.)
A sintaxe de um fluxograma corresponde ao emprego correto de seus Elementos Cada instruo possui um smbolo grfico especfico Cada smbolo admite um conjunto de expresses prprias Sub-rotinas pr-definidas podem ser utilizadas nas
expresses
A semntica de um fluxograma corresponde ao significado dos smbolos utilizados Cada instruo deve ser descrita de forma clara, sem
ambiguidade
20
Fluxograma/Resumo
Conceito de Algoritmo (cont.)
Representao
Pseudo-cdigo
22
Algoritmo Aprofundando no conceito Um algoritmo uma sequncia de instrues finita e
ordenada de forma lgica para a resoluo de uma determinada tarefa ou problema.
No obrigatoriamente nico H vrios caminhos para o mesmo destino
Deve seguir uma sequencia lgica Nem toda combinao de uma sequencia de passos vai
levar ao mesmo objetivo completo
23
Conceito de Programa
Programa de Computador
Algoritmo escrito em uma linguagem de programao
24
0-25
Tipos de Software
Software de Aplicao Programas para realizao de tarefas particulares utilizao da
mquina Ex.: Sistemas de Banco de dados, Sistemas de Planilhas
eletrnicas, sistemas de contabilidade, Software para desenvolvimento de programas, etc
Software de Sistema Tratam da realizao de tarefas comuns aos sistemas
computacionais em geral Fornecem a infraestrutura necessria para execuo das
aplicaes
0-26 Figura 3.3 Classificao de software
Software
Aplicao Sistema
Sistema Sistema
Operacional
Linguagem de Mquina
Um processador executa apenas instrues escritas em linguagem de mquina (dgitos binrios)
Cada instruo composta de duas partes
Comando e operando
1000 11101001
A Linguagem de mquina a mais rpida
27
0-28
O Computador
0-29
Viso geral sobre arquitetura de Computadores
Unidade Central de Processamento (CPU)
o conjunto de circuitos de computador que controla a manipulao de dados
Em razo da sua evoluo, hoje so conhecidos tambm por microprocessadores
Consiste em trs partes Unidade Lgica e Aritmtica Unidade de Controle Unidade de Registro
0-30
Viso geral sobre arquitetura de Computadores
Unidade Lgica e Aritmtica Contm circuitos que realizam operaes sobre os dados
Unidade de Controle Contm circuitos para a coordenao das atividades da
mquina
Unidade de Registro Contm clulas de armazenamento de dados Essas clulas so chamadas Registradores e servem
como locais temporrios de armazenamento de dados que so manipulados pela CPU
Registradores Propsito geral Propsito especfico
Memria
Dispositivo capaz de armazenar dados.
Possui uma grande quantidade de posies livres para armazenamento temporrio de dados.
0-32
Viso geral sobre arquitetura de Computadores
Barramento Ligao entre a CPU de uma mquina e sua memria
principal, para fins de transferncia de padres de bits, atravs de um conjunto de fios
Conceito de Programa Armazenado
0-33
Nos primeiros computadores, os passos que cada dispositivo executava eram definidos dentro das suas unidades de controle, como uma parte da mquina
O objetivo que a CPU pudesse ser reconfigurada Ex.: Cartes perfurados
A ideia que um programa assim como seus dados, pudesse ser codificado e armazenado na memria principal A CPU pode extrair as instrues e execut-las O programa a ser executado pode ser alterado mais facilmente No mais necessrio alteraes na CPU para modificaes no
seu programa
0-34
Linguagem de Mquina
A partir do conceito de programa armazenado, as CPUs so projetadas para reconhecer instrues codificadas como padres de bits
Forma geral de operao em dados
1. Unidade de controle transfere dados da memria principal para os registradores
2. Unidade de controle informa a unidade lgica e aritmtica (ULA) sobre quais registradores mantm os dados
3. Ativa os circuitos apropriados da ULA e informa quais os registradores que devem receber o resultado
0-35
0-36
Controlador
Um aparato intermedirio que cuida da comunicao entre a CPU e um dispositivo
Especializados para cada tipo de dispositivo Traduz mensagens e dados em ambas as
direes entre formatos compatveis Atualmente existem controladores de propsito
geral (Ex.: USB)
Comunicao com outros dispositivos
0-37
Porta Ponto no qual um dispositivo se conecta ao
computador
E/S Mapeada em memria A CPU se comunica com os perifricos como se
eles fossem clulas de memria
Comunicao com outros dispositivos
0-38
Figura 2.13 Controladores anexados ao barramento
O QUE SER ARMAZENADO NA MEMRIA?
n Tipos de Informaes: n Podemos classificar os tipos de informaes a serem
processadas, a grosso modo, em dados e instrues.
n Dados: So as informaes a serem processadas por um computador. Consideremos 3 tipos de dados primitivos: numricos (inteiros e reais), caracteres e lgicos.
Tipos primitivos de dados
n Inteiro: toda e qualquer informao numrica que pertena ao conjunto dos nmeros inteiros (negativa, nula ou positiva).
n Exemplos: 10, 5, -5, -10
Tipos primitivos de dados
n Real: toda e qualquer informao numrica que pertena ao conjunto dos nmeros reais (negativa, nula ou positiva, inteiro ou fracionrio).
n Exemplos:10.555, 15.5, -14.67, -1000.000
Tipos primitivos de dados
n Caractere: So caracterizadas como tipos caracteres, as seqncias contendo letras, nmeros e smbolos especiais. Uma seqncia de caracteres deve ser indicada entre aspas ().
n Este tipo de dado tambm conhecido como alfanumrico, string, literal ou texto.
n Exemplos: "Esta uma cadeia de caracteres", "B", "1552366", "Vozo"
Tipos primitivos de dados
n Lgico: So caracterizados como tipos lgicos, os dados com valores verdadeiro e falso, sendo que este tipo de dado poder representar apenas um dos dois valores.
Tipos primitivos de dados
Constantes
n Definio: um valor fixo que pode ou no ser especificado. n Exemplo: velocidade da luz, pi
n So valores que no sofrem alteraes ao longo da execuo do algoritmo;
n Exemplo: constante pi = 3.14159
VARIVEIS
n O que uma varivel? n Varivel uma estrutura que adiciona apelidos s posies de
memria.
n Para que uma linguagem de programao saiba o que ser guardado em cada posio da memria, necessrio definir um tipo para esse dado.
n Basicamente existem 4 tipos bsicos de variveis: n Valores inteiros (1, -2, 4, 120, 1024, ...)
n Valores reais (1.1, 0.5, 120.50, -1024.0, ...)
n Valores lgicos (verdadeiro, falso)
n Valores caracteres (arroz, 0.5, verdadeiro, 5)
VARIVEIS
n A todo momento durante a execuo de qualquer tipo de programa os computadores esto manipulando informaes representadas pelos diferentes tipos de dados descritos anteriormente.
n Para que no se esquea das informaes, o computador precisa guard-las em sua memria. E para que essa informao possa ser usada depois, ela precisa de uma identificao (etiqueta).
VARIVEIS
n O nome de uma varivel faz referncia ao endereo de memria onde o valor dessa varivel se encontra.
n O nome de uma varivel utilizado para sua identificao e posterior uso dentro de um programa.
VARIVEIS
n O nome da varivel tem que ser nico
n No se deve utilizar espaos entre as letras
n No utilizar smbolo especial exceto sublinha (underline ou underscore) (_)
n O primeiro caractere de uma varivel sempre deve ser uma letra
n Nenhum nome de varivel pode ser uma palavra reservada a uma instruo da linguagem usada
ENTRADA E SADA DE DADOS
n Comandos para receber os dados a serem processados pelos algoritmos e para exibir o resultado processado.
n Comando de entrada (leia) permite atribuir o dado para uma varivel;
n Comando de sada (escreva) permite exibir o contedo de varivel;