Sunteți pe pagina 1din 32

Elemente de practica

programarii
Algoritmi. Scheme logice

Generaliti
Un calculator este o maina ce permite rezolvarea unor probleme
prin executarea unui lan de instruciuni.
O succesiune de instruciuni se numete program.
Instruciunile ce pot fi recunoscute i executate de microprocesor
sunt simple i limitate ca numr, pentru a nu complica structura
hardware dar consistente pentru a fi utilizat eficient puterea de
calcul.
Limbajele de programare sunt limbaje artificiale, folosite n tiina
calculatoarelor, pentru a scrie secvene de instruciuni (programe),
care pot fi executate de calculator. Similar limbajelor naturale,
limbajele de programare au vocabular, gramatic i sintax.
Limbajele de programare trebuie s aib structuri logice simple i
reguli gramaticale foarte precise.

Se numete limbaj main (cod main, cod calculator)


reuniunea instruciunilor primitive ce pot fi executate de
microprocesor. Acest limbaj este incomod de utilizat de
programator, intruciunile fiind iruri de numere binare.
Numim limbaj de nivel superior setul de instruciuni
apropiat de limbajul uman, propriu problemei de rezolvat.
Limbajul de asamblare este un limbaj intermediar, foarte
apropiat de codul main, posibil utilizrii de ctre
programator i uor translatabil spre codul main.
Pentru a putea fi executat, un program scris ntr-un limbaj
superior trebuie translatat n instruciuni corespunztoare n
cod main.

interpretare

Fiier surs

Fiier obiect

Program
surs

Program
obiect

Limbaj
superior

Limbaj cod
main

compilare

Rezultate
obinute de
execuia
programului

lansare in execuie

LANGUAGE

ORIGIN OF NAME

YEAR

USES/COMMENTS

ADA

Augusta ADA Byron (Lady Lovelace)

1979

Derived from Pascal, used primarily by the military.

ALGOL

ALGOrithmic Language

1960

First structured procedural programming language, used mainly for solving math problems.

APL

A Programming Language

1961

Interpreted language using a large set of special symbols and terse syntax. Used primarily
by mathematicians.

BASIC

Beginners All-Purpose Symbolic Instruction Code

1965

Very popular high-level programming language, frequently used by beginning


programmers.

Predecessor was Bell Laboratory's 1972 B


Programming Language

1972

Compiled, structured, programming language commonly used in many workplaces


because its programs are easy to transfer between different types of computers.

C++

Advanced version of C. Developed at ATT Bell Labs.

1985

C++ is used in numerous fields, such as accounting and finance systems, and computeraided design. Supports object-oriented programming.

COBOL

COmmon Business-Oriented Language

1959

English-like programming language, emphasizes data structures. Widely used, especially


in businesses.

FORTH

FOuRTH-Generation language (4 GL)

1970

Interpreted, structured language, easily extended. Provides high functionality in limited


space.

FORTRAN

FORmula TRANslation

1954

Initially designed for scientific and engineering uses, a high-level, compiled language now
used in many fields. Introduced several concepts such as variables, conditional
statements, and separately compiled subroutines.

JAVA

Sun Microsystems developers drank a lot of coffee


when coding for this.

1990

Originally developed for use in set-top boxes, transitioned to the World Wide Web in 1994.

LISP

LISt Processing

1960

A list-oriented programming language, mainly used to manipulate lists of data. Interpreted


language, often used in research, generally considered the "standard" language for
Artificial Intelligence (AI) projects.

LOGO

Derived from Greek logos, meaning word

1968

Programming language often used with children. Features a simple drawing environment
and several higher-level features from LISP. Primarily educational.

Modula-2

MODULAr Language, designed as secondary phase


of Pascal (Niklaus Wirth devised both)

1980

Language that emphasizes modular programming. High-level language based on Pascal,


characterized by lack of standard functions and procedures.

Pascal

Blaise PASCAL, mathematician and inventor of first


computing device

1971

Compiled, structured language, based on ALGOL. Adds data types and structures while
simplifying syntax. Like C language, it is a standard development language for
microcomputers.

PILOT

Programmed Inquiry, Language Or Teaching

1969

Programming language used primarily to create applications for computer-aided


instruction. Contains very little syntax.

PL/1

Programming Language One

1964

Designed to combine the key features of FORTRAN, COBOL, and ALGOL, a complex
programming language. Compiled, structured language capable of error handling and
multitasking, used in some academic and research environments.

VB

Visual Basic

1990

Sometimes called the Rapid Applications Development system, is used to build


applications quickly.

Etapele realizrii unui program


