Welcome to Scribd, the world's digital library. Read, publish, and share books and documents. See more
Standard view
Full view
of .
P. 1
Culegere probleme de informatica

# Culegere probleme de informatica

Ratings:

4.88

(8)
|Views: 7,106|Likes:
Culegere probleme de informatica
Culegere probleme de informatica

### Availability:

See more
See less

07/21/2014

pdf

text

original

Cuprins
CUPRINS................................................................................................................................................1INTRODUCERE....................................................................................................................................2CE
Ş
ANSE AM S
Ă
DEVIN UN BUN PROGRAMATOR ?...............................................................3LEGILE SUCCESULUI DURABIL (GHIDUL STUDENTULUI ÎND
Ă
R
Ă
TNIC).........................6PROBLEME DE JUDECAT
Ă
..............................................................................................................8
P
ROBLEME DE PERSPICACITATE
.............................................................................................................8P
ROBLEME CU CHIBRITURI
....................................................................................................................9P
ROBLEME DE LOGIC
Ă

Ş
I JUDECAT
Ă
....................................................................................................10P
ROBLEME DE LOGIC
Ă

Ş
I JUDECAT
Ă
CU
"
TENT
Ă
INFORMATIC
Ă
".........................................................12
NO
IUNI FUNDAMENTALE DE PROGRAMARE.......................................................................15
1.C
ELE TREI ETAPE ALE REZOLV
Ă
RII UNEI PROBLEME CU AJUTORUL CALCULATORULUI
.....................152.C
UM SE STABILE
Ş
TE CORECTITUDINEA
Ş
I EFICIEN
A SOLU
ION
Ă
RII
?..............................................153.

N
O
IUNILE FUNDAMENTALE ALE PROGRAM
Ă
RII
:
ALGORITM
,
LIMBAJE DE DESCRIERE AALGORITMILOR
,
PROGRAM
,
LIMBAJE DE PROGRAMARE
......................................................................16
3.1. Algoritmul
...............................................................................................................................16
3.2. Descrierea algoritmilor
...........................................................................................................17
3.3 Programul
................................................................................................................................18
4.

S
ECRETUL ÎNV
ĂĂ
RII RAPIDE A PROGRAM
Ă
RII
................................................................................19
NO
IUNI PRIMARE DE PROGRAMARE ÎN PASCAL
Ş
I C.......................................................20
E
XEMPLE DE PROBLEME REZOLVATE
...................................................................................................21
METODA PRACTIC
Ă
DE ÎNV
Ă
ARE CE GARANTEAZ
Ă
REZULTATE IMEDIATE.........26PROBLEME SELEC
IONATE - ENUN
URI................................................................................26
P
ROBLEME PROPUSE SPRE REZOLVARE
(
PROBLEME DE ANTRENAMENT
).............................................26P
ROBLEME DE EXAMEN
.......................................................................................................................28P
ROBLEME DIFICILE
.............................................................................................................................30P
ROBLEME NESOLU
IONATE ÎNC
Ă
.......................................................................................................32P
ROBLEME INSOLVABILE ALGORITMIC
................................................................................................35
NO
IUNI APROFUNDATE DE PROGRAMARE..........................................................................37
M
ETODE
Ş
I STRATEGII DE PROIECTARE A ALGORITMILOR
(
ALIAS TEHNICI DE PROGRAMARE
)..............37B
ACK
T
RACKING
..................................................................................................................................39G
REEDY
..............................................................................................................................................42P
ROGRAMAREA DINAMIC
Ă
..................................................................................................................42B
RANCH
&

B
OUND
..............................................................................................................................43R
ECURSIVITATEA
................................................................................................................................44
PROBLEME REZOLVATE
Ş
I EXERCI
II DE PROGRAMARE................................................49
P
ROBLEME ELEMENTARE
.

E
XERCI
II DE PROGRAMARE
.......................................................................49P
ROBLEME CE NECESIT
Ă
BACK
-
TRACKING
..........................................................................................66P
ROBLEME CU SOLU
IE SURPRINZ
Ă
TOARE
..........................................................................................70E
LEMENTE DE PROGRAMARE A
PC

