You are on page 1of 32

Universitatea din Bucureti Facultatea de Geografie

Master GiS

lb
Ionut Ovejanu / 2014

Limbajele de programare sunt alcatuite dintr-un set de instruciuni care constituie lista complet a
posibilitilor de care dispune programatorul pentru a determina rezolvarea unei probleme (aplicaie)
pe un sistem de calcul.
Instruciunile unui limbaj de programare sunt de dou feluri:
Instruciuni declarative, care nu determin executarea unei aciuni de ctre sistemul de
calcul, ci numai indicaii care se dau compilatorului.
Instruciuni executabile, care reprezint descrierea unei aciuni pe care o va efectua sistemul de
calcul, n special privind datele aplicaiei
Execuia unei instruciuni reprezint efectuarea operaiei specificate de codul instruciunii,
interpretate la un moment dat de unitatea central a unui sistem de calcul sau de un procesor.
Ca exemplu de operaii pe care le face unitatea central a sistemului de calcul sunt operaiile de
adunare, scdere, citire, scriere, comparaie, etc.
Rutina este o structur de sine stttoare, asemntoare unui program, prin care se efectueaz o
anumit aciune. Este executat numai atunci cnd este lansat (apelat), de ctre un obiect al
Aplicaiei. Rutina poate fi apelat de un numr nelimitat de ori din diferite locuri iar execuie,
controlul revine obiectului care a provocat apelarea rutinei.

Sistem de numeraie:
Sistem (Baz): Binar(2), Ternar (3), Cuaternar (4), Octal (8), Zecimal (10), Duodecimal (12),
Hexazecimal (16), Vigesimal (20), Sexazecimal (60).
Sistem binar:
- cel mai natural mod de stocare a informaiei n domeniul calculatoarelor;
- se pot efectua toate operaiunile aritmetice i algebrice;
- 0 i 1;
- o cifr binar conine cantitatea de informaie de 1 bit.
Sistemul zecimal:
- este un sistem de numeraie poziional, avnd baza 10;
Sistemul hexazecimal:
- sistemul hexazecimal are baza 16 i utilizeaz 16 cifre hexazecimale, care se noteaz astfel:
0 1 2 3 4 5 6 7 8 9 A B C D E F.
- 1 octet (byte) = 8 bit (bits) => poate stoca 256 valori, se pot reprezenta toate numerele naturale
ntre 0 i 255 (28=256);

Imagine: collegeteacher.org

Imagine: ibm.com

Visual Basic pentru Aplicaii (VBA), este o implementare a Microsoft Visual Basic, un limbaj de
programare construit n majoritatea aplicaiilor Microsoft Office, n unele alte aplicaii Microsoft, i n
cteva alte aplicaii sig, cum ar fi AutoCAD i ESRI ArcGIS.
Pentru a nelege esenta VBA, trebuie s nelegei c, fiecare parte a unui program de MS
Office este compusa din obiecte. Aceste obiecte au proprietati, care pot fi configurate sau
modificate, ca rspuns al unui utilizator care initiaza un eveniment, cum ar fi un "click de mouse"
sau o "apsare de tast".
Toate aceste obiecte au proprietati. Unele dintre aceste proprieti sunt fie adevarate sau false
(o selecie de text ar putea avea de ingrosarea, setata ca true).
Unele dintre aceste proprieti ar putea avea o valoare numerica (o selecie de text ar putea
avea dimensiunea setat la 36 ).
Toate aceste obiecte pot reaciona la Evenimente. Folosind un mouse sau o tastatur,
utilizatorul iniiaz un eveniment.
VBA controleaza interactiunea dintre obiecte si proprietatile lor ca raspuns la un eveniment
initiat de utilizator.

Tipuri de date pot fi:


- predefinite (standard), cum ar fi cele pentru numerele ntregi, numerele reale, caractere sau
booleene (logice);
- proprii (definite de programator) cu ajutorul instruciunii Type.
Tipurile de date pot fi:
- elementare (simple) o variabil de acest tip va conine o singur valoare;
- structurate o variabil de acest tip va conine mai multe valori elementare.
Expresiile in VBA.
O expresie este format din termeni asupra crora se efectueaz anumite operaii.
O expresie a crei evaluare este o valoare logic (True sau False) se numete condiie.
Termenii pot fi: variabile, constante, literali (valori date direct) sau funcii (proprii sau din
biblioteci).
Operatorii sunt de trei tipuri: aritmetici, relaionali si logici.
Structurile de control.
- secvenial (execuia secvenial a instruciunilor, n ordinea n care au fost scrise si nu
necesit folosirea unei instruciuni);
- alternativ (simpla sau multipla) (execuia din mai multe grupuri de instruciuni introduse
numai a unui singur grup, n funcie de evaluarea unor condiii);
- repetitiv (execuia repetat a unui anumit grup de instruciuni, numit ciclu sau bucl, pn
cnd o condiie ia o anumit valoare).

