At 2 conceitos basicos linguagens de programacao_introducao ao matlab_variaveis_constantes_tipos de...

25
1 D.E.M. – Área Científica de Controlo Automação e Informática Industrial Computação e Programação MEMec, LEAN - 1º Semestre 2012-2013 Aula Teórica 2 Conceitos de Computação e de Programação Linguagens de Programação Introdução ao MATLAB Comandos básicos Variáveis, Constantes e Tipos de dados Computação e Programação 2012 / 2013 2 Alinhamento da AT 2 Conceitos de Computação e de Programação Linguagens de Programação Introdução ao MATLAB Comandos básicos Variáveis, Constantes e Tipos de dados

description

 

Transcript of At 2 conceitos basicos linguagens de programacao_introducao ao matlab_variaveis_constantes_tipos de...

Page 1: At 2 conceitos basicos linguagens de programacao_introducao ao matlab_variaveis_constantes_tipos de dados

1

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

Computação e ProgramaçãoMEMec, LEAN - 1º Semestre 2012-2013

Aula Teórica 2

• Conceitos de Computação e de Programação• Linguagens de Programação• Introdução ao MATLAB• Comandos básicos• Variáveis, Constantes e Tipos de dados

Computação e Programação 2012 / 2013 2222

Alinhamento da AT 2

• Conceitos de Computação e de Programação

• Linguagens de Programação

• Introdução ao MATLAB

• Comandos básicos

• Variáveis, Constantes e Tipos de dados

Page 2: At 2 conceitos basicos linguagens de programacao_introducao ao matlab_variaveis_constantes_tipos de dados

2

Computação e Programação 2012 / 2013 3333

Computação

Genericamente é um processo ou sequência de acçõesdeliberadas que visam a procura de soluções para um dado

problema com base nas suas entradas e utilizando um algoritmo.

Até meados do século XX o processo de

computação baseava-se na utilização de suportes

físicos, tipo caneta e papel, recorrendo por vezes

a tabelas e ferramentas manuais ou mecânicas.

Desde os anos 50 do século XX , com o advento dos

computadores, que o termo computação tem estado

associado à produção de programas (software).

Computação e Programação 2012 / 2013 4444

1950 1960 1970 1980 1990 2000 2010 2020 2030 2040

Tendências tecnológicas

Onda “Mainframe”:

Computação Centralizada

Ca

pa

cid

ad

e C

om

pu

taçã

o

Onda PC + “Internet”:

Computação Descentralizada

Onda “Global”:

Computação em Nuvem

http

://ww

w.la

wso

n.co

m/

Page 3: At 2 conceitos basicos linguagens de programacao_introducao ao matlab_variaveis_constantes_tipos de dados

3

Computação e Programação 2012 / 2013 5555

Computação Centralizada

• Estruturada em termos de Centros de Computação (CC)

• O acesso ao CC realizava-se através de um terminal cliente

• Software instalado apenas nos CC

• O trabalho computacional é totalmente executado no CC

Computação e Programação 2012 / 2013 6666

Computação Descentralizada

• Baseada no conceito de Computador Pessoal (PC)

• Ligação de computadores em rede, com redes à escala global.

• Software instalado no PC, ou partilhado (“cliente-servidor”). A computação processa-se, maioritariamente, ao nível local.

Page 4: At 2 conceitos basicos linguagens de programacao_introducao ao matlab_variaveis_constantes_tipos de dados

4

Computação e Programação 2012 / 2013 7777

Computação em Nuvem

• A informação, os recursos e o software

são partilhados ou disponibilizadoscomo serviços através da ligação em

rede, sendo fornecidos / cobradospor solicitação do utilizador.

• O termo nuvem é uma abstracção da complexidade e número de

sistemas que efectivamente estão

na base do fornecimento do serviço

• O utilizador apenas necessita de um terminal de acesso (computador pessoal, tablet, telemóvel, etc.). Os programas e

ficheiros estão na nuvem – Google Docs, Chrome OS, etc.

Computação e Programação 2012 / 2013 8888

Programação

Programação é um processo que inclui as fases de:

• Projecto

• Escrita

• Teste

• Depuração de erros

• Manutenção

do código fonte, tendo por objectivo produzir um

PROGRAMA DE COMPUTADOR

Page 5: At 2 conceitos basicos linguagens de programacao_introducao ao matlab_variaveis_constantes_tipos de dados

5

Computação e Programação 2012 / 2013 9999

Programa

