1 - Sebenta Algoritmia y
1 - Sebenta Algoritmia y
1 - Sebenta Algoritmia y
- 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
• O processador apenas entende os sinais elétricos que percorrem os circuitos que o constituem;
• 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)
1
Sebenta I - Sistemas Digitais
Programação - algoritmia, Programação - iniciação
• 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.
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 é ele próprio organizado em camadas, em que, camadas de nível superior são abstrações de camadas de nível inferior
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.
3
Sebenta I - Sistemas Digitais
Programação - algoritmia, Programação - iniciaçã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
– Linkers (ligadores)
– .....
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).
• Paradigma de programação
– Define um modelo ou norma a seguir pelas linguagens de programação baseadas no paradigma.
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.
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
Fluxogramas
7
Sebenta I - Sistemas Digitais
Programação - algoritmia, Programação - iniciação
Pseudocódigo
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
8
Sebenta I - Sistemas Digitais
Programação - algoritmia, Programação - iniciação
◼ 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.
“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 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”
4.1 Dados
Dados – constantes, variáveis e identificadores
• Quando os dados vão ser introduzidos, processados, calculados, ..., devemos usar variáveis
Ler(quantidade, preço)
Total := quantidade*preço
Escrever(total)
9
Sebenta I - Sistemas Digitais
Programação - algoritmia, Programação - iniciação
Tipos de dados
• Ficheiro: Os seus valores são de um determinado tipo e estão armazenados num ficheiro (memória secundária).
• 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
• Subconjunto ordenado
notas_válidas = 0..20
maiúsculas = ‘A’..’Z’
• 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
+, - , *, /, ...
11