Ministerul Educatiei si Tineretului Republicii Moldova
Universitatea Tehnica a Moldovei
Facultatea Calculatoare, Informatica si Microelectronica Raport Catedra Calculatoare Lucrare de laborator 1!" A efectuat: st# $r# C1"1 Cotofana %alentin A verificat: dr#,conf#univ Marin &tefan
Chsnau 2013 Tema:1. Cartea de vzt a studentuu nformatcan . 2. Programarea probemeor smpe n baza agortmor cu structur ramfcate ccce. Scopul lucrarii: aprecierea 'i eviden(ierea nivelului de cuno'tin(e a fiec)rui student *n domeniul informaticii, acumulate *n liceu, *n mod deosebit al$oritmi+area, pentru elaborarea sau rectificarea unui plan individual de studiu la lucr)rile practice 'i lucr)rile de laborator pe parcursul semestrului# ,e studiat modul de reali+are a dialo$ului utili+atorului *n &- 'i mediului inte$rat fie Turbo C.C//, fie 0orland C.C// # Familiari+area cu tehnicile de lucru *n mediul inte$rat fie Turbo C.C//, fie 0orland C.C// ## 1profundarea cuno'tin(elor *n implementarea limba2ului C la procesarea elementelor introductive, ramificate 'i ciclice *n pro$ramare, eviden(iind specificul implement)rii constantelor, e3presiilor 'i instruc(iunilor de citire 'i afi'are, ramificative 'i ciclice cu if 'i case# 4erfec(ionarea tehnicilor de derulare, verificare 'i testare a pro$ramelor *n C# II. Notiuni teoretice 1. Consdera[ teoretce nsute 1.1. Rspunsur a punctee prncpae dn ndrumar .De exempu: 1.1 Cunotn[e n domenu cacuatoruu: Componentee fzce ae unu cacuator(hardware): Paca de baz : Aceasta repreznt cea ma mportant component afat n carcas ; ma este denumt paca prncpa. Pe PLACA DE BAZA se af apcate urmtoaree componente : 1. MICROPROCESORUL Prncpaee caracterstc ae unu procesor sunt: canttatea de memore ce poate f ctt a un moment dat vteza de execu[e a opera[or ungmea cuvntuu care repreznt nstruc[unea 2 . HARD DISK UL Repreznt untatea de stocare a dateor n cacuator. 3 . PLACA VIDEO Face posb afarea magnor pe montor. PLACA VIDEO este nzestrat cu mcroprocesor propru numt acceerator grafc cu memore propre numt memore vdeo. 4 .MEMORIA INTERNA Memora ntern este ocu n care sunt aduse programee datee pentru a f preucrate de procesor. Cu ct memora ntern este ma mare cu att programee se execut ma rapd. 5. UNITATEA DE DISKETA Servete a ctrea / screrea dateor pe dscur de capact[ ma mc numte dskete. 6 .UNITATEA DE CD ROM Este ntnt pe cacuatoaree moderne, perm[nd ctrea dscuror optce. Dspoztve externe : 1. Montoru este un suport de ere pe care cacuatoru scre rezutatee preucrror, mesa|ee pentru utzator nforma[e despre starea sstemuu. 2. Tastatura este un dspoztv de ntrare care permte ntroducerea nforma[e n form textua. 3. Mouse-u este un dspoztv de ntrare care permte ntroducerea nforma[e n form grafc. 4. Imprmanta este un dspoztv de ere care permte tprrea nforma[e pe hrte. Cunotn[e dn domenu software : Ssteme de operare : GNU/Lnux(RedHat Lnux, Fedora(Core), Ubuntu, Kubuntu, ASPLnux, Knoppx, Suse Lnux,Lnux From Scratch), FreeBSD, OpenBSD, NetBSD, PCBSD. Apca[ cunoscute : OpenOffce.org, AbWord, Gnumerc Spreadsheet, GIMP Image Edtor, Bender, Ocad,Inkscape Vector Iustrator. Lmba|e de programare : BASH, Assember(sntaxa AT&T), C, Pasca(Pasca standard,Turbo Pasca, Ob|ect Pasca), PHP, HTML, |avaScrpt, |ava(+SWT), UML. Medu de programare : An|uta, Ecpse SDK, Ouanta+,V/Vm, Emacs. Instrumente a|uttoare : CVS, Subverson, Make, Gmake, Autoconf, AutoMake, |avadoc, |unt, Ant, SSH, Rsync, GRUB, Lo. III. Noiuni generale 1.1 Etapa de implimentare a codului in C/C++ S detaem n contnuare etapa de mpementare. Dup anaza probeme stabrea agortmuu, acesta trebue tradus (mpementat) ntr-un mba| de programare. Screrea (edtarea) programuu surs. Programee surs sunt fere text care con[n nstruc[un (cu sntactca semantca propr mba|uu utzat). Programu (feru) surs este creat cu a|utoru unu edtor de texte va f savat pe dsc (programee surs C prmesc, de obce, extensa .c, ar cee C++, extensa .cpp). Pentru a putea f executat, programu surs trebue compat nkedtat. Comparea Execu[a Lansarea n execu[e const n ncrcarea programuu executab n memore startarea execu[e sae. 1.2. Mediul integrat de dezvoltare Turbo C++ ( BorandC++ ) permte edtarea, comparea, executa s depanarea programeor scrse n mba|ee C s C+ +. Medu contne un edtor, un compator, un edtor de egatur, un depanator. Descrerea genera ae compatoruu-transatoruu(CT) CT este compus dn tre pr[ prncpae : 1. Bara de menur 2. Edtoru text 3. Bara de statut Lansarea in executie. Turbo C++ este un uttar DOS, nu Wndows.Poate f ansat dntr-o fereastra DOS ( MS-DOS Prompt ): >|cae| tc <Enter> , cae = cataogu ( subdrectoru ) n care se afa fseru executab tc.exe. ex: >C:\TCPP\BIN\tc Lansarea trebue facuta astfe ncat utzatoru sa aba drept de screre n drectoru curent - deoarece se creaza fsere temporare ( de swap ). Pentru smpfcarea ansar, se creaza un Shortcut pe Desktop catre compator. Pentru ca medu sa apara ntr-o fereastra Wndows - At/Enter. Informatii autatoare se obtn prn urmatoaree combnat de taste ( hot keys ) - vez menu !elp: - F1 nformat a|utatoare - At+F1 fereastra de nformat anteroara - Ctr+F1 nformat despre obectu ( cuvantu ) pe care este poztonat cursoru - Esc nchde fereastra a|utatoare. "erea#tra principala a meduu de dezvotare cuprnde: - Menu prncpa ( bara de menur de sus ) - se seecteaza prn F10 sau combnata At+Ltera de seecte a unu submenu - Lna de refernte rapde - apare n partea de |os a ecranuu s preznta tastee functonae cee ma utzate s semnfcata or - Spatu pentru ferestre ( zona de ucru ) - n care utzatoru s poate deschde, ampasa s dmensona festree n care ucreaza: - Fereastra de edtare, n care se va ntroduce codu sursa a programuu. Un program poate f format dn ma mute fsere, caz n care se poate deschde cate o fereasta de edtare pentru fecare fser. In afara de ferestree de edtare, pot f deschse s - Fereastra de mesa|e, n care se afseaza mesa|e de eroare sau atentonare - Fereastra de output, n care se poate vedea esrea programuu ( rezutatee tparte de program ) - Fereastra de watch n care utzatoru poate urmar vaoarea unor varabe n tmpu execute programuu, ucru foarte ut a depanare - Fereastra cu vaore regstror Pentru ucru cu ferestree se utzeaza tastee: - F6 - trecerea ( actvarea ) n urmatoarea fereastra - F5 - pentru operata de zoom asupra ferestre curente - At+nr- actvarea ferestre cu numaru preczat - At+F3 - nchderea ferestre curente. Meniul principal:"ile$Edit$%earc&$Run$Compile$'ebug$(roect$)ption#$*indo+$!el p &electarea unui meniu se poate face prin5 - F10, tastee <-,-> s tasta ENTER - At+prma tera a menuu dort (ex: At+O = Optons) - prn tasta unversaa corespunzatoare (unee optun dn menur au taste unversae atasate (Shortcuts), prn apasarea carora se actveaza respectva optune ndferent de fereastra actva s menu actv; - ex: At+X=esrea dn medu. Pentru a n[eege cum func[oneaz softu dat , vom examna ma nt fecare parte ae CT aparte: ,. -ara de meniuri ncude n sne aa menur ca : "ile ( At+F ) n acest menu sunt ncuse func[e de operare cu feru preucrat . Adc feru n care se con[ne sursa programuu . Datort acestu menu avem posbtate s savm , deschdem sau nsu s creem un document nou , n care pe parcurs vom nscrre programu prncpa. - Opereaza cu fsere s drectoare, permte esrea n MS-DOS s esrea dn medu: - Open ( F3 ) - permte seectarea unu fser de pe dsc s ncarcarea sa n edtor - New - deschde o noua fereastra de edtare ( goaa ), avnd mpct numee NONAMExx.CPP - Run ( Ctr+F9 ) - executa programu. Daca sursa a fost modfcata de a utma compare, se reazeaza automat nta comparea s nk-edtarea sa. - Program Reset ( Ctr+F2 ) - nchee sesunea de depanare curenta. Se dezaoca memora aocata programuu s se nchd toate fseree utzate. - Go to cursor ( F4 ) - executa programu pana a na pe care este poztonat cursoru, fara a stab punct de ntrerupere permanent ( breakpont ). - Trace Into ( F7 ) - executa nstructunea urmatoare dn program. Daca aceasta contne un ape de functe, se va executa apeu, respectv bara de execute se muta a nceputu functe respectve. Aceasta trasare se poate reaza doar daca functa a fost compata cu optunea Optons/Comper/Code Generaton/Ob| debug nformaton pe ON s codu e sursa e dsponb. - Step Over ( F8 ) - executa nstructunea urmatoare dn program, fara trasare n nteroru functor. - Arguments - permte trmterea catre functa prncpaa a programuu, man, a unor argumente de ntrare. Compile menu dat preznt un set de comande ce permt detectarea greeor sntactce semantce ae programuu curent. Ac sunt ataate aa comenz ca ,nk, bud compe". Compeaza s creaza fseru executab: - Compe ( At+F9 ) - compeaza sursa C crend un fser obect, a caru nume este obtnut dn numee surse C, a care se adauga extensa .ob| - Make ( F9 ) - creaza fseru executab efectuand comparea s nkedtarea fsereor actuazate. Numee se obtne, n ordne descrescatoare a prortat, dn numee fseruu proect, dn numee surse C sau dn numee utmuu fser ncarcat. - Lnk - reazeaza edtarea de egatur, crend fseru executab. - Bud a - creaza fseru executab, compand s egand necondtonat toate fseree proectuu. - Remove Messages - sterge fereastra de mesa|e. Debug 6 datorit) acestui meniu apar a'a posibilit)(i ca ata'area breac7 pointerilor 8breac7point9, e3aminarea valorilor variabilelor pe parcursul e3ecut)rii pro$ramului 8inspect###9 'i a altor opera(ii de tipul dat # Controlea+a sesiunea de depanare a pro$ramului e3ecutabil5 - Inspect ( At+F4 ) - permte urmarrea vaor unor varabe - Evauate/modfy ( Ctr+F4 ) - permte evauarea s, optona, modfcarea vaor une expres. Exsta dfert specfcator de format pentru afsare - Ca stack ( Ctr+F3 ) - afseaza ntr-o fereastra sub forma de menu cu bara de seecte, sta functor apeate pana n punctu curent de execute a programuu. Permte vzuazarea ne executate curent dntr-o anumta functe. - Watches - permte defnrea unor varabe ae caror vaor se doresc a f urmarte n tmpu execute ( depanar ). Acest menu are un submenu, care ofer optune de adaugare, stergere, edtare a unor watch-ur - Togge breakpont - Breakpont - permt defnrea unor puncte de ntrerupere n program, a care executa se va opr automat. Daca utzatoru permte reuarea execute programuu, aceasta va contnua pana a urmatoru punct de ntrerupere. (roect prn menu dat putem efectua opera[e de nchdere , deschdere , adugare sau tergere unor obecte ae nsu proectuu preucrat. )ption# menu dat ncude n sne op[unee sstematce ae softuu dat. *indo+ menu dat preznt comenze de preucrare ae ferestre de redactare. !elp acest menu ncude n sne , nforma[a despre productoru acestu soft func[e (cu exempe de nterpretarea acestora n cadru eaborr ae programuu ) ae mba|uu C/C++ . -. (latforma de editare ncude n sne panou (fereastra) de redactare ae surse programuu . (anoul de ediatare are posbtate de a schmba dmensnee sae. Datort aceste opera[ avem posbtate s examnm nforma[a a panouror ce se af n spatee panouu preucrat fr a se adresa a acea nsu. Patforma dat ma are o prortate de afare ae panoului de compilare. Aceast fereastr ne d posbtate dup efectuarea opera[e de compare nk- ure ae coduu programe , s afeze greee sntactce sau semantce ae surse programuu preucrat. C. -ara de %tatut n bara dat se afeaz nforma[a despre butoanee ferbn[ ae comenzor casce ae compatoru dat. Pentru a smpfca ucru utzatoruu asupra softuu dat , ac apare posbtatea de a se foos de combna[e de taste pentru efectuarea unor comenz , fr a se adresa a menur corespondente. De exempu : Pentru a efectua opera[a de compare tastm At+F9 sau pentru a se adresa a bara de menur tastm butonu F10. Fg1. Fereastra prncpa ae copatoruu- transatoruu Borand C . .arianta/10 Ra#pun#uri la 1ntreb2rile de la autocontrol: 2.1. Verificai dac sunt corecte constatele ntregi? Pentru restul constantelor determinai tipul i valorile 123 , 1E6 , 123456789LU " -5 , 0XFUL " 0 , 058 " \x7 , 0X-1AD " \122 , 00123 " 0xffffffL " 01A " -x " x , aU " 0731UL " \n , +0xaf " 0X0 , 2.2. Verificai dac sunt corecte constatele reale? Pentru restul constantelor determinai tipul i valorile 1.71 , 1E-6 , 0.314159E1F " .005 , 0051E-04 " 5.E+2 " 0e0 " 0x1A1.5 " 05.5 " 0 , 0X1E6 0F " 1234.56789L " 1.0E-10D " 3.1415U " 1e-2f " -12.3E-6 +10e6 , 123456L " E-6 , 2.!. Verificai dac sunt corecte expresiile? "eterminai tipul i valorile. nt a, b, c, d, e; a = 2; b = 13; c = 7; d = 19; e = -4; b / a / c , foat d / a % c , ntreg c % d-e, ntreg -e % a + b / a -5+5 " b % e ,ntreg 7-d%+(3-a) " b % - e c " 9 / c - - 20 / d " 2.#. Verificai dac sunt corecte exerciiile? "eterminai tipul i valorile nt a, c; c = 5; a). c ++ ; A ntreg b). a = 2 c++ ; A (a=10) c). c += 1; A ntreg (c=12) d). a = c++ + c; A (a=10) a = 2 c; (a=12) ntreg a = c + c; e). ++c; A (6) f). a = ++ c + c; A (c=12) g). a = c += 1 + c; F h). a = (c+=1)+c; a = c + c; F 2.#. Verificai dac sunt corecte exerciiile? "eterminai tipul i valorile. nt a, c; c = 5; a). -- c ; A (4) b). a = -- c / 2; A(2) c). c -= 1; (4) d). a = c -- / 2; a = c / 2; a = c % 2; A(0) e). a = c -= 1/2;F f). a = (c = c - 1)/2 ;F g). a = (c -= 1)/2; F h). a=(c-= 1)/2.0; F 2.$. Verificai dac sunt corecte exerciiile? "eterminai tipul i valorile nt a, b, c; a = 2; b = 6; c = 3; - - - a (2) -- - a F b-- - a (2) a += a ++ (5) ++ b / a ++ --c (3) a --- b (1) - a-- -b(1) a ++ = b F a = a ++(3) b+ + / ++a c (3) - --a (1) a- --c(2) a ++ = a ++ F a = b (6) a = ( b + 1 ) ++ (8) 2.%. Verificai dac sunt corecte exerciiile? "eterminai tipul i valorile nt , |, k, m; char c, d; = 1; | = 2; k = -7; m = 0; c = w; d = a+1 < c " m = - - 5 | >= k+1 , + |++ + k = = -2| , m = 3 < | < 5 " m = 3 = = | < 5 " m = = c = w " m = c != 87 " m = c = ! 87 " m = ! c = 87 " m = !c+87 , ! m = =c + 87 " m ! = c + 87 , 2.&. "e scris expresiile ec'ivalente n () ns s nu conin operatorul * ! ( a>b ) (a<b) ! ( 2a == b+4 ) (2*a<>b+4) ! ( a<b && c<d ) (a>b && c>d) ! ( a<2 || a>5) (a>2||a<5) ! ( a<1 || b<2 && c<3 ) (a>1||b>2 && c>3) 2.1+. (e se va afia n re,ultatul efecturii urmtorului fragment de program? . . . #ncude<stdo.h> #ncude<cono.h> #ncude<math.h> man() { short s; nt ; ong ng; foat f; doube d; s = = ng = f = d = 100/3; prntf("s = %hd = %d ng = %d f = %f d = %f\n", s, , ng, f, d); d = f = ng = = s =100/3; prntf("s = %hd = %d ng = %d f = %f d = %f\n", s, , ng, f, d); s = = ng = f = d = 1000000/3; prntf("s = %hd = %d ng = %d f = %f d = %f\n", s, , ng, f, d); d = f = ng = = s =1000000/3; prntf("s = %hd = %d ng = %d f = %f d = %f\n", s, , ng, f, d); ng = s = f = = d =100/3; prntf("s = %hd = %d ng = %d f = %f d = %f\n", s, , ng, f, d); f = s = d = ng = = (doube)100/3; prntf("s = %hd = %d ng = %d f = %f d = %f\n", s, , ng, f, d); s = = ng = f = d = 100/(doube)3; prntf("s = %hd = %d ng = %d f = %f d = %f\n", s, , ng, f, d); f = s = d = ng = = (doube)100/3; prntf("s = %hd = %d ng = %d f = %f d = %f\n", s, , ng, f, d); = s = ng = d = f = (doube)(100/3); prntf("s = %hd = %d ng = %d f = %f d = %f\n", s, , ng, f, d); getch(); } 2.11. (e se va afia n re,ultatul efecturii urmtorului fragment de program? #ncude<stdo.h> #ncude<cono.h> vod man() { doube d = 3.2, x; nt = 2, y; crscr(); x = ( y = d / ) * 2; prntf ("x = %f ;y = %d\n", x, y); x = ( y = d / ) * 2; prntf ("x = %d ;y = %f\n", x, y); y = ( x = d / ) * 2; prntf ("x = %f ;y = %d\n", x, y); y = d * ( x = 2.5 / d); prntf ("x = %f; y = %d\n", x, y); x = d * ( y = ( (nt)2.9 + 1.1)) / d; prntf ("x = %d y = %f\n", x, y); getch(); } 1#1,e elaborat al$oritmul pentru pro$ramul T48pr1:"!;9 de mai 2os# < ,e ob(inut toate combina(iile din 1: elemente 81,###,1:9, c=te > elemente in fiecare ? pro$ram 1:"!; const n@1:; num@>; var i5inte$er; a5arraAB1##nC of 1##n; procedure tipareste; var i5inte$er; be$in for i5@1 to num do Drite8aBiC,E E9; Driteln; end; procedure permuta875inte$er9; var i,35inte$er; be$in if 7@1 then tipareste else be$in for i5@1 to 7 do be$in 35@aBiC;aBiC5@aB7C;aB7C5@3; permuta8719; 35@aBiC;aBiC5@aB7C;aB7C5@3; end; end; end; be$in for i5@1 to n do aBiC5@i; Driteln; permuta8n9; end#
Agortmu programuu: Prncpa Procedura tpareste Procedra permatar 2.1 Listing-ul programului //"i#ierul 34ab2.&5 6include 7conio.&8 6include7#tdio.&8 main 9: ; int i$$<$d= for 9i>1=i711=i++: ; for 9>1=711=++: ; for 9<>1=<711=<++: ; for 9d>1=d711=d++: ; if 9 9i?>: @ 9?><:@ 9<?>d: @ 9i?><: @ 9i? >d: @ 9?>d::; printf9ABd Bd Bd Bd CtA$i$$<$d:= printf 9A A:= Dd+1= D<+1= D+1= Di+1= Dgetc&9:= D Rezultatele obtinute9#creen#c&ot#:: 2.2. Sunt date 4 varabe dferte a,b,c,d; de gast care sunt negatve s de afsat. Listing-ul programului # ncude <stdo.h> #ncude <cono.h> #ncude <ostream> usng namespace std; nt man() {nt a,b,c,d; prntf ("a = "); scanf ("%d", &a); prntf ("b = "); scanf ("%d", &b); prntf ("c = "); scanf ("%d", &c); prntf ("d = "); scanf ("%d", &d); f (a<0) prntf ("a=%d\n",a); f (b<0) prntf ("b=%d\n",b); f (c<0) prntf ("c=%d\n",c); f (d<0) prntf ("d=%d\n",d); return 0; } Agortmu programuu: Concluzia: Am obtinut cunostinte si noi experiente in formarea algoritmilor cu structura ramificata si ciclica. Efectiund programul de mai sus ne-am convins ca toate functioneaza corect. Programul dat efectueaza combinarea a cite patru(4) cifre in dependenta ce diapazon ii oferim. El cauta toate combinatiile posibile dar si exclude situatia ca intr-o combinatie sa existe doua cifre egale (aceiasi cifra de doua ori intr-o combinatie).Elaborind programul in C am capatat primele cunostinte in domeniul dat ,totodata m-am familiarizat cu programul codeblos.