Você está na página 1de 11

Fundamentos de Programação em C: Uma Abordagem Algorítmica

Capítulo
1 Fundamentos de Computação
“Existem homens que lutam um dia e são bons; existem outros que lutam um ano e são melhores;
existem aqueles que lutam muitos anos e são muito bons. Porém, existem os que lutam toda a vida.
Estes são os imprescindíveis.”

- Beltold Brechet -

1.1 O Computador
O computador, é uma máquina capaz de manipular informações, através de uma
sequência de instruções. As informações manipuladas pelos computadores, são
dados que podem ser valores numéricos ou valores alfanuméricos, e as
sequências de instruções, são programas que produzem informações valiosas
para a sociedade moderna. Contudo, é muito comum confundir o conceito de
dados com o conceito de informação.

Dados são valores brutos que não têm qualquer significado para os seres
humanos, enquanto que, informação são dados processados, que têm um valor
inestimável para a sociedade moderna.

Logo, podemos definir um computador, como uma máquina, que a partir de um


conjunto de instruções, denominado por programa, processa dados e devolve
informações úteis para a sociedade.

Esse conjunto de instruções deve obedecer a determinadas regras existentes


nas linguagens de programação, e tem por objectivo, resolver problemas
específicos, que podem ser: comerciais como contabilidade e stocks, medicina
como tomografia computacional, arquitectura como desenho assistido por
computador, formação como estudo a distância, entretenimento como jogos, etc.

Mas, para resolver qualquer problema, o computador necessita de uma


componente física, para interagir com o utilizador, denominado por hardware, e
uma componente lógica, para transformar os dados brutos em informação,
denominada por software.

1.2 Hardware
As ideias publicadas pelo matemático húngaro, John von Neumann, no seu
documento incompleto de 101 páginas, distribuído no dia 30 de junho de 1945,
continham à primeira descrição do desenho lógico de um computador, que utiliza

Manuel Menezes- Faculdade de Engenharia da Universidade Católica de Angola 1


Fundamentos de Programação em C: Uma Abordagem Algorítmica

o conceito de programa armazenado, e ficou conhecido como a “arquitectura von


Neumann”.

Para a “arquitectura de von Neumann”, todos os computadores digitais, desde


os microcrocomputadores até os computadores de grande porte, são
constituídos por três unidades físicas: unidade central de processamento, a
memória e os dispositivos de entrada e saída. Estas três componentes estão
conectadas e interagem por intermédio de linhas de comunicações, conhecidas
como barramento do computador.

1.2.1 Unidade Central de Processamento


A unidade central de processamento, também conhecida por CPU (Central
Processing Unit) é responsável pela execução dos programas, e pelo
comportamento das restantes partes do computador. Ela é formada por duas
componentes: a unidade de aritmética e lógica, e a unidade de controlo. A
unidade de aritmética e lógica, tem por finalidade, efectuar as operações
aritméticas, relacionais e lógicas, enquanto que, a unidade de controlo, tem por
finalidade, ler as instruções, alimentar a unidade de aritmética e lógica, e enviar
os resultados desses cálculos, para a memória ou para os dispositivos de
entrada e saída.

Desde a década de 80, que a unidade de aritmética e lógica e a unidade de


controlo, estão inseridas num único círcuito integrado, denominado por
microprocessador.

Existem vários fabricantes de microprocessadores, dos quais se destacam a


Intel que fabrica o Intel Core i9, a AMD que fabrica o Ryzen, a IBM que fabrica e
a PowerPc G5 quad-core, e a Apple que fabrica o M9.

1.2.2 Memória Principal


A memória principal é utilizada para armazenar informações, e está dividida em
duas áreas distintas: a memória RAM e a memória ROM.

A memória RAM (Ramdom, Access Memory) é uma memória volátil, isso quer
dizer que o seu conteúdo é perdido quando o computador for desligado.

No entanto, a informação armazenada na memória principal pode ser de dois


tipos: as instruções de um programa, e os dados que esse programa manipula.
Para executar qualquer programa, é necessário que exista uma operação de
carregamento do programa que, na linguagem técnica, se designa por load.

Porém, os microprocessadores têm uma certa velocidade de processamento.


