Baixe o app para aproveitar ainda mais
Prévia do material em texto
Universidade Estácio de Sá Algoritmos Engenharia de Produção Prof. D.Sc. Marco Almeida Fev/2016 Universidade Estácio de Sá Ementa/Programa Detalhado UNIDADE 1 - INTRODUÇÃO A ALGORITMOS Introdução à organização de computadores. Algoritmos, estruturas de dados e programas. Função dos algoritmos na Computação. Exemplos de algoritmos informais. Notações gráficas e descritivas de algoritmos. Paradigmas de linguagens de programação. Evolução das linguagens de programação. Conceitos de tipos primitivos de dados, identificadores, variáveis, constantes e comando de atribuição. Operadores aritméticos, relacionais e lógicos. Funções matemáticas. Expressões lógicas. Comandos de entrada e saída de dados. Blocos de instruções e linhas de comentários. Objetivos Criar algoritmos utilizando-se do raciocínio lógico dedutivo e de técnicas de programação estruturada, no desenvolvimento, análise e aplicação de soluções computacionais. Universidade Estácio de Sá Ementa/Programa Detalhado UNIDADE 2 - ESTRUTURA DE SEQUÊNCIA, FUNÇÕES E MODULARIZAÇÃO DE PROGRAMAS Conceito de estruturas de sequência. Sintaxe da estrutura sequencial. Metodologia de solução de algoritmos. Desenvolvimento de funções com uso das estruturas de sequencia. Exemplos resolvidos. Desenvolvimento e implementação de exercícios. Funções definidas pelo programador. Passagem de parâmetros por valor. Aplicações simples de funções para resolução de problemas. Conceitos básicos de reutilização de código a partir do uso de funções. UNIDADE 3 - ESTRUTURAS DE SELEÇÃO Conceito de estrutura de seleção. Estrutura de seleção simples. Estrutura de seleção composta. Estrutura de seleção encadeada. Estrutura de seleção de múltipla escolha. Desenvolvimento de algoritmos com o uso de estruturas de seleção. Exemplos resolvidos. Desenvolvimento e implementação de exercícios. Desenvolvimento de funções com o uso das estruturas de seleção. Exemplos resolvidos. Desenvolvimento e implementação de exercícios. Universidade Estácio de Sá Ementa/Programa Detalhado UNIDADE 4 - ESTRUTURAS DE REPETIÇÃO E ARRANJO UNIDIMENSIONAL Conceito de estrutura de repetição. Repetição com teste no início (enquanto). Repetição com teste no final (faça-enquanto). Repetição com variável de controle (para). Desenvolvimento de algoritmos com o uso de estruturas de repetição e de funções. Exemplos resolvidos. Desenvolvimento e implementação de exercícios. Arranjo Unidimensional. Desenvolvimento e implementação de exercícios usando arranjo unidimensional. Metodologia de Ensino Aulas expositivas, podendo contar com o apoio de slides em power point e uso do laboratório de informática. ATIVIDADES DISCENTES Desenvolver trabalhos, individuais e em grupo com apresentação em formato de seminários. Universidade Estácio de Sá PROCEDIMENTOS DE AVALIAÇÃO O processo avaliativo do desempenho do aluno será realizado por meio de prova escrita, trabalhos de pesquisa com apresentação em formato de apresentação. BIBLIOGRAFIA BÁSICA DEITEL, Harvey M.; DEITEL, Paul J. Java, como programar. 8. ed. São Paulo: Pearson Prentice Hall, 2010. FORBELLONE, André Luiz Villar; EBERSPACHER, Henri Frederico. Lógica de Programação. 5. ed. São Paulo: Pearson, 2005. MANZANO, José Augusto N. Algoritmos: lógica para desenvolvimento de programação de computadores. Rio de Janeiro: Érica, 2012. Universidade Estácio de Sá BIBLIOGRAFIA COMPLEMENTAR ASCENCIO, Ana Fernanda Gomes. Fundamentos da programação de computadores. 3. ed. São Paulo: Pearson, 2012. CORMEN, T.H. et al. Algoritmos: Teoria e prática. Rio de Janeiro: Campus, 2002. GARCIA, Guto; LOPES, Anita. Introdução à programação: 500 algoritmos resolvidos. Rio de Janeiro: Campus, 2002. MOKARZE, F.; SOMA, N. Introdução à Ciência da Computação, Rio de Janeiro: Campus, 2008. WIRTH, N. Algoritmos e estrutura de dados. Rio de Janeiro: LTC, 1989. Universidade Estácio de Sá Parte 1 - Introdução à Ciência da Computação - A computação surge na década de 40, do século passado e vem continuamente se desenvolvendo. - O princípio fundamental de operação do computador não mudou, desde o ENIAC em 1945. - O EDVAC, em 1952, foi o primeiro computador integralmente eletrônico. - Os computadores atuais são digitais, ou sejam, processam as informações utilizando números binários. - Este modelo computacional deve-se ao matemático John Von Neumann, que estabeleceu os princípios dos computadores atuais e que por isso também são chamados de “computadores Von Neumann”. - Pelo fato de operarem no formato numérico binário, significa que os números de base decimal a que estamos familiarizados devem ser convertidos no seu correspondente binário. - Da mesma forma, o alfabeto e os símbolos gráficos (!?,.%$#<> etc) também devem ser convertidos em seu equivalente codificado em binário. Universidade Estácio de Sá 1. Introdução à Ciência da Computação Abaixo, Jon Von Neumann e o EDVAC Universidade Estácio de Sá 1. Introdução à Ciência da Computação No início da Computação, a programação era realizada por meio de abertura e fechamento de válvulas eletrônicas através de chaves que controlavam a passagem de correntes pelas válvulas. Tarefa essencialmente de manipulação física do hardware, conforme figura abaixo, demonstrando a programação do ENIAC. Universidade Estácio de Sá 1. Introdução à Ciência da Computação - A quantificação da informação armazenada e processada por um computador é feita pelo byte (caracterizado pela letra B). - 1 Byte é igual a 8 bits (caracterizado pela letra b). - Em termos aproximados 1 byte corresponde a um caracter e a informação é quantificada em múltiplos de bytes. - Os bytes são potências de 2. - Abaixo, como são apresentadas as ordens de grandeza do byte. MBkBbytesbytesGB kBbytesbytesMB kbbitsbytesbyteskB 024.1576.048.1824.741.073.121 024.1576.048.121 8192.8024.121 30 20 10 Universidade Estácio de Sá 1. Introdução à Ciência da Computação Conceitos de Hardware e Software Hardware: é o termo em inglês empregado para designar todo e qualquer componente, parte e sistema, capaz de realizar um processamento computacional, isto é, um processamento de modificação e controle de dados numéricos. Exemplos de hardware são: a) o computador, suas partes, componentes e b) periféricos (monitor de vídeo, disco magnético, impressora, etc). Um computador é constituído pelas seguintes unidades: 1- Unidade Central de Processamento (CPU – Central Processing Unit): responsável pela execução de instruções e pelo controle da operação de todas as unidades do computador. 2- Unidade de Armazenagem de instruções e dados, que pode ser dividida em unidade primária, para armazenamento em tempo de execução (memória RAM - Random Access Memory) de curta duração e unidade de armazenamento secundária, de longa duração, é uma memória permanente constituída pela memória ROM (Read-Only Memory), pelos discos magnéticos (floppy disk e disco rígido) e pelos discos ópticos (CD-ROM, CD-RW) e magneto-ópticos. Universidade Estácio de Sá 1. Introdução à Ciência da Computação 3- Unidade de Entrada e Saída (I/O – Input e Output): cuja função primária é a entrada e saída de dados do computador. Exemplos de dispositivos de entrada de dados são o teclado, o mouse, microfone e joystick, enquanto que dispositivos de saída típicos são o monitor de vídeo, caixa de som e impressora. Exemplos de periféricos que funcionam como dispositivos de entrada e saída de dados são a tela de vídeo sensível ao toque (touch screen) e o modem, usado para comunicação de dados entre computadores através de uma linha telefônica. Os programas de computador são um conjunto de instruções que comandam o hardware. O software, por sua vez, designa um programa ou um conjunto de programas, capazes de atuar, modificar e controlar o processamento de dados lógicos e numéricos pelo computador. Existem três tipos de software: Universidade Estácio de Sá - Sistemas Operacionais e Firmware:Os sistemas operacionais são programas de computador que contém todas as instruções para o controle e a operação do computador. Exemplos de sistemas operacionais são: a) MS-DOS b) Windows-9x (95, 98, ME e XP/Home), Windows NT, 200 e XP/Professional e o c) UNIX e suas variantes (Linux, FreeBSD, Solaris, Mac-OSX, etc) que "rodam" em diversas plataformas de hardware. A maioria dos sistemas operacionais provê uma interface de usuário gráfica (GUI - Graphical User Interface), de modo a facilitar a operação do computador sem a necessidade de memorização de comandos. O firmware é um conjunto de instruções que informa ao sistema operacional quais são os componentes de hardware que estão instalados no computador. Normalmente, o firmware é um conjunto de instruções que vem gravado numa memória ROM do tipo CMOS (Complementary Metal Oxide Semiconductors) instalada na placa-mãe. Em microcomputadores do tipo PC o firmware também é chamado de BIOS (Basic Input-Output System) a que muitos técnicos se referem como CMOS (por causa do tipo de memória). Universidade Estácio de Sá - Linguagens de Programação: São as ferramentas para a construção de softwares, tanto para sistema operacional como para aplicações. Todos os programas que rodam num computador são feitos à partir de uma linguagem de programação. Existem diversas linguagens de programação, incluindo os seus dialetos que, geralmente, são constituídos por extensões da linguagem feitos por um fabricante de software em particular. Exemplos de linguagens de programação são: 1) FORTRAN (linguagem de uso científico) 2) COBOL (linguagem de uso comercial) 3) BASIC 4) Pascal 5) C, C++ e 6) Java. Existem linguagens de programação implementadas dentro de um software de aplicação e que são denominados scripts, como o VisualBasic for Applications (VBA), que é a linguagem script encontrada nos programas de processamento de texto Word, planilha Excel e banco de dados Access, todos integrantes do pacote de software Office da Microsoft. Universidade Estácio de Sá Primeira pesquisa: Pesquisar sobre as seguintes linguagens de programação: FORTRAN, COBOL, PASCAL, BASIC, Linguagem Assembly, C, C++, JAVA/JAVA Script e VISUAL BASIC. Mas, o que de fato é script? Em Informática, script é um conjunto de instruções em código, ou seja, escritas em linguagem de computador. É uma linguagem de programação que executa diversas funções no interior de um programa de computador. As linguagens de script são ferramentas utilizadas para: * Controle de um determinado programa ou aplicativo; * Para configuração ou instalação em sistemas operacionais; e ainda, em jogos para controlar as ações dos personagens. Algumas linguagens de programação geralmente usadas como script são: ActionScript, JavaScript, Lua, PHP, Python, ShellScript, Ruby, VBScript. Outros programas que, originalmente foram criados como programas de aplicação com recursos de programação script, como os softwares de gerenciamento de banco de dados, evoluíram para linguagens de programação de banco de dados, como é o caso da linguagem SQL, desenvolvida pela IBM e pelo programa Oracle da empresa homônima. http://www.significados.com.br/javascript/ Universidade Estácio de Sá - Software Aplicativo: Programas de computador desenvolvidos para o usuário final, podem ser classificados como software de aplicação. Os softwares de aplicação geralmente são programas desenvolvidos para uma aplicação específica como, por exemplo: um software de controle de contas a pagar e receber ou um software de planilha eletrônica ou de processamento de texto. Na medida em que o hardware foi evoluindo (processadores mais velozes, memórias e discos com maior capacidade de armazenamento, etc), os programas aplicativos foram evoluindo englobando diversas tarefas e agregando outros programas num "pacote", como o MS Office. Na figura a seguir, é esquematizado, em nível hierárquico, a relação entre hardware, software e o usuário (ser humano). Quanto mais inferior o nível, mais ele se aproxima do nível puramente físico em que enxergamos um computador como sendo um conjunto de componentes eletrônicos, placas de circuito e gabinetes, sem uma função lógica (e inteligente) a fazê-lo funcionar. Universidade Estácio de Sá À medida que subimos nos diversos níveis, aproxima-nos do nível puramente lógico, representado pela inteligência criadora do computador, o ser humano. Neste nível, estamos numa camada mais abstrata em que os conceitos são baseados na lógica e no raciocínio para criarmos os programas que irão interagir com o nível físico. Um programa de computador é, na essência, um conjunto de instruções transcritas para a linguagem do computador da inteligência (abstrata) do seu criador. Usualmente, ele é confundido pelo disquete/pen-drive no qual é armazenado, mas na realidade trata-se de uma entidade lógica relacionada com a capacidade intelectual do seu autor em descrever de forma algoritmica a sequência para a consecução de uma atividade executada pelo computador. Universidade Estácio de Sá - Arquitetura de Microcomputadores: Um computador é essencialmente uma máquina de processamento de dados. Ele recebe dados ou requisição de informações, processa-os e fornece as informações ou dados requisitados de modo ordenado, digerido e reduzido, em forma de tabelas, gráficos, imagens, texto, som, etc. Um microcomputador é um tipo de computador no qual a unidade central de processamento (CPU) é constituída por um circuito integrado de uso genérico de ultra alta escala de integração (ULSI - Ultra Large Scale of Integration) denominado microprocessador. Devido à sua disponibilidade, o microcomputador vem encontrando inúmeras aplicações em diferentes áreas: - na comunicação de dados - em redes de computadores - como sistema de aquisição de dados e de controle de instrumentação nas áreas científica, médica e industrial - como videogame e - centro de entretenimento. Universidade Estácio de Sá A seguir veremos a arquitetura de um microcomputador. Um microprocessador é um circuito integrado de elevadíssimo grau de integração, contendo milhões de transistores, e é constituído basicamente por três unidades: a) Unidade de Controle: obtém as informações que estão armazenadas na memória principal, interpreta-as e dá sequência às operações para as outras unidades para executar as instruções; Universidade Estácio de Sá b) Unidade Lógica e Aritmética: unidade que realiza as operações lógicas e aritméticas. As operações lógicas principais são a multiplicação lógica (AND lógico), adição lógica (OR lógico), negação lógica, inversão ou complementação lógica (NOT lógico), além de outras operações como NAND, NOR, XOR, etc. As operações aritméticas são a adição, subtração, multiplicação, divisão e deslocamento. Universidade Estácio de Sá c) Memória interna cache: realiza operação de armazenamento da parcela de dados da memória principal mais requisitadas, com a finalidade de aumentar a velocidade de acesso aos dados entre a CPU e a memória principal. Universidade Estácio de Sá A seguir veremos o esquema do circuito do microprocessador Pentium . A memória é usada para armazenar instruções e dados operados pela CPU. Existem dois tipos de memória: memória ROM e memória RAM. A memória ROM ou memória apenas de leitura (Read-Only Memory) armazena principalmente as informações que necessitam ficar armazenadas permanentemente, como aquelas relativas ao hardware (tipo e quantidade de discos magnéticos, tipo de controladora de vídeo, endereçamento e quantidade de memória). Universidade Estácio de Sá A memória RAM ou memória de acesso direto (Random-Access Memory) é um tipo de memória volátil, isto é, as informações armazenadas nela são temporárias e se perdem quando o computador é desligado. A memória RAM é utilizada principalmente para armazenar dados e instruções relativos aos programas a serem executados e que ficam disponíveis apenas durante o tempo deexecução. Níveis de Linguagens de Programação Existe apenas uma linguagem de programação que qualquer computador pode entender e executar: o seu código de máquina nativo. Este é o mais baixo nível em que se pode escrever um programa de computador. Todas as outras linguagens de programação são chamadas de linguagens de alto nível ou de baixo nível em função do seu grau de semelhança com a linguagem de máquina em termos de recurso e de sintaxe. Assim, uma linguagem de baixo nível corresponde à linguagem de máquina, de modo que uma instrução nessa linguagem corresponde a uma instrução em código de máquina. Já uma instrução em linguagem de alto nível corresponde a uma série de instruções em linguagem de máquina. Universidade Estácio de Sá As linguagens de baixo nível: Vantagem: Podem ser escritas com instruções que acessam diretamente às particularidades da arquitetura da unidade central de processamento (CPU) tornando, assim, o programa extremamente eficiente, otimizando o uso tanto da memória RAM como do processador em sí. Desvantagem: Escrever um programa em linguagem de baixo nível demanda um tempo significativamente maior e requer um conhecimento mais aprofundado das características internas do processador, além do código estar mais sujeito a falhas pela maior complexidade de programação. As linguagens de alto nível: As linguagens de alto nível permitem o desenvolvimento rápido de programas. Em comparação com os programas escritos em linguagem de baixo nível, o desempenho pode não ser tão bom, mas a economia de tempo na programação supera a menor eficiência na execução pelo fato do custo operacional mais elevado residir no desenvolvimento de software e não na upgrade do hardware. Universidade Estácio de Sá Dando continuidade ao nosso curso, vamos tratar de VÍRUS!!! Mas, não estamos falando de vírus biológico !!! E sim de computadores! Universidade Estácio de Sá O que é vírus de computador? O nome é o mesmo dos agentes causadores de doenças infecciosas. Mas, em computação: nada mais são do que pequenos programas desenvolvidos com o objetivo de causar algum dano ao usuário do computador, seja indivíduos, empresas e outras instituições. Tipos de problemas encontrados: - podem apagar dados, - capturar informações, - alterar ou impedir o funcionamento do sistema operacional - e assim por diante Universidade Estácio de Sá Como se não bastasse, há ainda outros softwares parecidos, como: worms, spywares, cavalos de troia, hijackers e ransomwares. O que é um Malware? É comum pessoas chamarem de vírus todo e qualquer programa com fins maliciosos. Portanto, há vários tipos de "pragas digitais", sendo os vírus apenas uma categoria delas. Logo, Malware é uma combinação das palavras malicious e software que significa "programa malicioso“. Portanto, Malware nada mais é do que um nome criado para quando necessitamos fazer alusão a um software malicioso, seja ele um vírus, um worm, um spyware, etc. É importante frisar que a palavra "computador" é utilizada neste texto da maneira mais ampla, considerando os vários tipos de dispositivos computacionais que existem: desktops, servidores, smartphones, tablets e assim por diante. Universidade Estácio de Sá É válido destacar também que os malwares não se limitam a uma única plataforma. Há quem pense, por exemplo, que só há pragas digitais para Windows, mas isso não é verdade. Apple também pode pegar vírus!!! Como dito anteriormente, um vírus é um programa com fins maliciosos, capaz de causar transtornos com os mais diversos tipos de ações: Os vírus, tal como qualquer outro tipo de malware, podem ser criados de várias formas. Os primeiros foram desenvolvidos em linguagens de programação como C e Assembly. Hoje, é possível encontrar inclusive ferramentas que auxiliam na sua criação. há vírus que apagam ou alteram arquivos dos usuários, que prejudicam o funcionamento do sistema operacional danificando ou alterando suas funcionalidades, que causam excesso de tráfego em redes, entre outros. Universidade Estácio de Sá Como os vírus agem? Os vírus recebem esse nome porque possuem características de propagação que lembram os vírus reais, isto é, biológicos: quando um vírus contamina um computador, além de executar a ação para o qual foi programado, tenta também se espalhar para outras máquinas, tal como fazem os vírus biológicos nos organismos que invadem. Antigamente, os vírus tinham um raio de ação muito limitado: se propagavam, por exemplo, toda vez que um disquete contaminado era lido no computador. Com o surgimento da internet, no entanto, essa situação mudou drasticamente, para pior. Exemplos de forma de propagação: - Falhas de segurança (bugs): sistemas operacionais e outros programas não são softwares perfeitos e podem conter falhas. Estas, quando descobertas por pessoas com fins maliciosos, podem ser exploradas por vírus, permitindo a contaminação do sistema, muitas vezes sem o usuário perceber; - E-mails: essa é uma das práticas mais exploradas. O usuário recebe mensagens que tentam convencê-lo a executar um arquivo anexado ou presente em um link. Se o usuário o fizer sem perceber que está sendo enganado, certamente terá seu computador contaminado; -Downloads: o usuário pode baixar um arquivo de um determinado site sem perceber que este pode estar infectado. Universidade Estácio de Sá Outros tipos de malwares: Como você já sabe, os vírus não são os únicos malwares que existem. A definição do que a praga é ou não é depende, essencialmente, de suas ações e formas de propagação. Eis os tipos mais comuns: Cavalos de troia (ou trojans) são um tipo de malware que permitem alguma maneira de acesso remoto ao computador após a infecção. Esse tipo de praga pode ter outras funcionalidades, como capturar de dados do usuário para transmití - los a outra máquina. Para conseguir ingressar no computador, o cavalo de troia geralmente se passa por outro programa ou arquivo. O usuário pode, por exemplo, fazer um download pensando se tratar de uma ferramenta para um determinado fim quando, na verdade, se trata de um trojan. Esse tipo de malware não é desenvolvido para se replicar. Quando isso acontece, geralmente trata-se de uma ação conjunta com um vírus. Os vírus também podem se propagar através de uma combinação de meios. Por exemplo, uma pessoa em um escritório pode executar o anexo de um e-mail e, com isso, contaminar o seu computador. Em seguida, este mesmo vírus pode tentar explorar falhas de segurança de outros computadores da rede para infectá-los. Universidade Estácio de Sá Os worms (ou vermes, nome pouco usado) podem ser interpretados como um tipo de vírus mais inteligente que os demais. A principal diferença está na forma de propagação: os worms podem se espalhar rapidamente para outros computadores - seja pela internet, seja por meio de uma rede local - de maneira automática. Explica-se: para agir, o vírus precisa contar com o "apoio" do usuário. Isso ocorre, por exemplo, quando uma pessoa baixa um anexo contaminado de um e-mail e o executa. Os worms, por sua vez, podem infectar o computador de maneira totalmente discreta, explorando falhas em aplicativos ou no próprio sistema operacional. É claro que um worm também pode contar com a ação de um usuário para se propagar, pois geralmente esse tipo de malware é criado para contaminar o máximo de computadores possível, fazendo com que qualquer meio que permita isso seja aceitável. Terceira pesquisa: PESQUISAR SOBRE SPYWARE, KEYLOGGER, HIJACKER, ROOTKIT, RANSOMWARE. Veremos a seguir alguns dos mais conhecidos malwares: Universidade Estácio de Sá Jerusalem (Sexta-feira 13): lançado em 1987, o vírus Jerusalem (apelido "Sexta- Feira 13") era do tipo time bomb", ou seja, programado para agir em uma determinada data, neste caso, em toda sexta-feira 13, como o apelido indica. Infectava arquivos com extensão .exe, .com, .bin e outros, prejudicando o funcionamento do sistemaoperacional; Melissa: criado em 1999, o vírus Melissa era um script de macro para o programa Word, da Microsoft. Foi um dos primeiros a se propagar por e-mail: ao contaminar o computador, mandava mensagens infectadas para os 50 primeiros endereços da lista de contatos do usuário. O malware causou prejuízo a empresas e outras instituições pelo tráfego excessivo gerado em suas redes; ILOVEYOU: trata-se de um worm que surgiu no ano 2000. Sua propagação se dava principalmente por e-mail, utilizando como título uma frase simples, mas capaz de causar grande impacto nas pessoas: "ILOVEYOU" (eu te amo), o que acabou originando o seu nome. A praga era capaz de criar várias cópias suas no computador, sobrescrever arquivos, entre outros; Code Red: worm que surgiu em 2001 e que se espalhava explorando uma falha de segurança nos sistemas operacionais Windows NT e Windows 2000. O malware deixava o computador lento e, no caso do Windows 2000, chegava inclusive a deixar o sistema inutilizável; Universidade Estácio de Sá MyDoom: lançado em 2004, este worm utilizava os computadores infectados como "escravos" para ataques DDoS. Se espalhava principalmente por programas de troca de arquivos (P2P) e e-mails. Neste último, além de buscar endereços nos computadores contaminados, procurava-os também em sites de busca. FALSOS ANTIVÍRUS e ANTIVÍRUS Falsos Antivírus Não é novidade para ninguém que o meio mais utilizado como proteção contra vírus e outros malwares são os antivírus. Cientes disso, "delinquentes virtuais" passaram a explorar essa característica a seu favor: criaram falsos antivírus. A propagação desse tipo de software é feita de várias maneiras. Nas mais comuns, sites de conteúdo duvidoso exibem propagandas que se passam por alertas de segurança. Se o usuário clicar na mensagem, será convidado a baixar um programa ou acessar uma página que supostamente faz varreduras em seu computador. A suposta ferramenta, que inclusive costuma ter interface que lembra os antivírus mais conhecidos do mercado, simula uma varredura que aponta a existência de um ou mais malwares no computador e se oferece para limpar o sistema mediante pagamento. Mas tudo não passa de simulação. http://www.infowester.com/ddos.php Universidade Estácio de Sá Antivírus O mercado conta com antivírus pagos e gratuitos (estes, geralmente com menos recursos). Alguns programas, na verdade, consistem em pacotes de segurança, já que incluem firewall e outras ferramentas que complementam a proteção oferecida pelo antivírus. LISTA DE ANTIVÍRUS, agora é com vocês! - AVG - AVAST - NORTON - Microsoft Security Essentials - Panda - Kaspersky - Avira AntiVir - McAfee e outros Universidade Estácio de Sá DICAS de PROTEÇÃO Muita gente pensa que basta ter um antivírus no computador e estará livre de malwares. A palavra chave é PREVENÇÃO!!! • Aplique as atualizações do sistema operacional e sempre use versões mais recentes dos programas instalados nele; • Tome cuidado com anexos e link em e-mails, mesmo quando a mensagem vier de pessoas conhecidas; • O mesmo cuidado deve ser dado a redes sociais (Facebook, orkut, Twitter, etc) e a serviços como o Windows Live Messenger; • Antes de baixar programas desconhecidos, busque mais informações sobre ele em mecanismos de buscas ou em sites especializados em downloads; • Tome cuidado com os sites que visita. É muito comum, por exemplo, a propagação de malwares em páginas de conteúdo adulto; Universidade Estácio de Sá • Ao instalar um antivírus, certifique-se de que este é atualizado regularmente, do contrário, o programa não será capaz de identificar novos vírus ou variações de pragas já existentes; • Faça uma varredura com o antivírus periodicamente no computador todo. Também utilize o programa para verificar arquivos baixados pela internet; • Vírus também podem ser espalhar por cartões SD, pendrives e aparelhos semelhantes, portanto, sempre verifique o conteúdo dos dispositivos removíveis e, se possível, não utilize-os em computadores públicos (faculdade, escola, lan house, etc). FINALIZANDO Antes de encerrarmos, é conveniente desmentirmos uma crença: a de que vírus e afins podem danificar o hardware do computador. Malwares são softwares, portanto, não podem queimar ou fazer com que um componente exploda. http://www.infowester.com/sd.php Universidade Estácio de Sá Por exemplo, O que pode acontecer é de uma praga conseguir danificar o firmware de algum dispositivo, isto é, o software que o faz funcionar. Mas esse é um procedimento bastante complexo e, consequentemente, muito difícil de ocorrer. É importante esclarecer também que o simples ato de baixar um vírus não contamina imediatamente o computador. É necessário que alguma ação - um clique do usuário, por exemplo - o faça entrar em ação. Universidade Estácio de Sá 4 - Ambiente para os Computadores: Se está para criar ou informatizar um negócio pela primeira vez pode estar pensando que o aspecto mais importante para decidir quais os equipamentos a adquirir é o preço. Os futuros empresários querem reduzir os custos e isso é justificado. No entanto, a poupança feita na compra dos equipamentos pode transformar-se em prejuízo se estes passarem a dar problemas, se o seu desempenho for mau, se precisar de manutenção e suporte caros ou se, simplesmente, não refletir às suas necessidades. -Escolha do Equipamento: Tipos de Computadores e seus acessórios Desktop: O bom e velho PC de mesa deve ser a primeira escolha de uma empresa pois confere estabilidade. Se pensa não mudar tão cedo de morada, e se não tem problemas de espaço, esta é a melhor opção. Os desktops costumam ser mais baratos, seguros e duráveis, pois têm muito espaço para futuros upgrades de memória e adição posterior de componentes. Isto significa que se estes computadores ficarem ultrapassados, o gasto poderá ser apenas num upgrade, não sendo necessária a troca completa da máquina. Portáteis: Os portáteis ganham espaço no mundo da informática empresarial por economizarem espaço e permitirem que o colaborador se desloque para diferentes locais, ou diferentes clientes, tendo presente a sua ferramenta de trabalho mais importante. Em desempenho, estes são inferiores aos desktops, quando se fala por exemplo de aplicações pesadas (aplicações gráficas, Autocad, etc.), e não têm tanta facilidade para serem atualizados (upgrades). Por isso, existe sempre o risco destas máquinas estarem completamente desatualizadas em três ou quatro anos. Universidade Estácio de Sá Netbooks e tablets: São máquinas que têm desempenho menor que dos PCs e portáteis, mas ganham muito em portabilidade, pois têm porte e peso muito inferior. Servem apenas para que, colaboradores que já têm um desktop na empresa possam deslocar-se até clientes sem perderem o acesso ao e-mail ou outras ferramentas. Vantagens de adquirir computadores desenvolvidos para uso em empresas Mesmo que sua empresa seja uma micro-empresa, vale sempre a pena adquirir computadores especialmente desenvolvidos para o uso empresarial. As marcas de computadores têm critérios específicos para diferenciar este tipo de máquinas das de utilização pessoal (as que normalmente adquirimos numa grande superfície). Quais os componentes que deve ter em consideração Monitores: Há sondagens que dizem que monitores maiores aumentam a produtividade dos colaboradores, pois permite que trabalhem com várias janelas ao mesmo tempo. Mas na realidade isso não é verdade. Se sua empresa tem um software de gestão cujas janelas estão inseridas numa mesma janela ainda maior, esse efeito perdesse. Além, que é claro e óbvio de monitores maiores exigem mais espaço em todo o escritório, ocorre igualmente que por vezes o colaborador deve sentar-se mais distante deste. Processador. Se seu orçamento não estiver assim tão apertado, compensa escolher um processador com o maior número possível de cores (núcleos). Um sistema com dois ou quatro núcleos (dual ou quad core) permite umdesempenho muito mais rápido e várias tarefas em simultâneo. Universidade Estácio de Sá Memória: A escolha da memória também influi na rapidez das máquinas e costuma ser mais económica do que o processador. Portanto, se a parte financeira pede economia sem abrir mão do desempenho, escolha o maior número possível de memória RAM. Disco rígido: Se sua empresa trabalha apenas com documentos de texto e word, estes consomem pouco espaço e não é necessário ter um grande disco. Mas se guarda fotos, vídeos e áudios, é necessário comprar máquinas com discos maiores, no mínimo superior a 1Tb. A capacidade destes não interfere no desempenho da máquina, mas se estiver muito cheio, pode provocar lentidão, sobretudo se a memória RAM também estiver sobrecarregada. Rede: Em geral, todos os computadores já vêm de fábrica com placa de rede. Além disso, sobretudo no caso dos portáteis, é importante ter placa wi-fi (para permitir o acesso à internet sem fios). Existem três versões de Wi-Fi: B, G e N. Cada versão é mais rápida do que a anterior, e a versão mais recente, a 802.11n, é a melhor. Duração da bateria: Se a exigência é que o equipamento seja utilizado longe de uma tomada, é importante que este tenha autonomia de, no mínimo, 5 horas. Informe-se bem sobre isso e sobre a maneira correcta de realizar o carregamento da bateria no sentido de orientar os seus colaboradores. Os fabricantes tendem a divulgar a durabilidade máxima da bateria, mas na utilização normal o desempenho costuma se entre 50% e 70% do tempo anunciado dependendo do tipo de uso. Eficiência energética: O gasto de electricidade do equipamento é algo muito importante e a ser considerado, ainda mais se estes costumam ficar ligados 24h por dia. Além disso, deve haver uma responsabilidade crescente das empresas com a questão ambiental. Universidade Estácio de Sá Ambiente para os Computadores: - Escolha do Local para Instalação - Servidor: aqui estamos tratando do ambiente a ser instalado os computadores e seus acessórios e não a parte que trata dos softwares, drives etc. • O local deve ter o menor acesso possível de pessoas estranhas; • Espaço suficiente para movimentar o servidor para manutenção; • Boa refrigeração: aquecimento; • Boa iluminação • Etc.. Universidade Estácio de Sá 5 - Técnicas de Resolução de Problemas: Programação Estruturada (Modularização) Programação Estruturada (Modularização) A característica fundamental da programação estruturada é modular a resolução do problema através da sua divisão em subproblemas menores e mais simples. Neste processo, cada subproblema pode ser analisado de forma individual e independente dos demais. Tal modularização tem por objetivo: Facilitar o trabalho com problemas complexos; Permitir a reutilização de módulos Refinamentos Sucessivos (Top-Down): Essa técnica consiste da divisão do problema inicial em subproblemas, e estes em partes ainda menores, sucessivamente, até que cada parte seja descrita através de um algoritmo claro e bem-definido. Um algoritmo que resolve um determinado subproblema é denominado subalgoritmo. Universidade Estácio de Sá Sabe-se que é possível escrever algoritmos para uma ampla gama de problemas. No entanto, as vezes, nos sentimos desnorteados quanto ao rumo que se deve tomar quando do desenvolvimento de um algoritmo para resolver um dado problema. A seguir veremos a técnica Top-Down. Desenvolvimento Top-Down: Consiste em um paradigma de atacar o problema de forma gradual. Após o entendimento completo do problema, basta dividi-lo em partes menores para que os detalhes sejam tratados individualmente e a solução como um todo seja alcançada com a união das resoluções de todas as partes. Escrever algoritmos usando top-down facilita a maneira de encarar os problemas, pois dividir um problema inicialmente complexo em partes de solução trivial, propicia 'insights' mentais que nos revelam o caminho que o algoritmo deve seguir. A estratégia por trás do método top-down(de cima para baixo) é a descrita abaixo: -ter uma visão geral do problema; -dividi-lo em partes menores; -resolver essas partes; -refinar as partes se uma solução ainda não foi encontrada; -unir todos os refinamentos; Universidade Estácio de Sá Subalgoritmos (Módulos) Por convenção, um subalgoritmo deve ser declarado acima dos módulos que o chamam. Todo subalgoritmo tem por objetivo a resolução de um determinado subproblema. Portanto, mantém as mesmas características de um algoritmo comum, ou seja, pode ter dados de entrada; dados de Saída; e conter qualquer tipo de comando aceito por um algoritmo. Por serem tratados de forma independente dos demais módulos, cada subalgoritmo só pode manipular variáveis/constantes: Globais: declaradas no início do algoritmo principal (passagem de valor por referência); ou Locais: declaradas no próprio subalgoritmo (passagem de valor por argumento). Subalgoritmos podem ser do tipo Procedimento (não retorna valor de forma explícita) ou Função (retorna valor de forma explícita). Universidade Estácio de Sá 6 – Definição e Características de Algoritmo: Noções de Lógica LÓGICA: é a forma correta de organizar os pensamentos e demonstrar o raciocínio de maneira correta. A utilização da lógica é a melhor forma de solucionar problemas e atingir objetivos. Sempre que se quer pensar, falar ou escrever corretamente, deve-se colocar os pensamentos em ordem. Exemplo: - Todo mamífero é animal - Todo cavalo é mamífero - Portanto, todo cavalo é animal A lógica é muito importante em nossa vida, no dia - a - dia. Veja os exemplos abaixo: a) A gaveta está fechada. A bala está na gaveta. Preciso primeiro abrir a gaveta, para depois pegar a bala. b) Moramos em três pessoas. Nenhum de nós dois quebrou o vaso de porcelana. Quem quebrou o vaso? Universidade Estácio de Sá 6 – Definição e Características de Algoritmo: Algoritmos Algoritmos É a forma organizada de expressar uma sequência de passos que visam atingir um objetivo definido. Algoritmo é a lógica necessária para o desenvolvimento de um programa. Apesar do nome estranho, os algoritmos são muito comuns no nosso cotidiano, como por exemplo, em uma receita de bolo. Nela estão escritos os ingredientes necessários e a sequências de passos ou ações a serem cumpridos para que se consiga fazer um determinado tipo de bolo. Em um modo geral, um algoritmo segue um determinado padrão de comportamento, com objetivo de alcançar a solução de um problema. Padrão de comportamento: imagine a sequência de números: 1, 6, 11, 16, 21, 26, Para determinar qual será o sétimo elemento dessa série, precisamos descobrir qual é a sua regra de formação, isto é, qual é o seu padrão de comportamento. Como a sequência segue uma certa constância, facilmente determinada, somos capazes de determinar qual seria o sétimo termo ou outro termo qualquer. Universidade Estácio de Sá Fatores a serem levados em consideração na construção de um algoritmo 1. Complexidade Percebe-se, na medida em que colocamos situações novas no problema a ser resolvido, que vai aumentando a complexidade do algoritmo. Esse certamente é o maior problema envolvido na construção de algoritmos. A complexidade pode ser vista como um sinônimo de variedade (quantidade de situações diferentes que um problema pode apresentar), as quais devem ser previstas na sua solução. LOGO DEVE-SE MINIMIZAR A COMPLEXIDADE NA MEDIDA DO POSSÍVEL. Exemplo: Digamos que se pergunte a um leigo a respeito de um relógio: - Como é um relógio? = É um instrumento com três ponteiros concêntricos. Como a descrição não é relevante, poderíamos indagar: - Um relógio com 2 ponteiros é possível? = É... pode ser! Poderíamos ainda indagar: - E um relógio com apenas 1 ponteiro não poderia ser uma possibilidade? = Bem... Pode ser com 3, 2 ou 1 ponteiro. - E sem ponteiro pode? = Ah!, Sim! Pode ser digital Universidade Estácio de Sá Já a pergunta: “O que é um relógio?”, poderia resultar naresposta: - É um instrumento cuja finalidade é marcar o decorrer do tempo. Ou seja, algumas variáveis podem aumentar ou diminuir a complexidade de um sistema quando forem bem ou mal utilizadas. 2. Legibilidade Mede a capacidade de compreensão de um algoritmo por qualquer observador (que não o construiu); a clareza com que sua lógica está exposta. Quanto mais legível for um algoritmo, menor será sua complexidade. 3. Portabilidade Devido a quantidade enorme de linguagens de programação existentes, não será adotada nenhuma linguagem específica para trabalhar os algoritmos (ex: C, pascal, Java, etc.). Isso porque a solução do problema fica ligada a características e recursos da linguagem na qual ela foi concebida. Utilizaremos uma pseudo-linguagem (linguagem fictícia) que visa a permitir a representação dos algoritmos através da língua portuguesa (português estruturado). Esses algoritmos poderão ser convertidos facilmente para qualquer linguagem de programação usual (Basic estruturado, C, pascal, Java). Universidade Estácio de Sá Método para construir um algoritmo Utilizando os conceitos já desenvolvidos, esquematizaremos um método para construir um algoritmo logicamente correto: 1. Ler atentamente o enunciado Deve-se reler o enunciado de um exercício quantas vezes for necessário, até compreendê-lo completamente. A maior parte da resolução de um exercício consiste na compreensão completa do enunciado. 2. Retirar a relação das entradas de dados do enunciado Através do enunciado, descobrimos quais são os dados que devem ser fornecidos ao programa, via teclado, a partir dos quais são desenvolvidos os cálculos. Obs. Pode haver algum algoritmo que não necessite da entrada de dados (pouco comum). 3. Retirar do enunciado, a relação das saídas das informações Através do enunciado podemos descobrir quais são as informações que devem ser mostradas para compor o resultado final, objetivo do algoritmo. Universidade Estácio de Sá 4. Determinar o que deve ser feito para transformar as entradas nas saídas especificadas Nessa fase é que teremos a construção do Algoritmo propriamente dito. Devemos determinar qual sequência de passos ou ações é capaz de transformar um conjunto de dados nas informações de resultado. Para isso, utilizamos os fatores descritos anteriormente, tais como legibilidade, portabilidade, método cartesiano e planejamento reverso, e finalmente podemos construir o algoritmo. Exercícios de Fixação a) Um homem quer atravessar um rio com um barco que pode carregar ele mesmo e apenas mais uma de suas três cargas: um lobo, um carneiro e um maço de alfafa. O que o homem deve fazer para atravessar o rio sem perder nenhuma de suas cargas? a) Elabore um algoritmo que mova 3 discos de uma torre de Hanói, que consiste em 3 hastes (a-b-c), uma das quais serve de suporte para os três discos de tamanhos diferentes (1-2-3), os menores sobre os maiores. Pode-se mover um disco de cada vez para qualquer haste, sendo que nunca deve ser colocado um disco maior sobre um menor. O objetivo é transferir os três discos da haste A para haste C. Universidade Estácio de Sá Tipos de Informações Podemos classificar os tipos de informações a serem processadas, a grosso modo, em dados e instruções. Dados São as informações a serem processadas por um computador. Consideremos 3 tipos de dados: numéricos (inteiros e reais), caracteres e lógicos. Tipos primitivos de dados: 1.a) Inteiro: toda e qualquer informação numérica que pertença ao conjunto dos números inteiros (negativa, nula ou positiva). Exemplos: 39, 0, -56 entre outros. a) Ele tem 15 irmãos. b) A temperatura desta noite será de -2 graus. Universidade Estácio de Sá 1.b) Real: toda e qualquer informação numérica que pertença ao conjunto dos números reais (negativa, nula ou positiva, inteiro ou fracionário). Exemplos:- 4, 3, 0, 35, 1,23 a) Ela tem 1,73 metro de altura. b) Meu saldo bancário é de - R$ 121,07. 2) Caractere: São caracterizadas como tipos caracteres, as seqüências contendo letras, números e símbolos especiais. Uma sequência de caracteres deve ser indicada entre aspas (““). Este tipo de dado é também conhecido como alfanumérico, string, literal ou texto. Exemplos: “Rua Alfa, 52 Apto 1”, “Fone: 574- 9988”, “04387-456”, “ “, “7”. a) Constava na prova: “Use somente caneta!”. 3) Lógico: São caracterizados como tipos lógicos, os dados com valores verdadeiro e falso, sendo que este tipo de dado poderá representar apenas um dos dois valores. Ele é chamado por alguns de tipo boleano, devido à contribuição do filósofo e matemático inglês George Boole na área da lógica matemática. Os dados do tipo lógico, poderão ser apresentados e delimitados pelo caractere ponto (.) ou não: falso, .f. , verdadeiro ou .v. Exemplo: você pode entrar. Universidade Estácio de Sá Exercícios de Fixação Determine qual é o tipo primitivo de informação presente nas sentenças abaixo: a) A placa “Pare!” tinha dois furos de bala. b) Josefina subiu 5 degraus para pegar uma maçã boa. c) Alberta levou 3 horas e meia para chegar ao hospital onde concebeu uma garota. d) Julia escreveu em sua casa: “Preserve o meio ambiente”, e ficou devendo R$ 20,59 ao vendedor de tintas. e) José recebeu sua 18ª medalha na natação por ter alcançado a marca de 57,3 segundos nos 100 metros rasos. Constantes x Variáveis: Entende-se por uma informação constante, aquela que não sofre nenhuma alteração no decorrer do tempo. Por exemplo, na fórmula a seguir, o que é constante e o que é variável? ENTRADA + 2.25 RESULTADO Universidade Estácio de Sá O uso de Variáveis: Tem-se como definição de variável tudo aquilo que é sujeito a variações. Variáveis são espaços de memória que são alocados para armazenar informações. Por que precisa-se de variáveis? R: Para armazenar valores que serão utilizados posteriormente. Ex.: Em um cálculo complexo, resultados intermediários podem ser armazenados e posteriormente processados para se obter o resultado final. Imagine que a memória de um computador é um grande armário com diversas gavetas, onde cada gaveta pode conter somente um valor (numérico, caractere ou lógico). Deve-se concordar que é necessário identificar cada gaveta para sua utilização posterior, através de um nome. Universidade Estácio de Sá Nomenclatura e declaração das variáveis O nome de uma variável faz referência ao endereço de memória onde essa variável se encontra . Existem algumas regras para a utilização das variáveis: . Nome de variável pode ter 1 ou mais caracteres . O primeiro caractere de uma variável sempre deve ser uma letra . Nenhuma variável pode ter espaço em branco em seu nome . Nenhum nome de variável pode ser uma palavra reservada a uma instrução da linguagem usada . Poderão ser utilizados somente letras, números e sublinhado (embora algumas linguagens aceitem o cedilha e acentuação). . Procure sempre utilizar variáveis que tenham sentido (Mnemônicos). Ex: alt_homens ao invés de x. Universidade Estácio de Sá A declaração de uma variável também depende da linguagem. A variável X será declarada do tipo inteiro e a variável Y do tipo real. Observe a definição em cada linguagem: Nos algoritmos, não será cobrada a distinção entre inteiro e real. Utilizaremos a declaração das variáveis simplesmente como numérica, na forma apresentada abaixo: Variáveis numérico a,b,c -> 1, 3, 5.4, 8.72, 0 caracter d -> a, b, teste, Juca lógico entra -> verdadeiro ou falso Universidade Estácio de Sá Parte 2 – Introdução a Algoritmos Universidade Estácio de Sá Parte 2 – Introdução a Algoritmos Universidade Estácio de Sá Parte 2 – Introdução a Algoritmos Universidade Estácio de Sá Parte 2 – Introdução a Algoritmos Universidade Estácio de Sá Parte 2 – Introdução a Algoritmos Universidade Estácio de Sá Parte 2 – Introdução a Algoritmos Universidade Estácio de Sá Parte 2 – Introdução a Algoritmos Universidade Estácio de Sá Parte 2 – Introdução a AlgoritmosUniversidade Estácio de Sá Parte 2 – Introdução a Algoritmos Universidade Estácio de Sá Parte 2 – Introdução a Algoritmos Universidade Estácio de Sá Parte 2 – Introdução a Algoritmos Universidade Estácio de Sá Parte 2 – Introdução a Algoritmos Universidade Estácio de Sá Parte 2 – Introdução a Algoritmos Universidade Estácio de Sá Parte 2 – Introdução a Algoritmos Universidade Estácio de Sá Parte 2 – Introdução a Algoritmos Universidade Estácio de Sá Parte 2 – Introdução a Algoritmos Universidade Estácio de Sá Parte 2 – Introdução a Algoritmos Universidade Estácio de Sá Parte 2 – Introdução a Algoritmos Universidade Estácio de Sá Parte 2 – Introdução a Algoritmos Universidade Estácio de Sá Parte 2 – Introdução a Algoritmos Universidade Estácio de Sá Parte 2 – Introdução a Algoritmos Universidade Estácio de Sá Parte 2 – Introdução a Algoritmos Universidade Estácio de Sá Parte 2 – Introdução a Algoritmos Universidade Estácio de Sá Parte 2 – Introdução a Algoritmos Universidade Estácio de Sá Parte 2 – Introdução a Algoritmos Universidade Estácio de Sá Parte 2 – Introdução a Algoritmos Universidade Estácio de Sá Parte 2 – Introdução a Algoritmos Universidade Estácio de Sá Parte 2 – Introdução a Algoritmos Universidade Estácio de Sá Parte 2 – Introdução a Algoritmos Universidade Estácio de Sá Parte 2 – Introdução a Algoritmos Universidade Estácio de Sá Parte 2 – Introdução a Algoritmos Universidade Estácio de Sá Parte 2 – Introdução a Algoritmos Universidade Estácio de Sá Parte 2 – Introdução a Algoritmos Universidade Estácio de Sá Parte 2 – Introdução a Algoritmos Universidade Estácio de Sá Parte 2 – Introdução a Algoritmos Universidade Estácio de Sá Parte 2 – Introdução a Algoritmos Universidade Estácio de Sá Parte 2 – Introdução a Algoritmos Universidade Estácio de Sá Parte 2 – Introdução a Algoritmos Universidade Estácio de Sá Parte 2 – Introdução a Algoritmos Universidade Estácio de Sá Parte 2 – Introdução a Algoritmos Universidade Estácio de Sá Parte 2 – Introdução a Algoritmos Universidade Estácio de Sá Parte 2 – Introdução a Algoritmos Universidade Estácio de Sá Parte 2 – Introdução a Algoritmos
Compartilhar