02-1
Sumário
• Computador
• Noção de algoritmo
• Linguagem de programação
‒ Léxico, sintaxe e semântica
‒ Gramáticas
• Fluxogramas
02-2 MEEC – DEEC - IST
Introdução
Computador
• Máquina
• Memória
‒ Armazena dados
• Dispositivos de entrada/saída
‒ Permite a interacção com os utilizadores
‒ leitura e escrita de dados
• Unidade Funcional
‒ Acede a posições de memória
‒ Executa sequencialmente instruções muito
simples
02-3 MEEC – DEEC - IST
Introdução
Processador
• Unidade Funcional de um computador
‒ Acede a posições de memória
• Sítio onde armazena dados
• Dados escalares
‒ Executa sequencialmente instruções muito
simples
• Lê valor, armazena valor
• Soma, Subtrai
• Compara
02-4
Programa (código máquina)
7F454C46010101000000000000000000020003000100000080800408340 00000F40000000000000034002000020028000600050001000000000000 0000800408008004089D0000009D000000050000000010000001000000A 0000000A0900408A09004080E0000000E00000006000000001000000000 00000000000000000000BA0E000000B9A0900408BB01000000B80400000 0CD80B801000000CD8000000048656C6C6F2C20776F726C64210A000000 546865204E65747769646520417373656D626C657220302E39382E33390 0002E7368737472746162002E74657874002E64617461002E627373002E 636F6D6D656E74000000000000000000000000000000000000000000000 00000000000000000000000000000000000000B00000001000000060000 0080800408800000001D000000000000000000000010000000000000001 10000000100000003000000A0900408A00000000E000000000000000000 00000400000000000000170000000100000001000000AE900408AE00000 002000000000000000000000001000000000000001C0000000100000000 00000000000000B00000001F00000000000000000000000100000000000 00001000000030000000000000000000000CF0000002500000000000000 000000000100000000000000 02-5 MEEC – DEEC - IST
Introdução
Programa (Linguagem máquina)
.cstring LC0: .ascii "%d \0" .text .globl _main _main: LFB3: pushq %rbp LCFI0: movq %rsp, %rbp LCFI1: subq $16, %rsp LCFI2: movl $0, -4(%rbp) jmp L2 L3: movl -4(%rbp), %esi leaq LC0(%rip), %rdi movl $0, %eax call _printf incl -4(%rbp) L2: cmpl $99, -4(%rbp) jle L3 movl $0, %eax leave ret 02-6 MEEC – DEEC - IST
Introdução
Programa em C
#include <stdio.h> int main(){ int i; i=0; while (i <100){ printf("%d ", i); i ++; } return 0; }02-7
Programa
• Algoritmo escrito numa linguagem
de programação
ordena = 1; while (ordena == 1) { ordena = 0; i = 0; while (i<(numVec-1)){ if (v[i] > v[i+1]){ aux = v[i+1]; v[i+1] = v[i]; v[i] = aux; ordena = 1; } i++; } } n= 1; soma= 0; while(true){ sn = a*pow(r, n-1); soma += sn; n++; } 02-8 MEEC – DEEC - ISTIntrodução
Algoritmo
• Definição informal:
‒ Sequência de instruções para atingir um fim
• Exemplos:
‒ Receitas
‒ Instruçoes de montagem de kits
‒ Instruções para lavar as mãos
02-9 MEEC – DEEC - IST
Introdução
02-10
Algoritmo
• Definição formal:
‒ Sequência finita de instruções bem definidas e não
ambíguas
‒ Instruções com execução precisa, em tempo finito
e com esforço finito
• Exemplo
‒ Sequência de instruções para ordenar uma lista de
inteiros
• Contra Exemplo
‒ Instruções para cálculo da soma de uma série
geométrica por adições exaustivas
02-11 MEEC – DEEC - IST
Introdução
Linguagem de Programação
• Notação sistemática que permite descrever
uma sequência de instruções que o
computador pode executar
• Linguagem máquina
‒ Instruções elementares
‒ Dependentes do processador
• Linguagens de alto nível
‒ Instruções complexas
‒ Independentes do processador
‒ Exemplo
• Se (a<0) imprime(“negativo”)
02-12 MEEC – DEEC - IST
Introdução
Linguagem
• Léxico
‒ Palavras da linguagem
• Durante a noite o aluno leo atemtamemte o relatorio
• Sintaxe
‒ Regras que determinam as relações entre as
palavras da linguagem
• A o o durante relatório atentamente aluno noite leu
• Semântica
‒ Significado dado às frases
02-13
Sintaxe e Gramática
• Gramática
‒ Descrição formal das regras de sintaxe
de uma linguagem
• Incumprimento das regras da
Gramática
‒ Erro de compilação
• Descrição:
‒ BNF (Backus Naur-Form)
‒ Diagramas sintáticos
02-14 MEEC – DEEC - ISTIntrodução
Gramática
• Simbolos terminais
‒ If, while, for, …– Palavras, sinais de pontuação, …
• Simbolos não terminais
‒ Função, instrução– Sintagmas, complementos…
• Símbolos inicial
‒ Programa– Frase
• Regras de Produção
‒ Combinações válidas dos vários elementos
02-16 MEEC – DEEC - IST
Introdução
Instrução condicional
instrucao: instrucao_se | instrucao_enquanto
instrucao_se:
se (condicao) instrucoes
instrucoes : instrucao+
se
(
condicao
)
instrucoes
instrucao_se
instrucao
instrucao_se
instrucao_enquanto
instrucoes
instrucao
02-17
Implicações
• Gramáticas
‒ Bem definidas
‒ Regras de construção obrigatórias
‒ Necessidade de decorar sintaxe
• Programação
‒ Erros sintáticos
• Necessidade de os evitar!!!! • Necessidade de os compreender
• Solução:
‒ Ler e escrever muitos programas!!!!!!
02-18 MEEC – DEEC - IST
Introdução
Algoritmos
• Sequencia de instruções
‒ Com saltos....
• Representação formal
‒ Fluxogramas
02-19 MEEC – DEEC - ISTIntrodução
Fluxograma
• Representação gráfica
‒ Operação
‒ Decisão
‒ Leitura/escrita
‒ Fluxo de execução
‒ Indicador de início/fim
02-20
Fluxogramas
• Indicador início / fim
‒ Indicador de início
• Sai uma seta indicadora de fluxo
‒ Indicador de fim
• Entra uma setas indicadoras de fluxo
início
fim
02-21 MEEC – DEEC - IST
Introdução
Fluxogramas
• Operação
‒ Representamoperação relizada
• Manipulação de valor
• Atribuição de valor
• Conta
‒ Entra uma seta indicadoras de fluxo
‒ Sai uma seta indicadoras de fluxo
i ← 0
i ← i+1
02-22 MEEC – DEEC - IST
Introdução
Fluxogramas
• Leitura/ escrita
‒ Representauma intração com o
utilizador
• Leitura de um valor (do teclado ou ficheiro)
• Escrita de um valor (no ecran ou ficheiro)
•
‒ Entra uma seta indicadoras de fluxo
‒ Sai uma seta indicadoras de fluxo
imprime i lê dia
02-23
Fluxogramas
• Decisão
‒ Divisão do fluxo de execução
• Avcaliação de condição
• Selecção de operaçoes
‒ Entra uma seta indicadora de fluxo
‒ Saiem várias setas indicadoras de fluxo
imprime i lê dia
02-24 MEEC – DEEC - IST
Introdução
Fluxograma
início
i ← 0
i < 100 ?i ← i+1
imprime i
fim
02-25 MEEC – DEEC - ISTIntrodução
Fluxograma + Programa
início i ← 0 i < 100 ? i ← i+1 imprime i fim #include <stdio.h> int main(){ int i; i=0; while (i <100){ printf("%d ", i); i ++; } return 0; } Não Sim02-26
Próximos capítulos
• Estrutura de um programa
• Comentários
• Constantes
• Variáveis
‒ Declaração
‒ Atribuição
• Inteiros, reais e caracteres
• Leituras e escritas
• Booleanos
02-27 MEEC – DEEC - IST
Introdução