fundamentos da programação · •linguagem assembly: semelhante à linguagem máquina mas usa...

56
Fundamentos da Programação João Pavão Martins

Upload: others

Post on 08-Nov-2020

46 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Fundamentos da Programação · •Linguagem assembly: semelhante à linguagem máquina mas usa nomes simbólicos com significado para humanos em lugar de sequências de zeros e de

Fundamentos da Programação

João Pavão Martins

Page 2: Fundamentos da Programação · •Linguagem assembly: semelhante à linguagem máquina mas usa nomes simbólicos com significado para humanos em lugar de sequências de zeros e de

Objetivos• Primeiro contacto dos alunos com a atividade de programação

• Apresentar conceitos fundamentais relativos à atividade de programação• Utilização de uma linguagem de programação de alto nível, o Python

• Linguagem simples• A 3ª linguagem mais popular do mundo (2020)• Usada por inúmeras organizações

• Google, Yahoo!, YouTube, Facebook, Walt Disney Feature Animation, NASA

Page 3: Fundamentos da Programação · •Linguagem assembly: semelhante à linguagem máquina mas usa nomes simbólicos com significado para humanos em lugar de sequências de zeros e de

Aulas• Teóricas: Transmitidas por videoconferência• Práticas: Presenciais e por videoconferência

• Semanalmente um dos turnos (A ou B) tem aula presencial e o outro assiste à aula por videoconferência

• Primeira hora: clarificação de dúvidas e alguns exemplos• Última meia hora: exercício realizado individualmente para avaliação• Apenas o turno presencial tem avaliação que conta para a nota final

• A avaliação incide sobre a matéria dada nas aulas teóricas da semana anterior

Todos os alunos devem realizar os exercícios na página do Fénix correspondentes à matéria para a aula prática

Page 4: Fundamentos da Programação · •Linguagem assembly: semelhante à linguagem máquina mas usa nomes simbólicos com significado para humanos em lugar de sequências de zeros e de

BibliografiaMartins J.P., Programação em Python: Introdução à Programação Utilizando Múltiplos Paradigmas, Lisboa: IST Press, 2019

Page 5: Fundamentos da Programação · •Linguagem assembly: semelhante à linguagem máquina mas usa nomes simbólicos com significado para humanos em lugar de sequências de zeros e de

AvaliaçãoDois componentes de avaliação• Contínua

• Avaliação nas aulas práticas: exercícios realizados nas aulas práticas presenciais

• Avaliação por projeto: dois projetos individuais de programação (média ≥ 9,5)

• Um exame final sobre toda a matéria (nota ≥ 9,5)

Todas as componentes da avaliação têm de ser realizadas no mesmo semestre, não se guardando notas de um semestre para o outro

Dúvidas: Por videoconferência com marcação por e-mail

Page 6: Fundamentos da Programação · •Linguagem assembly: semelhante à linguagem máquina mas usa nomes simbólicos com significado para humanos em lugar de sequências de zeros e de

Nota final• T - média aritmética dos n-1 melhores trabalhos das aulas práticas presenciais

(sendo n o número de avaliações nas aulas práticas)

• P - média aritmética das duas notas do projeto

• E - nota do exame

A nota final é o maior dos seguintes valores

0,2 x T + 0,3 x P + 0,5 x E

0,3 x P + 0,7 x E

Page 7: Fundamentos da Programação · •Linguagem assembly: semelhante à linguagem máquina mas usa nomes simbólicos com significado para humanos em lugar de sequências de zeros e de

Computadores, algoritmos e programasLicenciatura em Engenharia Informática

• Engenharia• Informática

Page 8: Fundamentos da Programação · •Linguagem assembly: semelhante à linguagem máquina mas usa nomes simbólicos com significado para humanos em lugar de sequências de zeros e de

Computadores, algoritmos e programasLicenciatura em Engenharia Informática

• Engenharia: resolução problemas técnicos• Ciência: conhecimento de princípios matemáticos, físicos e de aspetos técnicos que têm

