Você está na página 1de 11

Sebenta I - Sistemas Digitais

Programação - algoritmia, Programação - iniciação

1. Suporte físico à Programação

1.1 Estrutura e funcionamento de um computador

1.1.1 Esquema básico de um computador

Computador – máquina ou conjunto de dispositivos eletrónicos capazes de processar informação.

1.1.2 Componentes fundamentais

- CPU (Central Processing Unit) – é a componente que realiza a parte fundamental do trabalho do computador, e que consiste em processar
eletronicamente dados ou informação

- Memória (RAM) - Estrutura simplificada

• O processador apenas entende os sinais elétricos que percorrem os circuitos que o constituem;

• Os computadores funcionam com o sistema de informação binário (zeros e uns)

• BIT – unidade mínima de informação com que lida um SI (pode ser 0 ou 1)

• Byte – agrupamento de 8 bits

• Todos os dados e instruções que circulam entre o processador e a memória estão sobre a
forma de bits e têm significado quando resultam do agrupamento de bits (bytes)

• Um programa é armazenado em memória sobre a forma de uma sequência de instruções


(bytes) podendo ser diretamente executado pelo processador – PROGRAMA OBJETO

1
Sebenta I - Sistemas Digitais
Programação - algoritmia, Programação - iniciação

1.1.3 Execução de um programa

Informação que entra para um sistema informático

• Instruções de programas
• Dados manipulados por esses programas
• Instruções e dados são armazenados temporariamente na RAM e codificadas e executadas no processador
• Cada instrução é executada através de um ciclo de instrução

Ciclo de Instrução – processo que consiste em fazer com que cada instrução passe da memória para o processador, para aí poder ser
executada.

1. Em cada instante, o processador contém num registo próprio (Instruction Pointer-IP ou Program Counter-PC) o endereço ou posição de
memória onde se encontra a próxima instrução a ser executada;

2. A unidade de controlo envia um sinal à memória pedindo o conteúdo da instrução que está no endereço dado por IP;

3. A instrução pedida é devolvida para um outro registo do processador (Instruction Register – IR) para então ser descodificada e executada.

1.2 Níveis de um Sistema Informático

O Computador é um sistema que integra e articula dois tipos fundamentais de componentes:

Físicos – Hardware ou HW (componentes mecânicos, eletrónicos e eletromecânicos)

Lógicos - Software ou SW (programas = conjunto de instruções codificadas)

O SW permite que a máquina física (o HW) deixe de ser apenas um emaranhado de circuitos e passe a ser um utensílio que pode realizar
tarefas complexas manuseável por pessoas;

O SW permite criar uma abstração do HW (uma Máquina Virtual)

O SW é ele próprio organizado em camadas, em que, camadas de nível superior são abstrações de camadas de nível inferior

1.2.1 Tipos e camadas de Software

Sistema Operativo – atua como interface entre o HW e o utilizador ou os seus programas de aplicação;

Programas de aplicação - Processador de Texto; Folha de Cálculo; etc. Sobrepõem-se ao sistema operativo;

Um Sistema Informático pode ser visto como uma sucessão de máquinas virtuais as quais são criadas usando linguagens de programação

2. Linguagens de Programação

Linguagem de Programação - é um sistema de escrita formal para enunciar a execução de operações em computador

- Tem uma terminologia ou um conjunto de termos, palavras e sinais, que assumem determinados significados (sintaxe);

- Ou conjunto de regras que estipulam o uso correto dos termos, para construir significados válidos (semântica).

2
Sebenta I - Sistemas Digitais
Programação - algoritmia, Programação - iniciação

Programa - é um conjunto de frases que utilizam os termos e as regras de uma determinada linguagem de programação, com vista a
concretizar determinados objetivos.

Algoritmo - forma ou fórmula para resolução de um determinado problema, mediante o estabelecimento de determinadas regras e
procedimentos.

2.1 Da Linguagem Natural à Linguagem Máquina

3
Sebenta I - Sistemas Digitais
Programação - algoritmia, Programação - iniciação

2.2 Ambientes de programação

Tipos de Ficheiros:

• Ficheiro de texto simples (ASCII) – informação em formato de carateres => programa em código fonte.

• Ficheiro binário – informação em formato binário => programa executável (em formato binário diretamente executável)

Ambiente de programação – apoia o programador nas tarefas habituais, desde a escrita à compilação dos programas, passando pela deteção e
correção dos erros que os programas possam conter. Ferramentas típicas:

– Editores

– Compiladores

– Depuradores (debbugers)

– Verificadores

– Geradores de dados para testes

– Linkers (ligadores)

– .....

2.3 A evolução das Linguagens de Programação

Alguns aspetos que deram origem a evoluções das linguagens de programação

- autonomia do código fonte


- satisfação de necessidades sectoriais (ex. matemática)
- maior estruturação na abordagem dos problemas
- melhor manutenção
- maior expressividade (Inteligência Artificial)
- geração de código
- reutilização de código
- maior aproximação entre a linguagem natural e as linguagens de programação
- .......
As linguagens foram sendo classificadas em gerações em função das caraterísticas que ofereciam, considerando-se que linguagens com
caraterísticas semelhantes pertencem à mesma geração.

4
Sebenta I - Sistemas Digitais
Programação - algoritmia, Programação - iniciação

• Ling. 1ª geração
– Dependentes da máquina, ao mais baixo nível de abstração;
– Codificação em Assembly.
• Ling. 2ª geração
– Oferecem algum nível de abstração e introduzem as Bibliotecas de Software.
• Ling. 3ª geração (Linguagens Estruturadas)
– Ricas em capacidades procedimentais e estruturas de dados. Dividem-se em:
• General Purpose High Order Languages (Pascal, C, ...);
• Object Oriented Languages.
• Ling. 4ª geração
– Sintaxe distinta para controlo e representação de estruturas de dados;
– O seu elevado nível de abstração elimina a necessidade de especificação algorítmica exaustivamente detalhada;
– Combinam caraterísticas procedimentais com não-procedimentais;
– Query Languages e Geradores de Aplicações.
• Ling. 5ª geração
– Linguagens não-procedimentais que permitem a declaração do problema a resolver possuindo a própria linguagem
mecanismos para a sua resolução;
– Linguagens declarativas (Prolog).

2.4 Paradigmas de Linguagens de Programação

• Paradigma de programação
– Define um modelo ou norma a seguir pelas linguagens de programação baseadas no paradigma.

Programação procedimental, sequencial, imperativa ou estrutural


– O programa é uma sequência de comandos ou instruções que o programador fornece ao computador e que este executa
sequencialmente.
• Programação declarativa
– O programador declara o conhecimento que o computador deve ter, necessário à resolução do problema e como este deve proceder
para atingir a solução.

5
Sebenta I - Sistemas Digitais
Programação - algoritmia, Programação - iniciação

• Programação funcional
– Os programas baseiam-se em princípios matemáticos (funções e conjuntos).
• Programação OO
– Surge como uma evolução da programação estruturada e modular;
– Os programas são substituídos por objetos que encapsulam dados e instruções.
• .....

3. A Lógica da Programação
Enfoque: Programação Estruturada

• Os Algoritmos
– permitem-nos partir dos problemas e obter os programas;
– são a forma de lidar com a complexidade natural da atividade de programação;
– São a fase intermédia entre a compreensão do problema e a escrita do programa numa linguagem de programação.
• Algoritmo
– é uma sequência ordenada e precisa de passos, ações ou operações, que conduzem à solução de um dado problema;
– a sua formulação consiste na descrição de forma ordenada, com clareza e rigor, das operações que se pretendem realizar em
computador para resolver um problema ou atingir determinados objetivos.

3.1 Fases típicas na elaboração de um programa

3.2 Entidades fundamentais da lógica de programação

Nos algoritmos destinados a programas de computador, tem de se recorrer a diversas estruturas de representação das ações ou operações a
realizar.
Entidades fundamentais:
- Dados
- Instruções básicas
- Estruturas de controlo
- Condições ou expressões lógicas
- Subprogramas
Um programa executa sequencialmente um conjunto de instruções básicas sobre dados
São, no entanto, necessárias situações em que:
- Uma instrução tenha de ser repetida várias vezes
- Decidir sobre se deve ou não executar determinada instrução em função de uma determinada condição
- Selecionar a ação a realizar de entre um conjunto de alternativas