Para aumentar essa velocidade é necessário utilizar a memória cache. A
memória cache funciona como uma área de armazenamento intermédia, entre o
processador e a memória principal, e está incorporada no microprocessador.

Manuel Menezes- Faculdade de Engenharia da Universidade Católica de Angola 2


Fundamentos de Programação em C: Uma Abordagem Algorítmica

A memória ROM (Read Only Memory), é uma memória de leitura. Ela contém
instruções que não podem ser alteradas, nem apagadas, e servem para arrancar
o computador, em outros termos, fazer o boot. A memória ROM não é volátil,
isso quer dizer que o seu conteúdo não é perdido quando o computador for
desligado.

A memória principal é constituída por um conjunto de células, que estão


organizadas em ordem sequencial. Cada célula, para além de possuir um único
número, chamado de endereço de memória, é constituída por um conjunto de
unidades menores, chamadas de bytes. Um byte é a quantidade de memória
necessária para armazenar um carácter, sendo constituído por oito unidades
menores chamadas de bits. O bit (binary digit) é capaz de armazenar os valores:
um ou zero (que representam os valores lógicos verdadeiro ou falso), ou, on ou
off (que representam os impulsos de eléctricos de ligado ou desligado).

1.2.3 Memória Secundária


O computador só pode executar os programas, se eles estiverem armazenados
na memória principal. Mas, o seu processamento só será possível, se os dados
que esses programas irão manipular, também estiverem armazenados em
memória. Contudo, a memória principal é muito limitada em termos de espaço,
e para além disso, é volátil. Por essa razão, não é possível utiliza-la para
armazenar programas e dados. Para contornar esse problema, temos a memória
secundária ou memória externa. Essa memória é constituída por dispositivos
magnéticos capazes de armazenar grandes volumes de informação, que não
são voláteis, e são mais baratas. Mas, estes dispositivos apresentam uma
grande desvantagem: por terem tempos de leitura e gravação de dados inferiores
a memória principal, são mais lentos na gravação e recuperação da informação.

Os dispositivos de memória externa mais utilizados são: unidades de discos


duros (HDD), unidades de estado sólido (SDD), dispositivos de armazenamento
ópticos (CD, DVD), dispositivos de memória flash (pen-drive), cartões de
memória, dispositivos de fitas magnéticas, etc.

1.2.4 Dispositivos de entrada e saída


Os dispositivos de entrada e saída, servem de comunicação entre o computador
e o ser humano, em termos técnicos, servem de interface homem-computador.
Esses dispositivos de entrada servem para a introduzir dados no computador.
Esses dados são lidos, e convertidos em sinais eléctricos para serem
armazenados na memória principal ou na memória secundária. O dispositivo de
entrada padrão é o teclado, mas, existem outros como as canetas ópticas, os
joysticks, os leitores de códigos de barra, os scanners, os microfones, o mouse,
webcam, máquina fotografia digital, etc.

Os dispositivos de saída permitem apresentar os resultados do processamento


de dados. O dispositivo de saída padrão é a tela ou monitor, mas para além
destes, existem as impressoras, os plotters, os alto-falantes, projector de vídeo,
etc.

Manuel Menezes- Faculdade de Engenharia da Universidade Católica de Angola 3


Fundamentos de Programação em C: Uma Abordagem Algorítmica

1.3. Classificaçao dos computadores


Apesar dos computadores digitais possuírem a mesma arquitectura, em função
da sua capacidade, estes possuem as seguintes classificações:

Os computadores pessoais PC (Personal Computer), são computadores de uso


“domestico”, que podem ter vários aspectos. Os mais comuns são as torres
(tower), os de secretária (desktop), os portateis (laptop), e os miniaturizados
(palmtop). Estes computadores são utilizados para multiplas funções pessoais.

As estações de trabalho (workstation) são computadores mais potentes do que


os computadores pessoais, quer em termos de capacidade de processamento,
quer em termos de capacidade de armazenamento de informação. Estes
computadores possuem monitores maiores e com maior resolução, e são
utilizadas para executar programas gráficos, e simulações nos vários domínios
do conhecimento humano.

Os servidores (server) são computadores mais potentes do que as estações de