de ser bem compreendidos, para que sejam aplicados corretamente• Arte: avaliação correta, experiência, bom senso e conhecimento que permitem representar

um problema do mundo real por um modelo ao qual o conhecimento técnico pode ser aplicado para produzir uma solução

• Informática

Page 9: Fundamentos da Programação · •Linguagem assembly: semelhante à linguagem máquina mas usa nomes simbólicos com significado para humanos em lugar de sequências de zeros e de

Computadores, algoritmos e programasLicenciatura em Engenharia Informática

• Engenharia: resolução problemas técnicos

• Informática: ramo da ciência que se dedica ao estudo dos computadores e dos processos com eles relacionados

• Como se desenvolve um computador• Como se especifica o trabalho a ser realizado por um computador• De que forma se pode tornar mais fácil de utilizar• Como se definem as suas limitações e, principalmente, como aumentar as suas

capacidades e o seu domínio de aplicação

Page 10: Fundamentos da Programação · •Linguagem assembly: semelhante à linguagem máquina mas usa nomes simbólicos com significado para humanos em lugar de sequências de zeros e de

Engenharia e Informática• Engenharia tradicional: lida com forças físicas, diretamente mensuráveis

(a gravidade, os campos elétricos e magnéticos, os componentes químicos) e com objetos físicos que interagem com essas forças (rodas dentadas, vigas, circuitos)

• Engenharia Informática: lida com entidades intangíveis que apenas podem ser observadas indiretamente através dos efeitos que produzem

Page 11: Fundamentos da Programação · •Linguagem assembly: semelhante à linguagem máquina mas usa nomes simbólicos com significado para humanos em lugar de sequências de zeros e de

Programas e Processos Computacionais

• Um computador segue uma sequência de instruções a que se chama um programa

Page 12: Fundamentos da Programação · •Linguagem assembly: semelhante à linguagem máquina mas usa nomes simbólicos com significado para humanos em lugar de sequências de zeros e de

Programas e Processos Computacionais

• Um computador segue uma sequência de instruções a que se chama um programa

• A execução de um programa gera um processo computacional, um ente imaterial que evolui ao longo do tempo, executando ações que levam à solução de um problema

• pode afetar objetos existentes no mundo real, responder a perguntas, entre muitos outros aspetos

Page 13: Fundamentos da Programação · •Linguagem assembly: semelhante à linguagem máquina mas usa nomes simbólicos com significado para humanos em lugar de sequências de zeros e de

Programas e Processos Computacionais• Programação: atividade de desenvolver programas

• atividade intelectual fascinante• não é difícil• requer muita disciplina

• A programação utiliza muitas atividades e técnicas comuns a projetos nos vários ramos da engenharia

• compreensão de um problema• criação de especificações pormenorizadas para o resolver• realização das especificações• verificação e testes

Page 14: Fundamentos da Programação · •Linguagem assembly: semelhante à linguagem máquina mas usa nomes simbólicos com significado para humanos em lugar de sequências de zeros e de

Programas e Algoritmos• Durante o funcionamento de um computador este segue um programa, um

conjunto de instruções que especificam exatamente o que tem que ser feito

• Caracterizado matematicamente como um algoritmo• Algoritmos foram estudados e utilizados muito antes do aparecimento dos

computadores modernos• Um programa é um algoritmo escrito numa linguagem que é entendida pelo

computador, uma linguagem de programação

Page 15: Fundamentos da Programação · •Linguagem assembly: semelhante à linguagem máquina mas usa nomes simbólicos com significado para humanos em lugar de sequências de zeros e de

AlgoritmoSequência finita de instruções bem definidas e não ambíguas, cada uma das quais pode ser executada mecanicamente num período de tempo finito com uma quantidade de esforço finita

Page 16: Fundamentos da Programação · •Linguagem assembly: semelhante à linguagem máquina mas usa nomes simbólicos com significado para humanos em lugar de sequências de zeros e de

