slides computação e programação memec+lean · escalares • são matrizes 1 x 1 vetores...

25
9/24/2015 1 D.E.M. – Área Científica de Controlo Automação e Informática Industrial Computação e Programação MEMec, LEAN - 1º Semestre 2015-2016 Aula Teórica 4 Gráficos Algoritmos simples e estruturas de controlo Funções de Entrada / Saída Scripts Uma memória digital só guarda números inteiros em base binária • Valores reais, caracteres e outros tipos de dados devem ser armazenados como inteiros Quando um programa acede (ou escreve) ao valor de uma variável em memória como pode então interpretá-lo? • Cada variável está necessariamente associada a um tipo de dados, que diz ao programa como descodificar o valor inteiro guardado em memória Quais são os tipos de dados básicos? • Real • Inteiro (com e sem sinal) • Carácter • Lógico Computação e Programação 2015 / 2016 2 Wrap Up da última aula

Upload: buianh

Post on 08-Nov-2018

215 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Slides Computação e Programação MEMec+LEAN · Escalares • São matrizes 1 x 1 Vetores Matrizes Computação e Programação 2015 / 2016 4 Wrap Up da última aula • São matrizes

9/24/2015

1

D.E.M. – Área Científica de Controlo Automação e Informática Industrial

Computação e ProgramaçãoMEMec, LEAN - 1º Semestre 2015-2016

Aula Teórica 4

• Gráficos• Algoritmos simples e estruturas de controlo• Funções de Entrada / Saída• Scripts

Uma memória digital só guarda números inteiros

em base binária

• Valores reais, caracteres e outros tipos de dados devem ser armazenados como inteiros

Quando um programa acede (ou escreve) ao valor de uma variável em memória como pode então interpretá-lo?

• Cada variável está necessariamente associada a um tipo de dados, que diz ao programa como descodificar o valor inteiro guardado em memória

Quais são os tipos de dados básicos?

• Real

• Inteiro (com e sem sinal)

• Carácter

• Lógico

Computação e Programação 2015 / 2016 2

Wrap Up da última aula

Page 2: Slides Computação e Programação MEMec+LEAN · Escalares • São matrizes 1 x 1 Vetores Matrizes Computação e Programação 2015 / 2016 4 Wrap Up da última aula • São matrizes

9/24/2015

2

Como definir uma variável do tipo

char?

• Atribuindo-lhe um valor literal entre ‘ ’ (e.g.: x =’A’) ou convertendo um valor

numérico com a função char (e.g.: x = char(78))

Como definir variáveis de outros tipos básicos?