trabalho, em termos de capacidade de processamento e em termos de
capacidade de armazenamento de informação. Estes computadores fornecem
serviços a centenas ou milhares de utilizadores ligados a uma rede, que são
designados por clientes. Esses serviços vão desde a recepção automatizada de
fax pela Internet, passam pelo correio electrónico, até a execução de software
centralizado, dispensando desse modo, a sua instalação nos computadores dos
clientes.

Os computadores de grande porte (mainframe) são máquinas com mais


recursos do que os servidores, e estão vocacionados para o processamento de
elevados volumes de informação. Estes computadores foram muito utilizados
pelas grandes coorporações, e forneciam serviços de processamento de dados
a milhares de utilizadores, por meio de milhares de terminais conectados
diretamente ou através de uma rede. Mas foram perdendo o seu espaço para
os servidores, que têm um menor custo, e são muito utilizados em ambientes
comerciais, e grandes empresas como bancos, empresas de aviaçao,
universidades, etc.

Os supercomputadores (supercomputer), são máquinas com uma elevadíssima


capacidade de processamento de dados e de armazenamento de informação. O
seu desempenho é medido em operações de ponto flutuante por segundo
(FLOPS), e não por milhões de instruções por segundo (MIPS), conforme ocorre
nos computadores normais. Os supercomputadores desempenham um papel
muito importante para a ciência, e são utilizados para pesquisas militares,
computação de alto desempenho, e investigação científicas. No domínio da
investigação científica, salientamos: física quântica, metereologia, quimica,
exploração de petróleo e gaz, industria aeronautica, industria espacial e fusão
nuclear.

Manuel Menezes- Faculdade de Engenharia da Universidade Católica de Angola 4


Fundamentos de Programação em C: Uma Abordagem Algorítmica

1.4 Software
Sem um conjunto de instruções (programa), a parte física de um computador,
(hardware) não é capaz de resolver nenhum problema. Esse conjunto de
instruções, faz parte de um universo chamado por software, e classifica-se em
software de base e o software de aplicações.

No contexto da sua funcionalidade, o software de base é um conjunto de


programas indispensáveis para o funcionamento do computador, enquanto que,
o software de aplicações é um conjunto de programas que resolvem problemas
reais da sociedade.

Os software também podem ser classificados como software proprietário ou


como software livre. O software proprietário é aquele que possui direitos de
autor. A sua utilização é feita mediante a compra de licenças, e a sua
redistribuição ou modificação é proibida. Também requer a permissão para sua
utilização, e não podem ser utilizado livremente. Em contrapartida, o software
livre, concede ao utilizador a liberdade de utilizar, modificar, redistribuir cópias
sem qualquer licença. A sua definição foi estabelecida pela FSF (Free Software
Foundation) em conjunto com o projeto GNU.

1.4.1 Sistema Operativo


O sistema operativo, é um software de base, que serve para colocar os recursos
de hardware, através de um mecanismo de interface entre o homem e a
máquina. Embora possa ser executado após o computador ter sido ligado, a
maior parte dos computadores pessoais, executa esse programa, através de um
outro programa, que está armazenado na ROM, denominado por BIOS (Basic
Input/Output System), num processo denominado por boot. Durante o processo
de boot, todos os componentes do computador são iniciados, e sistema operativo
é activado para controlar o funcionamento do computador.

Os sistemas operativos podem ser classificados em dois grupos. Os que


possuem um ambiente gráfico GUI (Grafic User Interface), baseados em menus,
e normalmente acedidos por um rato (mouse), como exemplo, temos o Windows
e o Macintosh; os que têm um ambiente de interação em linha de comandos,
CLI (Comand Line Interface), baseados em linhas de texto, e tecnicamente
denominado por Shell, que são acedidos pelo teclado. Como exemplo, temos o
DOS, Unix e o Linux.

1.4.2 Linguagens de Programação


As linguagens de programação são softwares de base que servem para
desenvolver programas que resolvem problemas do mundo real. Elas podem ser
classificadas em: linguagem de máquina, linguagem de baixo nível (assembly
language) e linguagens de alto nível.

Manuel Menezes- Faculdade de Engenharia da Universidade Católica de Angola 5


Fundamentos de Programação em C: Uma Abordagem Algorítmica

As linguagens de máquina, são escritas numa linguagem que o