Rutine in VBA.
Rutinele sunt de dou feluri: proceduri (sau subrutine) i funcii. Diferena dintre ele const n
faptul c:
- Funciile au un parametru implicit de ieire care este chiar numele funciei.
- Procedurile sunt apelate prin instruciuni, iar funciile sunt apelate prin introducerea numelui
acesteia ntr-o expresie (ca i cum ar fi o variabil sau constant).

ArcGIS Desktop
Q: Is VBA supported with ArcGIS Desktop 10?
Yes, arcgis desktop 10 does support Microsoft VBA. However Arcgis 10 is the last version with VBA
support, so we encourage you to start the migration process. PYTHON is an integral part of arcgis
desktop for automating tasks and the new add-in capabilities allow developers to easily create and deploy
arcmap customizations.
An important change at version 10 is that VBA is not part of the arcgis Desktop install. If you need VBA,
you need to install the arcobjects VBA SDK, which will setup the VBA Runtime, Editor, and Help. Please
note that an additional authorization file is required for VBA. This is a no charge license that can be
requested from esri customer service.

' Un "Hello, World!" program in Visual Basic.


Module Hello
Sub Main()
MsgBox("Hello, World!") ' Afiseaza mesajul pe ecranul calculatorului.
End Sub
End Module
Compilare:
> vbc Hello.vb
> vbc Hello.vb /imports:Microsoft.VisualBasic
> Hello

C + + este al treilea limbaj de programare dup Java i C.


C este utilizat pentru a scrie compilatoare si sisteme de operare. Aproape toate
aplicatiile proiectate pentru a usura comunicatiile pe Internet sunt scrise in C.
C++ Este un limbaj de programare compilat, multi-paradigm, cu verificarea static a
tipului variabilelor ce suport programare procedural, abstractizare a datelor,
programare orientat pe obiecte.
Program care afiseaza textul "Hello World":
#include <iostream>
using namespace std;
int main()
{
cout << "Hello World" << endl;
return 0;
}

Imagine: collegeteacher.org

Python este un limbaj de programare foarte bun pentru incepatori, deoarece prezinta o curb de
nvare extrem de superficiala, i seamn cu limba englez
Python este un limbaj de programare cu scop general, folosit pentru o mare varietate de sarcini.
Variabilele n Python pot avea, de asemenea, operaiuni efectuate catre o parte, indiferent dac
acestea sunt aceleai tip de date sau nu. Aceast proprietate de limbaje de programare se
numete dactilografiere slaba.
De ce Python 3?
Python 2 a oferit un limbaj de programare clar i concis, Python 3 este imbunatatit si curat in
acelasi limbaj.
Python 3 ofera mai multe elemente de performan, fr a schimba limbajul n ntregime. Un alt
beneficiu de nvare Python 3 fa de 2 este c Python 3 are un mod curat de a privi la datele.

$ joe test.py
#!/usr/bin/python3.1
# Hello world python program
print ("Hello World!")

Exemplul 1:
#!/usr/bin/python3.1
# Hello world python program
print ("Hello World!")
Exemplul 2:
#!/usr/bin/python3.1
name=input("Care este numele tau? ")
colour=input("Salut" + name + ", care este culoarea favorita? ")
print (name + ", culoarea favorita este " + colour + "!")
print()
print("Multumesc " + name + ", pentru atentie!")

