Manipulação de informação Algoritmos computacionais
Sumário Algoritmos não computacionais Algoritmos computacionais Computador simplificado Linguagem assembler Programas em assembler Bases de Numeração Números binários Programas em linguagem máquina Linguagem estruturada Variáveis Operadores aritméticos Leitura e escrita Funções
Algoritmos não computacionais
Algoritmos não computacionais Missionários e canibais Algoritmo Escrito numa folha de papel A4 A5 Duas folhas Letra manuscrita Possivelmente ilegível Intruções Numeradas Com marcas Com desenhos Intruções ambíguas Vai para A Rema para A Navega para A Atravessa o rio Executor Aluno Inteligente Problema Resolvido
Componentes dos algoritmos Dados Nº de missionários no lado A Nº de missionários no lado B Nº de canibais no lado A Nº de canibais no lado B Posição do Barco Situação inicial (0,0,0) / (3,3,1) Situação final (3,3,1) / (0,0,0) Instruções Embarcar Missionário Canibal Desembarcar Atravessar o rio (1,1,1) / (2,2,0) (1,0,0) / (3,2,1) As instruções manipulam os dados
Algoritmos não computacionais Formato ambíguo Instruções ambíguas Definição das instruções disponíveis Escritos em linguagem natural Passível de várias interpretações Executado por pessoas Entendem a linguagem natural Inteligentes e conseguem resolver ambiguidades Estão inseridas no contexto do problema Conseguem adivinhar passos intermédios
Algoritmos computacionais Programação do computador SIMPLEX
Computador Simplex
Computador Simplificado Memória Endereço Local físico da memória Conteúdo Intruções Mov Cop Dados 10 20 Vazias Processador sequencial Executa uma instrução Passa para a instrução seguinte
Intruções do processador Acções do computador SIMPLEX Manipular dados Ler Atribuir Copiar Imprimir Executar instruções Fazer operações aritméticas Somar , Subtrair, Multiplicar, dividir Fazer operações lógicas > , = , < Escolha entre várias instruções. SE Repetir um conjunto de instruções Saltar Definir a sintaxe da linguagem
Sintaxe da linguagem (assemblex) Nº Mnemômica Descrição 1 LER Ei Ler a entrada para Ei LER c0 2 COP Ei Ej Copiar conteúdo de Ei para Ej COP C0 C2 3 ATR Ei Val Atribuir a Ei o valor Val ATR C2 3.14 4 IMP Ei Imprimir Ei IMP C0 5 SOM Ei Ej Ek Somar Ei e Ej e guardar em Ek SOM C0 C1 C2 6 SUB Ei Ej Ek Subtrair Ei por Ej e guardar em Ek SUB C0 C1 C2 7 MUL Ei Ej Ek Multiplicar Ei e Ej e guardar em Ek MUL C0 C1 C2 8 DIV Ei Ej Ek Dividir Ei por Ej e guardar em Ek DIV C0 C1 C2 9 SLT Ei Saltar para a célula Ei SLT AO 10 SE Ei > Ej Ek Se Ei maior que Ej, saltar para Ek SE C0 > C1 A0 11 SE Ei < Ej Ek Se Ei menor que Ej, saltar para Ek SE C0 < C1 A0 12 SE Ei = Ej Ek Se Ei igual Ej, saltar para Ek SE C0 = C1 A0 13 FIM Parar a execução das instruções
Exemplo de um programa Calcular a área do rectangulo Algoritmo Ler lado 1 Ler lado 2 Area = lado1 * lado 2 Imprimir area Lado 1 Lado 2 Assemblex Ler C0 Ler C1 MUL C0 C1 C2 IMP C2 FIM
Execução de um programa 10 20 200 10 200 20 Programa Ler C0 Ler C1 MUL C0 C1 C2 IMP C2 FIM
Nova Execução de um programa 5 10 50 5 50 10 Programa Ler C0 Ler C1 MUL C0 C1 C2 IMP C2 FIM
Exercício Nº INSTRUÇÃO 1 LER Ei 2 COP Ei Ej 3 ATR Ei Val 4 IMP Ei 5 SOM Ei Ej Ek 6 SUB Ei Ej Ek 7 MUL Ei Ej Ek 8 DIV Ei Ej Ek 9 SLT Ei 10 SE Ei > Ej Ek 11 SE Ei < Ej Ek 12 SE Ei = Ej Ek 14 FIM Calcular a nota Final da disciplina de IP dada a nota prática e a nota teórica Algoritmo Ler nota prática Ler nota teórica nota final nota prática 40% nota teórica 60% Imprimir nota final
Exercício Assemblex Ler D0 Ler D1 ATR D2 0.4 ATR D3 0.6 MUL D0 D2 E0 SOM E1 E2 E3 IMP E3 FIM
Exercício 10 20 16
Transformar instruções, dados e endereços em números Bases de Numeração Transformar instruções, dados e endereços em números
Computador digital O computador para processar e armazenar informação utiliza a linguagem binária Converter para binário Instruções – número da instrução Endereços – endereços sequenciais Dados - são sempre numeros Linguagem binária Bit = digito binário Pode assumir dos valores diferença de potencial baixo Ausência de energia Campo magnético negativo buraco 1 diferença de potencial Alto presença de energia Campo magnético positrivo Sem buraco
Representação digital Acesa Dois Bits Apagada Bit 2 estados Acesa Apagada 4 estados
Representação digital da informação (byte) 28= 256 Estados diferentes 1 byte = 8 bits Unidade fundamental de informação n bites representam 2n estados
Conversão de decimal para binário 8 bits = 8 divisões
Conversão de binário para decimal 1 BYTE 0 *27 + 1*26 + 0*25 + 1*24 + 1*23 + 1*22 + 1*21 + 0 = 94 2 BYTES Conversor de Bases
Overflow Ocorre quando a número a armazenar excede a capacidade de armazenamento Dá origem a erros Exemplo de armazenamento num byte Numero a armazenar 400 Número armazenado 144 Conversor de Bases
Representação binária de números negativos Algoritmo para conversão de números negativos para binário Subtrair uma unidade ao número positivo Fazer a conversão para binário Inverter os bits Conversor de Bases
Representação binária de números negativos
Representação de números reais Parte decimal,parte fraccionária 120,35 Parte decimal Número inteiro Parte fraccionária Notação científica 1,2035 E 2 IEEE Standard 754 Floating Point Numbers Mantissa Número inteiro (1) Representação fraccionária do número inteiro (0,2035) Expoente Número inteiro (2) Sinal (0)
Representação de números reais
Conversão de caracteres Tabela ASCII NULL – 0 Espaço – 32 Zero – 48 A – 65 a - 97 Á – 143 á - 160
Conversão de Instruções Endereços de memória
Conversão de Instruções Endereços de memória Instruções
Programa em linguagem máquina Assembler Ler C0 Ler C1 MUL C0 C1 C2 IMP C2 FIM Linguagem máquina 0000 0100 0000 0101 0110 0100 0101 0110 0011 0110 0110
Representação física dos dados Memória Níveis de tensão Maior tensão corresponde a 1 Menor tensão corresponde a 0 Disco ou fita magnética Inversão da orientação do campo magnético numa camada de oxido de ferro Orientação positiva corresponde a 1 Orientação negativacorresponde a 0 Discos ópticos (CD , DVD) Pequenos buracos queimados pelo lases num filme de telúrio Buraco corresponde a 1 Sem buraco correspinde a 0
Linguagens de alto nível Linguagem estruturada
Substituição de endereços por nomes Calcular a área do rectângulo Algoritmo Ler lado 1 Ler lado 2 Area = lado1 * lado 2 Imprimir area Linguagem de alto nível Ler lado1 Ler lado2 area <- lado1 * lado2 Escrever area Assembler Ler C0 Ler C1 MUL C0 C1 C2 IMP C2 FIM Linguagem máquina 0000 0100 0000 0101 0110 0100 0101 0110 0011 0110 0110
Tipos de dados Variáveis Inteiro Real Caracter Texto Lógico Um nome Um Tipo Um só valor Linguagem de alto nível Ler lado1 Assembler Ler C0 máquina 0000 0101
Tipos de dados
Declaração de variáveis Onde ? Antes da sua utilização Porquê? Para o compilador reservar um espaço de memória Como ? Definir utilizando a instrução variavel Variavel tipo nome Variavel tipo nome1, nome2, … Omitindo a instrução variavel tipo nome tipo nome1, nome2, … Exemplos Variavel inteiro lado Variavel real lado1 , lado2 Caracter sexo Logico repetente, trabalhador
Regras dos nomes de variáveis Pode ser constituído por letras do alfabeto por dígitos e pelo caracter _ (underscore) O primeiro caracter não pode ser um dígito As letras maiúsculas e minúsculas representam caracteres diferentes Não pode ter o nome de uma palavra reservado da linguagem Deve ser descritivo daquilo que armazena Caso tenha mais que uma palavra utilizar o caracter _ para unir as palavras ou capitular as iniciais Não é aconselhado A utilização de caracteres acentuados Começar por _ Ter apenas letras maiúsculas
Exercício Quais dos seguintes nomes são nomes válidos de variáveis? idade Num_Cliente A1b2c3 7dias Vinte% Sim?não _alfa Variavel Nome Principal Cliente NomePrincipalCliente Nome_Principal_Cliente
Ler e escrever Instrução ler Instrução escrever Utilização Ler nome_da_variável Instrução escrever escrever nome_da_variável escrever “texto” escrever “texto” , nome_da_variável escrever nome_da_variável, “texto” , . . . . . Separar os elementos por virgulas
Exemplo de Ler e escrever Programa Ola Mundo inicio escrever "ola mundo" fim Programa cordial inicio Texto nome escrever " Qual o seu nome" ler nome escrever "Benvindo " , nome fim
Atribuição de Valores – operador <- variavel <- expressão Exemplos Soma <- 10 saldo <- soma + 1 area <- lado1 * lado2 NOTA O operador = (igual) é o operador de comparação e devolve verdadeiro ou falso O operado <- é o operador de atribuição e significa que a variável passa a ter um novo valor
Operadores Aritméticos Variáveis numéricas Unários - (menos) Binários + (adição) - (subtracção) * (multiplicação) / (divisão) ^(potenciação) Variáveis Texto Binário + ( concatenação) Prioridade dos operadores Prioridade 1 ^ Prioridade 2 * / Prioridade 3 + - Os parêntesis alteram a prioridade
Expressões matemáticas/Computacionais Distancia entre dois pontos Matemática Computacional D <- ( (x1 – x2)^2 + (y1 – y2) ^2 ) ^0.5 (x2,y2) (x1,y1)
Expressões matemáticas/Computacionais Zeros de uma equação de segundo grau Matemática Computacional X1 <- ( -b + ( b^2 – 4*a*c) ^0.5 )/ ( 2 * a) X2 <- ( -b - ( b^2 – 4*a*c) ^0.5 ) / ( 2 * a)
Expressões matemáticas/Computacionais Fórmula Matemática Expressão Computacional X <- (2*3.14*R^2 -5)/ ((3.14*R)/6)^(1/3) + (4/3)* 3.14*R^3
Área do rectangulo Programa Área do rectângulo inicio real lado1, lado2, area escrever "introduza o lado 1" ler lado1 escrever "Introduza o lado 2" ler lado2 area <- lado1 * lado2 escrever " A área é " , area fim
Exemplo de Concatenação Programa cordial inicio Texto nome, apelido, nome_completo escrever "Qual o seu primeiro nome" ler nome escrever "Qual o seu apelido" ler apelido nome_completo <- nome + " " + apelido escrever "Benvindo " , nome_completo fim
Exercício Construa um programa que calcule a área e o perímetro de um círculo
Exercício Construa um programa que calcule a área e o volume de um paralelepípedo
Exercício Construa um programa que calcule a distância de um ponto à origem num plano 2D
Exercício Construa um programa que calcule o tempo de trabalho de um trabalhador dado a hora de entrada e a hora de saída. 08:30:00 Entrada 4:30:10 Tempo de trabalho 13:00:10 Saída