microprocessador entende. Elas são caracterizadas por conjuntos de números
binários (zeros e uns), que representam as operações, e os endereços onde
essas operações serão realizadas. Esses conjuntos de números binários, são
denominadas por instruções de máquina ou código de máquina. As instruções
em linguagem de máquina, dependem da arquitectura de cada processador, logo
os programas feitos nessa linguagem, não funcionam em computadores com
processadores de fabricantes diferentes. Queremos com isso dizer que, um
programa escrito numa linguagem que funciona para um computador com um
processador da Intel, não funciona para um computador com um processador da
Apple. A única vantagem que essa linguagem possui, é que os seus programas
gastam menos recursos de hardware, e como consequência, são mais rápidos.
Mas, como essa programação é muito complexa, e difícil de entender, e como
cada tipo de microprocessador tem a sua linguagem máquina, os programadores
preferem trabalhar com as linguagens de alto nível.

As linguagens de baixo nível são mais fáceis de utilizar do que as linguagens de


máquina, mas também dependem da arquitectura do processador. A linguagem
de baixo nível é conhecida pelo o nome de linguagem assembly (assembly
language), e os comandos dessa linguagem são instruções conhecidas como
mnemônicas (mnemonics). Por exemplo, na linguagem assembly 80286, a
instrução:

MOX AX, B

significa: “mover o conteúdo da variável B para o registrador AX”, enquanto que


a instrução:

SUB AX, A

significa; “subtrair o conteúdo do registrador AX pelo conteúdo da variável A e


armazenar o resultado dessa operação no registrador AX”

Depois de um programa ter sido escrito numa linguagem de baixo nível, este tem
de ser traduzido para uma linguagem de máquina, e essa tradução é feita por
um programa chamado de assemblador (assembler).

O programa escrito numa linguagem assembly é denominado por Programa-


fonte, já o programa traduzido para a linguagem máquina, é conhecido como
Programa-objecto.

Programa-Fonte

Assembler

Programa-Objecto

Manuel Menezes- Faculdade de Engenharia da Universidade Católica de Angola 6


Fundamentos de Programação em C: Uma Abordagem Algorítmica

As linguagens de alto nível são as mais utilizadas pelos programadores. Elas


foram projetadas para simplificar a tarefa do programador, e tornar o
desenvolvimento dos programas independente do processador. Os programas
escritos numa linguagem de alto nível são portáteis, isso significa, que poderem
ser executados com pouca ou com quase nenhuma modificação em diferentes
tipos de computadores. Como essas linguagens parecem-se com as línguas
naturais, e utilizam expressões matemáticas em vez de células de memória, a
programação é muito mais fácil e natural. As principais vantagens de utilização
das linguagens de alto nível são: o tempo de formação dos programadores é
mais curto; o desenvolvimento dos programas baseia-se em regras sintácticas
análogas as regras das linguagens humanas; a manutenção dos programas é
mais simples, e esses programas possuem portabilidade.

Contudo, as linguagens de alto nível possuem alguns inconvenientes. Os mais


dignos de realce são: não são aproveitados todos os recursos internos do
computador, e os programas ocupam mais espaço de memória, como
consequência, tornando-se mais lento.

Como acontece com as linguagens de baixo nível, o código-fonte tem de ser


traduzido por um programa especial, denominado por compilador ou
interpretador para o código-objecto.

1.4.3 Compiladores
Normalmente, os programadores implementam os seus programas numa
linguagem de alto nível, conhecida como programa-fonte, mas os computadores
só processam as instruções numa linguagem de máquina, conhecida como
programa executável. Logo, é necessário converter o programa escrito numa
linguagem de alto nível para uma linguagem de máquina.

Os compiladores são softwares que recebem um programa escrito numa


linguagem de alto nível, e o convertem para um programa escrito numa
linguagem de baixo nível.

Programa-fonte

Compilador

Programa-objecto

O processo de compilação, consiste em converter de um programa-fonte para


um programa-objecto. Mas como o programa-objecto não está na linguagem de
máquina, é necessário efectuar mais uma conversão. Essa conversão consiste
em transformar um programa escrito na linguagem de baixo nível para um
programa escrito na linguagem de máquina, ou seja, transformar o programa-
objecto em programa-executável.

Apresentamos a seguir, uma descrição passa-a-passo do processo de


compilação.

Manuel Menezes- Faculdade de Engenharia da Universidade Católica de Angola 7