a) Definirea problemei
b) Selecia algoritmilor i a structurilor de date
c) Specificarea structurii i a logicii programului (descompunerea
n uniti de program-module- i stabilirea funciuni, logicii i
a interfeelor pentru fiecare modul)
d) Codificarea (transcrierea ntr-un limbaj de programare)
e) Depanarea i testarea (pornind de la verificarea modulelor
independent)
f) Redefinirea pailor anteriori (corectarea erorilor depistate)
g) Documentarea
h) Intreinerea programului

Algoritmi. Scheme logice


Algoritmul este o mulime de reguli de calcul, folosite ntr-o
succesiune bine precizat, cu ajutorul crora putem obine
soluia, cu o precizie mulumitoare, a unei probleme, prin
execuia unui numr finit de operaii.
Proprieti
claritate
eficacitate
universalitate

Corespunztor etapelor de calcul algoritmul


este format din mai muli pai, ce se execut
n ordinea lor matural, atta timp ct nu
intervine o condiie de salt, ce s impun
executarea unui alt pas dect cel urmtor

Reprezentarea grafic, intuitiv, a unui algoritm poate


fi fcut cu ajutorul schemelor logice.

Simboluri folosite n ntocmirea de scheme logice

START

STOP

Blocul de nceput i
Blocul de sfrit al
schemei logice

Blocul de calcul
Calculul ce trebuie executat
se scrie in interiorul
dreptunghiului

CITETE

Blocul intrare

lista mrimi

SCRIE

Blocul ieire

lista mrimi

Blocul de decizie
DA

NU
C

Se folosete pentru indicarea


unei decizii ntr-un algoritm.
Indeplinirea sau nu a condiiei
C duce la continuarea pe
ramura DA, respectiv NU

Toate blocurile funcionale se leag


prin arce orientate dup sensul de
parcurgere a algoritmului

Variabile

Operatori matematici:

Constante

+ - * /

Identificatori
Semnul de atribuire

:=

Operatori logici:
< > >= <= <>

Limbajul de programare BASIC


Beginners All-purpose Symbolic Instruction Code
limbaj de nivel
inalt
universal
simplu
larg raspandit

Programul este constituit din linii de


program precedate de un numar (numit
eticheta), care indica ordinea in care se
memoreaza si se vor executa liniile
Instructiunile cunosc particularizari functie
de implementare. QBASIC si GWBASIC
implementari PC

Programele de birotica sunt insotite de un limbaj de programare


asemanator limbajului BASIC.

Instructiunile limbajului

START

STOP

RUN

STOP
LET expresie de calcul

INPUT lista

CITETE

READ lista

lista mrimi

asociat cu

DATA sir numere


SCRIE

PRINT lista

lista mrimi

LPRINT lista

IF c THEN instructiune DA
DA

NU
C

Indeplinirea condiiei c duce la


executia instructiunii DA, apoi
se executa instructiunea
urmatoare lui IF

GOTO eticheta

Variabile

Operatori matematici:

Constante

+ - * /

Identificatori
Semnul de atribuire

LET

Operatori logici:
< > >= <= <>

Rezolvarea ecuaiei de gradul I

ax+b=0 x=-b/a, cnd a nu e zero


START

a,b

x:=-b/a

nu

CITETE

a=0

da

SCRIE
Ec. imp.

SCRIE
x=,x

STOP

5 CLS
10 INPUT "a=", a
20 INPUT "b=", b
30 IF a = 0 THEN PRINT "ecuatie imposibila": STOP
40 LET x = -b / a
50 PRINT "x="; x
60 STOP

Gsirea valorii minime (maxime) a unui ir de numere


START

citete
n
i:=1
citete
a(i)

scrie
min
NU

i:=i+1
DA
DA

i<=n

i<=n
NU
min:=a(1)
i:=2

i:=i+1
DA
min<=a(i)

NU

min:=a(i)

STOP

5 CLS
10 INPUT "n=", n: DIM a(n)
20 LET i = 1
30 PRINT "a("; i; ")"; : INPUT "="; a(i)
40 LET i = i + 1
50 IF i <= n THEN GOTO 30
60 LET min = a(1)
70 LET i = 2
80 IF min > a(i) THEN min = a(i)
90 LET i = i + 1
100 IF i <= n THEN GOTO 80
110 PRINT "minimul este"; min
120 STOP

5 CLS
10 INPUT "n=", n: DIM a(n)
20 FOR i = 1 TO n
30 PRINT "a("; i; ")"; : INPUT "="; a(i)
50 NEXT i
60 LET min = a(1)
70 FOR i = 2 TO n
80 IF min > a(i) THEN min = a(i)
90 NEXT i
110 PRINT "minimul este"; min
120 STOP

Calculul sumei (produsului) valorilor unui ir de numere


START

