Sunteți pe pagina 1din 10

1 | P a g e

Programare si limbaje II
Anul I, AR+ITT

1 Recapitulare

Curs 3 + Laborator 5 + Laborator 6

1.1 Comenzi

whos

>> whos
Name Size Bytes Class Attributes

ans 1x1 7236 struct
mesaj 1x5 10 char
zi 1x1 8 double

>> whos mesaj
Name Size Bytes Class Attributes

mesaj 1x5 10 char

edit
open
type

1.2 Funcii

realmin()
realmax()
int8()
int16()
int32()
int64()
uint8()
uint16()
uint32()
uint64()
intmin()
intmax()
char()
functions()
struct()
cellplot()
plot()
title()
xlabel()
ylabel()
input()
sscanf()
display()
disp()
sprintf()

1.3 Caractere speciale

@numefunctie
{ }
%
%%

Conf.dr.ing. Ovidiu-Aurelian Detean Programare si limbaje II Curs 4. Fiiere script. Funcii de intrare/ieire
2 | P a g e

Curs 4. Fiiere script. Funcii de intrare/ieire

4.1 Fiiere script

Fiiere M
numefisier.m

4.1.1 Crearea/editarea unui fiier script

a. Folosind editorul MATLAB

Creare: File->New->Blank M-File (sau CTRL+N din editor)
Editare: File->Open (sau CTRL+O)


Fig. 4.1 Editarea unui fiier M n editorul MATLAB

b. Folosind un editor extern

Notepad++

http://notepad-plus-plus.org/

Creare: File->New->Blank M-File (sau CTRL+N din editor)
Editare: File->Open (sau CTRL+O)

Conf.dr.ing. Ovidiu-Aurelian Detean Programare si limbaje II Curs 4. Fiiere script. Funcii de intrare/ieire
3 | P a g e

Fig. 4.2 Editarea unui fiier M n editorul Notepad++

c. Folosind comanda edit

Sintax:
edit
edit fun.m
edit nume.ext
edit fun1 fun2 fun3 ...
edit('fisierul meu.m')

n cazul n care fiierul exist, acesta va fi deschis n editorul MATLAB.
Dac nu exist, ntr-o fereastr de dialog vom fi ntrebai dac dorim crearea fiierului.

4.1.2 Deschiderea unui fiier din fereastra de comenzi

Comanda open

Sintax:
open nume
open('nume')

Deschide fiierul specificat prin nume, n aplicaia potrivit.

Tab. 4.1 Diferite tipuri de fiiere i aciunea exercitat de comanda open
Nume Aciune
*.m
Deschide fiierul M n editorul intern MATLAB
*.mat
Deschde fiierul de date MAT i stocheaz variabilele ntr-o structur n spaiul variabilelor
*.fig
Deschide figura ntr-o fereastr MATLAB figure
*.mdl
Deschide fiierul model ntr-o fereastr Simulink
*.prj
Deschide un proiect MATLAB
*.doc*
Deschide documentul n Microsoft Word
*.exe
Ruleaz fiierul executabil Microsoft Windows
*.pdf
Deschide documentul n Adobe Acrobat
*.ppt*
Deschide documentul n Microsoft PowerPoint
Conf.dr.ing. Ovidiu-Aurelian Detean Programare si limbaje II Curs 4. Fiiere script. Funcii de intrare/ieire
4 | P a g e
*.xls*
Pornete MATLAB Import Wizard
*.html, *.htm
Deschide documentul HTML n browser-ul MATLAB
*.url
Deschide fiierul n navigatorul web implicit
*.xxx
Funcionalitatea lui open poate fi extins prin definirea unor funcii de forma openxxx, unde
xxx este extensia fiierului. De exemplu, openlog pentru fiiere .log sau opentxt pentru fiiere
.txt.
Variabil
Deschide variabila n editorul de variabile (Variable Editor)
Fr extensie
(nume.)
Fiierele fr extensie vor fi deschise n editorul MATLAB, doar daca sunt de tip text. Dac n
calea MATLAB exist fiierul nume.m, acesta va fi deschis n editorul MATLAB, iar dac exist
nume.mdl, va fi deschis modelul n Simulink.

4.1.3 Afiarea coninutului unui fiier n fereastra de comenzi

Comanda type

Sintax:
type nume.ext
type('nume.ext')

Afieaz coninutul fiierului specificat prin nume, n fereastra de comenzi. Dac extensia nu este prezent i nu
exist nici un fiier cu numele nume i fr extensie, extensia .m este adugat implicit.