Fundamentos de Programação em C: Uma Abordagem Algorítmica

1º-Utilizar um editor de texto, para escrever o programa-fonte e armazena-lo num


dispositivo de memória secundária;
2º-Com um editor de texto, carregar o programa na memória principal do
computador;
3º-Compilar o programa e corrigir os erros de sintaxe;
4º-Quando não existirem mais erros de sintaxe, obter o programa-objecto.
5º-Com o assembler (linker) obter o programa executável.
6º-Executar o programa, se existem não erros de lógica, o programa devolverá
sempre uma solução correcta.

Programa-Fonte

Compilador

Programa-
Objecto

Assembler

Programa-
Executável

1.4.4 Programas Utilitários


Programas utilitários são sofwares de base, que servem para a manutenção e a
correcção de falhas no computador, e podem ser classificados como:

-Utilitários de hardware, que têm por finalidade, verificar o estado de


funcionamento de todas as componentes de um computador pessoal. Fazem
parte desses utilitários o Norton Utility fabricado pela Symantec;

- Utilitários de segurança, que têm por finalidade, proteger todo os sofwares


instalados no computador de virís e spywares, que vêm da Intenet e podem
inutiliza-lo. Fazem parte desses utilitários o Kaspersky;

-Utilitários de compactação de arquivos, que têm por finalidade, reduzir o espaço


de memória de um arquivo, para transferi-lo para um outro computador,
utilizando para o efeito a Internet ou uma rede local, diminuindo desse modo, o
tempo de transferencia. Fazem parte desses aplicativos o WinRAR (Windows
Roshal ARchive);

- Utilitários para bloquear spam e pop-ups, que têm por finalidade, impedir a
recepsão de e-mails indesejados (spam), e receber publicidade não desejada
(pop-ups), quando se navega pela Internet. Fazem parte desses aplicativos o
Internet Explorer;

- Software de virtualização, que tem por finalidade, criar uma máquina virtual
para simular outros computadores. Ao utilizar um software de virtualização,

Manuel Menezes- Faculdade de Engenharia da Universidade Católica de Angola 8


Fundamentos de Programação em C: Uma Abordagem Algorítmica

servidores podem executar software de aplicações escritas para diferentes


sistemas operativos. Fazem parte desses aplicativos o VMware.

1.4.5 Software de Aplicações


Software de aplicações, são sistemas que utilizam o poder do computador para
ajudar à sociedade a resolver problemas reias, e a realizar tarefas específicas.
Como exemplo temos:

-Os sistemas que permitem gerir todas as funções de uma empresa, são
denominados por Sistemas Integrados de Gestão, e conhecidos pelo sigla
ERP(Enterprise Resource Planning);

-Os sistemas que permitem auxiliar as empresas a melhorar as suas vendas, e


a captar novos clientes, são denominados por Sistemas de Relacionamento com
os Clientes, e conhecidos pelo sigla CRM (Customer RelationShip
Management);

-Os sistemas que permitem gerir processos para contractar de recursos


humanos com alto valor agregado, são denominados por Sistemas de Gestão
do Conhecimento, e conhecidos pelo sigla SGC;

-Os sistemas que permitem que administradores das empresas, possam tomar
decisões estratégicas e operacionais, tendo como base milhares de
informações, são denominados por Sistemas de Inteligência de Negócios, e
conhecidos pela sigla BI (Business Intelligence);

-Os sistemas que permitem realizar trocas comerciais pela internet, são
denominados por Sistemas de Comércio Eletrónico, e conhecidos pela sigla
e_Commerce;

-Os sistemas que permitem que os governos possam utilizar, à todos os níveis,
a Internet e a tecnologia de Informação, para informar aos seus cidadões sobre
assuntos de governação, são denominados por Sistemas de Governo
Electrónico, e conhecidos pela sigla e-Government;

-Os sistemas que permitem que utilizadores possam escrever conteudos em


forma de texto ou gráficos, para a disseminação do conhecimento, são
denominados pela sigla Wiki;

-Os sistemas permitem que pessoas possam encontrar-se virtualmente, para


realizar de reuniões, conferências, aulas, conversa informal, são denominados
por Sistemas de Tecnologia de Videoconferencia;