• Atribuindo-lhe o resultado de uma função com o nome do tipo (e.g.: x = uint16(200) x = single(1.23) x = logical(0)

E quando faço uma atribuição simples?

(e.g.: x = 2)

• Qualquer valor numérico é assumido pelo MATLAB como sendo do tipo double

Computação e Programação 2015 / 2016 3

Wrap Up da última aula

MATLAB <=> MATrix LABoratory

Escalares • São matrizes 1 x 1

Vetores

Matrizes

Computação e Programação 2015 / 2016 4

Wrap Up da última aula

• São matrizes 1 x m ou n x 1

• n x m

Matrizes (no contexto do MATLAB)

• Conjunto dados do mesmo tipo, que são agrupados numa única variável de acordo com uma dada lógica

Page 3: Slides Computação e Programação MEMec+LEAN · Escalares • São matrizes 1 x 1 Vetores Matrizes Computação e Programação 2015 / 2016 4 Wrap Up da última aula • São matrizes

9/24/2015

3

Alinhamento da AT 4

• Gráficos

• Algoritmos simples e estruturas de controlo

• Funções de Entrada / Saída

• Scripts

Computação e Programação 2015 / 2016 5

Tipos de gráficos 2D

6Computação e Programação 2015 / 2016

Page 4: Slides Computação e Programação MEMec+LEAN · Escalares • São matrizes 1 x 1 Vetores Matrizes Computação e Programação 2015 / 2016 4 Wrap Up da última aula • São matrizes

9/24/2015

4

Tipos de gráficos 3D

7Computação e Programação 2015 / 2016

Descrição: construção de gráficos 2D na Figure Window actual

Sintaxe: plot(Y)

plot(X,Y)

plot(X,Y,S)

Função pré-definida plot

>> x = 1:6;

>> y = [1 5 3 9 11 8];

>> plot(x,y)

8Computação e Programação 2015 / 2016

Page 5: Slides Computação e Programação MEMec+LEAN · Escalares • São matrizes 1 x 1 Vetores Matrizes Computação e Programação 2015 / 2016 4 Wrap Up da última aula • São matrizes

9/24/2015

5

Função pré-definida plot

Parameterização das características do gráfico:

' c

Cor

--

Tipo de linha

'd

Marcadores

S =

>> x = 1:6;

>> y = [1 5 3 9 11 8];

>> plot(x,y,'ro--')

9Computação e Programação 2015 / 2016

Parameterização da função plot

Cor Marcadores Tipo de linha

bcgkmry

bluecyangreenblackmagentaredyellow

odhp+.s*v<>^x

circlediamondhexagrampentagrampluspointsquarestardownleft triangleright triangleup trianglex-mark

---.:-

dasheddash dotdottedsolid

10Computação e Programação 2015 / 2016

Page 6: Slides Computação e Programação MEMec+LEAN · Escalares • São matrizes 1 x 1 Vetores Matrizes Computação e Programação 2015 / 2016 4 Wrap Up da última aula • São matrizes

9/24/2015

6

• Funções de formatação dos eixos

Funções adicionais

Comando Descrição

legend coloca a legenda na Figure Window

title coloca o titulo na Figure Window

xlabel coloca um rótulo no eixo das abcissas

ylabel coloca um rótulo no eixo das ordenadas

grid coloca uma grelha no background do gráfico

axis formata a gama de valores nos eixos do gráfico

11Computação e Programação 2015 / 2016

>> x = 11;

>> y = 48;

>> plot(x,y,'r*')

>> axis([9 12 35 55])

>> title('Time and Temp')

>> xlabel('Time')

>> ylabel('Temperature')

Propriedades dos gráficos

12Computação e Programação 2015 / 2016

Page 7: Slides Computação e Programação MEMec+LEAN · Escalares • São matrizes 1 x 1 Vetores Matrizes Computação e Programação 2015 / 2016 4 Wrap Up da última aula • São matrizes

9/24/2015

7

• Funções de controlo da figura

Funções adicionais

Comando Descrição

hold congela o grafico representado na Figure Window

clf apaga o gráfico na Figure Window corrente

close fecha a Figure Window corrente

figure abre/acede à Figure Window especificada

13Computação e Programação 2015 / 2016

• Exemplo

Representação de múltiplos gráficos

>>

>>

>>

>>

>>

>>

>>

>>

>>

14Computação e Programação 2015 / 2016

Page 8: Slides Computação e Programação MEMec+LEAN · Escalares • São matrizes 1 x 1 Vetores Matrizes Computação e Programação 2015 / 2016 4 Wrap Up da última aula • São matrizes

9/24/2015

8

• Criação de outros tipos de gráficos

Funções adicionais

Comando Descrição

bar construção de gráficos 2D de barras verticais

plot3 construção de gráficos 3D

barh construção de gráficos 2D de barras horizontais

stem construção de gráficos 2D do tipo discreto

stairs construção de gráficos 2D do tipo escada

15Computação e Programação 2015 / 2016

>> x = 1:5;

>> y1 = [2 11 6 9 3];

>> y2 = [4 5 8 6 2];

>> figure(1)

>> bar(x,y1)

>> figure(2)

>> plot(x,y1,'k')

>> hold on

>> plot(x,y2,'ko')

>> grid on

>> legend('y1','y2')

Gráficos de barras, grelha e legenda

16Computação e Programação 2015 / 2016

Page 9: Slides Computação e Programação MEMec+LEAN · Escalares • São matrizes 1 x 1 Vetores Matrizes Computação e Programação 2015 / 2016 4 Wrap Up da última aula • São matrizes

9/24/2015

9

Alinhamento da AT 4

• Gráficos

• Algoritmos simples e estruturas de controlo

• Funções de Entrada / Saída

• Scripts

Computação e Programação 2015 / 2016 17

Algoritmos simples

1) Repetir para as 3 garrafas

