Buscar

Algorítmos 2016

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

Continue navegando