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? ! Tipos de Informaes: ! Podemos classificar os tipos de informaes a serem processadas, a grosso modo, em dados e instrues. ! 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 ! Inteiro: toda e qualquer informao numrica que pertena ao conjunto dos nmeros inteiros (negativa, nula ou positiva). ! Exemplos: 10, 5, -5, -10
Tipos primitivos de dados ! Real: toda e qualquer informao numrica que pertena ao conjunto dos nmeros reais (negativa, nula ou positiva, inteiro ou fracionrio). ! Exemplos:10.555, 15.5, -14.67, -1000.000
Tipos primitivos de dados ! Caractere: So caracterizadas como tipos caracteres, as seqncias contendo letras, nmeros e smbolos especiais. Uma seqncia de caracteres deve ser indicada entre aspas (). ! Este tipo de dado tambm conhecido como alfanumrico, string, literal ou texto. ! Exemplos: "Esta uma cadeia de caracteres", "B", "1552366", "Vozo"
Tipos primitivos de dados ! 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 ! Definio: um valor fixo que pode ou no ser especificado. ! Exemplo: velocidade da luz, pi ! So valores que no sofrem alteraes ao longo da execuo do algoritmo; ! Exemplo: constante pi = 3.14159 VARIVEIS ! O que uma varivel? ! Varivel uma estrutura que adiciona apelidos s posies de memria. ! Para que uma linguagem de programao saiba o que ser guardado em cada posio da memria, necessrio definir um tipo para esse dado. ! Basicamente existem 4 tipos bsicos de variveis: ! Valores inteiros (1, -2, 4, 120, 1024, ...) ! Valores reais (1.1, 0.5, 120.50, -1024.0, ...) ! Valores lgicos (verdadeiro, falso) ! Valores caracteres (arroz, 0.5, verdadeiro, 5) VARIVEIS ! A todo momento durante a execuo de qualquer tipo de programa os computadores esto manipulando informaes representadas pelos diferentes tipos de dados descritos anteriormente. ! 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 ! O nome de uma varivel faz referncia ao endereo de memria onde o valor dessa varivel se encontra. ! O nome de uma varivel utilizado para sua identificao e posterior uso dentro de um programa.
VARIVEIS ! O nome da varivel tem que ser nico ! No se deve utilizar espaos entre as letras ! No utilizar smbolo especial exceto sublinha (underline ou underscore) (_) ! O primeiro caractere de uma varivel sempre deve ser uma letra ! Nenhum nome de varivel pode ser uma palavra reservada a uma instruo da linguagem usada
ENTRADA E SADA DE DADOS ! Comandos para receber os dados a serem processados pelos algoritmos e para exibir o resultado processado. ! Comando de entrada (leia) permite atribuir o dado para uma varivel; ! Comando de sada (escreva) permite exibir o contedo de varivel;