Exemple:

>> type c.m

function c = c(x)
c = cos(x);

>> type c

function c = c(x)
c = cos(x);

>> type index.html

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<html>
<head>
<meta name="generator" content="Helios">

<style type="text/css">
.ws6 {font-size: 8px;}
.wpmd {font-size: 13px;font-family: 'Arial';font-style: normal;font-weight:
normal;text-decoration: none;}
</style>

</head>
<body background="images/bg303.gif">

<div id="image2" style="position:absolute; overflow:hidden; left:327px; top:261px;
width:318px; height:167px; z-index:1"><img src="images/strectch13.gif" border=0
width=318 height=167></div>

</body>
</html>

>> type lab3.mat

MATLAB 5.0 MAT-file, Platform: PCWIN, Created on: Mon Mar 05 04:18:24 2012
3 1 3 Yy`6H

# 3 1
fdH @3 13 3 # b ` X p8U# 3 1 3
Conf.dr.ing. Ovidiu-Aurelian Detean Programare si limbaje II Curs 4. Fiiere script. Funcii de intrare/ieire
5 | P a g e
R
3C@ -
CS 31 C^ dd` K 31 C^2 d 3C1# C1 d`d 3C@V)
3C1# C1 d` a3C@V) 3C1# 1 d` 3C@
) #3C1# C 1 ' ^<gO"[mIIc?
9' Vzm Z*v i y[q {

4.1.4 Comentarii

Orice text precedat de caracterul procent (%) va fi tratat ca i comentariu, adic ignorat de ctre interpretorul de
comenzi.
Pot exista:
- linii de comentariu
- comentarii la sfritul unei linii executabile.

4.1.5 Celule de cod

Pentru facilitarea descrierii seciunilor de cod, fie direct, fie prin publicare ntr-un format de prezentare, cum ar fi
HTML, n special n cazul fiierelor script mari, se folosesc aa numitele celule de cod.
Celulele de cod sunt poriuni de cod delimitate prin linii care ncep prin %%. Se poate defini un titlu de celul de
cod, prin editarea unui text, imediat dup secvena %%, dar separat de aceasta prin minim un spaiu. Celula de
cod activ la un moment dat (cea n care se afl cursorul) va fi evideniat printr-un fundal colorat.
Marcajele de nceput de celul de cod pot fi transformate n comentarii simple prin tergerea unui caracter % din
secvena %%.

Evaluate cell Evaluate cell and advance
Insert cell break Show cell titles


Fig. 4.3 Celule de cod ntr-un fiier M




Conf.dr.ing. Ovidiu-Aurelian Detean Programare si limbaje II Curs 4. Fiiere script. Funcii de intrare/ieire
6 | P a g e
4.1.6 Ecoul comenzilor dintr-un fiier script

n mod normal, comenzile din fiierele script nu sunt afiate n timpul execuiei acestora. n vederea depanrii
programului sau n scop demonstrativ, poate fi forat afiarea acestora n timpul execuiei. Acest lucru se
numete ecou al comenzilor.

Sintax:
echo on
echo off
echo
echo nume_functie on
echo nume_functie off
echo nume_functie
echo on all
echo off all

Opiunea on activeaz ecoul, iar opiunea off l inhib.
Comanda echo fr opiuni trece ecoul n starea opus (funcioneaz ca i comutator).

Exemplu:
Se d fiierul script tabel.m de mai jos:

% Functii tabelare
%% x 4*sin(3*x) 3*sin(4*x)
format compact
x=(0:0.15:1)';
disp(' x 4*sin(3*x) 3*sin(4*x)')
disp([x 4*sin(3*x) 3*sin(4*x)])

Rularea script-ului cu opiunea echo on se desfoar astfel:

>> echo on
>> tabel

format compact
x=(0:0.15:1)';
disp(' x 4*sin(3*x) 3*sin(4*x)')
x 4*sin(3*x) 3*sin(4*x)
disp([x 4*sin(3*x) 3*sin(4*x)])
0 0 0
0.1500 1.7399 1.6939
0.3000 3.1333 2.7961
0.4500 3.9029 2.9215
0.6000 3.8954 2.0264
0.7500 3.1123 0.4234
0.9000 1.7095 -1.3276

4.2 Funcii de intrare

Asigur generalitatea algoritmului, prin introducerea oricror date de intrare care satisfac condiiile impuse n
enunul problemei. Se folosete un dispozitiv sau mediu de intrare (tastatur, mouse, fiier etc.).