• Utilizador • Programador

Computação e Programação 2012 / 2013 10101010

Programa

• Um PROGRAMA DE COMPUTADOR é uma sequência deinstruções que o computador deve executar para resolverum dado problema.

• O termo programa é usado normalmente para referir o

código fonte ou o arquivo que contém a sua forma

executável.

• O código fonte é um texto codificado que descreve numa

dada linguagem de programação o respectivo programa.

Page 6: At 2 conceitos basicos linguagens de programacao_introducao ao matlab_variaveis_constantes_tipos de dados

6

Computação e Programação 2012 / 2013 11111111

Programação

• A programação requer competências em diversas áreas,

incluindo, conhecimento pericial no domínio da aplicação,

conhecimentos de algoritmia e lógica formal, conhecimento

da linguagem de programação seleccionada.

Computação e Programação 2012 / 2013 12121212

Alinhamento da AT 2

• Conceitos de Computação e de Programação

• Linguagens de Programação

• Introdução ao MATLAB

• Comandos básicos

• Variáveis, Constantes e Tipos de dados

Page 7: At 2 conceitos basicos linguagens de programacao_introducao ao matlab_variaveis_constantes_tipos de dados

7

Computação e Programação 2012 / 2013 13131313

Linguagem de Programação

• A LINGUAGEM DE PROGRAMAÇÃO é uma notação que

permite a escrita de programas a partir de um algoritmo,

ou seja, de uma sequência finita de tarefas que resolve um

dado problema.

A linguagem de programação providencia um método padronizado para transmissão de instruções a um computador

mediante uma especificação da sintaxe e semântica.

O conjunto dos termos da linguagem, quando compostos de

acordo com as regras da mesma, constitui o código fonte de um

programa. O código fonte é depois traduzido para código máquina, que é directamente executado pelo processador.

Computação e Programação 2012 / 2013 14141414

Algumas instruções básicas

• entrada: permitem a leitura de dados a partir do teclado,

ficheiros ou outro periférico

• saída: enviam dados para o ecrã, ficheiros ou outro periférico

• selecção: permitem a execução ou não-execução de um bloco

de instruções mediante a verificação de uma dada condição

• repetição: permitem repetir um bloco de instruções um dado

número de vezes ou mediante uma condição de paragem

Page 8: At 2 conceitos basicos linguagens de programacao_introducao ao matlab_variaveis_constantes_tipos de dados

8

Computação e Programação 2012 / 2013 15151515

Linguagens de alto e baixo nível

• O código fonte é normalmente escrito numa linguagem de programação de alto nível (linguagem mais próxima da utilizada pelos seres humanos), como por exemplo

C++, FORTRAN ou MATLAB.

• Pode também ser escrito directamente numa linguagemde programação de baixo nível (linguagem maispróxima da linguagem do microprocessador), como por

exemplo o ASSEMBLY.

Computação e Programação 2012 / 2013 16161616

Linguagens de alto e baixo nível

• Exemplo de código

em linguagem de

programação de

alto nível

FORTRAN 90: (excerto)

print *, "Let’s perform a summation!"

sum = 0

do

print *, "Add: "

read *, a

if (a == 0) then

exit

else

sum = sum + a

end if

write(10,*) a

end do

Page 9: At 2 conceitos basicos linguagens de programacao_introducao ao matlab_variaveis_constantes_tipos de dados

9

Computação e Programação 2012 / 2013 17171717

Linguagens de alto e baixo nível

• Exemplo de código em

linguagem de programação

de baixo nível

Código máquina: (excerto)

8B542408 83FA0077 06B80000 0000C383

FA027706 B8010000 00C353BB 01000000

B9010000 008D0419 83FA0376 078BD98B

C84AEBF1 5BC3

Assembly: (excerto)

cmp edx, 2

ja @f

mov eax, 1

ret

@@:

push ebx

mov ebx, 1

mov ecx, 1

Computação e Programação 2012 / 2013 18181818

• Linguagens interpretadas

Linguagens interpretadas e compiladas

Código

fonteInterpretador

OS

Linguagem

MATLAB

.m, .p

Programa

MATLAB

Linguagem

Python

.py, .pyw

Python

interpreter

Page 10: At 2 conceitos basicos linguagens de programacao_introducao ao matlab_variaveis_constantes_tipos de dados

10

Computação e Programação 2012 / 2013 19191919

• Linguagens compiladas

Linguagens interpretadas e compiladas

Código

fonte CompiladorCódigo