AlgoritmoSequência finita de instruções bem definidas e não ambíguas, cada uma das quais pode ser executada mecanicamente num período de tempo finito com uma quantidade de esforço finita

• sequência finita: existe uma ordem pela qual as instruções aparecem no algoritmo, e que estas instruções são em número finito

Page 17: Fundamentos da Programação · •Linguagem assembly: semelhante à linguagem máquina mas usa nomes simbólicos com significado para humanos em lugar de sequências de zeros e de

AlgoritmoSequência finita de instruções bem definidas e não ambíguas, cada uma das quais pode ser executada mecanicamente num período de tempo finito com uma quantidade de esforço finita

• sequência finita: existe uma ordem pela qual as instruções aparecem no algoritmo, e que estas instruções são em número finito

• bem definidas e não ambíguas: o significado de cada instrução é claro, não havendo lugar para ambiguidade

Page 18: Fundamentos da Programação · •Linguagem assembly: semelhante à linguagem máquina mas usa nomes simbólicos com significado para humanos em lugar de sequências de zeros e de

AlgoritmoSequência finita de instruções bem definidas e não ambíguas, cada uma das quais pode ser executada mecanicamente num período de tempo finito com uma quantidade de esforço finita

• sequência finita: existe uma ordem pela qual as instruções aparecem no algoritmo, e que estas instruções são em número finito

• bem definidas e não ambíguas: o significado de cada instrução é claro, não havendo lugar para ambiguidade

• podem ser executadas mecanicamente: a execução das instruções não requer imaginação por parte do executante

Page 19: Fundamentos da Programação · •Linguagem assembly: semelhante à linguagem máquina mas usa nomes simbólicos com significado para humanos em lugar de sequências de zeros e de

AlgoritmoSequência finita de instruções bem definidas e não ambíguas, cada uma das quais pode ser executada mecanicamente num período de tempo finito com uma quantidade de esforço finita

• sequência finita: existe uma ordem pela qual as instruções aparecem no algoritmo, e que estas instruções são em número finito

• bem definidas e não ambíguas: o significado de cada instrução é claro, não havendo lugar para ambiguidade

• podem ser executadas mecanicamente: a execução das instruções não requer imaginação por parte do executante

• num período de tempo finito e com uma quantidade de esforço finita: a execução de cada uma das instruções termina

Page 20: Fundamentos da Programação · •Linguagem assembly: semelhante à linguagem máquina mas usa nomes simbólicos com significado para humanos em lugar de sequências de zeros e de

Exemplo de algoritmoAlgoritmo para somar dois números

Page 21: Fundamentos da Programação · •Linguagem assembly: semelhante à linguagem máquina mas usa nomes simbólicos com significado para humanos em lugar de sequências de zeros e de

Exemplo de algoritmoAlgoritmo para calcular √2

Page 22: Fundamentos da Programação · •Linguagem assembly: semelhante à linguagem máquina mas usa nomes simbólicos com significado para humanos em lugar de sequências de zeros e de

Exemplo de algoritmoInstruções do Google Maps

Page 23: Fundamentos da Programação · •Linguagem assembly: semelhante à linguagem máquina mas usa nomes simbólicos com significado para humanos em lugar de sequências de zeros e de

Características de um algoritmo • Rigoroso: cada instrução especifica exata e rigorosamente o que deve ser feito,

não há ambiguidade • Criação de linguagens artificiais: notação matemática, ∀ 𝑥 ∃ 𝑦 ∶ 𝑥 > 𝑦, a notação química, MgO +

H2 → Mg + H2O, linguagens de programação

• Eficaz: cada instrução é suficientemente básica e bem compreendida de modo a ser executada num intervalo de tempo finito, com uma quantidade de esforço finita

• Termina: leva a uma situação em que o objetivo foi atingido não existindo mais instruções para serem executadas

Page 24: Fundamentos da Programação · •Linguagem assembly: semelhante à linguagem máquina mas usa nomes simbólicos com significado para humanos em lugar de sequências de zeros e de