Numerele n Python:
- integer: 2,3
- float (floating point): 54.3E-4 (54.3 * 10-4)
- complex: 10+3j
iruri (secvente de caractere)
Ghilimele simple: 'Sunt masterand'
Ghilimele duble: "Cum te cheam?"
Ghilimele triple: """ sau '''
'''Acesta este un ir multi-linie. Aceasta este prima linie.
Aceasta este a doua linie.
'Cum te numeti?', l-a intrebat.
El a zis "Gheorghe".
'''
Tipuri de date: numere i iruri.
Python consider c tot ce se folosete n program este obiect.

Secvente de scapare:
print('What's your name?') -error
print('What\'s your name?')
Concatenarea literalilor sir:
print('What\'s ' 'your name?')
Construirea de iruri din alte informaii prin metoda metoda format().
#!/usr/bin/python3.1
# Fiier: test.py
an = 1
nume = 'Studentul'
print('{0} este in anul {1}.'.format(nume, an))
print('De ce invata {0} python?'.format(nume))

Folosirea variabilelor i a literalilor


#!/usr/bin/python3.1
# Fiier : test.py
i=7
print(i)
i=i+3
print(i)
s = '''Sir de caractere multi-linie.
Llinia a doua.'''
print(s)

Linii logice i linii fizice


#!/usr/bin/python3.1
# Fiier : test.py
i=5
print(i)
j = 5;
print(j);
k = 5; print(k);
l = 5; print(l)
Specificarea a mai mult de o linie logic pe linie fizic, trebuie sa se faca
folosind la ncheierea liniei logice semnul (;).
* recomand folosirea unei singure linii logice pe linia fizic (rnd).

Linie logic ntins pe mai multe linii fizice, se numete reunire explicit a liniilor.
s = 'Acesta este un ir \
care continu pe a doua linie.'
print(s)
#acelasi lucru
print\
(s)
Indentarea
Spaiul alb la nceputul liniei este important, el poarta numele de indentare. Este folosit
pentru a determina nivelul de indentare al liniei logice, care la rndul lui este folosit
pentru a determina gruparea declaraiilor.
Se recomanda folosirea unui singur TAB sau patru spaii pentru fiecare nivel de
indentare.
j = 100
print('Valoarea este ', j) # Eroare! Spaiu la nceputul liniei.
print('Repet, valoarea este ', j)

Operatori
Op.

Nume

Explicaie

Exemple

Plus

adun dou obiecte

3 + 5 fac 8 / 'a' + 'b' fac 'ab'.

Minus

fie face un numr s fie negativ fie d


diferena ntre dou numere

-5.2 face negativ numrul 5.2

Inmulire

d produsul a dou numere sau repetarea


unui ir de numrul specificat de ori

2 * 3 fac 6 / 'la' * 3 d 'lalala'.

Putere

d x la puterea y

3 ** 4 d 81 / (adic 3 * 3 * 3 * 3)

mprire

mparte x la y

4 / 3 d 1.3333333333333333.

//

mprire
ntreag

d partea ntreag a ctului

4 // 3 fac 1.

Modulo

d restul mpririi

8 % 3 fac 2 / -25.5 % 2.25 fac 1.5.

<<

Translaie la
stnga

Translateaza biii unui numr la stnga cu


numrul specificat de bii. (Orice numr este
reprezentat n memorie sub forma de bii cifre binare 0 i 1)

2 << 2 da 8
2 este reprezentat prin 10 n bii. Prin
translaie la stnga cu doi bii se obine 1000
ceea ce reprezint numrul 8.

>>

Translaie la
dreapta

Translateaza biii numrului la dreapta cu


numrul specificat de bii.

11 >> 1 d 5
11 este reprezentat n bii prin 1011 care
translatat la dreapta cu un bit d 101 ceea
ce reprezint numrul 5.

&

AND

I binar ntre numere

5 & 3 da 1.

OR

SAU binar ntre numere

5 | 3 d 7

**

Operatori
Op.

Nume

Explicaie

Exemple

XOR

SAU exclusiv binar ntre numere

5 ^ 3 fac 6

Complement
binar

complementul lui x este -(x+1)

~5 d -6.

<

Mai mic
(dect)

Valoarea de adevr a propoziiei x este mai


mic dect y. Toi operatorii de comparaie iau
valorile logice True sau False. Observai c
aceste nume ncep cu majuscul.

5 < 3 d False
3 < 5 d True.
Comparaiile pot fi nlnuite arbitrar: 3 < 5 <
7 d True.

>

Mai mare
(dect)

Valoarea de adevr a propoziiei x este mai


mare dect y.

5 > 3 d True. Dac ambii operanzi sunt


numere, acetia sunt convertii nti la un tip
comun. n caz contrar operaia ar avea
mereu valoarea False.

<=

Mai mic sau


egal (cu)

Valoarea de adevr a propoziiei x este mai


mic sau cel mult egal cu y.

x = 3; y = 6; x <= y d True.

>=

Mai mare
sau egal
(cu)

Valoarea de adevr a propoziiei x este mai


mare sau cel puin egal cu y.

x = 4; y = 3; x >= 3 da True.

==

Egal (cu)

Verific dac dou numere sunt egale

x = 2; y = 2; x == y d True.
x = 'str'; y = 'stR'; x == y d False.
x = 'str'; y = 'str'; x == y d True.

!=

Diferit (de)

Verific dac dou numere sunt diferite

x = 2; y = 3; x != y d True.

not

NU logic

dac x este True, d False. Dac x este


False, d True.

x = True; not x d False.

Operatori
Op.
and

or

Nume

Explicaie

Exemple

I logic

x and y d False dac x este False, altfel d


valoarea lui y

x = False; y = True; x and y d False ntruct


x este False. n acest caz, Python nu va
evalua pe y fiindc tie c partea stng a
expresiei 'and' este False ceea ce d ntregii
expresii valoarea False indiferent de
celelalte valori. Acest fapt se numete
evaluare n circuit scurt.

SAU logic

dac x este True, d True, altfel d valoarea


lui y

x = True; y = False; x or y d True. i aici se


aplic evaluarea n circuit scurt.

Precedena operatorilor
Descriere

Operator
lambda

Expresie lambda

or

SAU logic

and

I logic

not x

NU logic

in, not in

Teste de apartenen

is, is not

Teste de identitate

<, <=, >, >=,


!=, ==

Comparaii

SAU binar

SAU-exclusiv binar

&

I binar

<<, >>

Translaii

+, -

Adunare i scdere

*, /, //, %

nmulire, mprire, mprire ntreag,


modulo

+x, -x

Pozitiv, negativ

~x

NU binar

Precedena operatorilor
Descriere

Operator
**

Exponeniere

x.atribut

Referin la atribut

x[index]

Referin la element

x[index1:index2]

Feliere

f(argumente ...)

Apel la funcie

(expresii, ...)

Legtura sau afiarea unui cuplu

[expresii, ...]

Afiarea unei liste

{cheie:date, ...}

Afiarea unui dicionar

Precedena operatorilor
Descriere

Operator
**

Exponeniere

x.atribut

Referin la atribut

x[index]

Referin la element

x[index1:index2]

Feliere

f(argumente ...)

Apel la funcie

(expresii, ...)

Legtura sau afiarea unui cuplu

[expresii, ...]

Afiarea unei liste

{cheie:date, ...}

Afiarea unui dicionar

Expresie
#!/usr/bin/python3.1
# Fiier: test.py
lungime = 7
lime = 5
aria = lungime * lime
print('Aria este', aria)
print('Perimetrul este', 2 * (lungime + lime))

Declaraia if, este folosit pentru a testa o condiie i, dac aceasta este adevrat, s ruleze un bloc
de declaraii (numit 'blocul if'), iar n caz contrar s ruleze alt bloc de declaraii (blocul 'else'). Clauza
'else' este optional.
#!/usr/bin/python3.1
# Fiier: test.py
numr = 23
ghici = int(input('Introducei un ntreg : '))
if ghici == numr:
print('Felicitri, ai ghicit,') # Noul bloc ncepe aici
print('(dar nu ctigai niciun premiu!)') # Noul bloc se ncheie aici
elif ghici < numr:
print('Nu, e un pic mai mare.') # Alt bloc
# Poti face ce vrei ntr-un bloc ...
else:
print('Nu, e un pic mai mic.')
# Ca s ajungei aici e sigur ca ghici > numr
print('Gata')
# Aceasta ultim declaraie este executat ntotdeauna, dup declarai if

Declaraia while ne permite s executm repetat un bloc de declaraii att timp ct o condiie rmne
adevrat. O declaraie while este un exemplu de instruciune de ciclare. Poate avea i clauza else.
#!/usr/bin/python3.1
# Fiier: test.py
numr = 23
ciclu = True
while ciclu:
ghici = int(input('Introducei un ntreg : '))
if ghici == numr:
print('Felicitri, ai ghicit!')
ciclu = False # asta face ciclul s se ntrerup
elif ghici < numr:
print('Nu, este puin mai mare.')
else:
print('Nu, este puin mai mic..')
else:
print('Bucla s-a ncheiat.')
# Aici putei face ce prelucrri vrei
print('Gata')

Bucla for (declaraia for)..in este o declaraie de ciclare care itereaz elementele unei secvene de obiecte.
O secven este pur i simplu o colecie ordonat de elemente.
#!/usr/bin/python3.1
# Fiier: test.py
for i in range(1, 5):
print(i)
else:
print('Bucla s-a terminat')
Declaraia break, este folosit pentru a ntrerupe executarea unei declaraii de ciclare, chiar i dac
condiia testat nu a devenit nc False sau secvena nu a fost parcurs complet. Dac se ntrerupe o
bucla for sau while, nici clauza else nu va fi executat.
#!/usr/bin/python3.1
# Fiier: test.py
while True:
s = (input('Introducei ceva:'))
if s == 'quit':
break
print('Lungimea irului introdus este', len(s))
print('Gata')
*elif - verifica expresii multiple pentru valoare de adevar si executa un bloc de cod imediat ce conditia este
evaluata ca adevarata.

Declaraia continue, se folosete pentru a trece la urmtoarea iteraie fr s execute instruciunile


rmase din blocul declaraiei de ciclare. Declaraia continue funcioneaz i cu bucla for.
#!/usr/bin/python3.1
# Fiier: test.py
while True:
s = input('Introducei ceva: ')
if s == 'quit':
break
if len(s) < 3:
print('Prea puin')
continue
print('irul introdus are lungime suficient')
# Facei alte procesri aici...
* folosim funcia len pentru a obine lungimea.

Universitatea din Bucureti Facultatea de Geografie


Master GiS

Va mulumesc

OpenGiS.ro / 2014