Manipulação de informação Algoritmos computacionais
Sumário Algoritmos não computacionais Algoritmos computacionais 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 Instruções Numeradas Com marcas Com desenhos Instruções ambíguas Vai para A Rema para A Navega para A Atravessa o rio Executor Aluno Inteligente
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 Missionário Canibal Atravessar o rio As instruções (1,1,1) / (2,2,0) (1,0,0) / (3,2,1)
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
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 números Linguagem binária Bit = digito binário Pode assumir dos valores 0 1 diferença de potencial baixo Ausência de energia Campo magnético negativo buraco diferença de potencial Alto presença de energia Campo magnético positrivo Sem buraco 1 1 0 1 0 0 0 1
Representação digital Dois Bits Acesa Bit Apagada 2 estados Acesa Apagada 4 estados
Representação digital da informação (byte) 1 bit 2bits 3 bits 4 bits 0 1 00 01 10 11 000 001 010 011 100 101 110 111 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 n bits permitem representam 2 n estados 1 0 1 BYTE 1 0 1 2 8 = 256 Estados 0 diferentes 1 1 byte = 8 bits Unidade fundamental de informação 0
Conversão de binário para decimal 1 BYTE 0 1 0 1 1 1 1 0 128 64 32 16 8 4 2 1 0 64 0 16 8 4 2 0 94 0 *2 7 + 1*2 6 + 0*2 5 + 1*2 4 + 1*2 3 + 1*2 2 + 1*2 1 + 0* 2 0 = 94 2 BYTES 32768 16384 8192 4096 2048 1024 512 256 128 64 32 16 8 4 2 1 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 1 410 Conversor de Bases
Representação binária de números negativos Representação de números inteiros negativos em complemento de 2 Valor decimal Representação binária Valor decimal Representação binária 0 0 0 0 0 0 0 0 0-1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 1-2 1 1 1 1 1 1 1 0 2 0 0 0 0 0 0 1 0-3 1 1 1 1 1 1 0 1 3 0 0 0 0 0 0 1 1-4 1 1 1 1 1 1 0 0 4 0 0 0 0 0 1 0 0-5 1 1 1 1 1 0 1 1 5 0 0 0 0 0 1 0 1-6 1 1 1 1 1 0 1 0 6 0 0 0 0 0 1 1 0-7 1 1 1 1 1 0 0 1 7 0 0 0 0 0 1 1 1-8 1 1 1 1 1 0 0 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
Linguagens de alto nível Linguagem estruturada
Linguagens de programação Calcular a área do rectângulo Algoritmo Ler lado 1 Ler lado 2 Area = lado1 * lado 2 Imprimir area Linguagem máquina 0000 00000100 0100 0000 00000101 0101 0110 01100100 01000101 01010110 0110 0011 00110110 0110 0110 0110 PORTUGOL Linguagem de de alto alto nível nível Ler Ler lado1 lado1 Ler Ler lado2 lado2 area area <- <-lado1 * lado2 lado2 Escrever area area Assembler Ler Ler C0 C0 Ler Ler C1 C1 MUL MUL C0 C0 C1 C1 C2 C2 IMP IMP C2 C2 FIM FIM
Tipos de dados Inteiro Real Caracter Texto Lógico Variáveis Um nome Um Tipo Um só valor Que espaço ocupam estes tipos de dados em memória? Depende do: HW, SW, Linguagem de programação Inteiro (32 bits) Real (32, 64 bits) Carácter (8 bits) Texto Lógico (conj. de caracteres) (1 bit)
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? Definindo o tipo da variável (tipo) e o nome variável tipo nome1 variável tipo nome1, nome2, ou apenas tipo nome1 tipo nome1, nome2, Exemplos inteiro inteirolado real reallado1 lado1,, lado2 lado2 caracter sexo sexo logico logicorepetente, 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
Ler e escrever Instrução ler Utilização Ler nome_da_variável Instrução escrever Utilização 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 OlaMundo inicio inicio escrever "ola" "ola mundo" fim fim Programa cordial cordial inicio inicio texto textonome escrever " Qual Qual o seu seu nome" nome" ler ler nome nome escrever "Bemvindo ",, nome nome fim fim
Atribuição de Valores operador <-< Exemplos Soma Soma <- <-10 10 saldo saldo <- <-soma + 1 area area <- <-lado1 * lado2 lado2 NOTA NOTA variavel <- expressão O operador = (igual) é o operador de de comparação e devolve verdadeiro ou ou falso O operado <- é o operador de 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 d = ( x1 x2) + ( y1 y2) 2 2 2 Computacional D <- ( (x1 x2)^2 + (y1 y2) ^2 ) ^0.5 (x1,y1) (x2,y2)
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 x = 2ΠR 3 2 ΠR 6 5 + 4 3 ΠR 3 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 Área do do rectângulo inicio inicio real real lado1, lado1, lado2, lado2, area area escrever "introduza o lado lado 1" 1" ler ler lado1 lado1 escrever "Introduza o lado lado 2" 2" ler ler lado2 lado2 area area <- <-lado1 * lado2 lado2 escrever " A área área é ",, area area fim fim
Exemplo de Concatenação Programa cordial cordial inicio inicio Texto Texto nome, nome, apelido, nome_completo escrever "Qual "Qual o seu seu primeiro nome" nome" ler ler nome nome escrever "Qual "Qual o seu seu apelido" ler ler apelido nome_completo <- <- nome nome + " " + apelido escrever "Benvindo" ",, nome_completo fim fim
Exercício Construa um programa que calcule a área e o perímetro de um círculo Perimetro = 2 R Area = R 2
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. Entrada 08:30:00 Tempo de trabalho 4:30:10 Saída 13:00:10