6
Sebenta I - Sistemas Digitais
Programação - algoritmia, Programação - iniciação

3.3 Exemplo:

Problema:
◼ É dado o preço de um terreno de forma retangular, bem como as medidas de dois dos lados adjacentes;
◼ Pretendemos saber se o seu preço por metro quadrado está acima ou abaixo da média dos preços praticados na zona (que nos é dado).

Formulação do algoritmo:
Tática: decompor o problema em problemas mais simples
1. Temos de saber: o preço do terreno; a medida do lado A (em metros); a medida do lado B (em metros); o preço médio por
metro quadrado;
2. Calcular a área do terreno: área = lado A x lado B
3. Calcular o preço por m2: preço por m2 = preço do terreno / área
4. Comparar os preços por m2

SE preço por m2 > preço médio ENTÃO o preço está acima da média
SE preço por m2 < preço médio ENTÃO o preço está abaixo ao da média SENÃO o preço igual à média

3.4 Formas de representar algoritmos

Existem essencialmente duas para a programação estruturada:


Fluxogramas – descrição gráfica
Pseudocódigo – descrição textual que se aproxima da linguagem natural

Os Fluxogramas estão em desuso, …

Fluxogramas

7
Sebenta I - Sistemas Digitais
Programação - algoritmia, Programação - iniciação

Pseudocódigo

Código de escrita que:


◼ utiliza uma combinação de termos convencionais para indicar as instruções do programa;
◼ os termos utilizados são usualmente um misto de palavras da nossa linguagem natural com palavras e notações típicas das linguagens de
programação.

Caraterísticas:
◼ Não tem uma notação standard;
◼ Tem maior proximidade com as linguagens de programação permitindo diminuir o esforço gasto no desenvolvimento/codificação.

Início
Escrever (“Introduza dois valores”)
Ler (valor1)
Ler (valor2)
SE valor 1 > valor 2 ENTÃO
Escrever (valor 1, “é maior”)
SENÃO
SE valor 1 < valor 2 ENTÃO
Escrever (valor 2, “é maior”)
SENÃO
Escrever (“valores iguais”)
Fim

3.5 Ciclo de obtenção do produto final

Ciclo: Formulação, Codificação, Compilação, Depuração

3.6 A abordagem Estruturada

◼ Linguagens de Programação Estruturadas => Abordagem Estruturada


◼ Abordagem Estruturada - abordagem sistemática da construção de SW com os princípios como:
1 - A separação das definições de dados e de programa
2 - A conceção descendente ou “Top-Down”
3 - Refinamento progressivo

=> A separação das definições de dados e de programa


Os programas surgem com duas partes principais bem diferenciadas:
- Parte declarativa: declaram-se os tipos de dados e variáveis a utilizar no corpo das instruções do programa;
- Parte operativa: o corpo de instruções com que se pretende concretizar as operações e atingir os objetivos pretendidos.

=> A conceção descendente ou “Top-Down”


- É um método de abordagem dos problemas que se decompondo o problema original em problemas particulares, em níveis
sucessivamente mais concretos até ao pormenor desejado.

8
Sebenta I - Sistemas Digitais
Programação - algoritmia, Programação - iniciação

=> Refinamento Progressivo


- É um complemento lógico da abordagem descendente;
- Consiste em ir concretizando, cada vez com mais detalhe, com maior exatidão e perfeição, os passos sucessivos do projeto;
- Muito útil no desenvolvimento de pseudocódigo.

◼ Abordagem Modular – apresenta semelhanças com a abordagem estruturada, consistindo na decomposição de um problema complexo
nos seus componentes, aos quais se chamam módulos.
- Os módulos são unidades com alguma autonomia, mas também relacionáveis entre si, pois podem-se integrar (ligar) num todo.
- Reutilização de bibliotecas de módulos.

4. Componentes fundamentais de um programa


Estruturação e componentes fundamentais de um programa