Linguagem de Programação• Linguagem artificial utilizada para escrever programas de computador

• Classes de linguagens de programação• Linguagem máquina: linguagem nativa do computador. Instruções são constituídas por

uma sequência de zeros e uns• Linguagem assembly: semelhante à linguagem máquina mas usa nomes simbólicos com

significado para humanos em lugar de sequências de zeros e de uns• Linguagens de alto nível: aproximam-se das linguagens que os humanos usam para

resolver problemas e são muito mais fáceis de utilizar do que as linguagens máquina ou assembly, para além de poderem ser utilizadas em computadores diferentes. O Python é uma linguagem de alto nível

Page 25: Fundamentos da Programação · •Linguagem assembly: semelhante à linguagem máquina mas usa nomes simbólicos com significado para humanos em lugar de sequências de zeros e de

Programas e Algoritmos• Programa um algoritmo, escrito de modo a poder ser executado por um

computador (usa uma linguagem de programação)

• Grande parte desta disciplina aborda o desenvolvimento de algoritmos, e a sua codificação utilizando a linguagem de programação Python

• Os programas manipulam valores de variáveis• O computador começa por receber certos valores para algumas das variáveis• Efetua operações sobre essas variáveis, possivelmente dando valores a novas

variáveis• Chega a um conjunto de valores que constituem o resultado do programa

Page 26: Fundamentos da Programação · •Linguagem assembly: semelhante à linguagem máquina mas usa nomes simbólicos com significado para humanos em lugar de sequências de zeros e de

Algoritmo, programa, processo

Algoritmo Programa Processocomputacional

Page 27: Fundamentos da Programação · •Linguagem assembly: semelhante à linguagem máquina mas usa nomes simbólicos com significado para humanos em lugar de sequências de zeros e de

Exemplo• Objetivo: Calcular a soma dos 100 primeiros inteiros positivos

• Utilização de uma calculadora• Explicar a alguém como o fazer

Page 28: Fundamentos da Programação · •Linguagem assembly: semelhante à linguagem máquina mas usa nomes simbólicos com significado para humanos em lugar de sequências de zeros e de

ExemploLimpar o visor da calculadoraCarregar na tecla 1Carregar na tecla +Carregar na tecla 2Carregar na tecla +Carregar na tecla 3Carregar na tecla +...Carregar na tecla 1Carregar na tecla 0Carregar na tecla 0Carregar na tecla =

Page 29: Fundamentos da Programação · •Linguagem assembly: semelhante à linguagem máquina mas usa nomes simbólicos com significado para humanos em lugar de sequências de zeros e de

ExemploLimpar o visor da calculadoraCarregar na tecla 1Carregar na tecla +Carregar na tecla 2Carregar na tecla +Carregar na tecla 3Carregar na tecla +...Carregar na tecla 1Carregar na tecla 0Carregar na tecla 0Carregar na tecla =

É um algoritmo?

Page 30: Fundamentos da Programação · •Linguagem assembly: semelhante à linguagem máquina mas usa nomes simbólicos com significado para humanos em lugar de sequências de zeros e de

Exemplo• Grandezas envolvidas no processo de cálculo

• a soma corrente (aparece, em cada instante, no visor da calculadora)• o número a ser adicionado à soma (mantido na nossa cabeça)

• Cada vez que um número é adicionado à soma corrente, aumentamos mentalmente em uma unidade o próximo número a ser adicionado

Page 31: Fundamentos da Programação · •Linguagem assembly: semelhante à linguagem máquina mas usa nomes simbólicos com significado para humanos em lugar de sequências de zeros e de

Exemplo• Para exprimir o processo de um modo rigoroso, necessitamos de recorrer

a duas variáveis• uma para representar a soma corrente (à qual chamamos soma)• a outra para representar o número que mantemos na nossa cabeça (a que

chamamos numero)

• Passos que executamos sempre que adicionamos um número à soma corrente:

A soma toma o valor de soma + numeroO numero toma o valor de numero + 1

Page 32: Fundamentos da Programação · •Linguagem assembly: semelhante à linguagem máquina mas usa nomes simbólicos com significado para humanos em lugar de sequências de zeros e de

Exemplo• Os passos

A soma toma o valor de soma + numeroO numero toma o valor de numero + 1

são executados repetitivamente para todos os números a somar

Page 33: Fundamentos da Programação · •Linguagem assembly: semelhante à linguagem máquina mas usa nomes simbólicos com significado para humanos em lugar de sequências de zeros e de

Exemplo• Os passos

A soma toma o valor de soma + numeroO numero toma o valor de numero + 1

são executados repetitivamente para todos os números a somar

• Repetimos estes passos enquanto o número a somar não exceder 100Enquanto numero ≤ 100

A soma toma o valor de soma + numeroO numero toma o valor de numero + 1

Page 34: Fundamentos da Programação · •Linguagem assembly: semelhante à linguagem máquina mas usa nomes simbólicos com significado para humanos em lugar de sequências de zeros e de

Exemplo• Operações que efetuámos antes de começar a executar a sequência

repetitiva de operações:• Limpámos o visor da calculadora: o valor inicial da variável soma é

zero• Estabelecemos, mentalmente, que o primeiro numero a ser adicionado

à soma é um

Page 35: Fundamentos da Programação · •Linguagem assembly: semelhante à linguagem máquina mas usa nomes simbólicos com significado para humanos em lugar de sequências de zeros e de

ExemploA soma toma o valor 0O numero toma o valor 1

Enquanto numero ≤ 100

A soma toma o valor de soma + numeroO numero toma o valor de numero + 1

• Descrição muito aproximada de um programa em Python

Page 36: Fundamentos da Programação · •Linguagem assembly: semelhante à linguagem máquina mas usa nomes simbólicos com significado para humanos em lugar de sequências de zeros e de

Exemplodef prog_soma_100():

soma = 0

numero = 1

while numero <= 100:

soma = soma + numero

numero = numero + 1

print('O valor da soma é: ', soma)

Page 37: Fundamentos da Programação · •Linguagem assembly: semelhante à linguagem máquina mas usa nomes simbólicos com significado para humanos em lugar de sequências de zeros e de

Exemplo• Fórmula para calcular a soma dos primeiros 100 inteiros positivos

100 .1 + 100

2

Page 38: Fundamentos da Programação · •Linguagem assembly: semelhante à linguagem máquina mas usa nomes simbólicos com significado para humanos em lugar de sequências de zeros e de

Exemplo• Fórmula para calcular a soma dos primeiros 100 inteiros positivos

100 .1 + 100

2• Podemos utilizar esta fórmula para obter o valor desejado com um novo programa

def prog_soma_100():

soma = (100 * (1 + 100)) // 2

print('O valor da soma é: ', soma)

• Normalmente não existe apenas um algoritmo para resolver um dado problema

Page 39: Fundamentos da Programação · •Linguagem assembly: semelhante à linguagem máquina mas usa nomes simbólicos com significado para humanos em lugar de sequências de zeros e de

Sintaxe e semântica• O Python, como qualquer linguagem, apresenta dois aspetos distintos: a forma das

frases da linguagem e o significado associado às frases

Page 40: Fundamentos da Programação · •Linguagem assembly: semelhante à linguagem máquina mas usa nomes simbólicos com significado para humanos em lugar de sequências de zeros e de

Sintaxe e semântica• O Python, como qualquer linguagem, apresenta dois aspetos distintos: a forma das

frases da linguagem e o significado associado às frases

• A sintaxe e a semântica da linguagem

• A sintaxe determina qual a constituição das frases que podem ser fornecidas ao computador

• A semântica determina o que o computador vai fazer ao seguir as indicações apresentadas em cada uma dessas frases, ou seja, corresponde ao seu significado