Objecto

OS ----

VM /OS

Executável

Linguagem

C++

Microsoft

Visual Studio

Ficheiro

.obj

Ficheiro

.exe

Linguagem

JAVA

Eclipse Compiler

for Java (ECJ)

Ficheiro

.obj

Ficheiro

.jar

Computação e Programação 2012 / 2013 20202020

Escolha da linguagem

Olá

Mundo!

Page 11: At 2 conceitos basicos linguagens de programacao_introducao ao matlab_variaveis_constantes_tipos de dados

11

Computação e Programação 2012 / 2013 21212121

Alinhamento da AT 2

• Conceitos de Computação e de Programação

• Linguagens de Programação

• Introdução ao MATLAB

• Comandos básicos

• Variáveis, Constantes e Tipos de dados

Computação e Programação 2012 / 2013 22

Ambiente do MATLAB

Command Window

Command History

File Browser /

Workspace

Windows MenuDirectoria de trabalho

Page 12: At 2 conceitos basicos linguagens de programacao_introducao ao matlab_variaveis_constantes_tipos de dados

12

Computação e Programação 2012 / 2013 23232323

• MATLAB acrónimo de MATrix LABoratory

• Programa optimizado para cálculos de engenharia e científicos

• Implementa a linguagem de programação MATLAB

• Conjunto vasto de funções pré-definidas,

normalmente agrupadas em toolboxes.

A ferramenta MATLAB

Computação e Programação 2012 / 2013 24242424

• Fácil de utilizar: é uma linguagem interpretada,

sendo fácil de escrever e testar programas.

• Independente da Plataforma: o código desenvolvido

corre em diferentes sistemas operativos (Windows,

Mac OS, Linux)

• O código pode ser compilado, mas pode ser mais

lento que Fortran ou C (C++), por exemplo.

Vantagens do MATLAB

Page 13: At 2 conceitos basicos linguagens de programacao_introducao ao matlab_variaveis_constantes_tipos de dados

13

Computação e Programação 2012 / 2013 25252525

• Grande número de toolboxes desenvolvidas pela Mathworks

em diversas especialidades:

• engenharia, economia, bioinformática, finanças, etc

• Utilizado por uma vasta comunidade, o que significa que

existe muito suporte não oficial e toolboxes provenientes de

origens diversas

• Vocacionado para o cálculo matemático / manipulação

numérica de matrizes, e com grande facilidade na geração de gráficos

• Pode ser utilizado para construir aplicações do tipo Graphical

User Interfaces (GUI)

Vantagens do MATLAB

Computação e Programação 2012 / 2013 26262626

• É uma linguagem interpretada, logo a execução pode ser

mais lenta que as linguagens compiladas

(Este problema pode ser reduzido usando o compilador

do MATLAB para gerar um executável)

• A licença do MATLAB para uso profissional é cara

Desvantagens do MATLAB

Page 14: At 2 conceitos basicos linguagens de programacao_introducao ao matlab_variaveis_constantes_tipos de dados

14

Computação e Programação 2012 / 2013 27272727

• Site oficial da Mathworkshttp://www.mathworks.com/

• MATLAB Central – comunidade de utilizadoreshttp://www.mathworks.com/matlabcentral/

• Documentação em pdf

• Tutoriais e exemplos de utilização

• Demos / Vídeos

Recursos na Internet

Computação e Programação 2012 / 2013 28282828

Alinhamento da AT 2

• Conceitos de Computação e de Programação

• Linguagens de Programação

• Introdução ao MATLAB

• Comandos básicos

• Variáveis, Constantes e Tipos de dados

Page 15: At 2 conceitos basicos linguagens de programacao_introducao ao matlab_variaveis_constantes_tipos de dados

15

Computação e Programação 2012 / 2013 29

Comando Descrição

help nome apresenta ajuda por palavra chave

demo abre a janela de demonstrações

helpbrowser abre a janela de ajuda

lookfor nome faz pesquisa por palavra chave

clock informação da data e hora

dir apresenta o conteúdo da directoria

cd dire acede à directoria indicada

type fich mostra o conteúdo de ficheiro

Comandos básicos

Computação e Programação 2012 / 2013 30303030

Comandos básicos

Page 16: At 2 conceitos basicos linguagens de programacao_introducao ao matlab_variaveis_constantes_tipos de dados

16

Computação e Programação 2012 / 2013 31313131

Comandos básicos

Computação e Programação 2012 / 2013 32323232