4.2.1 Funcia input()

Funcia input() permite introducerea datelor de la tastatur i atribuirea acestora unor variabile.

Sintax:
variabila = input('mesaj')
variabila = input('mesaj ', 's')

La apelul funciei input() este afiat mesajul specificat, dup care se ateapt introducerea datelor de la tastatur.
Valoarea introdus este atribuit variabilei variabila. n situaia cnd este prezent parametrul s, datele introduse
Conf.dr.ing. Ovidiu-Aurelian Detean Programare si limbaje II Curs 4. Fiiere script. Funcii de intrare/ieire
7 | P a g e
sunt convertite spre o variabil de tip text.

4.2.2 Funcia sscanf()

Funcia sscanf() permite citirea datelor formatate, dintr-un ir de caractere.

Sintax:
A = sscanf(str, format)
A = sscanf(str, format, sizeA)
[A, count] = sscanf(...)
[A, count, errmsg] = sscanf(...)
[A, count, errmsg, nextindex] = sscanf(...)

Se citesc datele din irul str, apoi sunt convertite conform formatului specificat de al doilea ir de caractere, iar
rezultatele sunt returnate n tabloul A.
Dac este prezent sizeA, n tabloul A vor fi citite sizeA elemente.
n variabila count se va introduce numrul de valori citite cu succes (fr eroare).
n errmsg va fi introdus mesajul de eroare transmis de MATLAB, dac operaia nu s-a ncheiat cu succes.
nextindex va memora numrul de caractere citite din irul str, plus o unitate.
Parametrul format este un ir de caractere care descrie formatul fiecrui tip de elemente din ir.

Tab. 4.2 Diferite tipuri de format n cazul funciei sscanf()
Tipul cmpului Specificator Detalii
ntreg cu semn
%d n baza 10
%i
Implicit, baza 10. Dac primele cifre sunt 0x sau 0X, citirea se face n baza
16. Dac prima cifr este 0, citirea se face n baza 8.
ntreg fr semn
%u n baza 10
%o n baza 8
%x n baza 16
Numr n virgul
flotant
%f
Cmpurile n virgul flotant pot conine i: Inf, -Inf, NaN, -NaN. %e
%g
Caractere
%s Citete un ir de caractere, pn la ntlnirea unui caracter alb.
%c Citete un singur caracter, inclusiv caracterele albe.
%[]
Citete doar caracterele dintre paranteze, pn la primul caracter care nu
se potrivete cu cele din paranteze sau pn la ntlnirea unui caracter alb.

Exemple:

1. ntregi cu semn:

a. n baza 8
>> sscanf('-010','%i')
ans =
-8

b. n baza 16
>> sscanf('-0x10','%i')
ans =
-16

2. ntregi fr semn:

a. n baza 8
>> sscanf('10','%o')
ans =
8

b. n baza 16
>> sscanf('10','%x')
Conf.dr.ing. Ovidiu-Aurelian Detean Programare si limbaje II Curs 4. Fiiere script. Funcii de intrare/ieire
8 | P a g e
ans =
16

3. Fiierul script fisier2.m

% Nume de fisier: fisier2.m
% Creat de Nume Prenume la data de 26 martie 2012, ora 03:28
vector=input('Introduceti un sir de numere reale: ', 's')
v=sscanf(vector,'%f')
'Media aritmetica este:'
media=mean(v)

n urma rulrii, genereaz urmtoarele rezultate:

>> fisier2
Introduceti un sir de numere reale: 34 -12.33 24 11 -100
vector =
34 -12.33 24 11 -100
v =
34.0000
-12.3300
24.0000
11.0000
-100.0000
ans =
Media aritmetica este:
media =
-8.6660

4.3 Funcii de ieire

Asigur transmiterea datelor de ieire ctre utilizator, prin intermediul unui dispozitiv sau mediu de ieire
(monitor, imprimant, fiier etc.).

4.3.1 Funcia display()

Funcia display() afieaz n fereastra de comenzi un text sau un tablou.

Sintax:
display(X)

Exemple:

>> var=10
var =
10
>> display(var)
var =
10
>> mesaj='marti'
mesaj =
marti
>> display(mesaj)
mesaj =
marti

4.3.2 Funcia disp()

Funcia disp() afieaz n fereastra de comenzi un text sau un tablou, fr s afieze i numele tabloului. n unele
situaii, acest lucru este de dorit.