citete
n
i:=1
citete
a(i)

scrie
s=,s
NU

i:=i+1
DA
DA

i<=n

i<=n
NU

i:=i+1

s:=0
i:=1

s:=s+a(I)

STOP

5 CLS
10 INPUT "n=", n
20 FOR i = 1 TO n
30 PRINT "a("; i; ")"; : INPUT "="; a(i)
50 NEXT i
60 LET s = 0: LET p = 1
70 FOR i = 1 TO n
80 LET s = s + a(i): LET p = p * a(i)
90 NEXT i
110 PRINT "suma este"; s, "produsul este"; p
120 STOP

Ordonarea valorilor unui ir de numere


START

citete
n
i:=1
citete
a(i)

NU

DA

scrie
ordonare
gata

STOP

NU

i:=i+1
DA
DA

s=0

i<=n-1

i<=n
NU
s:=0
i:=1

i:=i+1
s:=1

DA
a(i)<=a(i+1)

NU

t:=a(i)

a(i):=a(i+1)

a(i+1):=t

5 CLS
10 INPUT "n=", n: DIM a(n)
20 FOR i = 1 TO n
30 PRINT "a("; i; ")"; : INPUT "="; a(i)
50 NEXT i
60 LET s = 0
70 FOR i = 1 TO n - 1
80 IF a(i) > a(i + 1) THEN t = a(i): a(i) = a(i + 1): a(i + 1) = t: s = 1
90 NEXT i
100 IF s <> 0 THEN GOTO 60
110 PRINT "sirul a fost ordonat"
115 FOR i = 1 TO n: PRINT "a("; i; ")="; a(i): NEXT i
120 STOP

Cutarea secvenial a unei valori ntr-un ir de numere


START

citete
v, n
i:=1
citete
a(i)

scrie
val. nu e n ir
NU

i:=i+1
DA
DA

i<=n

i<=n
NU

i:=i+1
NU

i:=1

v = a(i)

DA

scrie
val. gsit

STOP

5 CLS
10 INPUT "n=", n: DIM a(n)
20 FOR i = 1 TO n
30 PRINT "a("; i; ")"; : INPUT "="; a(i)
50 NEXT i
60 INPUT "v="; v
70 FOR i = 1 TO n
80 IF v = a(i) THEN PRINT "valoare gasita la poz."; i: STOP
90 NEXT i
110 PRINT "valoarea nu e in sir"
120 STOP

Cutarea binar a unei valori ntr-un ir de numere


START

citete
v, n
NU
i:=1
citete
a(i)

DA

j=1 sau
i=n

scrie
val. nu e n ir

i:=k
NU

i:=i+1
v < a(k)
DA

i<=n
NU

DA

NU
v = a(k)
a(i)

i:=1
j:=n

j:=k

k:=INT ((i+j)/2)

DA

scrie
val. gsit, k

STOP

5 CLS
10 INPUT "n=", n: DIM a(n)
20 FOR i = 1 TO n
30 PRINT "a("; i; ")"; : INPUT "="; a(i)
50 NEXT i
60 INPUT "v="; v
70 LET i = 1: LET j = n
75 LET k = INT((i + j) / 2)
80 IF v = a(k) THEN PRINT "valoare gasita la poz."; k: STOP
90 IF v < a(k) THEN j = k ELSE i = k
100 IF i = n OR j = 1 THEN PRINT "valoarea nu e in sir": STOP
120 GOTO 75

5 CLS
10 INPUT "n=", n: DIM a(n)
20 FOR i = 1 TO n
30 PRINT "a("; i; ")"; : INPUT "="; a(i)
50 NEXT i
60 INPUT "v="; v
65 IF v = a(n) THEN PRINT "valoare gasita la poz."; n: STOP
70 LET i = 1: LET j = n
75 LET k = INT((i + j) / 2)
80 IF v = a(k) THEN PRINT "valoare gasita la poz."; k: STOP
90 IF v < a(k) THEN j = k ELSE i = k
100 IF i = n OR j = 1 THEN PRINT "valoarea nu e in sir": STOP

Elemente de programare structurat


Programarea structurat are ca idee fundamental
proiectarea de la nceput a programului n aa fel nct acesta s
prezinte o structur bine determinat, simpl i clar, adecvat
unei analize eficiente a corectitudinii programului.
Structurile cu ajutorul crora se poate ntocmi n acest fel un
program sunt:
secvena
decizia
selecia

ciclul cu test
iniial
ciclul cu test
final

SECVENA

DECIZIA

s1
DA

NU

s2
...
s1
sn

SELECIA

s1

s2

.....

sn

s2

CICLU CU TEST INIIAL

CICLU CU TEST FINAL

DA

NU

c
NU

DA