-Os sistemas que permitem que pessoas possam estar presentes em locais
diferentes daqueles que realmente estão, são denominados por Sistemas de
Tecnologia Telepresença;

Manuel Menezes- Faculdade de Engenharia da Universidade Católica de Angola 9


Fundamentos de Programação em C: Uma Abordagem Algorítmica

-Os sistemas que orientam as pessoas, as embarcações, as aeronaves, a


deslocar-se de um lugar para o outro, são denominados por Sistemas de
Posicionamento Global, e conhecidos pela Sigla GPS (Global Positioning
System);

-Os sistemas que permitem elaborar desenhos no domínio da arquitectura,


industria aeronautica, mecânica, etc, são denominados por Sistemas de
Desenho Assistido por Computador, WinRAR (Windows Roshal ARchive)
WinRAR (Windows Roshal ARchive) e conhecidos pela sigla CAD (Computer
Aided Design);

1.5 Paradigmas de Programação


Para tornar a programação de computadores mais simples, natural, e mais clara,
foram desenvolvidas nos últimos anos, muitas linguagens de programação. Mas,
todas as linguagens possuem um conjunto de regras, denominado por sintaxe,
que define como o programador deverá desenvolver o seu programa. Para além
disso, cada linguagem de programação está associada a um conjunto de
conceitos, que determina a forma como os problemas devem ser resolvidos. A
esse conjunto de conceitos, dá-se o nome de paradigma de programação.

Segundo R. Sebesta (2012), os principais paradigmas de programação são:

Imperativo - os programas são compostos por uma sequência de comandos, que


são executados pelo computador numa determinada ordem. Como exemplo,
temos: Cobol, Fortran, Algol, Pascal, Modula2 e o C.

Funcional - os programas são compostos por declarações de funções que


transformam as entradas nas saídas que pretendemos. Como exemplo temos:
Lisp, Haskell e o Scheme.

Lógico - os programas são desenvolvidos com base em condições lógicas. Um


programa é composto por um conjunto de regras, denominadas por premissas,
que disparam uma acção, denominada por processo, quando uma determinada
premissa for verdadeira. Como exemplo, temos o Prolog.

Orientada por objectos - os programas representam o mundo real através de


classes de objectos, e métodos que podem manipular esses objectos, os quais
determinam o seu comportamento. Como exemplo temos: Smaltalk, C++, Java,
C#, Phyton, D.

1.6 Programação Estruturada


Os conceitos de programação estruturada aparecem no início dos anos 70, com
os estudos de Edsgar Dijkstra. Segundo Michael Jackson (1975), a programação
estruturada pode ser considerada como um subconjunto do paradigma
imperativo. Esta metodologia de programação, foi muitas vezes classificada
como uma programação sem o desvio condicional, implementada nas

Manuel Menezes- Faculdade de Engenharia da Universidade Católica de Angola 10


Fundamentos de Programação em C: Uma Abordagem Algorítmica

linguagens de programação pelo comando GOTO, mas ela é muito mais do que
isso.

A programação estruturada é uma disciplina científica baseada no rigor


matemático e não uma arte de resolver problemas.

Como a programação passou a ter um rigor matemático, este paradigma permitiu


que os programadores pudessem organizar projectos de software cada vez mais
complexos. Para organizar o desenvolvimento desses projectos, a
implementação dos programas deve ser feita de forma descendente (projecto
TopDown), com uma abordagem racional, sistemática e descrita pelos seguintes
pontos:

1º- Decomposição do problema em subproblemas mais simples;


2º- A decomposição deve ser feita por uma série de refinamento sucessivos;
3º- Os algoritmos só podem utilizar três estruturas: sequencial, selecção e
repetição.

Contudo, apesar desta metodologia apresentar bons indicadores de


produtividade e racionalidade no desenvolvimento do software, ela vem
perdendo espaço para a programação orientada por objectos, que é mais
natural, porque reflete de melhor maneira o pensamento humano.

Mas devido ao facto da metodologia de programação estruturada, representar


de forma intuitiva os problemas do dia-a-dia, ela continua a ser a metodologia de
programação mais aconselhada, para a primeira disciplina de programação de
computadores nos cursos de graduação de engenharia e ciências exactas.

Manuel Menezes- Faculdade de Engenharia da Universidade Católica de Angola 11

Você também pode gostar