Sintax:
disp(X)
Conf.dr.ing. Ovidiu-Aurelian Detean Programare si limbaje II Curs 4. Fiiere script. Funcii de intrare/ieire
9 | P a g e

Exemple:

>> disp(var)
10
>> disp(mesaj)
marti

4.3.3 Funcia sprintf()

Funcia sprintf() trimite date cu format spre un ir de caractere.

Sintax:
str = sprintf(format, A, ...)
[str, errmsg] = sprintf(format, A, ...)

Aplic formatul format tabloului A i a celorlalte argumente suplimentare i returneaz rezultatul n irul str.
errmsg va conine un mesaj de eroare, dac operaia nu se ncheie cu succes. n caz contrar, va fi vid.
format este un ir de caractere care descrie formatul cmpurilor de ieire. Poate conine combinaii de:
- semnul procent urmat de un specificator de conversie (tab. 4.3)
- operatori care descriu dimensiunea cmpului, precizia i alte opiuni
- texte ordinare, care vor fi afiate n aceeai form
- caractere escape, cum ar fi:
'' Apostrof
%% Procent
\\ Backslash
\b Backspace
\f Form feed
\n New line
\r Carriage return
\t Tab orizontal
\xN Numr hexazecimal, N
\N Numr octal, N

Specificatorii de conversie i operatorii opionali apar n ordinea urmtoare (spaiile sunt doar n scopul
delimitrii):

% 3$ 0- 12 .5 b u
unde:
3$ Identificator (specific ordinea de afiare). Se folosete sintaxa n$, unde n reprezint poziia valorii n lista
de intrare. De exemplu, '%3$s %2$s %1$s %2$s' afieaz intrrile 'A', 'B', 'C' astfel: C B A B.
0- Flag.
Exemple: - aliniere la stnga
+ afieaz caracterul semn, + sau -
insereaz un spaiu naintea valorii
0 adaug zerouri pn la completarea limi cmpului
12 Limea cmpului (numrul minim de caractere care se va tipri). Poate fi un numr sau caracterul (*),
cnd face referire la un argument din list. De exemplu, ('%12d', intmax) este echivalent cu ('%*d',
12, intmax).
.5 Precizia: numrul de poziii zecimale n cazul %f, %e, sau %E sau numrul cifrelor semnificative, n cazul
%g sau %G. Poate fi un numr sau caracterul (*), cnd face referire la un argument din list.
b Subtip (tab. 4.3).
u Caracter de conversie (tab. 4.3).

Tab. 4.3 Diferite tipuri de format n cazul funciei sprintf()
Tipul cmpului Specificator Detalii
ntreg cu semn
%d sau %i Valori n baza 10
%ld sau %li Valori n baza 10 reprezentate pe 64 bii
ntreg fr semn %u n baza 10
Conf.dr.ing. Ovidiu-Aurelian Detean Programare si limbaje II Curs 4. Fiiere script. Funcii de intrare/ieire
10 | P a g e
%o n baza 8
%x n baza 16, litere mici a-f
%X n baza 16, litere mari A-F
%lu
%lo
%lx sau %lX
Valori n bazele 10, 8 sau 16, reprezentate pe 64 bii
Numr n virgul
flotant
%f Notaie n virgul fix
%e Notaie exponenial. Exemplu: 3.141593e+00
%E Notaie exponenial, dar cu litera E. Exemplu: 3.141593E+00
%g Alege forma cea mai compact ntre %e i %f
%G Alege forma cea mai compact ntre %E i %f
%bx sau %bX
%bo
%bu
Valoare hexazecimal, octal sau zecimal n dubl precizie. Exemplu:
>> sprintf('valoarea lui pi in baza 16 este: %bx', pi)
ans =
valoarea lui pi in baza 16 este: 400921fb54442d18
%tx sau %tX
%to
%tu
Valoare hexazecimal, octal sau zecimal n simpl precizie. Exemplu:
>> sprintf('valoarea lui pi in baza 16 este: %tx', pi)
ans =
valoarea lui pi in baza 16 este: 40490fdb
Caractere
%s ir de caractere
%c Un singur caracter

Exemple:

>> sprintf('%0.5f',1/eps)
ans =
4503599627370496.00000
>> sprintf('%0.5g',1/eps)
ans =
4.5036e+015
>> sprintf('%d',round(pi))
ans =
3
>> sprintf('Dimensiunea tabloului este %dx%d.',2,3)
ans =
Dimensiunea tabloului este 2x3.

S-ar putea să vă placă și