-
URILOR
.......................................................................................75C
URIOZIT
Ă
I
Ş
I TRUCURI DE PROGRAMARE
.........................................................................................91
CONFRUNTARE DE OPINII: INFORMATIC
Ă
VERSUS MATEMATIC
Ă
Ş
I LOCA
II DE INTERES PE INTERNET.....................................95

2
Introducere
Exist
ă
multe culegeri de probleme de informatic
ă
ce permit înv
ă
area
ş
i perfec
ionarea înprogramare. Prin aceast
ă
culegere am încercat nu doar s
ă
sporim aceast
ă
mul
ime cu înc
ă
una ci s
ă
oferim un punct de vedere nou, original
ş
i incitant. Originalitatea nu este dat
ă
de enun
urileproblemelor sau de rezolv
ă
rile oferite, ci de ideile
ş
i sfaturile cu caracter mobilizator pe care le oferim,precum
ş
i de faptul c
ă
am introdus cîteva capitole cu con
inut mai pu
in obi
ş
nuit într-o culegere deprobleme de programare.Ni s-a p
ă
rut mai important ca în aceste vremuri, caracterizate prin cuvintele "m
ă
simt într-opermanent
ă
criz
ă
de timp", s
ă
oferim cît mai mult din experien
a noastr
ă
direct
ă
, atît cea deprogramator cît
ş
i cea de profesor de programare. De
ş
i nu credem c
ă
exist
ă
metode perfecte de predaresau de înv
ă
are a program
ă
rii, totu
ş
i sper
ă
m c
ă
prin asimilarea informa
iilor originale oferite eficien
aprocesului de înv
ă
are a program
ă
rii în limbajele C
ş
i Pascal va cre
ş
te. Este important ca informa
iilesuplimentare s
ă
ş
i numai în limita "suportabilit
ă
ii" fiec
ă
ruia. De aceea, în paginilece urmeaz
ă
ve
i g
ă
si
ş
i o serie de informa
ii
ş
i sfaturi ce sintetizeaz
ă
experien
a didactic
ă
acumulat
ă
caprofesor de informatic
ă

ş
i urmîndu-le v
ă
asigur
ă
m c
ă
ve
i ob
ine succesul în programare.În primele capitole a fost pus un accent important pe motivarea ini
ial
ă
a celor ce doresc s
ă
înve
e programare. În capitolul "Ce
ş
anse am s
ă
devin un bun programator" sînt chiar prezentate cusinceritate înzestr
ă
rile necesare unui bun programator.Tot astfel se explic
ă
motivul introducerii unui capitol ce con
ine probleme de judecat
ă
.Rezolvarea acestora pot fi considerate nu doar ca un excelent antrenament al min
ii ci
ş
i ca o bun
ă
ocazie de a aprinde pasiunea pentru informatic
ă

ş
i de a înt
ă
ri motiva
ia programatorilor încep
ă
tori.Asta nu înseamn
ă
c
ă
aceast
ă
culegere nu le este util
ă

ş
i celor care au dobîndit deja suficientecuno
ş
tin
e de programare. Am introdus în ea cîteva capitole ce con
in informa
ii mai pu
in cunoscute.Unul cuprinde o list
ă
de probleme deosebite, unele foarte dificile, altele c
ă
rora nu li se cunoa
ş
te înc
ă
osolu
ie
ş
i altele pentru care exist
ă
demonstra
ie riguroas
ă
c
ă
nu pot fi rezolvate cu ajutorulcalculatorului. Alt capitol cuprinde exemple de programare a PC-urilor: lucrul cu tastatura, mouse-ul,accesul direct la memoria ecran, etc. Iar unele capitole ca
No

iuni aprofundate de programare,

Probleme cu solu

