Upload
ratosdotecnico
View
1.413
Download
0
Embed Size (px)
DESCRIPTION
Citation preview
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
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/
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.
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
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.
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
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
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
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
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!
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
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
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
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
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
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
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)
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
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
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 )
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
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
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
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
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