Métodos de Programação I
Ano Lectivo 2005/2006
APONTAMENTOS
Ana Maria de Almeida
Departamento de Matemática da FCTUC
Universidade de Coimbra
“Programming is the most difficult part of applied mathematics.”
– Edsger W. Dijkstra
“It has often been said that a person does not really understand something until
he teachs it to someone else. Actually a person does not really understand
something until he can teach it to a computer, i.e., express it as an algorithm.”
- Donald E.Knuth
Métodos de Programação I
Departamento de Matemática, FCTUC
2005/06
CAPÍTULO 1 – INTRODUÇÃO BREVE AO COMPUTADOR
1.1 Pequena história da evolução do computador
1.2 A Informática e suas principais utilizações
1.3 Descrição básica de um Computador Digital
Funções Básicas de um Computador
Modelo de Organização de um Computador Digital
- Modelo de Von Neumann
1.4 Hardware versus Software
Funções gerais de um sistema operativo
Linguagens de Programação
1.5 Representação digital: noções básicas
Representação de números inteiros
Representação de números reais
Representação de caracteres
1
Métodos de Programação I
Departamento de Matemática, FCTUC
2
2005/06
Capítulo 1
1.1. Pequena História da Evolução do Computador
... - Com a necessidade de efectuar contagens o homem primitivo, para além da invenção de um sistema
numérico (decimal baseado nos dez dedos de uma mão humana), sentiu a necessidade de guardar e alterar
a informação numérica. É assumido pelos historiadores que, mesmo antes do desenvolvimento da
linguagem escrita, o homem já conhecia o conceito de inventariação de objectos ou animais que possuía,
gravando sulcos em varas de madeira ou nas paredes de cavernas. Para além disso, com as trocas
comerciais e o assumir da propriedade (como terras para cultivo ou pastorícia e bens acumulados), os
paus, as pedras ou as conchas deixam de ser eficientes pois há cada vez mais informação a manipular.
Surgem os primeiros dispositivos mecânicos de cálculo: os ábacos.
Figura 1: Imagens de ábacos (sendo a segunda uma reconstrução de um ábaco romano).
Foi com o uso do ábaco que o cálculo sofreu a sua primeira sistematização, reflectindo o funcionamento
de uma hierarquia de valores conforme a coluna onde se efectue os cálculos (sistema decimal). Cada conta
na parte inferior do ábaco representa uma unidade e cada conta da parte superior representa 5 unidades.
1623 - Baseado nos bastões de Napier (1614), documentados pelo inventor dos logaritmos, John Napier
(matemático e astrónomo), Wilhelm Schickard, em Tuebigen (Alemanha), cria o seu “RelógioCalculadora”: uma máquina capaz de somar e subtrair números com 6 dígitos, e que indica ultrapassagem
de capacidade com o som de uma campainha.
Figura 2: Calculadora de Schickard.
1633 – Ainda com base nos bastões de Napier, nasce a primeira versão de uma régua de cálculo, que
permitia ainda multiplicações e cálculo de alguns logaritmos.
Esta última foi, ao longo dos tempos, melhorada e aumentada e, era de tal modo completa, que foi muito
popular até cerca da década de 70, onde foi, finalmente, substituída pelas calculadoras automáticas.
Figura 3: Régua de cálculo.
Métodos de Programação I
Departamento de Matemática, FCTUC
3
2005/06
1642 - Com a idade de dezanove anos, o matemático francês Blaise Pascal projecta uma calculadora
mecânica que permitiu demonstrar as vantagens práticas do cálculo mecanizado.
Para operar a Máquina de Pascal, fazia-se girar uma série de rodas que tinham gravadas, ao longo da sua
circunferência, os dígitos de zero a nove. Assim que uma das rodas efectuasse uma volta completa em
torno do seu eixo, um mecanismo de rodas dentadas fazia rodar o dígito da roda à sua esquerda de uma
unidade. Os resultados (quer finais quer intermédios) eram visualizados nas próprias rodas através do uso
de indicadores.
Figura 4: Blaise Pascal. e a sua Máquina Calculadora.
1804 - Com o advento da revolução industrial e a possibilidade de mecanização do trabalho repetitivo,
Joseph Marie Jackard desenvolve (fisicamente) uma ideia que se começou a formar na primeira metade do
século XVII: a automatização de sequências de instruções repetitivas, que são codificadas em cartões
perfurados e permitem a construção de um objecto - Tear de Jackard.
1812 - Charles Babbage constrói a sua primeira máquina diferencial, Máquina das diferenças, capaz de
gerar tabelas logarítmicas com uma precisão de seis casas decimais. Babbage pretendia mecanizar o
cálculo logarítmico e as tabelas de astronomia.
Figura 5: Charles Babbage e a Máquina das Diferenças.
1813 - Babbage projecta uma máquina que conseguiria realizar qualquer operação matemática
automaticamente. Movida a vapor e baptizada de Máquina Analítica, seria capaz de trabalhar baseada num
conjunto de instruções de operação, armazenadas em cartões perfurados, tal como nos teares de Jackard.
Pela primeira vez, aparecem princípios e conceitos que só no século XX serão, efectivamente,
implementados: a máquina analítica deveria ser constituída por uma unidade aritmética, uma unidade para
entrada de dados e instruções, uma unidade para imprimir resultados e seria capaz de realizar operações
lógicas (que, como veremos seguidamente, são os constituintes principais de um computador).
As ideias de Babbage foram documentadas e ampliadas por Augusta Ada Byron, condessa de Lovelace
(filha do conhecido poeta inglês Lord Byron), actualmente reconhecida como a primeira programadora da
história. Dotada de uma mente extremamente arguta para a resolução de problemas matemáticos, deixounos uma herança que, talvez somente nos nossos dias, se esteja a apreciar devidamente.
Figura 6: Augusta Ada Byron, Condessa de Lovelace.
Métodos de Programação I
Departamento de Matemática, FCTUC
4
2005/06
1890 - Herman Hollerith, do serviço de censos dos Estados Unidos, foi a primeira pessoa a usar
equipamento de cálculo eléctrico para análise estatística de informação, engendrando um processo de
codificar o nome, sexo, endereço e outros dados estatísticos em cartões perfurados. Este código era
posteriormente contado electricamente quando o cartão passava numa unidade de leitura. É este processo
que permite ao governo dos EUA, em 1890, realizar todas as contagens em menos de metade do tempo
que tinha demorado a realizar o censo anterior (1880) ainda que, relativamente a este último, a população
tenha sofrido um aumento de 25%.
1896 - Hollerith funda a Tabulating Machine Company que, mais tarde, se passa a chamar International
Business Machines Corporation - IBM. Máquinas construídas com base na máquina de Hollerith são
melhoradas e tornam-se mais rápidas permitindo o processamento de vencimentos, facturação, análise de
vendas, cálculo científico, etc.
Figura 7: Herman Hollerith e a “Punching Machine”.
1937 a 1944 - Principalmente com o eclodir da segunda guerra mundial e os problemas associados à
invenção e melhoramento do armamento e da bomba atómica, há uma aceleração no desenvolvimento de
sistemas informáticos, nascendo a primeira geração de calculadores digitais automáticos de grande escala MARK I (sucessivamente MARK II,III e IV).
Desenvolvido(s) pela IBM para a Universidade de Harvard, segundo um projecto de um elemento desta
universidade, Howard H. Aiken, o MARK I pesava 5 toneladas e era constituído por 78 dispositivos
interligados por cerca de 800Km de cabos. Trabalhou durante 15 anos e foi retirado de funcionamento em
1959. Realizava operações com números com 23 dígitos (subtracções e adições em 3 décimos de segundo
e multiplicações em 6 segundos). Era programável com fita perfurada e capaz de controlar
automaticamente máquinas de escrever eléctricas. Uma vez começado um programa tinha que ser levado
até ao fim sem hipótese de (inter)acções humanas ou alterações de qualquer ordem.
A história do software como peça fundamental no funcionamento de um computador começa, portanto, na
década de 40 e, particularmente, com a contratação, por parte da marinha dos EUA, duma jovem
matemática, Grace M. Hopper, que tem como missão trabalhar com Howard Aiken em Harvard.
Figura 8: Grace Hopper.
1945 - Seria contudo necessário um outro avanço particular para atingirmos o conceito actual de
computador: o conceito de armazenamento de informação. O armazenar das instruções e dados num
dispositivo físico que funcionaria como uma memória e que pudesse ser alterado pelo próprio computador
nasceu com Von Neumann e foi rapidamente aproveitado para a construção de novas máquinas, como:
1946 – o ENIAC (Electronic Numerical Integrator And Calculator), que constitui o primeiro computador
electrónico digital. Nasceu na Universidade da Pensilvânia, através dos esforços de J. Presper Eckert e
John W. Mauchly, e foi desenvolvido para o exército dos EUA, usando já válvulas (ao invés de relés
eléctricos e dispositivos mecânicos) e flip-flops para a memória;
1949 – o EDSAC (Electronic Delay Storage Automatic Computer ), britânico, construído no Laboratório
Matemático da Universidade de Cambridge por Maurice Wilkes, constituí-se como o primeiro
Métodos de Programação I
Departamento de Matemática, FCTUC
5
2005/06
computador electrónico digital com memória para programas completamente operacional. (Pelo que
discute com o ENIAC o título de verdadeiro primeiro computador!)
A partir deste ponto, o desenvolvimento, quer físico quer lógico, dos computadores disparou até aos
nossos dias. O primeiro computador disponível comercialmente foi o UNIVAC, em 1950, ainda bastante
oneroso, logo, só usado por empresas com algum porte, e aparecem também os primeiros dispositivos
periféricos. Em 1951, Grace Hopper regista um problema com o UNIVAC I, devido a uma borboleta
(traça - bug) que se introduziu no equipamento produzindo resultados errados. Desde aí, “BUG” continua
a ser usado para significar erro ou defeito de um programa, e testar um programa para verificar se não
existem erros de execução diz-se : fazer o “debug” ou “debuging” do programa (isto é, retirar os “bugs”).
Na década de cinquenta aparecem os primeiros compiladores e desenvolvem-se as primeiras linguagens.
No início da década de 60, surge a 2ª geração de computadores com a introdução dos transístores em
substituição das válvulas electrónicas. Em 1967, com a introdução generalizada de circuitos integrados em
vez de transístores, inicia-se a 3ª geração de computadores. Surgem novas linguagens de programação e os
sistemas operativos tornam-se independentes da arquitectura dos computadores. Em 1968, Edsger W.
Dijkstra, com um artigo na revista ACM (Association for Computer Machinery) observa que a qualidade
da programação é função inversamente proporcional ao uso de instruções go to. Despoleta assim um
movimento que culminará com o aparecimento e definição da Programação Estruturada.
Figura 9: Edsger W. Dijkstra.
Durante a década de 70 há um aumento progressivo da capacidade de memória, velocidade de operação e
diminuição do tamanho dos computadores. Fala-se pela primeira vez na possibilidade de ligar mais do que
um computador em rede de comunicação.
Na década de oitenta, com o aparecimento dos circuitos de integração em larga escala (VLSI - Very Large
Scale Integration) surgem os primeiros computadores pessoais e a ideia de uma rede de computadores
interligados toma forma: dá-se nascimento do correio electrónico (e outro tipo de comunicações entre
computadores) que culmina, já na década de noventa pela ligação geral de computadores de qualquer tipo
através do uso de linhas telefónicas: Multimédia/Internet - acesso a computadores remotos, comunicação
inter-computador, transmissão directa de som/imagem/texto (WWW, World Wide Web).
1.2. A Informática e suas Principais utilizações
A informática é a ciência do tratamento automático da informação e o computador um sistema electrónico
que permite armazenar grandes quantidades de informação e, sobre ela, realizar, a velocidades muito
elevadas, manipulações e operações aritméticas e lógicas elementares. Comecemos por ver quais são os
principais campos de aplicação da informática e do uso de computadores.
Os computadores podem ser primariamente divididos em duas grandes áreas, consoante o tipo de
aplicação pretendido:
Aplicação Específica
Aplicação Geral (ou generalistas)
Destinados a realizar um tipo pré-determinado
e limitado de tarefas
Programáveis consoante a necessidade do
momento
Aparecem também campos de aplicação principais, agrupados do modo seguinte:
Métodos de Programação I
Departamento de Matemática, FCTUC
6
2005/06
•
ÁREA COMERCIAL - GESTÃO - CONTROLO DE PROCESSO
A aplicação mais comum dos computadores e uma das grandes responsáveis pelo
desenvolvimento da informática, tem a ver com o processamento de informação através do
uso de bases de dados - agrupamento de informação inter-relacionada em entidades
independentes, de modo a poder ser obtida de um modo eficiente, uma consulta pertinente
para servir determinado objectivo.
Usualmente, o volume de dados é grande e o cálculo é diminuto, sendo a rapidez do
computador aproveitada para manusear rapidamente um volume muito grande de informação.
Desde a administração às linhas de montagem, há um lugar francamente rentável e positivo
para os computadores em todas as empresas, de qualquer dimensão.
Apenas alguns exemplos:
Facturação
Contabilidade
Controlo de Produção
Análise Financeira
Gestão de Recursos
...
•
ÁREA CIENTÍFICA
A principal característica nesta área é o grande volume de cálculo a executar em qualquer
altura, muitas vezes acompanhado de um volume enorme de dados. Milhares de aplicações
científicas são executadas diariamente em computadores em todas as áreas científicas.
Exemplos:
Meteorologia
Engenharia Civil
Engenharia Química
Robótica
Astrofísica
Astronáutica
Arquitectura
...
•
SERVIÇOS PÚBLICOS E SAÚDE
São inúmeras as aplicações dos computadores na área pública. Sobretudo na projecção e
planificação de cenários possíveis para problemas tão diversos como o da poluição, um
processo de gestão pública ou o recenseamento, seria extremamente difícil e moroso realizar
estudos correctos e profundos sem o auxílio de um computador. Avaliar sistemas de
transportes e propor alterações, estudar estatisticamente o funcionamento dos sinais
luminosos de tráfego, realizar estudos sobre o sistema e percurso de recolha do lixo, enfim,
um sem número de actividades possíveis.
Por outro lado, a manutenção de ficheiros completos e actualizados sobre pacientes,
programas de diagnóstico, bases de dados sobre produtos farmacêuticos permanentemente
actualizadas, podem significar
uma diferença notável na qualidade do serviço e,
consequentemente, no conforto e, até mesmo, na vida dos pacientes.
Actualmente, a ligação via Internet permite a realização de vários actos médicos, desde (tele)
consultas a intervenções cirúrgicas (orientadas) à distância.
•
EDUCAÇÃO - HUMANÍSTICAS
Uma das vantagens fundamentais trazidas pelos computadores actuais é a da disponibilidade
de informação 24 horas por dia. Para além disso, podem ser uma ajuda notável ao processo de
raciocínio lógico, através da formulação de processos de solução de problemas (algoritmos).
Existem mesmo disciplinas onde apenas a simulação usando um computador pode aproximar
Métodos de Programação I
Departamento de Matemática, FCTUC
7
2005/06
o estudante da vida real e da implementação prática dos processos teóricos, como é, por
exemplo, o caso das ciências políticas.
Para além das vantagens de aprendizagem óbvias, todos nós temos necessidade de produzir
texto, sendo o computador um auxiliar único no género. As possibilidades oferecidas por um
bom processador de texto, não só através da possibilidade de correcção de erros, mas também
através das bases de dados e outras combinações possíveis, tornam o ofício (jornalistas), a
arte (escritores) ou a necessidade de escrever (todos nós) em algo bem mais criativo.
Como nota final, merecem destaque certas aplicações especiais ou especializadas de
processadores/programas especializados como sejam, por exemplo, o ensino por computador (CAI Computer Assisted Instruction), o desenho de computadores assistido por computador (CACD - Computer
Aided Computer Design), o controlo de rotas e, principalmente, a aterragem de aviões.
1.3. Descrição básica de um Computador Digital
Num sistema informático, dados são o material básico da informação e só podem ser considerados (eles
mesmos) como informação num sentido limitado do termo. Dados são símbolos que, agrupados e
manipulados convenientemente, podem construir informação. Apesar de usarmos ambos os termos de um
modo bastante livre ao falar, só é considerado informação um conjunto de símbolos dispostos segundo
determinada ordem e forma, útil ao fim a que se destina. O processamento é a manipulação dos símbolos
(ou dados) de modo a criar, modificar ou consultar informação.
O processamento de informação consiste, então, nas seguintes funções elementares:
• introdução dos dados necessários
• manipulação e transformação (classificação, cálculo, ordenamento, resumo)
• comunicação de resultados (armazenamento, recuperação, reprodução
Assim, podemos descrever a actividade de um computador através da descrição das suas funções mais
gerais:

Funções Básicas de um Computador
• Entrada de informação - Dados
• Processamento
• Controlo de funções
• Armazenamento de informação - Memória
• Saída de Resultados
Estas funções básicas são agrupadas num modelo, dito Modelo de Von Neumann, que, apesar de ter sido
concebido em 1944, ainda hoje representa a organização interna de qualquer computador digital não
paralelo:
Download

Capítulo I - Início () - Departamento de Matemática