a) Carregar garrafa

b) Chegar ao semáforo

c) Se semáforo verde

i. Percorrer caminho curto

Caso contrário

i. Percorrer caminho longo

d) Entregar garrafa

e) Regressar ao armazém

18Computação e Programação 2015 / 2016

Page 10: Slides Computação e Programação MEMec+LEAN · Escalares • São matrizes 1 x 1 Vetores Matrizes Computação e Programação 2015 / 2016 4 Wrap Up da última aula • São matrizes

9/24/2015

10

Algoritmos simples

... 1) Repetir até ao fim do turno

a) Carregar garrafa

b) Chegar ao semáforo

c) Se semáforo verde

i. Percorrer caminho curto

Caso contrário

i. Percorrer caminho longo

d) Entregar garrafa

e) Regressar ao armazém

19Computação e Programação 2015 / 2016

Algoritmo: Definição e Estrutura

Algoritmo: uma sequência ordenada de

instruções bem definidas e não

ambíguas, que realiza uma dada

tarefa e que termina em tempo

finito.

Estruturas básicas:

• Sequenciação

• Selecção

• Repetição

1) Repetir até ao fim do turno

a) Carregar garrafa

b) Chegar ao semáforo

c) Se semáforo verde

i. Percorrer caminho curto

Caso contrário

i. Percorrer caminho longo

d) Entregar garrafa

e) Regressar ao armazém

20Computação e Programação 2015 / 2016

Page 11: Slides Computação e Programação MEMec+LEAN · Escalares • São matrizes 1 x 1 Vetores Matrizes Computação e Programação 2015 / 2016 4 Wrap Up da última aula • São matrizes

9/24/2015

11

Identificar Contexto, Entradas e Saídas

Contexto do problema (O que o programa faz? Em que meio? Quemo vai utilizar?)

• O programa destina-se a controlar um robô móvel

• É executado no próprio robô em ambiente industrial

• O sistema é totalmente automático, e não há interacção com outilizador.

Entradas (informação necessária, input):• Estado do semáforo

(assuma-se que o robô já possui comandos para ir de um sítio ao outro, e que não é

necessário detectar paredes nem medir distâncias, etc.)

Saídas (resultado produzido pelo programa, output):

• Sequência de comandos para o robô

21Computação e Programação 2015 / 2016

Identificar tarefas: abordagem Top-Down

Abastecimento de gás para

soldadura

Carregar

garrafa

Entregar

garrafa

Chegar ao

semáforo

Percorrer

caminho

curto

Percorrer

caminho

longo

Regressar ao

armazém

Dividir um problema em problemas mais simples eindependentes entre si

O segundo nível constitui uma lista de tarefas que podem, ou não, ter que ser ainda divididas em problemas mais simples!!!

22Computação e Programação 2015 / 2016

Page 12: Slides Computação e Programação MEMec+LEAN · Escalares • São matrizes 1 x 1 Vetores Matrizes Computação e Programação 2015 / 2016 4 Wrap Up da última aula • São matrizes

9/24/2015

12

Da abordagem Top-Down ao Algoritmo

Estruturas básicas:

• Sequenciação• Selecção• Repetição

1) Repetir até ao fim do turno

a) Carregar garrafa

b) Chegar ao semáforo

c) Se semáforo verde

i. Percorrer caminho curto

Caso contrário

i. Percorrer caminho longo

d) Entregar garrafa

e) Regressar ao armazém

Lista de tarefas:

• Carregar garrafa

• Entregar garrafa

• Chegar ao semáforo

• Percorrer caminho longo

• Percorrer caminho curto

• Regressar ao armazém

+=

23Computação e Programação 2015 / 2016

• O programa de computador não é mais do que a tradução do algoritmo para a linguagem de programação pretendida

• O algoritmo deve por isso ser escrito numa linguagem

suficientemente próxima das linguagens de programação de

alto nível, para evitar ambiguidades, mas independente das características de uma linguagem de programação específica (chama-se pseudo-código)

• A abordagem Top-Down conclui-se quando as tarefas são de implementação directa, e não precisam de algoritmos próprios

para serem especificadas

Notas sobre a criação de algoritmos

24Computação e Programação 2015 / 2016

