Baixe o app para aproveitar ainda mais
Prévia do material em texto
1 Programação para Engenharia Prof. Armando Cardoso Ribas 2 Tópico 1 – Introdução aos sistemas computacionais Algoritmos 3 Conteúdo Algoritmos Tópico 1 Introdução a Computação; História e evolução; Noções de arquitetura de computadores. 4 Objetivos Algoritmos Tópico 1 Introduzir os conceitos da computação; Conhecer a história e evolução dos computadores; Ter noções de arquitetura de computadores; Conhecer os passos para resolver problemas; Entender como algoritmos descrevem a solução de problemas. 5 Algoritmos Informalmente, um algoritmo é qualquer procedimento computacional bem definido que toma algum valor ou conjunto de valores como entrada e produz algum valor ou conjunto de valores de saída. Portanto, um algoritmo é uma sequência de passos computacionais que transforma a entrada na saída. Cormen, Thomas H., et al. "Algoritmos: teoria e prática." Editora Campus, 2012. 6 >> Tópico 1 – Introdução Primeiro Computador ENIAC Em 1943 durante a II guerra mundial foi desenvolvido o ENIAC, que pesava 30 toneladas e tinha 5,5 metros de altura, 25 metros de comprimento , 70 mil resistores e 17.468 válvulas de vácuo. Ao custo de US$ 500 mil. Electronic Numerical Integrator And Computer (Computador e Integrador Numérico Eletrônico) 7 Desenvolvido a pedido do exército dos EUA para seu laboratório de pesquisa balística, o ENIAC era um monstrengo de 30 toneladas de peso que ocupava uma área de 180 m² de área construída. Sua produção custou nada menos do que US$ 500 mil na época, o que hoje representaria aproximadamente US$ 6 milhões e a máquina contava com um hardware com 70 mil resístores e 18 mil válvulas de vácuo que em funcionamento consumiam vorazmente 200 mil watts de energia. Já seu “sistema operacional” eram cartões perfurados que eram operados por um time de funcionárias do exército – o que de quebra as classifica como as primeiras programadoras que se tem notícia. Sua construção de iniciou em plena guerra, em 1943, e apesar de ser mostrado em 46 só foi ser ligado pela primeira vez em julho de 47. Apesar de ter uma capacidade de operação menor do que qualquer calculadora de mão moderna, durante seus 10 anos de operação o ENIAC “realizou mais contas do que toda humanidade já havia feito em sua história”. No final de sua carreira, um concorrente com o dobro da capacidade custava o equivalente a US$ 200 mil e tinha apenas 10% de seu tamanho. Tópico 1 – Introdução Primeiro Computador ENIAC 8 O "pai" da computação, Artigo publicado em 1936, teorizou que uma máquina muito simples seria capaz de resolver qualquer problema matemático, desde que ele pudesse ser representado sob a forma de um algoritmo. O trabalho de Turing foi publicado no artigo “On Computable Numbers, with an Application to the Entscheidungsproblem”, submetido em maio de 1936. O Entscheidungsproblem (termo alemão para "problema de decisão") é um problema da lógica simbólica que consiste em achar um algoritmo genérico para determinar se um dado enunciado da lógica de primeira ordem pode ser provado Tópico 1 – Introdução Alan Turing 9 Já assistiram o filme o Jogo da Imitação? http://www.dcc.ufrj.br/~luisms/turing/ https://youtu.be/1VaZLn3_ADQ Tópico 1 – Introdução Porque Aprender a Programar 10 A arquitetura é frequentemente definida como o conjunto de atributos da máquina que um programador deve compreender para que consiga programar o computador específico com sucesso, ou seja, para que consiga compreender o que o programa irá fazer quando da sua execução. Tópico 1 – Introdução Arquitetura de um Computador 11 Trata do comportamento funcional de um sistema computacional, do ponto de vista do programador Tópico 1 – Introdução Arquitetura de um Computador A diferença entre a arquitetura de Von Neumann e a Harvard é que a última separa o armazenamento e o comportamento das instruções do CPU e os dados, enquanto a anterior utiliza o mesmo espaço de memória para ambos. 12 A arquitetura de Von Neumann é composta por: Memória; CPU, que contém os registradores, Unidade aritmética e lógica, e Unidade de Controle (CU); E ainda os dispositivos de entrada e saída para comunicação com o meio externo. Tópico 1 – Introdução Arquitetura de um Computador CISC = Complex Instruction Set Computer ou Computador com um Conjunto Complexo de Instruções RISC = Reduced Instruction Set Computer ou Computador com um Conjunto Reduzido de Instruções 13 https://www.ime.usp.br/~adao/COMPUTADORESRISC2018.pdf https://www.gruponetcampos.com.br/2011/03/17/arquitetura-cisc-e-risc-qual-diferenca/ Os circuitos que executam operações sobre dados são isolados em uma região chamada Unidade Central de Processamento UCP (CPU – Central Processing Unit), ou processador. Os dados que estão armazenados na memória principal e são transferidos através de barramentos que interligam estes componentes. A comunicação com o mundo externo, os usuários, se dá pelos dispositivos de Entrada e Saída (E/S). A comunicação entre o computador e estes dispositivos se dá através dos controladores de cada dispositivo de E/S. Tópico 1 – Introdução Arquitetura de um Computador 14 Em computadores comuns, estes controladores correspondem placas de circuito encaixadas na placa principal do computador (placa mãe). Tópico 1 – Introdução Arquitetura de um Computador 15 É composta por duas partes principais: a unidade lógica e aritmética (ULA), formada por circuitos que manipulam os dados através de operações binárias (dois operandos) e unárias (um operando). E a unidade de controle, cujos circuitos são responsáveis por coordenar as operações da UCP. Tópico 1 – Introdução Arquitetura de um Computador 16 Exemplos incluem a soma e operadores lógicos: and, or e not. http://producao.virtual.ufpb.br/books/camyle/introducao-a-computacao-livro/livro/livro.chunked/ch04s01.html Tópico 1 – Introdução Arquitetura de um Computador 17 Como resolver um problema? Que abordagem para resolver o problema? Que sequência lógica usar? Existe uma? Por onde começar? Tópico 1 – Introdução Problema 18 Tópico 1 – Introdução Elaboração de um Programa 19 Análise do problema: –Ler atentamente o enunciado do problema até entendê-lo bem –Identificar os dados de entrada –O que o programa deve fazer (seu objetivo), isto é, como transformar as entradas em saídas(processamento) –Identificar as saídas(resultados esperados) –Identificar se existem valores ou dados intermediários, necessários para transformar entradas em saídas Tópico 1 – Introdução Processo de Geração de um Programa 20 Tópico 1 – Introdução Processo de Geração de um Programa Entrada Processamento Saída 21 A lógica é usada para guiar nossos pensamentos ou ações na busca da solução: A lógica está correta se conseguirmos atingir o nosso objetivo; É a habilidade fundamental para se resolver problemas de programação de computadores. Temos que aprender a pensar de forma estruturada: Desenvolver e aperfeiçoar a técnica de pensamento; Seguir um raciocínio lógico e matemático. Tópico 1 – Introdução Lógica 22 A lógica trata da correção do pensamento; Ensina-nos a usar corretamente as leis do pensamento: É a arte de pensar corretamente; A forma mais complexa do pensamento é o raciocínio; Ordem da razão (nossa razão pode funcionar desordenadamente) ou ordem no pensamento. Tópico 1 – Introdução O que é Lógica 23 Exemplo: Todo mamífero é animal. Todo cavalo é mamífero. Portanto, todo cavalo é animal. Brasil é país do planeta Terra. Todos os Brasileiros são do Brasil. Portanto, todos os Brasileiros são terráqueos. Tópico 1 – Introdução Noções de Lógica 24 Sempre que pensamos. Quando falamos, pois a palavra falada é a representação do pensamento. Quando escrevemos, pois a palavra escrita é a representação da palavra falada ou mesmo do nosso pensamento. Daí a importância da lógica em nossa vida, pois quando pensamos, escrevemos ou falamos corretamente precisamos colocar Ordem no Pensamento. Tópico 1 – Introdução Existe Lógica no Diaa Dia 25 Lógica de Programação é a técnica de encadear pensamentos para atingir determinado objetivo. Necessária para desenvolver programas e sistemas, pois permite definir a sequência lógica para a solução de um problema Tópico 1 – Introdução Lógica de Programação 26 >> A lógica de programação é necessária para pessoas que desejam trabalhar com desenvolvimento de sistemas e programas. Ela permite definir a sequência lógica para o desenvolvimento. Exercício 1 Um homem precisa atravessar um rio com um barco que possui capacidade de transportar apenas ele mesmo e mais uma de suas três cargas, que são: um lobo, um bode e uma caixa de alfafa. Indique as ações necessárias para que o homem consiga atravessar o rio sem perder suas cargas. O lobo não pode ficar sozinho com o bode, senão ele o come; O bode não pode ficar sozinho com a alfafa, senão a come. Tópico 1 – Introdução O Lobo o Bode e a Alfafa 27 informações: um barco um homem um lobo um bode um maço de alfafa ação atravessar o rio sem perder as cargas resultado todas as cargas na outra margem do rio. Tópico 1 – Introdução O Lobo o Bode e a Alfafa Algoritmo: início atravessar homem e bode voltar homem atravessar homem e lobo voltar homem e bode atravessar homem e alfafa voltar homem atravessar homem e bode fim 28 Exercício 2 No problema dos canibais e missionários, três missionários e três canibais devem atravessar um rio com um barco que pode transportar no máximo duas pessoas, sob a restrição de que, para ambas as margens, se há missionários presentes naquela margem, eles não podem ser ultrapassados pelo número de canibais na mesma margem (se fossem, os canibais comeriam os missionários.) O barco não pode atravessar o rio por si só, sem pessoas a bordo. Tópico 1 – Introdução Problema dos Canibais e Missionários 29 Informações 3 missionário 3 canibais 1 barco com capacidade para 2 pessoas ações atravessar o rio com segurança resultado 3 missonário e 3 canibais na outra margem do rio Tópico 1 – Introdução O Problema dos Canibais e Missionários Algoritmo: início atravessar dois canibais voltar um canibal atravessar dois canibais voltar um canibal atravessar dois missionário voltar um missionário e um canibal atravessar dois missionário voltar um canibal atravessar dois canibais voltar um canibal atravessar dois canibais fim 30 Exercício 3 Você tem dois baldes: um com capacidade para comportar 5 litros, e outro que comporta 3 litros. Você não possui outros recipientes e os baldes não possuem marcações de volume. Problema 1: Você precisa retirar exatamente 7 litros de água de uma bica, com esses baldes. Como fazer isto? Problema 2: Com os mesmos baldes, diga como fazer para retirar exatamente 4 litros de água da mesma bica. Tópico 1 – Introdução Problema dos Baldes 31 Informações 1 baldes de 5 litros sem marcação 1 baldes de 3 litros sem marcação 1 bica ações Retirar uma determinada quantidade de agua resultado 7 litros de agua retirada Tópico 1 – Introdução Problema dos Baldes Algoritmo: início encher o balde de 5 lt esvaziar o balde de 5 lt no balde de 3 lt restam 2 lt no balde de 5 lt esvaziar o balde de 3 ltr mover os 2lt do balde de 5 lt no balde de 3 lt encher o balde de 5 lt fim 32 Sequência Lógica são passos executados até atingir um objetivo ou solução de um problema Podem ser descritos como uma sequência de instruções, que devem ser seguidas para se cumprir uma determinada tarefa Tópico 1 – Introdução Sequência Lógica 33 Instruções são um conjunto de regras ou normas definidas para a realização ou emprego de algo. Cada um dos passos, cada uma das ações a tomar (obedecendo a sequência lógica) para ir resolvendo o problema, ou para ir executando a tarefa Em computação, é a ordem/informação que indica a um computador uma operação elementar a ser executada Ex.: “somar”, “subtrair”, “comparar se é maior”, etc. Uma única instrução não resolve problemas reais Executar um conjunto de instruções Executar em uma sequencia lógica Tópico 1 – Introdução Instrução 34 Instruções: “quebrar ovos”, “bater ovos”, “pôr sal”, “ligar fogão”, “pôr óleo na frigideira”, “pôr frigideira no fogo”, “fritar ovos batidos”, etc... Quanto às instruções isoladas: Só “quebrar ovos”, ou só “pôr óleo na frigideira”, não é suficiente para cumprir a tarefa “fazer omelete” Quanto à sequência lógica: Se executarmos “fritar ovos batidos” antes de “bater ovos”, ou pior, antes de “quebrar ovos”, não iremos cumprir a tarefa “fazer omelete” Tópico 1 – Introdução Exemplo Fazer Omelete 35 – Um Algoritmo é formalmente uma sequência definida e finita de passos que levam à execução de uma tarefa. –Claro e preciso. Ex. “somar dois números”: •Escrever primeiro número no retângulo A •Escrever segundo número no retângulo B •Somar o número do retângulo A com o número do retângulo B e escrever o resultado no retângulo C Tópico 1 – Introdução Algoritmo 36 - Um Algoritmo deve ser claro e preciso - Deve indicar a ordem de realização de cada passo. - Um Algoritmo deve estar definido. - Seguindo um algoritmo duas vezes, devemos obter o mesmo resultado toda vez. - Um Algoritmo deve ser finito. - Seguindo um algoritmo, devemos terminar em algum momento, ou seja deve ter um número finito de passos. Tópico 1 – Introdução Algoritmo 37 O nome Algoritmo vem de um matemático Persa do século IX - Al Khowarizmi - Saiba mais: https://pt.wikipedia.org/wiki/Al-Khw%C4%81rizm%C4%AB Tópico 1 – Introdução Algoritmo 38 >> Mais famoso (talvez o primeiro): Euclides de Alexandria foi um professor, matemático platónico e escritor possivelmente grego, muitas vezes referido como o "Pai da Geometria". Desenvolveu um algoritmo para o cálculo do máximo divisor comum entre dois números MDC. Existem diversas formas de representação de algoritmos, mas não há um consenso com relação à melhor delas. Para SALIBA (1992), o critério usado para classificar hierarquicamente estas formas está diretamente ligado ao nível de detalhe ou, inversamente, ao grau de abstração oferecido. O processo de abstração é uma abordagem dada à solução do problema onde se consideram apenas os aspectos que são importantes para sua solução. Tópico 1 – Introdução Representação de Algoritmos 39 Dentre as formas de representação de algoritmos mais conhecidas se destacam: Descrição Narrativa; Abordagem Gráfica; Pseudocódigo, também conhecido como Linguagem Estruturada ou Portugol. Tópico 1 – Introdução Representação de Algoritmos 40 Descrição Narrativa Nesta forma de representação os algoritmos são expressos diretamente em linguagem natural Tópico 1 – Introdução Representação de Algoritmos 41 Descrição Narrativa Quando uma dona de casa prepara um bolo, segue uma receita, que nada mais é do que um algoritmo em que cada instrução é um passo a ser seguido para que o prato fique pronto com sucesso: 1.Bata 4 claras em neve 2.Adicione 2 xícaras de açúcar 3.Adicione 2 colheres de farinha de trigo, 4 gemas, uma colher de fermento e duas colheres de chocolate 4.Bata por 3 minutos 5.Unte uma assadeira com margarina 6.Coloque o bolo para assar por 20 minutos a 200 graus C Tópico 1 – Introdução Exemplo Algoritmo Fazer Bolo 42 Algoritmo para trocar pneu de um carro Níveis de detalhes: Versão 1 Versão 2 Versão 3 Versão 4 Tópico 1 – Introdução Exemplo Algoritmo Trocar Pneu 43 >>Osmar Vamos ver este algoritmo em 4 versões diferentes com níveis diferentes de detalhes. Trocar pneu Versão 1 Tópico 1 – Introdução Exemplo Algoritmo Trocar Pneu 44 >>Osmar Neste caso temos 0 detalhamento dos passos. Para pessoas experientes é suficiente, mas para quem nunca trocou um pneu? Abra o porta mala; Verifique o estado do estepe; Se estepe estiver furado chame o borracheiro; Caso contrário faça a troca do pneu. Versão 2 Tópico 1 – Introdução Exemplo Algoritmo Trocar Pneu 45 >>Osmar Mascomo faço a troca? Abra o porta malas; Verifique o estado do estepe; Se estepe estiver furado chame o borracheiro; Caso contrário tire o pneu reserva do porta malas; Tire o macaco hidráulico e a chave de roda do porta malas; Coloque o macaco hidráulico embaixo do carro para levantar a roda que está com o pneu furado; Utilize o macaco hidráulico para levantar o carro; Retire o pneu furado; Coloque o pneu reserva; Abaixe o carro utilizando o macaco hidráulico; Versão 3 Tópico 1 – Introdução Exemplo Algoritmo Trocar Pneu 46 Gostaria de saber como tirar o pneu furado do carro. Não se detalhou a retirada dos parafusos. Posso apertar os parafusos do pneu com o carro no macaco? Abra o porta malas; Verifique o estado do estepe; Se estepe estiver furado chame o borracheiro; Caso contrário retire o triângulo de sinalização; Coloque o triângulo de sinalização a no mínimo 30 metros do veículo Tire o pneu reserva do porta malas; Tire o macaco hidráulico e a chave de roda do porta malas; Identifique o pneu furado; Pegue a chave de roda;Afrouxe os parafusos da roda que está com o pneu furado usando a chave de roda; Coloque o macaco hidráulico embaixo do carro para levantar a roda que está com o pneu furado; Utilize o macaco hidráulico para levantar o carro; Retire os parafusos da roda; Retire o pneu furado; Coloque o pneu reserva; Coloque os parafusos no pneu reserva; Aperte os parafusos do pneu reserva; Abaixe o carro utilizando o macaco hidráulico; Aperte mais os parafusos do pneu reserva; Guarde o triângulo de sinalização, o macaco hidráulico, a chave de roda e o pneu furado no porta malas. Versão 4 Tópico 1 – Introdução Exemplo Algoritmo Trocar Pneu 47 >>Osmar Já possui mais detalhes, mas ainda poderia ser mais refinado. Mas em todos os casos a ordem dos passos é fundamental. Lista de Exercício 1 Tópico 1 – Introdução 48 Há diversas formas de representação de algoritmos que diferem entre si pela quantidade de detalhes de implementação que fornecem ou, inversamente, pelo grau de abstração que possibilitam com relação à implementação do algoritmo em termos de uma linguagem de programação específica. Dentre as principais formas de representação de algoritmos destacam-se: a descrição narrativa, o fluxograma convencional e o pseudocódigo (ou linguagem estruturada). Tópico 1 – Introdução Conclusão 49 DEITEL, P.; DEITEL, H. C: como programar. 6. ed. São Paulo: Pearson Prentice Hall, 2011. Disponível em: <https://aplicacoes.unisul.br/pergamum/biblioteca_s/php/login_usu.php?flag=index.php>. Acesso em: 11 fev. 2015. Acesso restrito via Biblioteca Virtual 3.0 (Pearson). PUGA, Sandra; RISSETTI, Gerson. Lógica de programação e estrutura de dados: com aplicação em Java. 2. ed. São Paulo: Pearson Prentice Hall, 2009. Disponível em: <https://aplicacoes.unisul.br/pergamum/biblioteca_s/php/login_usu.php?flag=index.php>. Acesso em: 11 fev. 2015. Acesso restrito via Biblioteca Virtual 3.0 (Pearson). TOSCANI, Laira Vieira; VELOSO, Paulo A. S. INSTITUTO DE INFORMÁTICA DA UFRGS. Complexidade de algoritmos : Laira Vieira Toscani, Paulo A. S. Veloso. Porto Alegre: Bookman, 2008. 261 p. (Livros didáticos ; n. 13) ISBN 9788577803507. Bibliografia 50 Fim Algoritmos 51
Compartilhar