Page 41: Fundamentos da Programação · •Linguagem assembly: semelhante à linguagem máquina mas usa nomes simbólicos com significado para humanos em lugar de sequências de zeros e de

Sintaxe• A sintaxe é o conjunto de regras que definem as relações válidas entre os

componentes da linguagem, tais como as palavras e as frases

• Em língua natural, a sintaxe é conhecida como a gramática

• Como a sintaxe apenas se preocupa com o processo de combinação dos símbolos da linguagem, ela pode ser, na maior parte dos casos, facilmente formalizada

Page 42: Fundamentos da Programação · •Linguagem assembly: semelhante à linguagem máquina mas usa nomes simbólicos com significado para humanos em lugar de sequências de zeros e de

Gramática formal• Gramática formal é composta por:

• Um conjunto de símbolos, os símbolos não terminais, que não aparecem explicitamente nas frases da linguagem mas que são utilizados para descrever os vários componentes das frases

• Um símbolo não terminal especial, o símbolo inicial, que representa o elemento principal da linguagem

• Um conjunto de símbolos, os símbolos terminais, que aparecem nas frases da linguagem

• Um conjunto de regras, as regras de produção, que descrevem a estrutura dos vários componentes da linguagem

Page 43: Fundamentos da Programação · •Linguagem assembly: semelhante à linguagem máquina mas usa nomes simbólicos com significado para humanos em lugar de sequências de zeros e de

Gramática BNF• Os símbolos não terminais escrevem-se entre parênteses angulares, < e

>• Usando um exemplo do Python, <instrução> é um símbolo não terminal que corresponde

ao conjunto de todas as instruções em Python

• Os símbolos terminais escrevem-se sem qualquer símbolo à sua volta• Em Python, + corresponde a um símbolo terminal que representa a operação de adição

Page 44: Fundamentos da Programação · •Linguagem assembly: semelhante à linguagem máquina mas usa nomes simbólicos com significado para humanos em lugar de sequências de zeros e de

Gramática BNF• As regras de produção escrevem-se, usando as seguintes convenções

• O símbolo ::= (lido é definido como) serve para definir componentes da linguagem

• O símbolo | (lido ``ou'') representa possíveis alternativas• O símbolo + após um símbolo não terminal significa que ele pode ser repetido

uma ou mais vezes• O símbolo * após um símbolo não terminal significa que ele pode ser repetido

zero ou mais vezes• A utilização de chavetas, { e }, englobando símbolos terminais ou não

terminais, significa que esses símbolos são opcionais

Page 45: Fundamentos da Programação · •Linguagem assembly: semelhante à linguagem máquina mas usa nomes simbólicos com significado para humanos em lugar de sequências de zeros e de

Números binários• Gramática para definir números binários

• Um número binário é apenas constituído pelos dígitos binários 0 e 1, podendo apresentar qualquer quantidade destes dígitos ou qualquer combinação entre eles

Page 46: Fundamentos da Programação · •Linguagem assembly: semelhante à linguagem máquina mas usa nomes simbólicos com significado para humanos em lugar de sequências de zeros e de

Números binários• Gramática para definir números binários

• Um número binário é apenas constituído pelos dígitos binários 0 e 1, podendo apresentar qualquer quantidade destes dígitos ou qualquer combinação entre eles

• A seguinte gramática define números binários:

<número binário> ::= <dígito binário> | <dígito binário> <número binário>

<dígito binário> ::= 0 | 1

1001

Page 47: Fundamentos da Programação · •Linguagem assembly: semelhante à linguagem máquina mas usa nomes simbólicos com significado para humanos em lugar de sequências de zeros e de

Números binários• Gramática para definir números binários

• Um número binário é apenas constituído pelos dígitos binários 0 e 1, podendo apresentar qualquer quantidade destes dígitos ou qualquer combinação entre eles

• A seguinte gramática define números binários:

<número binário> ::= <dígito binário> | <dígito binário> <número binário>

<dígito binário> ::= 0 | 1

• Símbolos terminais 0 e 1

