Instituto Federal de Mato Grosso do SulFevereiro/2024
02. Computadores
Construção de Algoritmos
Prof. Rodrigo Duran
Nesta aula vamos:
-
Aprender o que é um computador e como ele é organizado
Vamos aprender definições sobre computadores, tipos de computadores e a história da computação. Vamos aprender sobre as partes do computador, suas funções e como elas se relacionam.
-
Aprender o que é um programa e como computadores podem ser programados
Vamos aprender sobre os vários tipos de programas, o que são linguagens de programação e como programas podem ser escritos em uma linguagem de programação
Computadores
Por que precisamos da computação?
Humanos são ótimos em reconhecer padrões e observar interações. Nem tanto em executar atividades repetitivas rapidamente...
ExemploEm 1880, a população dos Estados Unidos havia crescido tanto que o cálculo do seu censo levava em torno de 7 anos. Mais trabalhadores não iria resolver o problema: o ritmo de crescimento da população faria o censo ser cada vez mais demorado.
Herman Hollerith desenvolveu uma máquina usando cartões perfurados que executava a tarefa em 3 anos (menos dinheiro!). Hollerith funda uma empresa que futuramente viria a ser conhecida como IBM (International Business Machines).
Computadores amplificam as habilidades intelectuais dos seres humanos permitindo simular outras áreas do conhecimento mecanizando e automatizando processos. Essa automatização nos permite processar uma grande quantidade de informação.
Por que precisamos da computação?
Quero ouvir a sua opinião
O que é um Processo?
A Ciência da Computação é o estudo dos processos de informação. Um processo é uma sequência de passos. Cada passo altera o estado do mundo de alguma forma (geralmente pequena). O resultado de todos os passos nos leva de um estado inicial até o nosso objetivo, o estado final.
Computação foca em processos que envolvem informações abstratas (números) ao invés de processar objetos do mundo físico. Os computadores obtém informação do meio físico através de entradas (teclado, mouse, etc), processam a informação oferecem uma saída (estado final).
Plantar uma árvore
Fazer um bolo
Triagem de um paciente
O que é um Procedimento?
Um procedimento é uma descrição de um processo. Um processo simples pode ser descrito apenas listando cada um de seus passos: a própria listagem é um procedimento, o ato de seguir cada passo é o processo.
Um procedimento que pode ser seguindo sem nenhuma intervenção é chamado de procedimento mecânico.
ALGORITMO
É uma sequência finita de instruções rigorosas, normalmente usadas para resolver uma classe de problemas específicos ou para realizar uma computação
É um procedimento mecânico que tem a garantia de eventualmente terminar.
HEURÍSTICA
É uma abordagem para resolução de problemas que pode não ser totalmente especificada ou pode não garantir resultados corretos ou ótimos, especialmente em domínios de problemas onde não há um resultado correto ou ótimo bem definido
Problemas Clássicos da Ciência da Computação
“ É possível desenhar uma máquina que receba um programa e decida se este programa sempre termina ou não? ”
O problema da parada.
Problemas Clássicos da Ciência da Computação
“ Dada uma lista de cidades e as distâncias entre cada par de cidades, qual é a rota mais curta possível que visita cada cidade exatamente uma vez e retorna à cidade de origem? ”
O caixeiro viajante - William Rowan Hamilton
Apesar de possível, esse é um problema difícil (NP-Hard) que escala muito mal com o número de entradas (O(n!)).
QUIZ!
Um procedimento é:
- Uma sequência de passos
- A descrição de uma sequência de passos
- Uma sequência de passos que sempre termina
O que é um Computador?
Um computador é uma máquina que pode:
- Aceitar uma entrada: Uma entrada pode ser feita por um ser humano digitando em um teclado, recebido através da Internet, ou fornecido automaticamente através de sensores.
- Executar um algoritmo
- Produzir uma saída: A saída pode ser um número, frase, imagem, som ou vídeo apresentada ao ser humano através de um monitor, ou qualquer coisa que afeta o mundo exterior (ligar motores, equipamentos elétricos) ou outros computadores (enviar dados através da Internet).
Uma breve história do computador...
1837
O matemático Inglês Charles Babbage cria uma máquina mecânica, a Máquina Analítica, que seria capaz de solucionar problemas matemáticos genéricos. A maioria dos elementos da arquitetura de um computador moderno estavam presentes na máquina analítica.
A matemática Ada Lovelace foi a primeira programadora do mundo. Ela foi a primeira a conjecturar que a Máquina Analítica poderia servir a outros propósitos além de cálculos e publicou o primeiro algoritmo para ser executado em um computador (mecânico).
1936
O matemático e cientista da computação Inglês Alan Turing apresenta a ideia de uma máquina universal de computação, posteriormente nomeado de Máquina de Turing, capaz de computar qualquer coisa que seja computável. As teorias centrais sobre computação são apresentadas por Turing.
Durante a II Guerra Mundial, Turing trabalhou em operações secretas para decifrar os códigos de guerra Alemães da máquina Enigma no projeto Ultra.
1944
Concebido pelo professor Howard Aiken, de Harvard, e construído pela IBM, o Harvard Mark 1 é uma calculadora do tamanho de uma sala baseada em mais de 3500 relês. O Mark 1 produzia tabelas matemáticas mas foi logo superado pelos computadores eletrônicos.
1945
O matemático John von Neumann descreve a arquitetura de um computador com programa-armazenado, incluindo armazenamento eletrônico de programas e dados, o que eliminava outros meios mecânicos como cartões perfurados.
O EDVAC foi um dos primeiros computadores digitais que operavam com números binários. A arquitetura de Von Neumann seque presente até hoje nos computadores modernos.
1953
A almirante Grace Hopper desenvolve a primeira linguagem de computador, que eventualmente se tornará o COBOL (ainda muito utilizada no setor de negócios). Grace Hopper também popularizou o termo bug para descrever erros de programação em um código de computador (na época ela literalmente achou insetos no Mark I) e também foi pioneira nos primeiros compiladores.
1976
Steve Jobs and Steve Wozniak fundam a Apple Computers no 1o de Abril e anunciam o Apple I, o primeiro computador composto por uma única placa de de circuitos.
1977
A Apple lança o Apple II, que incorpora um monitor colorido e uma fita cassete para armazenagem.
1981
O primeiro computador pessoal (PC - Personal Computer) foi lançado pela IBM. O PC utiliza o sistema operacional Microsoft's MS-DOS e tem um chip Intel como processador, dois "disquetes" e um monitor colorido. O PC se torna popular ao ser vendido em lojas de departamentos. A IBM domina o mercado ao oferecer um modelo de computador que pode ter suas peças trocadas livremente.
1985
A MicroSoft anuncia o Windows, um sistema como interface gráfica com o usuário (GUI - Graphical User Interface).
1990
Tim Berners-Lee, um pesquisador do CERN, desenvolve o HyperText Markup Language (HTML), dando início à World Wide Web (WWW), a qual foi concebida inicialmente como uma plataforma de troca de informações científicas.
2007
A Apple anuncia o iPhone, o primeiro telefone celular com capacidades de um PC e interfaces inovadoras com o usuário.
Como um computador funciona?
Como vimos anteriormente, existem vários tipos de computadores, nas mais variadas formas e tamanhos. Atualmente, os computadores podem ser grosseiramente organizados em:
- Computadores de propósito geral: Podem ser usados para vários tipos de atividades. Desktops, laptops.
- Computadores embarcados (embedded systems): dispositivos que contém um computador que possuem um ou poucos propósitos. Caixas eletrônicos, carros, máquina de lavar, entre outros.
Embora muitos dos conceitos desse curso se apliquem a sistmas embarcados, focaremos no desenvolvimento para computadores de propósito geral
Hardware and Software
Os dois sistemas principais de um computador são seu hardware e software
- Hardware: Componentes eletrônicos e mecânicos de um computador.
- Software: Programas e sistemas que controlam o hardware e fazem a interface com o usuário
Componentes do computador
QUIZ!
Qual exemplo abaixo não é um hardware:
- Placa-mãe
- Memória RAM
- Sistema operacional
- Placa de vídeo
Uma variedade de programas
Para controlar o hardware, computadores empregam diversos tipos de procedimentos para desempenhar uma determinada tarefa.
O tipo mais comum de programa são as aplicações: processadores de texto, navegadores, jogos, e outros são exemplos de aplicações. Aplicações são feitas em código, uma linguagem de programação.
Entretanto, existem outros tipos de programas tais como:
- Sistemas operacionais: Governam o uso do hardware e possibilitam a execução de aplicações. Windows, Linux, MacOS são exemplos de sistemas operacionais.
- Bibliotecas: São coleções de partes de outros programas que os programadores podem utilizar para criar aplicações. Exemplos são bibliotecas matemáticas ou gráficas de determinadas linguagens de programação.
- Drivers de dispositivo: "Ensinam" ao sistema operacional como controlar componentes de hardware específicos.
Criando programas
Programas são processos que devem ser descritos de forma não ambígua, precisa, sistemática e descontextualizada. Lembrem-se: A CPU apensa executa as instruções a ela passadas!
Linguagens naturais (ainda) não podem descrever algoritmos de acordo com as condições acima.
Portanto, programas são descritos em um tipo de linguagem especial, as linguagens de programação. As linguagens de programação são formais e possuem apenas um pequeno conjunto de palavras (sintaxe) e significandos (semântica) precisos.
Entretanto, os programas não podem ser executados diretamente em código escrito em uma linguagem de programação. Geralmente, usamos um interpretador ou compilador para transformar o código-fonte (na linguagem de programação) em uma linguagem de máquina que pode ser executada.
QUIZ!
Com relação aos algoritmos, computação e programas, a opção correta é:
- Um processo é a descrição de um procedimento.
- Algoritmo é um procedimento mecânico que tem a garantia de eventualmente terminar.
- Exemplos de saídas são o mouse e o teclado.
- Os programas executados pelo computador são armazenados no disco rígido.
- Os computadores são capazes de executar diretamente códigos escritos em Python.