Page 13: Slides Computação e Programação MEMec+LEAN · Escalares • São matrizes 1 x 1 Vetores Matrizes Computação e Programação 2015 / 2016 4 Wrap Up da última aula • São matrizes

9/24/2015

13

Alinhamento da AT 4

• Gráficos

• Algoritmos simples e estruturas de controlo

• Funções de Entrada / Saída

• Scripts

Computação e Programação 2015 / 2016 25

26

Entrada / Saída de dados

Comando Descrição

input entrada de dados pelo teclado, permite

incluir uma mensagem

disp apresenta o conteúdo de um vector no ecrã

fprintf escreve texto formatado no ecrã ou num ficheiro

save grava variáveis num ficheiro

(pode gravar identificador + conteúdo)

load lê variáveis a partir de um ficheiro

(pode ler identificador + conteúdo)

• Funções simples de entrada e saída de dados

Computação e Programação 2015 / 2016

Page 14: Slides Computação e Programação MEMec+LEAN · Escalares • São matrizes 1 x 1 Vetores Matrizes Computação e Programação 2015 / 2016 4 Wrap Up da última aula • São matrizes

9/24/2015

14

27

Função pré-definida input

Descrição: apresenta uma mensagem e solicita uma

entrada do utilizador pela linha de comandos

Sintaxe: user_entry = input('prompt')

user_entry = input('prompt', 's')

>> rad = input('Introduza o raio: ')Introduza o raio: 5rad =5>> letra = input('Introduza um carácter: ', 's')Introduza um carácter : gletra =g

Computação e Programação 2015 / 2016

28

Função pré-definida input

>> num = input('Introduza um número: ')Introduza um número: t??? Error using ==> inputUndefined function or variable 't'.

>> Nome_Aluno = input('Nome: ','s');

Nome: João Manuel

>> Nota_Aluno = input('Nota: ','s');

Nota: 10.5>> whosName Size Bytes Class Attributes

Nome_Aluno 1x11 22 char Nota_Aluno 1x4 8 char

Computação e Programação 2015 / 2016

Page 15: Slides Computação e Programação MEMec+LEAN · Escalares • São matrizes 1 x 1 Vetores Matrizes Computação e Programação 2015 / 2016 4 Wrap Up da última aula • São matrizes

9/24/2015

15

>> disp('Olá')

Olá

>> disp(4^3)

64

>> vec = 2:5

vec =

2 3 4 5

>> disp(vec)

2 3 4 5

29

Função pré-definida disp

Descrição: apresenta o conteúdo de um vector no ecrã

Sintaxe: disp(X)

Computação e Programação 2015 / 2016

30

Função pré-definida fprintf

Descrição: escreve o conteúdo formatado de uma

cadeia de caracteres no ecrã ou num ficheiro

Sintaxe: fprintf(text)

fprintf(format, var)

>> fprintf('Olá \n')

Olá

>> fprintf('Maio é o %dº mês do Ano.\n',5)

Maio é o 5º mês do Ano.

>> r = 1;

>> fprintf('Área circulo = %f m2.\n', pi*r^2)

Área circulo = 3.141593 m2.

Computação e Programação 2015 / 2016

Page 16: Slides Computação e Programação MEMec+LEAN · Escalares • São matrizes 1 x 1 Vetores Matrizes Computação e Programação 2015 / 2016 4 Wrap Up da última aula • São matrizes

9/24/2015

16

Função pré-definida fprintf

>> B = [ 9.9 8.8 7.7

9900 8800 7700];

>> fprintf('X é %6.2f metros ou %8.3f mm\n', B);

X é 9.90 metros ou 9900.000 mm

X é 8.80 metros ou 8800.000 mm

X é 7.70 metros ou 7700.000 mm

Notar que B foi percorrida por colunas

% 0- 12 .5 uInício da especificação

Flags Precisão

Carácter decontrolo

Tamanho da cadeia

Especificação da cadeia de formatação:

31Computação e Programação 2015 / 2016

32

Caracteres de formatação

Descrição Caracteres Descrição

Flags

Sinal -

Sinal +

Espaço

Zero

Alinhamento à esquerda

Escrita do carácter de sinal ("+" ou "-")

Insere espaço em branco