“A estruturação de programas subdivide-se na estruturação das suas ações e na estruturação dos seus dados. A escolha destas estruturas
é o problema fundamental da programação estruturada. Da escolha criteriosa destas estruturas depende que o programa seja eficaz,
compreensível, robusto, modular e versátil.

A sintaxe de uma linguagem define determinados construtores, de entre os quais os mais importantes são as expressões e os comandos

Uma expressão é uma fórmula ou regra de computação que especifica um valor ou um resultado. Uma expressão consiste em operandos e
operadores.

Os operandos são constantes, variáveis, ou valores gerados por funções.

Os operadores são usualmente classificados em monádicos ou unários (operam sobre um único operador) e diádicos (operam sobre dois
operadores).

Um comando é uma fórmula que especifica uma ação que o computador deve executar para produzir certo efeito”

Programa = Dados + Instruções básicas + Expressões + Estruturas de Controlo + Subprogramas

4.1 Dados
Dados – constantes, variáveis e identificadores

• Qualquer programa opera com dados;


• Os dados podem ser utilizados sob a forma de constantes ou de variáveis;
• As variáveis são sempre associadas a identificadores e num dado instante apenas podem conter um determinado valor (simples
ou composto);
• Identificadores são nomes que se atribuem a variáveis, constantes ou outros elementos com que se opera num algoritmo;
• As variáveis pertencem sempre a um tipo de dados, o qual define o tipo de valores que a variável pode conter ao longo do tempo.

Variáveis versus constantes:


• Uma constante é um dado direto, inserido diretamente numa instrução do algoritmo
Ex. Escrever (“Bem-Vindo”) e Escrever (1999)

• Quando os dados vão ser introduzidos, processados, calculados, ..., devemos usar variáveis
Ler(quantidade, preço)
Total := quantidade*preço
Escrever(total)

Variáveis: identificadores e endereços de memória

9
Sebenta I - Sistemas Digitais
Programação - algoritmia, Programação - iniciação

Tipos de dados

Tipos de dados Simples

• Ficheiro: Os seus valores são de um determinado tipo e estão armazenados num ficheiro (memória secundária).

- Tipo pré-definido é o ficheiro de texto (String)


- Existem tipos de ficheiros estruturados

• Inteiro: define variáveis numéricas do tipo inteiro, ou seja, sem casas decimais.

• Real: define variáveis numéricas do tipo real, ou seja, com casas decimais.

• Carater: define variáveis do tipo string, ou seja, cadeia de carateres (Tabela ASCII).

• Lógico: define variáveis do tipo booleano, ou seja, com valor VERDADEIRO ou FALSO.

• Subconjunto enumerado

dias-úteis = (segunda, terça, quarta, quinta, sexta)

• Subconjunto ordenado

notas_válidas = 0..20

maiúsculas = ‘A’..’Z’

Tipos de dados Estruturados


São conjuntos ou estruturas que agrupam dados simples ou também outros dados estruturados:

• Array - Matriz de variáveis todas do mesmo tipo


• Registo - Agrupamentos de dados que podem ser de tipos diferentes
• Conjunto - Agrupamentos de dados do mesmo tipo sem repetições
• Ficheiro - Agrupamentos de dados do mesmo tipo num ficheiro em memória secundária

4.2 Instruções básicas


• Instruções de escrita ou output
Escrever(“O resultado é:”, resultado)

• Instruções de leitura ou input


Ler (nome, morada, resultado)

• Instruções de atribuição
quantidade  500
preço  1,5
nome  “Silva”
resultado  preço * quantidade

10
Sebenta I - Sistemas Digitais
Programação - algoritmia, Programação - iniciação

4.3 Expressões
• Uma expressão é um conjunto de operandos articulados entre si por operadores.
• Os operandos podem ser dados diretos, identificadores de constantes ou variáveis.
• Os operadores agrupam-se em:
– Operadores aritméticos
+, - , *, /, ...

– Operadores relacionais ou de comparação


<, >, <=, >=, <>, =

– Operadores lógicos ou booleanos


e, ou, negação, ....

11

Você também pode gostar