• Símbolos não terminais <número binário> (o símbolo inicial) e <dígito binário>

Page 48: Fundamentos da Programação · •Linguagem assembly: semelhante à linguagem máquina mas usa nomes simbólicos com significado para humanos em lugar de sequências de zeros e de

Números binários (alternativa)

<número binário> ::= <dígito binário>+

<dígito binário> ::= 0 | 1

Page 49: Fundamentos da Programação · •Linguagem assembly: semelhante à linguagem máquina mas usa nomes simbólicos com significado para humanos em lugar de sequências de zeros e de

Exemplo<S> ::= <A> <B>

<A> ::= <x> | <x> <A>

<B> ::= <y> | <y> <B>

<x> ::= A | B | C | D

<y> ::= 1 | 2 | 3 | 4

Page 50: Fundamentos da Programação · •Linguagem assembly: semelhante à linguagem máquina mas usa nomes simbólicos com significado para humanos em lugar de sequências de zeros e de

Exemplo<S> ::= <A> <B>

<A> ::= <x> | <x> <A>

<B> ::= <y> | <y> <B>

<x> ::= A | B | C | D

<y> ::= 1 | 2 | 3 | 4

DAABBBB4444114 23ABC

A1

Page 51: Fundamentos da Programação · •Linguagem assembly: semelhante à linguagem máquina mas usa nomes simbólicos com significado para humanos em lugar de sequências de zeros e de

Exemplo<Princ> ::= a <Meio> a | a <Princ> a

<Meio> ::= b <Fim> b | b <Meio> b

<Fim> ::= c | c <Fim>

Page 52: Fundamentos da Programação · •Linguagem assembly: semelhante à linguagem máquina mas usa nomes simbólicos com significado para humanos em lugar de sequências de zeros e de

Exemplo<Princ> ::= a <Meio> a | a <Princ> a

<Meio> ::= b <Fim> b | <Meio>

<Fim> ::= c | c <Fim>

aaaaabbcbbaaaaa

abccccccccccccba

Page 53: Fundamentos da Programação · •Linguagem assembly: semelhante à linguagem máquina mas usa nomes simbólicos com significado para humanos em lugar de sequências de zeros e de

Semântica• A semântica define qual o significado de cada frase da linguagem

• A semântica nada diz quanto ao processo de geração das frases da linguagem

• A descrição da semântica de uma linguagem de programação é muito mais difícil do que a descrição da sua sintaxe

• Um dos processos de descrever a semântica de uma linguagem consiste em fornecer uma descrição em língua natural do significado, ou seja, das ações que são realizadas pelo computador, de cada um dos possíveis componentes da linguagem

Page 54: Fundamentos da Programação · •Linguagem assembly: semelhante à linguagem máquina mas usa nomes simbólicos com significado para humanos em lugar de sequências de zeros e de

Tipos de erros num programa• Erros sintáticos: o programador não escreveu as frases do seu programa de

acordo com as regras da linguagem de programação

• Erros semânticos (ou erros de lógica): o programador não definiu corretamente as ações a serem executadas (o programador queria dizer uma coisa mas disse outra)

• Podem manifestar-se pela • Geração de uma mensagem de erro durante a execução de um programa• Produção de resultados errados• Geração de ciclos que nunca terminam

Page 55: Fundamentos da Programação · •Linguagem assembly: semelhante à linguagem máquina mas usa nomes simbólicos com significado para humanos em lugar de sequências de zeros e de

Depuração• Processo de deteção e correção, tanto dos erros sintáticos como dos erros

semânticos, chama-se depuração• Em inglês, este processo é chamado debugging e aos erros que existem num

programa, tanto sintáticos como semânticos, chamam-se bugs

• Programação requere• Competências para desenvolver programas

• Capacidade de resolução de problemas• Capacidade de depuração

Page 56: Fundamentos da Programação · •Linguagem assembly: semelhante à linguagem máquina mas usa nomes simbólicos com significado para humanos em lugar de sequências de zeros e de