ie surprinz
ă
toare
sau
Curiozit
ă
i
ş
i trucuri de programare
le sînt în întregimedestinate celor care au dep
ăş
ă
tor. Probabil c
ă
aceste informa
ii constituie o provocaredestul de substan
ial
ă
chiar
ş
i pentru cei avansa
i în ale program
ă
rii.În concluzie, scopul acestei culegeri nu este doar de a contribui la formarea
ş
i specializareaprogramatorilor sau pentru aprofundarea tehnicilor de programare, cît mai ales de a le oferi o baz
ă
, omotiva
ie
ş
i o ini
iere celor care doresc s
ă
fac
ă
primii pa
ş
i în domeniul program
ă
rii. Iar acelor împ
ă
timi
i ai program
ă
rii care se simt deja plictisi
i, s
ă
tui sau plafona
i le promitem c
ă
parcurgîndaceast
ă
culegere vor aprofunda cuno
ş
tin
ele pe care
ş
i le-au însu
ş
it deja
ş
i, dac
ă
vor avea curajul de "ase lua de piept" cu unele din problemele nesolu
ionate înc
ă
, li se va reaprinde cu siguran
ă
foculpasiunii pentru programare.Încep
ă
torilor le ur
ă
m
Bun venit în programare
ş
i tuturor
Mult succes !

3
Ce
ş
anse am s
ă
devin un bun programator ?
Aceast
ă
întrebare apare deseori în discu
iile sincere dintre profesori
ş
i studen
ii lor descuraja
ide întîrzierea apari
iei unor rezultate care s
ă
certifice buna lor calitate ca programatori. Vom încerca înrîndurile ce urmeaz
ă
s
ă
r
ă
spundem cît mai clar la aceast
ă
întrebare oferind, în plus, o perspectiv
ă
prosp
ă
tat
ă
asupra acestui subiect, prin luarea în considerare a unei serii de factori mai pu
in utiliza
i înprocesul didactic contemporan.Mai întîi s
ă
vedem ce s-ar putea în
elege prin sigtagma
bun programator”,
insisitînd încontinuare doar pe aprofundarea adjectivului
bun,
ă
r
ă
a mai defini sau detalia ce se în
elege printr-unprogramator. Vom cita cuvintele recente ale lui Timoty Budd ( profesor la Oregon State University )care d
ă
urm
ă
toarea defini
ie: “
Un bun programator trebuie s
ă
fie înzestrat cu tehnic
ă
, experien
ă
,capacitate de abstractizare, logic
ă
,

inteligen
ă
, creativitate
ş
i talent
”. Întru-totul de acord cu aceast
ă
defini
ie vom trece în cele ce urmeaz
ă
la explicitarea fiec
ă
rei calit
ă
i.Înainte vom deduce urm
ă
toarea consecin
ă
imediat
ă
- deosebit de important
ă
- ce rezult
ă
dindefini
ia de mai sus:
cele
ş
apte calit
ă
i trebuie s
ă
fie prezente
toate
pentru a se ob
ine calificativul de
bun programator.
Deci, prin lipsa sau prin prezen
a “atrofiat
ă
” a uneia , sau a mai multe din“ingredientele re
etei” de mai sus, acest calificativ nu mai poate fi atins.
1.

Tehnica
– este desigur o calitate ce poate fi,
ş
i este, dobîndit
ă
doar prin aplicarea asidu
ă
(conformproverbului: “exerci
iul îl face pe maestru”) în activitatea concret
ă
de programare a tehnicilor deprogramare înv
ă
ate
ş
i asimilate de c
ă
tre programator în timpul form
ă
rii sale profesionale. Nu esteexclus
ă
aici posibilitatea ob
inerii tehnicii de programare înafara unui cadru specializat (într-ofacultate de profil ), ci chiar exist
ă
posibilitatea ob
inerii ei prin studiu individual
ş
i forma
ieproprie (autodidact ).
2.

Experien

a
– este perechea geam
ă
n
ă
a calit
ă
ii de mai înainte, f
ă
r
ă
îns
ă
a se exclude una pecealalt
ă
. Nu vom mai repeta cum
ş
i în ce condi
ii poate fi ea ob
inut
ă
ci vom deduce urm
ă
toareaconsecin
a imediat
ă
:
nici un programator încep
ă
tor nu poate fi numit

bun programator