Enche espaço disponível com zeros

Caracteres

de

formatação

\n

\t

\b

%%

New line

Horizontal tab

Backspace

Símbolo de percentagem

Caracteres de

controlo

%c%d,%i%u%f%s

Carácter simplesValor inteiro de base decimal com sinalValor inteiro de base decimal sem sinalValor real em notação de ponto fixoCadeia de caracteres (string)

Computação e Programação 2015 / 2016

Page 17: Slides Computação e Programação MEMec+LEAN · Escalares • São matrizes 1 x 1 Vetores Matrizes Computação e Programação 2015 / 2016 4 Wrap Up da última aula • São matrizes

9/24/2015

17

Computação e Programação 2015 / 201633

Função pré-definida fprintf

Descrição: grava num ficheiro o conteúdo formatado

de uma cadeia de caracteres

Sintaxe: fprintf(fid,text)

fprintf(fid,format, var)

fid = fopen(nome, permissões)

fclose(fid)

>> fid = fopen('meu_ficheiro.txt', 'wt');

>> fprintf(fid, 'X é %6.2f metros ou %8.3f mm\n', B);

>> fclose(fid)

34

Função pré-definida save

Descrição: grava num ficheiro um conjunto de

variáveis sem formatação

Sintaxe: save

save NomeFicheiro Variáveis

save(NomeFicheiro, 'Variáveis')

>> save meu_ficheiro

>> save meu_ficheiro variavel_1 variavel_2

>> save meu_ficheiro v*

>> NomeFicheiro = 'meu_ficheiro';

>> save(NomeFicheiro, 'variavel_1')meu_ficheiro.mat

Computação e Programação 2015 / 2016

Page 18: Slides Computação e Programação MEMec+LEAN · Escalares • São matrizes 1 x 1 Vetores Matrizes Computação e Programação 2015 / 2016 4 Wrap Up da última aula • São matrizes

9/24/2015

18

35

Função pré-definida load

Descrição: carrega de um ficheiro para o workspace

um conjunto de variáveis sem formatação

Sintaxe: load

load NomeFicheiro Variáveis

load(NomeFicheiro, 'Variáveis')

>> load meu_ficheiro

>> load meu_ficheiro variavel_2

>> load meu_ficheiro var*

>> load ('meu_ficheiro', 'variavel_1');meu_ficheiro.mat

Computação e Programação 2015 / 2016

Alinhamento da AT 4

• Gráficos

• Algoritmos simples e estruturas de controlo

• Funções de Entrada / Saída

• Scripts

Computação e Programação 2015 / 2016 36

Page 19: Slides Computação e Programação MEMec+LEAN · Escalares • São matrizes 1 x 1 Vetores Matrizes Computação e Programação 2015 / 2016 4 Wrap Up da última aula • São matrizes

9/24/2015

19

37

Implementação de Algoritmos em MATLAB

• Sequenciação

• Selecção

• Repetição

• Módulos

Ficheiros script

Estruturas: if

if – else

if – elseif

switch – case

Estruturas: forwhile

Funções definidas pelo

programador

Computação e Programação 2015 / 2016

38

Scripts

• Um script é uma sequência de instruções de MATLAB

armazenada num ficheiro de texto (um M-file, i.e., um

ficheiro de texto com extensão .m)

• O script, ou seja, a sequência de intruções que

contém, pode ser executado introduzindo na linha de comandos o nome do ficheiro sem a extensão .m

• Os nomes de todos os M-files obedecem às mesmas

regras que os identificadores de variáveis

Computação e Programação 2015 / 2016

Page 20: Slides Computação e Programação MEMec+LEAN · Escalares • São matrizes 1 x 1 Vetores Matrizes Computação e Programação 2015 / 2016 4 Wrap Up da última aula • São matrizes

9/24/2015

20

39

Exemplo de script simples

Computação e Programação 2015 / 2016

40

Documentação Interna

• Os scripts constituem a forma mais simples de um programa em MATLAB, e devem ser internamente

documentados

• A Documentação Interna do código fonte de um

programa é feita através de linhas de comentário, e

faz parte da sua Documentação Técnica

Computação e Programação 2015 / 2016

