C++ Limbaj de Programare Manual
C++ Limbaj de Programare Manual
Lucrare de curs
la disciplina Programare
MOR R $
drian
%STR T% Sergiu
Chi&inu '""'
Cuprins:
%( %ntoducere )))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))* %%( Sarcin ))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))) %%%( Schem logic a programului +schema)bloc,)))))))))))))))))))))))))))%.( Listing)ul programului))))))))))))))))))))))))))))))))))))))))))))))))))))'# .( /escrierea programului)))))))))))))))))))))))))))))))))))))))))))))))))))'0 .%( Re1ultatele obinute)))))))))))))))))))))))))))))))))))))))))))))))))))))))** .%%( Conclu1ii)))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))*.%%%( Lista literaturii utili1ate))))))))))))))))))))))))))))))))))))))))))))))))))*2
'
I. INTRODUCERE
Limba3ul 4C5 este un limba3 de programare care are o destinaie universal( El este utili1at 6n re1olvarea problemelor &tiini!ice &i tehnico)inginere&ti7 6n prelucrri de date7 precum &i 6n scrierea programelor de sistem( El a aparut 6n anul #80'( utorul principal al limba3ului este /ennis Ritchie de la !irma 9ELL L 9OR TOR%ES( Limba3ul C a aprut 6n legtura cu implementarea sistemului de operare U:%; pe minicalculatoarele !irmei /EC7 seria P/P)##( Sistemul de operare U:%;7 compilatorul C &i 6n esen toate aplicaiile sub sistemul U:%; sunt scrise 6n C 6ntr)o proporie mare( st!el7 din cele #*""" linii surs ale sistemului de operare U:%;7 numai <"" linii sunt scrise 6n limba3 de asamblare7 restul !iind scrise 6n C( /e asemenea7 6ns&i compilatorul C este scris 6n C 6n proporie de <"=( >n !elul acesta limba3ul C asigur o portabilitate bun pentru programele scrise 6n el( :oiunea de portabilitate nu este 6nc de!init riguros( >n mod intuitiv7 spunem c un program este portabil daca el poate !i trans!erat u&or de la un tip de calculator la altul( Portabilitatea mare a programelor scrise 6n C a condus la o rasp?ndire mare a limba3ului C &i a sistemului de operare U:%;( >n pre1ent limba3ul C este implementat &i sub alte sisteme de operare( Practic el este disponibil pe toate calculatoarele7 6ncep?nd cu microcalculatoarele personale &i termin?nd cu supercalculatoarele( Pe calculatoarele de tip %9M PC este implementat o variant a limba3ului C numit TUR9O C( ceast variant dispune de un mediu de programare menit s a3ute utili1atorul 6n scrierea &i punerea la punct a programelor( /e asemenea7 pe acelasi tip de calculatoare este implementat varianta @uicAC7 care dispune &i ea de un mediu de programare de1voltat( Limba3ul C conine structurile proprii programrii structurate( Succesul ei s)a dovedit din plin odat cu apariia limba3ului Pascal( /e asemenea7 limba3ul C dispune &i de !aciliti o!erite de limba3ele de asamblare7 cum sunt lucrul pe bii &i utili1area adreselor( El este considerat ca !iind un intermediar 6ntre limba3ele de nivel 6nalt &i cele de asamblare( Compilatorul C o!er programatorului o !leBibilitate mai mare 6n scrierea programelor dec?t alte limba3e de programare( El reali1ea1 un numr mai redus de controale la compilarea teBtului surs( /in aceast cau1 programarea 6n limba3ul C este mai eBpus la erori dec?t programarea 6n alte limba3e7 cum ar !i de eBemplu7 limba3ul Pascal(
III. SCHEMA-BLOC
#(Programul principalC
ST RT
*(COMPLET RE
9 GE%
<
#"
##
#'
#*
0( /HUI RE
#-
#2
#D
#0
#<
#8
8( R :J RE >: OR/%:E
LE 9ET%CH
'"
'#
print!+T^ ^ ^ ^T,PgotoBW+27QhereW+,Y#,P print!+T^ ^ ^ ^T,PgotoBW+27QhereW+,Y#,P print!+Tb[[[[[[[[[[[[[[[[[[[[[[[[c[[[[[[[[[[[[[[[[[ [[[[[c[[[[[[[[[[[[[[[[[[[[dT,P teBtcolor+#2,PgotoBW+27QhereW+,Y',P cprint!+TPentru iesire 6n meniu culegei LE:TERMT,P getch+,P V NNcompletarea ba1ei de date int completare+void, U int i7AP !loat a7bP11O#P clrscr+,P gotoBW+#27',P print!+TCulegeti cantitatea de 6nscrieri in ba1 T,P scan!+T=dT7eA,P !or+iO"PiLAPiYY, U clrscr+,P gotoBW+27',P print!+T%ndicati !amilia persoanei =d T7iY#,P scan!+T=sT7BRiS(nume,P gotoBW+27QhereW+,Y',P print!+T%ndicati prenumele persoanei =d T7iY#,P scan!+T=sT7BRiS(pr,P gotoBW+27QhereW+,Y',Pprint!+T%ndicati numarul paf( =d T7iY#,P scan!+T=!T7ea,P BRiS(nrOaP gotoBW+27QhereW+,Y',Pprint!+T%ndicati anul nafterii =d T7iY#,P scan!+T=!T7eb,P BRiS(anObP V teBtcolor+#2,PgotoBW+27QhereW+,Y',P cprint!+TPentru iesire in meniu culegeti LE:TERMT,P getch+,P return+A,P V NNgggggggggggggggg6nscrierea ba1ei in !isier void scrieg!isier+int A7 char nume!R'"S, U E%LE h!P int iP i!++!O!open+nume!7TQT,,OO:ULL, U clrscr+,PgotoBW+#27',PteBtcolor+#2,P cprint!+TEisierul nu poate !i deschisT,P goto eBitPV !or+iO"PiLAPiYY, !Qrite+eBRiS7si1eo!+BRiS,7#7!,P !close+!,P clrscr+,P teBtcolor+#2,P gotoBW+27QhereW+,Y',P cprint!+T9a1a de date a !ost inscrisa in !isierul =sT7nume!,P eBitC gotoBW+27QhereW+,Y#,P cprint!+TPentru iesire in meniu culegeti LE:TERMT,P getch+,P V NNgggggggggggggggggggcitirea ba1ei din !isier int citireg!isier+char nume!R'"S, U E%LE h!P int iP clrscr+,P i!++!O!open+nume!7TrT,,OO:ULL, U clrscr+,PgotoBW+#27',PteBtcolor+#2,P cprint!+TEisierul nu poate !i deschisT,P 1O#P goto eBitPV iO"P 1O"P Qhile+ !read+eBRiS7si1eo!+BRiS,7#7!,OO# , iYYP !close+!,P eBitC return+i,PV
'*
NNgggggggggggggggggggggggga!i&area ba1ei la monitor void a!isare +int A7 char nume!R'"S, U int iP i! +1OO#, Uclrscr+,P gotoBW+27',P teBtcolor+#2,P cprint! +T9a1a de date n)a !ost citita din !isierT,P goto eBitPV else U clrscr+,P gotoBW+27',P teBtcolor+#2,P cprint!+T9a1a de date citita din !isierul =s esteCT7nume!,P gotoBW+27QhereW+,Y',P teBtcolor+#2,P print!+TZ[[[[[[[[[[[[[[[[[[[[[[[[\[[[[[[[[[[[[[[[[[ [[[[[\[[[[[[[[[[[[[[[[[[[[]T,PgotoBW+27QhereW+,Y#,P print!+T^ :umele persoanei ^ :umirul pafaportului ^ nul nafterii ^T,PgotoBW+27QhereW+,Y#,P print!+T_[[[[[[[[[[[[[[[[[[[[[[[[`[[[[[[[[[[[[[[[[[ [[[[[`[[[[[[[[[[[[[[[[[[[[aT,PgotoBW+27QhereW+,Y#,P !or+iO"PiLAPiYY,U i! +!mod+i7',OO", UteBtbacAground+#',P teBtcolor+#2,PV else UteBtbacAground+9LUE,P teBtcolor+#",PV cprint!+T^=#'s)=##s^=''("!^='"("!^T7BRiS(nume7BRiS(pr7BRiS(nr7BRiS(an,P gotoBW+27QhereW+,Y#,PV teBtbacAground+9L Cj,P teBtcolor+#2,P print!+Tb[[[[[[[[[[[[[[[[[[[[[[[[c[[[[[[[[[[[[[[[[[ [[[[[c[[[[[[[[[[[[[[[[[[[[dT,P V eBitC gotoBW+27QhereW+,Y',P cprint!+TPentru iesire in meniu culegeti LE:TERMT,P getch+,PV NNgggggggggggggggggggggggadugaregggggggggggggggggggggg void add +char nume!R'"S, U struct pas sP !loat a7bP E%LE h!P int iP char @P i!++!O!open+nume!7TaT,,OO:ULL, U clrscr+,PgotoBW+27',PteBtcolor+#2,P cprint!+TEisierul nu poate !i deschisT,P goto eBitPV adC clrscr+,PgotoBW+27QhereW+,Y',PteBtcolor+#2,P cprint!+T/oriti sa adiugati inca o inscriere in ba1a de datek WNn T,P @Ogetch+,P i! ++@OOlWl,mm+@OOlnl,, U gotoBW+#"7QhereW+,Y',P teBtcolor+#2,P cprint!+T%ndicati !amilia persoanei T,P scan!+T=sT7s(nume,P gotoBW+#"7QhereW+,Y#,P cprint!+T%ndicati prenumele T,P scan!+T=sT7s(pr,P gotoBW+#"7QhereW+,Y#,P cprint!+T%ndicati nr( pasaportului T,Pscan!+T=!T7ea,P s(nrOaP gotoBW+#"7QhereW+,Y#,P cprint!+T%ndicati anul nafterii T,Pscan!+T=!T7eb,P s(anObP !O!open+nume!7TaT,P !Qrite+es7si1eo!+s,7#7!,P !close+!,P goto adPV eBitC gotoBW+27QhereW+,Y',P teBtcolor+#2,P
'-
cprint!+TPentru iesire in meniu culegeti LE:TERMT,P getch+,P V NNgggggg cautare dupa nume7 numarul pasaportului fi anul void cautare+int A7char cautR''S, U int i7gP char GR''S79R''SP!loat R7 :pcP i! +1OO#, Uclrscr+,P gotoBW+27',P teBtcolor+#2,P cprint! +T9a1a de date n)a !ost citita din !isierT,P goto eBitP V else U clrscr+,P gotoBW+27',P teBtcolor+#2,P i! +strcmp+caut7TnumeT,OO", UgO#P cprint!+TCulege !amilia persoanei T,P scan!+T=sT7G,PV i! +strcmp+caut7TpafaportT,OO", UgO'P cprint!+TCulege numirul pafaportului ciutatT,P scan!+T=!T7e:pc,PV i! +strcmp+caut7TanT,OO", UgO*P cprint!+TCulege anul ciutat T,P scan!+T=!T7et,P V V gotoBW+27QhereW+,Y#,P teBtcolor+#2,P cprint!+TRe1ultatul cautarii dupa =s esteCT7caut,PgotoBW+27QhereW+,Y#,P print!+TZ[[[[[[[[[[[[[[[[[[[[[[[[\[[[[[[[[[[[[[[[[[ [[[[[\[[[[[[[[[[[[[[[[[[[[]T,PgotoBW+27QhereW+,Y#,P print!+T^ :umele ) prenumele ^ :umirul pafaportului ^ nul nafterii ^T,PgotoBW+27QhereW+,Y#,P print!+T_[[[[[[[[[[[[[[[[[[[[[[[[`[[[[[[[[[[[[[[[[[ [[[[[`[[[[[[[[[[[[[[[[[[[[aT,PgotoBW+27QhereW+,Y#,P !or+iO"PiLAPiYY, U teBtcolor+#2,P i! +gOO#, U strcpW+97BRiS(nume,P i! + strstr+strlQr+9,7strlQr+G,,oO" , U cprint!+T^=#'sg=##s^=''("!^='"("!^T7BRiS(nume7BRiS(pr7BRiS(nr7BRiS(an,P gotoBW+27QhereW+,Y#,P VV i! +gOO', U ROBRiS(nrP i! +ROO:pc, U cprint!+T^=#'sg=##s^=''("!^='"("!^T7BRiS(nume7BRiS(pr7BRiS(nr7BRiS(an,P gotoBW+27QhereW+,Y#,P VV i! +gOO*, U ROBRiS(anP i! +tOOR, U cprint!+T^=#'sg=##s^=''("!^='"("!^T7BRiS(nume7BRiS(pr7BRiS(nr7BRiS(an,P gotoBW+27QhereW+,Y#,P VV V print!+Tb[[[[[[[[[[[[[[[[[[[[[[[[c[[[[[[[[[[[[[[[[ [[[[[[c[[[[[[[[[[[[[[[[[[[[dT,P
'2
eBitC gotoBW+27QhereW+,Y',P cprint!+TPentru iesire in meniu culegeti LE:TERMT,P getch+,P V NNgggggggggggggggggggg aran3are in ordine al!abetic void aran3are +int A, U int i73P !or +iO"PiLAPiYY, U !or +3OiY#P3LAP3YY, U i!+strcmpi+BRiS(nume7BR3S(nume,M", U strcpW+adi(nume7BRiS(nume,P strcpW+BRiS(nume7BR3S(nume,P strcpW+BR3S(nume7adi(nume,P V V V clrscr+,P gotoBW+27',PteBtcolor+#2,P cprint!+T9a1a de date a !ost citita din !isierul cCXXba1a(tBtT,PgotoBW+27*,P cprint!+T>nscrierile au !ost aran3ate in ordine al!abetic dup !amileT,P gotoBW+272,P cprint!+TPentru a vedea re1ultatul accesai punctul 8 din meniuT,P gotoBW+27D,P cprint!+TPentru iesire in meniu culegeti LE:TERMT,P getch+,P V NNfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff ffffffffff void main+void, U meniuC clrscr+,P teBtcolor+#2,P gotoBW+#27',P cprint!+T lege din meniuCT,P gotoBW+27QhereW+,Y',P cprint!+T#C !isarea conditiilor initialeT,P gotoBW+27QhereW+,Y#,P cprint!+T'C Completarea ba1ei de dateT,P gotoBW+27QhereW+,Y#,P cprint!+T si inscrierea ei in !isierul TCXX9%:XXba1a(tBtT,P gotoBW+27QhereW+,Y#,P cprint!+T*C Citirea ba1ei de date din !isierul TCXX9%:XXba1a(tBtT,P gotoBW+27QhereW+, Y#,P cprint!+T si a!isarea ei la monitorT,P gotoBW+27QhereW+,Y#,P cprint!+T-C diugarea unei inscrieri in ba1a de dateT,P gotoBW+27QhereW+,Y#,P cprint!+T2C Cutarea dup numrul pa&aportuluiT,P gotoBW+27QhereW+,Y#,P cprint!+TDC Cautarea dup numele persoaneiT,P gotoBW+27QhereW+,Y#,P cprint!+T0C Cautarea dup anul de na&tere a persoaneiT,P gotoBW+27QhereW+,Y#,P cprint!+T<C ran3area 6nscrierilor in ordine al!abetic dup !amiliiT,P gotoBW+27QhereW+,Y#,P cprint!+T $i 6nscrierea ba1ei de date in !i&ierul TCXX9%:XXba1anoua(tBtT,P gotoBW+27QhereW+,Y#,P cprint!+T8C !i&area ba1ei de date !inale la monitorT,P gotoBW+27QhereW+,Y#,P cprint!+T"C %e&ireT,P
'D
QOgetch+,P sQitch +Q, U case l#lC Uconditii+,P goto meniuPV case l'lC U i!+11OO#, Uclrscr+,Pprint!+T/orii sa reintroduceti kookookookkookk WNnT,P cOgetch+,P i! ++cOOlnl,mm+cOOl:l,, goto outP V nOcompletare+,P scrieg!isier+n7ba1a,PoutC goto meniuPV case l*lC UnOcitireg!isier+ba1a,P a!isare+n7ba1a,P goto meniuPV case l-lC Uadd+ba1a,P goto meniuPV case l2lC UnOcitireg!isier+ba1a,P cautare+n7TnumeT,P goto meniuPV case lDlC UnOcitireg!isier+ba1a,P cautare+n7Tpa&aportT,P goto meniuPV case l0lC UnOcitireg!isier+ba1a,P cautare+n7TanT,P goto meniuPV case l<lC U nOcitireg!isier+ba1a,Paran3are+n,P scrieg!isier+n7ba1anoua,P goto meniuPV case l8lC UnOcitireg!isier+ba1anoua,P a!isare+n7ba1anoua,P goto meniuPV case l"lC goto m"P de!ault C goto meniuPV m"C clrscr+,P gotoBW+#27',P teBtcolor+#2,P cprint!+T/oriti iesirea din program koo WNnT,P vOgetch+,P i! ++vOOlnl,mm+vOOl:l,, goto meniuP gotoBW+#27-,P teBtcolor+#2,P cprint!+TTastati LE:TERMT,P getch+,P V
V. Descrierea programului
'0
Programul dat const 6n prelucrarea unei ba1e de date( Pentru comoditate s)a creat un meniu operativ cu a3utorul cruia se poate trece din orice etap 6n alta7 ast!el u&ur?nd procesul de lucru a utili1atorului( Ca &i oricare alt program 6n acest limba37mai 6nt6i de toate este nevoie de a in) clude bibliotecile necesare pentru !unciile care vor !i !olosite C #(Lconio(hM 9iblioteca !unciilor de prelucrarea a in!ormaiei de intaregie&ire +getch+,7gotoBW+,7teBtcolor+,7clrscr+,, '(Lstdio(hM 9ibilioteca !unciilor de intraregie&ire standard +print!+,Pscan!+,P!open+,&(a(, *(Lstdlib(hM 9ibioteca !unciilor utilare +randomi1e+,P, /up declararea bibiotecilor s)au declarat variabile ce vor !i !olosite pe parcursul programului(.ariabilele repre1int spaii 6n memoria calculatorului av6nd acela&i rol 6n timp(Limba3ul CYY recunoa&te 2 tipuri de variabileC CaracterC char (rang -12 ..!12"# >ntreg C in$ (rang )*'0D<((Y*'0D0# Tip de variabil nepreci1at sau ineBistentC%&i' Real 6n virgul mobil 6n simpl preci1ieC()&a$ (1*+)*0((1*pY*0# Real 6n virgul mobil 6n dubl preci1ieC'&u,)-(1*+)*"<((1*pY*"<# Modul de memorare a acestor tipuri de date depinde de tipul calculatorului &i de varianta limba3ului CYY( Moduri de implementareC Si.n-'+cu semn, Unsi.n-'+!r semn, L&n.+lung, Sh&r$+scurt, S)au !olosit variabile globale deoarece ele sunt recunoscute pe parcursul 6ntegului program( Orice program 6n C se compilea1 de la !uncia principal /ain(# ( Euncia main+, este aceea ctre care sistemul de operare trans!er controlul atunci c?nd se lansea1 6n eBecuie programul(Parametrul void 6naitea !unciei arat c !un) cia nu 6ntoarce valori7 void 6ntre parante1e arat c !uncia nu !olose&te parameti( >ntregul program e construit pe subprograme +!uncii, !iecare av6nd numele su &i rol 6n program( Prima !uncie ce se eBcut dup lansarea programului este /-nu(# care duce apel la desenarea meniului( ceast !uncie cur ecranul +cu c)rscr(#P, apoi atribuie o cu) loare +#2 alb, teBtului care va aprea pe ecran+$-0$c&)&r(11,P,7dup aceasta cu a3u) torul !unciei de po1iionare a cursorului +.&$&02(,P, a&ea1 acesta pe po1iia +#2(', Urmea1 !uncia de a!i&are a in!ormaiei cu !omat &i culoare cprin$((# Prototipul !uncieiC in$ cprin$(( c&ns$ char 3(&r/a$ 4ar.u/-n$4...#5
D-scri-r-a (unc6ii)&r
'<
>n programul dat se conin di!erite !uncii destinate prelucrrii &irurilor de ca) ractere( ceste !uncii sunt standarte7 adic declarate cu prototip 6ntr)o bibliotec spe) cial( Toate !unciile sunt declarate 6n bibliotecaC Lstring(hM( >n timpul re1olvrii acestei lucrri ne)am 6nt?lnit cu situaii c?nd era necesar prelucrarea &i pstrarea unei in!ormaii mai compleBe care coninea date de di!erite ti) puri( Iruparea acestor date 6ntr)o variabil compleB a !ost posibil datorit tipului de date Structur( /e asemenea trebuie de menionat !aptul c un rol important 6n aceast lucrare au avut)o !unciile &i !i&ierele 6n C( Eunciile le)am !olosit 6n scopul evidenierii unor sarcini concrete &i 6ncapsularea lor 6n module aparte7 pentru a preveni probabilitatea de apariie a erorilor at?t logice c?t &i sintactice( /eci acum voi 6ncerca pe scurt s descriu programul pe care l)am reali1atC #( E%S RE gCO:/%F%%LOR %:%F% LE(
Mai 6nt?i am creat un meniu cu a3utorul instruciunii 7&$&: Sintaxa: .&$& -$ich-$aP unde eticheta este un identi!icator C ata&at unei instruciuni( O etichet const dintr)un nume &i dou puncte( %nstruciunea de salt necondiionat transmite controlul eBecuiei programului la instruciunea marcat cu eticheta +6n ca1ul meu eticheta esteC meniu,( >n continuare cu a3utorul !unciei de intrare 6n C C .-$ch(# Sintaxa:%ar8.-$ch(# q unde var este numele variabilei creia 6i va !i atribuit caracterul cules de la tastatur +6n ca1ul meu var este caracterul r,( Ca s putem veri!ica condiiile din meniu am !olosit instruciunea de selectare S9i$ch: Sintaxa: s9i$ch(-0pr-si-# :cas- -0pr-si- c&ns$1: ins$ruc$iun-a 15,r-a;5 ... cas- -0pr-si- c&ns$N:ins$ruc$iun-a N5,ra;5 '-(au)$:ins$ruc$iun-5 < tunci c?nd un program 6nt?lne&te o instruciune s9i$ch7 testea1 condiia asociat +eBpresie,( Pe ba1a valorii 6ntregi a acesteia7 el va trans!era eBecuia ctre blocul cas-7 etichetat cu acea -0pr-si- c&ns$ corespun1toare( >n ca1ul c?nd nici o -0pr-si- c&ns$ nu este egal cu -0pr-sia dup sQitch7 se 6ndepline&te instruciunea din ramura '-(au)$( >n continuare utili1atorului i se propune s aleag orice punct din meniu( C?nd alegem punctul 41= atunci are loc aplul la !unciaC C&n'i6ii7 deci de aici se 6ncepe lucrul cu funciile: Sintaxa : $ip>( nu/->-( ()is$a para/-$ri# : '-c)arar-a %aria,i)-i5 &p-ra$&ri5< undeC tip)! ) tipul !unciei numit tipul valorii returnate P nume)! q numele !uncieiP
'8
lista parametri q conine tipul &i numele !iecrui parametru7 6n ca1ul nostru c?nd compilatorul va 6nt?lni !uncia 4c&n'i6ii5 6n acel moment el veri!ic dac corespund tipul valorii returnate7 cantitatea &i po1iia parametrilor !unciei( /up aceea cu a3utorul instruciunii Ioto ie&im iar&i 6n meniu( '( a, COMPLET RE 9 GE% /E / TEC /ac utili1atorul testea1 tasta 4'5 atunci are loc apelul la !uncia cu tip 4Com) pletare5C Sintaxa: $ip>( nu/->((Lis$a>para/-$ri#5 Unde tipg! q tipul !unciei &i tipul valorii returnate P :umeg! q numele !unciei( Eunciile 6n CYY 6ntorc valori cu a3utorul operatorului R-$urn7 lipsa acestui operator 6n cadrul !unciei cu tip duce la eroare( ici cu a3utorul lui Return7 se !ace atribuirea valorii din variabila local !unciei 5completare5 j 6n valiabila : din !uncia main( '( b,>:SCR%ERE E% >: E%$%ERUL 9 G (T;TC Tot 6n acest punct se cere &i 6nscrierea ba1ei de date 6n !i&ierul ba1a(tBt( >n continuare se !ace apel tot la o !uncie ?scri->(i@i-r5 care conine parametri7 dar nu 6ntoarce valori( Sintaxa: $ip-( nu/--A 5 Unde tip)p q tipul parametruluiP :ume)P q numele parametrului( /ac !uncia conine c?iva parametri ei vor !i descri&i 6mpreun 6ntre s+,5 &i vor !i desprii prin s75( Aara/-$ru ) in!ormaia iniial transmis din program 6n !uncie la momentul apelului acestuia( >n ca1ul nostru urmea1 instruciunea de apel la !uncie7 6n acest ca1 se e!ectuia1 controlul corespunderii parametrilor actuali &i parametrilor !ormali dup cantitate7 po1iie &i tip( Aara/-$ru ac$ua) ) variabila transmis 6n !uncie 6n tipul apelrii acesteia +6n ca1ul nostru suntC n &i ba1a, ( Aara/-$ru (&r/a) ) variabila descris ca parametru 6n timpul declarrii !unciei &i !olosite 6n corpul !unciei la calculele necesare +6n ca1ul nostru suntC j &i nume!,( >n continuare pentru a 6nscrie ba1a 6n !i&ier trebuie s o !acem cu a3utorul indicatorilor la !i&ierC Declararea: BILE 3( 5 Unde E%LE q cuv?ntul cheie re1ervat pentru !i&ierP ! q numele indicatorului la !i&ier( Mai 6nt?i de toate trebuie s deschidem !i&ierul7 aceasta se !ace cu a3utorul !unciei (&p-nC Sintaxa: (8(&p-n(?nu/--(=4 ?/&'=#5 Unde ! q numele indicatorului la !i&ierP :ume)! q numele !i&ierului pe discP Mod) modul de deschidere a !i&ierului(
*"
/eoarece din cele trei modaliti de acces de deschidere a !i&ierului am ales cea de a 6nscrie 7 atunci scriem 6n lo de smod5 q sQ5( >n ca1 c !i&ierul nu eBist se va returna valoare :ULL( Pentru a scrie date 6ntr)un !i&ier deschis vom utili1a !uncia (9ri$-7 care are urmtorul prototip 6n biblioteca s$'i&.h: Sintaxa: (9ri$-(CNu/-4 siD-&( (s$ruc$Nu/-#414pA&in$-rBi@i-r#. /up ce va !i ba1a 6nscris !i&ierul trebuie 6nchis7 aceasta se !ace cu a3utorul !unciei ()&s-: Sintaxa: (c)&s-((# Unde !) numele indicatorului la !i&ier *( a, C%T%RE 9 GE% /E / TE /%: E%$%ERUL 9 G (T;TC >n continuare dac utili1atorul testea1 s*57 programul apelea1 la o !uncie cu tip sci$ir--(i@i-r5. /e asemenea se deschide 6nt?i !i&ierul7 iar pentru a !i posibil citirea !olosim !uncia (r-a' C Sintaxa: (r-a'(CNu/-4 siD-&( s$ruc$(Nu/-#4 14pA&in$-rBi@i-r# Se !olose&te operatorul siD-&( deoarece acesta asigur c este citit numrul corect de octei( ici am mai !olosit instruciunea ciclic Ehi)- 7 care se !olose&te 6n ca1ul c?nd nu)i cunoscut numrul de repetri &i este necesar ca ciclul s !ie 6ndeplinit de " sau mai multe ori( Sintaxa:Ehi)-(-0pr-si-# ins$ruc6iun-5 Modul de lucru: la 6nceput este controlat eBpresia dac este di!erit de " sau TRUE apoi se 6ndepline&te instruciunea &i continu p?n c?nd eBpresia este egal cu "( *( b, E%$ RE E% L MO:%TORC
ici am !olosit (/&'(042# ) care 6ntoarce restul de la 6mprire a dou numere( >n ca1ul nostru vede dac este par sau nu numrul( >n rest am !olosit acelea&i !uncii care au !ost descrise mai sus( -( /HUI RE U:E% >:SCR%ER%g
/up eBecutarea ci!rei s-5 din meniu programul apelea1 la !uncia cu parametri ?%&i' a''= 7 care permite adugarea unei noi 6nscrieri( ici am recurs la structura pasC Sintaxa: S$ruc$ pas : Tip1 nu/-15 Tip 2 nu/-25 ... .... ..... .... ... Tip N nu/-N5 < Unde pas q tip 6nregistrareP :ume: q c?mpul structurii(
*#
>n ca1ul nostru a'i este variabil de tip structur( 2(D(0( CHUTHR%LE /UPHC numrul pa&aportului7 numele persoanei &i anul de na&tereC >n toate aceste puncte am !olosit acelea&i !uncii pe care le)am descris mai sus(
<( R :J RE >:SCR%ER%LOR >: OR/%:E LE 9ET%CHC Pentru aran3area 6nscrierilor am !olosit instruciunea ciclic BOR: Caracteristici: :umrul de repetri sunt cunoscute de la 6nceputul luiP Conducerea ciclului este e!ectuat de o variabil de tip 6ntreg numit parametrul ciclului7 care 6n acest proces prime&te valori consecutive de la valoarea iniial la valoarea !inal( Sintaxa: E0pr 1 F de iniiali1are a parametruluiP E0pr 2 q de controlP E0pr G q de incrementare sau de corecie( Se continu p?n -0pr 2 devine " sau Eals( 8( E%$ RE 9 GE% /E / TE E%: LE L MO:%TORC >n acest punct se !olose&te !uncia *7 numai c are loc citirea &i a!i&area ba1ei din !i&ierul ,aDan&uH.$0$. "( %E$%REC Pentru a putea ie&i din program7 utili1atorul trebuie s taste1e tasta Enter( /ESCR%ERE 9%9%L%OTEC%LORC
s$'i&.h
prin$( +control, par1, par2, ..., parn , ) !uncia pentru a reali1a ie&iri cu !ormat control ) parametrul ce conineC ) teBte de scrisP ) speci!icatori de !ormat pentru datele care se scriu par n ) Sunt eBpresii( .alorile lor se scriu con!orm speci!icatorilor de !ormat pre1ent 6n parametrul de control (prin$( (fis, control, par1, par2, ..., par n) ) !uncia pentru scriere cu !ormat 6ntr)un !i&ier scan( +control, par1, par2, ..., par n, ) !uncia pentru citirea datelor sub controlul cu !ormat (is8 (&p-n +nf , mod, ) !uncia pentru deschiderea unui !i&ier fis ) un pointer spre tipul E%LE
*'
nf ) speci!icatorul !i&ierului care se deschide mod ) un sir de caractere care de!ine&te modul 6n care se deschide !i&ierul (c)&s- +E%LE hfis , ) !uncia pentru 6nchiderea !i&ierului
c&ni&.h
.-$ch ( # ) !uncia pentru citirea unui caracter !ar al a!i&a la ecran cprin$( +control, par1, par2, ..., par n , ) !uncia pentru scriere color cu !ormat .&$&02 +int coloana, int linie, ) !uncia pentru po1iionarea cursorului la coordonatele indicate coloana ) coordonata B a ecranului linie ) coordonata W a ecranului c)rscr ( # ) !uncia penru &tergerea ecranului $-0$c&)&r +int culoarea, ) !uncia pentru setarea culorii caracterului culoarea ) valoare cuprins intre R"7#2S $-0$,ac;.r&un' +int culoarea, ) !uncia pentru setarea culorii !ondului
s$rin..h
char 3s$rcp2+char *dest7 const char *sursa, ) !uncia pentru copierea &irului sursa 6n &irul dest.
IIIII '*D-2*' IIIII #80< IIIII IIIII D-<D02* IIIII #088 IIIII IIIII #02<"*- IIIII #8<" IIIII
Tiron q leBandru IIIII #808-*' IIIII #82< IIIII Until q Svetlana .oloc q Sergiu Gubcu q Cornel IIIII 2*"0"2- IIIII #888 IIIII IIIII -"-*""2 IIIII #8<' IIIII IIIII "*D-0<D IIIII '""" IIIII
JII. C&nc)uDii
*-
>n !ine menionm c caracteristicile distinctive ale limba3ului 4C5suntC Portabilitatea maBim Strucrurarea Posibilitatea e!ecturii operaiilor la nivelul ma&inii7 cu pstrarea trsturilor unui limba3 evoluat >n urma e!ecturii acestei lucrri am cptat eBperiena de a percepe lucrul cu ba1a de date 6n 4C5 ( /e asemenea am depistat modul de lucru cu di!erite !uncii ale programului &i ne)am convins c acest limba3 are a mare e!icacitate de programare( Mi)a plcut modalitatea de aran3are a ba1ei de date la monitor &i !aptul c aici poi s aran3e1i totul dup placul tu(
Bi,)i&.ra(i-:
*2
Catrina Octavian 4Turbo CYY5 9ucure&ti #88 Constantin ( Sevici 4Programarea 6n C5 9ucure&ti #882 Clint ticAs ) 4Utili1area C57 Teora 7 9ucure&ti #882
*D