întrucît el nu a avut cînd (adic
ă
timpul necesar ) s
ă
dobîndeasc
ă
ambele calit
ă
i
. Este binecunoscut faptulc
ă
o rubric
ă
important
ă
ce se cere completat
ă
la angajare sau la schimbarea locului de munc
ă
este
experien

a de programare în ani.
Se consider
ă
în general c
ă
experien
a apare abia dup
ă
minimumdoi ani de programare. Acest fapt nu trebuie privit ca o descurajare pentru cei mai tineriprogramatori ci mai degrab
ă
ca pe un motiv de ambi
ionare
ş
i ca o invita
ie la rapid
ă
autoperfec
ionare.
3.

Abstractizarea
– este o tr
ă
s
ă
tur
ă
a intelectului uman
ş
i constituie un dat al oric
ă
rui om normal, dardin p
ă
cate(!) este o însu
ş
ire prea pu
in dezvoltat
ă

ş
i prea pu
in folosit
ă
de oamenii obi
ş
nui
i. Eaconst
ă
din capacitatea de a extrage din context, de a vedea dincolo de suprafa
a imediat
ă

ş
i de aputea sesiza structura – scheletul ce sus
ine întreaga re
ea de detalii ale unei probleme generale.Pentru a fi un bun programator acest
ă
calitate trebuie s
ă
fie net amplificat
ă
fa
ă
de “normal” întrucît st
ă
la baza oric
ă
rui proces de analiz
ă

ş
i modelare a problemelor, cît
ş
i la baza procesului deproiectare a solu
iilor generale. Absen
a sau mai exact atrofierea acestei capacit
ă
i se constat
ă
practic la studen
i prin incapacitatea de a în
elege sau de a asimila explica
ii, demonstra
ii saumodele abstracte ( simplu spus, o acut
ă

ş
i permanent
ă
lips
ă
de chef
” atunci cînd sînt atinseanumite subiecte ce nu mai au contact direct cu realitatea concret
ă
, imediat
ă
ă
subiecteabstracte ). Metoda pentru a rec
ă
p
ă
ta sau a amplifica aceast
ă
capacitate este de a face cît mai desuz de ea, adic
ă
de a o exersa mereu (conform zicalei “
func

ia creeaz
ă
organul
”) într-un domeniuparticular, sus
inut de o motiva
ie personal
ă
puternic
ă
. Altfel spus, capacitatea noastr
ă
deabstractizare se va amplifica dac
ă
vom încerca g
ă
sirea de solu
ii la problemele dintr-unul din
domeniile noastre preferate
, pentru c
ă
rezolvarea acestora va fi automotivat
ă
, f
ă
cut
ă
“cu chef”
ş
iva prezenta o doz
ă
sporit
ă
de atractivitate.
4.

Logica
– este o alt
ă
calitate intrinsec
ă
a oric
ă
rui intelect s
ă
n
ă
tos. Ea este absolut necesar
ă
atîtpentru a putea folosi mecanismele mentale de deduc
ie
ş
i induc
ie logic
ă
, cît
ş
i pentru a putea în
elege u
ş
or, dar în acela
ş
i timp corect, cursul – firul ro
ş
u al unei demonstra
ii sau al unuira
ionament întins pe mai multe pagini. Asemenea tuturor calit
ă
ilor intrinseci existente în starepoten
ial
ă
, antrenarea
ş
i amplificarea acesteia se face prin exerci
iu repetat, prin folosirea ei în modcurent.Din p
ă
cate, doar prin rezolvarea de integrame nu se ajunge la amplificarea logicii…
5.

Inteligen

a
– este una din cele mai de pre
calit
ă
i intrinseci ale intelectului uman. În cîteva cuvinte,
ă
r
ă
a avea preten
ia de a da prin acestea o defini
ie, prin inteligen
ă
în
elegem capacitatea de a face(de a stabili) conexiuni sau leg
ă
turi noi
ş
i folositoare (din latinescul
inter-legere
) între idei,cuno
ş
tin
e sau informa
ii “aparent f
ă
r
ă
leg
ă
tur
ă
”. Fa
ă
de logic
ă
, pe care o consider
ă
m ca fiind o