Alinhamento da AT 2

• Conceitos de Computação e de Programação

• Linguagens de Programação

• Introdução ao MATLAB

• Comandos básicos

• Variáveis, Constantes e Tipos de dados

Page 17: At 2 conceitos basicos linguagens de programacao_introducao ao matlab_variaveis_constantes_tipos de dados

17

Computação e Programação 2012 / 2013 33

• Objectos utilizados para armazenar valores na memória do

computador, sendo caracterizadas pelo par,

Identificador / Conteúdo

Temperatura = 45;

Temperatura = 593345;

Variáveis

• Em geral as variáveis só existem durante a

execução da aplicação. O conteúdo destas

perde-se quando a aplicação é encerrada.

10111010 245334

00001010 245335

01110011 245336

00100001 245337

11101011 245338

11001000 245339

11110010 245340

00001001 245341

00101101

00000000

00000000

00000000

Temperatura

11000001

00001101

00001001

00000000

Computação e Programação 2012 / 2013 34343434

• O nome da variável começa sempre por uma letra, podendo

ser seguido por uma cadeia de caracteres alfanuméricos

• O comprimento máximo para o nome depende do S.O., sendo

dado pela instrução namelengthmax

• O MATLAB é case-sensitive (Exemplo: Dia ≠ dia ≠ DIA)

• Existem palavras reservadas (Exemplo: for, while)

• Embora possam ser definidas variáveis com o nome de funções

tal gera confusão e resulta num mau estilo de programação

Identificadores no MATLAB (regras)

Page 18: At 2 conceitos basicos linguagens de programacao_introducao ao matlab_variaveis_constantes_tipos de dados

18

Computação e Programação 2012 / 2013 35353535

Comandos para manipular variáveis

Comando Descrição

who apresenta as variáveis existentes no

ambiente de trabalho

whos informação detalhada das variáveis

existentes no ambiente de trabalho

clear

clear all

apaga todas as variáveis existentes

no ambiente de trabalho

clear vars apaga as variáveis enunciadas

Computação e Programação 2012 / 2013 36363636

nome_variavel = expressão

Atribuição

>> meu_numero = 6

meu_numero =

6

>> 6 = meu_numero

??? 6 = meu_numero

|

Error: The expression to the left of the equals

sign is not a valid target for an assignment.

>>

Atribuição

Page 19: At 2 conceitos basicos linguagens de programacao_introducao ao matlab_variaveis_constantes_tipos de dados

19

Computação e Programação 2012 / 2013 37373737

Atribuição e a variavel ans

>> res = 9 – 2

res =

7

>> res = 9 – 2;

>> 9 – 2

ans =

7

>> ans

ans =

7

Variável interna

do sistema

Computação e Programação 2012 / 2013 38383838

Inicialização, Incremento e Decremento

>> meu_numero = 0

meu_numero =

0

>> meu_numero = meu_numero + 1

meu_numero =

1

>> meu_numero = meu_numero – 1

meu_numero =

0

Inicialização

Incremento

Decremento

Page 20: At 2 conceitos basicos linguagens de programacao_introducao ao matlab_variaveis_constantes_tipos de dados

20

Computação e Programação 2012 / 2013 39393939

• A maioria das linguagens de programação permite

definir entidades constantes, i.e., objectos cujo valor uma vez definido não pode ser alterado pelo programa

• Exemplos de valores que interessaria definir como

constantes num programa:

• pi = 3,1416

• velocidade da luz, c = 299 792 458 m·s−1

• aceleração da gravidade, g = 9,78 m·s−2

Constantes

Computação e Programação 2012 / 2013 40404040

• O MATLAB não permite definir constantes, mas

possui funções pré-definidas que devolvem alguns

valores notáveis

Constantes em MATLAB

Comando Descrição

pi constante Pi ( π = 3.141592654... )

i representação de número imaginário

j representação de número imaginário

inf infinito ( ∞ )

NaN not a number ( 0 / 0 )

Page 21: At 2 conceitos basicos linguagens de programacao_introducao ao matlab_variaveis_constantes_tipos de dados

21

Computação e Programação 2012 / 2013 41414141

• Se a memória do computador

só armazena números inteiros

em base binária, como é que o

programa reconhece: Números

reais? Caracteres de texto? ou

mesmo Números inteiros < 0 ?

Tipos de dados

10111010 245334

11111111 245335

11000000 245336

11111000 245337

11000000 245338

11000000 245339

11110010 245340