Page 21: Slides Computação e Programação MEMec+LEAN · Escalares • São matrizes 1 x 1 Vetores Matrizes Computação e Programação 2015 / 2016 4 Wrap Up da última aula • São matrizes

9/24/2015

21

41

Documentação Interna

• A documentação interna do código fonte é

normalmente realizada através de:

• um cabeçalho nas primeiras linhas do ficheiro

contendo:

� Objectivos do programa (ou função)

� Descrição das entradas e saídas

� Autores e versão do programa (ou função)

• linhas de comentário espalhadas ao longo do código, explicando o seu funcionamento

Computação e Programação 2015 / 2016

42

Documentação Interna

• No MATLAB o comentário de cabeçalho (i.e., todas as

linhas comentadas no início de um script, ou

imediatamente a seguir ao cabeçalho de uma

função) é utilizado pela função help como texto de

ajuda, e pela função lookfor na sua busca

• Os comentários ao longo do código devem ser feitos de forma a clarificar a leitura do mesmo

• Fazer comentários por cada linha de código é desnecessário e dificulta a leitura

Computação e Programação 2015 / 2016

Page 22: Slides Computação e Programação MEMec+LEAN · Escalares • São matrizes 1 x 1 Vetores Matrizes Computação e Programação 2015 / 2016 4 Wrap Up da última aula • São matrizes

9/24/2015

22

43

Documentação Interna

• Exemplo de cabeçalho de script

Computação e Programação 2015 / 2016

44

Âmbito das variáveis

• Um script não tem um âmbito próprio, e trabalha no

Ambiente de Trabalho do MATLAB

• As variáveis criadas durante a execução do script

permanecem no Ambiente de Trabalho após o fim da

execução, a menos que sejam apagadas com a

instrução clear

Ambiente de Trabalho

Script

Computação e Programação 2015 / 2016

Page 23: Slides Computação e Programação MEMec+LEAN · Escalares • São matrizes 1 x 1 Vetores Matrizes Computação e Programação 2015 / 2016 4 Wrap Up da última aula • São matrizes

9/24/2015

23

45

Exemplo de script simples

Computação e Programação 2015 / 2016

46

Execução do script

Variáveis criadas pelo

script no ambiente de

trabalho do MATLAB

Invocação

do script

Computação e Programação 2015 / 2016

Page 24: Slides Computação e Programação MEMec+LEAN · Escalares • São matrizes 1 x 1 Vetores Matrizes Computação e Programação 2015 / 2016 4 Wrap Up da última aula • São matrizes

9/24/2015

24

47

Ferramentas de depuração (debug)

Detecção de erros sintácticos

Computação e Programação 2015 / 2016

Computação e Programação 2015 / 2016 48

Ferramentas de depuração (debug)

Detecção de erros sintácticos

Page 25: Slides Computação e Programação MEMec+LEAN · Escalares • São matrizes 1 x 1 Vetores Matrizes Computação e Programação 2015 / 2016 4 Wrap Up da última aula • São matrizes

9/24/2015

25

• Especialmente para scripts mais longos, e para funções,

comece por escrever o respectivo algoritmo

• Utilize linhas de comentário para documentar os scripts e

funções, incluindo sempre um comentário de cabeçalho

• Coloque sempre título e rótulos adequados nos eixos dos

gráficos

• Toda a informação fornecida pelo seu programa deve ser fácil

de ler, e descrita num estilo adequado ao contexto de

utilização do mesmo

Boas práticas de Programação

Computação e Programação 2015 / 2016 49

50

Referências

• Capítulo 2 de Stormy Attaway (2012), “Matlab: A Practical

Introduction to Programming and Problem Solving”, Elsevier.

• Demos relevantes:

• Writing a MATLAB Program (5 min, 45 sec)

• http://www.mathworks.com/videos/matlab/writing-a-matlab-program.html

• Using Basic Plotting Functions (5 min, 30 sec)

• http://www.mathworks.com/videos/matlab/using-basic-plotting-

functions.html

• Creating a Basic Plot Interactively (5 min, 12 sec)

• http://www.mathworks.com/videos/matlab/creating-a-basic-plot-

interactively.html

As aulas teóricas contêm contribuições dos profs. José Borges e Miguel Silva

Computação e Programação 2015 / 2016