00001001 245341

Definindo um tipo (ou classe) para o objecto!

Computação e Programação 2012 / 2013 42424242

• Reais

• Inteiros (com ou sem sinal)

• Caracteres (letras, dígitos, símbolos, sinais de pontuação)

• Lógicos (valores lógicos true e false)

• No MATLAB encontramos a palavra class. A definição de

classe é mais abrangente do que tipo e envolve

• o tipo de dados• as operações (métodos) que podem ser executadas sobre

o tipo de dados

Tipos de dados

Page 22: At 2 conceitos basicos linguagens de programacao_introducao ao matlab_variaveis_constantes_tipos de dados

22

Computação e Programação 2012 / 2013 43434343

Tipos de dados no Matlab

Tipo básicos Descrição

single, double números reais

uint8, uint16,

uint32, uint64

números inteiros sem signal

int8, int16,

int32, int64,

números inteiros com signal

char caracteres

logical tipo lógico

help datatypes

Computação e Programação 2012 / 2013 44444444

Transformação de tipo: casting

>> val = 6 + 3;

>> whos

Name Size Bytes Class Attributes

val 1x1 8 double

>> vali = int32(val);

>> whos

Name Size Bytes Class Attributes

val 1x1 8 double

vali 1x1 4 int32

Page 23: At 2 conceitos basicos linguagens de programacao_introducao ao matlab_variaveis_constantes_tipos de dados

23

Computação e Programação 2012 / 2013 45454545

Números reais e Encoding

• Com a excepção dos tipos uint todos os restantes tipos de

informação obedecem a alguma convenção para poderem ser

representados na memória

• No caso dos números reais a norma mais utilizada será

possivelmente a norma IEEE 754 (floating-point computation)

• Pouquíssimos números reais terão representação exacta!!!

Fig

ura

: W

ikip

ed

ia

Computação e Programação 2012 / 2013 46464646

Caracteres e Encoding

• No caso dos caracteres a convenção mais conhecida será talvez

o código ASCII, que associa um dado número inteiro a um carácter, e com o qual as normas actuais são ainda compatíveis

10111010 245334

01000110 245335

01110011 245336

00100001 245337

11101011 245338

11001000 245339

11110010 245340

00001001 245341

10111010 245334

11111111 245335

11000000 245336

11111000 245337

11000000 245338

11000000 245339

11110010 245340

00001001 245341

FF 70

Page 24: At 2 conceitos basicos linguagens de programacao_introducao ao matlab_variaveis_constantes_tipos de dados

24

Computação e Programação 2012 / 2013 47474747

Tipo char

>> nome = 'Carlos Picareta';

>> whos

Name Size Bytes Class Attributes

nome 1x15 30 char

• No MATLAB um valor literal do tipo char é representado

entre plicas, por exemplo: 'a' ou 'S' ou '?' ou '4'

• Uma cadeia de caracteres (string) é simplesmente uma

sequência de caracteres: 'melancia' ou '3ª parte'

• Uma variável do tipo char é criada quando se atribui um

valor literal char :

Computação e Programação 2012 / 2013 48484848

Tipo char e conversão de tipos

>> int32('F')

ans =

70

>> char(70)

ans =

F

>> char('abcd' + 1)

ans =

bcde

• Esta codificação em números inteiros permite realizar diversas

operações com caracteres

Page 25: At 2 conceitos basicos linguagens de programacao_introducao ao matlab_variaveis_constantes_tipos de dados

25

Computação e Programação 2012 / 2013 49494949

Referências

• Wikipedia:

• http://pt.wikipedia.org/

• Capítulo 1 de Matlab: A Practical Introduction to Programming

and Problem Solving, Stormy Attaway (2009) Elsevier.

• MATLAB@MathWorks

http://www.mathworks.com/

http://www.mathworks.com/access/helpdesk/help/pdf_doc/matlab/getstart.pdf

http://www.mathworks.com/access/helpdesk/help/pdf_doc/matlab/matlab_prog.pdf

http://www.mathworks.com/demos/matlab/getting-started-with-matlab-video-tutorial.html

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

Computação e Programação 2012 / 2013 50505050

• Demos relevantes:

• Getting Started with MATLAB (5 min, 18 sec)

• http://www.mathworks.com/videos/matlab/getting-started-with-matlab.html

• Working in The Development Environment (4 min, 7 sec)

• http://www.mathworks.com/videos/matlab/working-in-the-development-

environment.html

Referências

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