raspunsuri intrebari autocontrol lurcearea nr 1-2-3

21
Ministerul Educatiei si Tineretului Republicii Moldova Universitatea Tehnica a Moldovei Facultatea Calculatoare, Informatica si Microelectronica Raport Catedra Calculatoare Lucrare de laborator 1-2-3

Upload: andrei-efros

Post on 25-Oct-2015

84 views

Category:

Documents


2 download

DESCRIPTION

Marin stefan

TRANSCRIPT

Page 1: Raspunsuri intrebari autocontrol Lurcearea nr 1-2-3

Ministerul Educatiei si Tineretului Republicii MoldovaUniversitatea Tehnica a Moldovei

Facultatea Calculatoare, Informatica si Microelectronica

RaportCatedra Calculatoare

Lucrare de laborator № 1-2-3

A efectuat: st. gr. C-131 Cotofana Valentin

A verificat: dr.,conf.univ Marin Stefan

Chisinau 2013

Page 2: Raspunsuri intrebari autocontrol Lurcearea nr 1-2-3

Tema:1. Cartea de vizită a studentului – informatician .

2. Programarea problemelor simple în baza algoritmilor cu structuri ramificate şi ciclice.

Scopul lucrarii: aprecierea şi evidenţierea nivelului de cunoştinţe a fiecărui student în domeniul informaticii, acumulate în liceu, în mod deosebit algoritmizarea, pentru elaborarea sau rectificarea unui plan individual de studiu la lucrările practice şi lucrările de laborator pe parcursul semestrului.De studiat modul de realizare a dialogului utilizatorului în SO şi mediului integrat fie Turbo C/C++, fie Borland C/C++ . Familiarizarea cu tehnicile de lucru în mediul integrat fie Turbo C/C++, fie Borland C/C++ .. Aprofundarea cunoştinţelor în implementarea limbajului C la procesarea elementelor introductive, ramificate şi ciclice în programare, evidenţiind specificul implementării constantelor, expresiilor şi instrucţiunilor de citire şi afişare, ramificative şi ciclice cu if şi case.Perfecţionarea tehnicilor de derulare, verificare şi testare a programelor în C.

II. Notiuni teoretice

1. Consideraţii teoretice însuşite 1.1. Răspunsuri la punctele principale din îndrumar .De exemplu: 1.1 Cunoştinţe în domeniul calculatorului:Componentele fizice ale unui calculator(hardware):Placa de bază : Aceasta reprezintă cea mai importantă componentă aflată în carcasă ; mai este denumită şi placa principală. Pe PLACA DE BAZĂ se află aplicate următoarele componente : 1. MICROPROCESORUL Principalele caracteristici ale unui procesor sunt:

- cantitatea de memorie ce poate fi citită la un moment dat- viteza de execuţie a operaţiilor- lungimea cuvîntului care reprezintă instrucţiunea

2 . HARD DISK – UL Reprezintă unitatea de stocare a datelor în calculator.

3 . PLACA VIDEO Face posibilă afişarea imaginilor pe monitor. PLACA VIDEO este înzestrată cu microprocesor propriu numit accelerator grafic şi cu memorie proprie numită memorie video. 4 .MEMORIA INTERNĂ Memoria internă este locul în care sunt aduse programele şi datele pentru a fi prelucrate de procesor. Cu cît memoria internă este mai mare cu atît programele se execută mai rapid. 5. UNITATEA DE DISKETĂ Serveşte la citirea / scrierea datelor pe discuri de capacităţi mai mici numite şi diskete. 6 .UNITATEA DE CD – ROM Este întîlnită pe calculatoarele moderne, permiţînd citirea discurilor optice. Dispozitive externe :

Page 3: Raspunsuri intrebari autocontrol Lurcearea nr 1-2-3

1. Monitorul – este un suport de ieşire pe care calculatorul scrie rezultatele prelucrărilor, mesajele pentru utilizator şi informaţiile despre starea sistemului.

2. Tastatura – este un dispozitiv de intrare care permite introducerea informaţiei în formă textuală.

3. Mouse-ul – este un dispozitiv de intrare care permite introducerea informaţiei în formă grafică.4. Imprimanta – este un dispozitiv de ieşire care permite tipărirea informaţiei pe hîrtie. Cunoştinţe

din domeniul software :Sisteme de operare : GNU/Linux(RedHat Linux, Fedora(Core), Ubuntu, Kubuntu, ASPLinux, Knoppix, Suse Linux,Linux From Scratch), FreeBSD, OpenBSD, NetBSD, PCBSD.Aplicaţii cunoscute : OpenOffice.org, AbiWord, Gnumeric Spreadsheet, GIMP Image Editor, Blender, Qcad,Inkscape Vector Ilustrator.Limbaje de programare : BASH, Assembler(sintaxa AT&T), C, Pascal(Pascal standard,Turbo Pascal, Object Pascal), PHP, HTML, JavaScript, Java(+SWT), UML.Mediu de programare : Anjuta, Eclipse SDK, Quanta+,Vi/Vim, Emacs.Instrumente ajutătoare : CVS, Subversion, Make, Gmake, Autoconf, AutoMake, Javadoc, Junit, Ant, SSH, Rsync, GRUB, Lilo.

III. Noţiuni generale1.1 Etapa de implimentare a codului in C/C++

Să detaliem în continuare etapa de implementare. După analiza problemei şi stabilirea algoritmului, acesta trebuie tradus (implementat) într-un limbaj de programare.

Scrierea (editarea) programului sursă.

Programele sursă sunt fişiere text care conţin instrucţiuni (cu sintactica şi semantica proprii limbajului utilizat). Programul (fişierul) sursă este creat cu ajutorul unui editor de texte şi va fi salvat pe disc (programele sursă C primesc, de obicei, extensia .c, iar cele C++, extensia .cpp).

Pentru a putea fi executat, programul sursă trebuie compilat şi linkeditat.

Compilarea

Execuţia Lansarea în execuţie constă în încărcarea programului executabil în memorie şi startarea execuţiei sale.

1.2. Mediul integrat de dezvoltare Turbo C++ ( BorlandC++ ) permite editarea, compilarea, executia si depanarea programelor scrise in limbajele C si C++. Mediul contine un editor, un compilator, un editor de legaturi, un depanator.

Descrierea generală ale compilatorului-translatorului(CT)

Page 4: Raspunsuri intrebari autocontrol Lurcearea nr 1-2-3

CT este compus din trei părţi principale :

1. Bara de meniuri 2. Editorul text3. Bara de statut

Lansarea in executie. Turbo C++ este un utilitar DOS, nu Windows.Poate fi lansat dintr-o fereastra DOS ( MS-DOS Prompt ):

>[cale] tc <Enter> , cale = catalogul ( subdirectorul ) in care se afla fisierul executabil tc.exe.

ex: >C:\TCPP\BIN\tc

Lansarea trebuie facuta astfel incat utilizatorul sa aiba drept de scriere in directorul curent - deoarece se creaza fisiere temporare ( de swap ). Pentru simplificarea lansarii, se creaza un Shortcut pe Desktop catre compilator. Pentru ca mediul sa apara intr-o fereastra Windows - Alt/Enter.

Informatii ajutatoare se obtin prin urmatoarele combinatii de taste ( hot keys ) - vezi meniul Help:

- F1 informatii ajutatoare - Alt+F1 fereastra de informatii anterioara - Ctrl+F1 informatii despre obiectul ( cuvantul ) pe care este pozitionat cursorul - Esc inchide fereastra ajutatoare.

Fereastra principala a mediului de dezvoltare cuprinde:

- Meniul principal ( bara de meniuri de sus ) - se selecteaza prin F10 sau combinatia Alt+Litera de selectie a unui submeniu

- Linia de referinte rapide - apare in partea de jos a ecranului si prezinta tastele functionale cele mai utilizate si semnificatia lor

- Spatiul pentru ferestre ( zona de lucru ) - in care utilizatorul isi poate deschide, amplasa si dimensiona festrele in care lucreaza:- Fereastra de editare, in care se va introduce codul sursa al programului. Un program

poate fi format din mai multe fisiere, caz in care se poate deschide cate o fereasta de editare pentru fiecare fisier. In afara de ferestrele de editare, pot fi deschise si

- Fereastra de mesaje, in care se afiseaza mesaje de eroare sau atentionare- Fereastra de output, in care se poate vedea iesirea programului ( rezultatele tiparite de

program )- Fereastra de watch in care utilizatorul poate urmari valoarea unor variabile in timpul

executiei programului, lucru foarte util la depanare- Fereastra cu valorile registrilor

Pentru lucrul cu ferestrele se utilizeaza tastele:

- F6 - trecerea ( activarea ) in urmatoarea fereastra- F5 - pentru operatia de zoom asupra ferestrei curente- Alt+nr- activarea ferestrei cu numarul precizat- Alt+F3 - inchiderea ferestrei curente.Meniul principal:File,Edit,Search,Run,Compile,Debug,Project,Options,Window,Help

Selectarea unui meniu se poate face prin:

- F10, tastele <-,-> si tasta ENTER- Alt+prima litera a meniului dorit (ex: Alt+O = Options)- prin tasta universala corespunzatoare (unele optiuni din meniuri au taste universale atasate

(Shortcuts), prin apasarea carora se activeaza respectiva optiune indiferent de fereastra activa si meniul activ;

- ex: Alt+X=iesirea din mediu.

Page 5: Raspunsuri intrebari autocontrol Lurcearea nr 1-2-3

Pentru a înţelege cum funcţionează softul dat , vom examina mai întâi fiecare parte ale CT aparte:

A. Bara de meniuri – include în sine aşa meniuri ca :

File ( Alt+F ) – În acest meniu sunt incluse funcţiile de operare cu fişierul prelucrat . Adică fişierul în care se conţine sursa programului . Datorită acestui meniu avem posibilitate să salvăm , deschidem sau însuşi să creem un document nou , în care pe parcurs vom înscrrie programul principal.

- Opereaza cu fisiere si directoare, permite iesirea in MS-DOS si iesirea din mediu:- Open ( F3 ) - permite selectarea unui fisier de pe disc si incarcarea sa in editor- New - deschide o noua fereastra de editare ( goala ), avind implicit numele NONAMExx.CPP- Run ( Ctrl+F9 ) - executa programul. Daca sursa a fost modificata de la ultima compilare, se

realizeaza automat intai compilarea si link-editarea sa.- Program Reset ( Ctrl+F2 ) - incheie sesiunea de depanare curenta. Se dezaloca memoria

alocata programului si se inchid toate fisierele utilizate.- Go to cursor ( F4 ) - executa programul pana la linia pe care este pozitionat cursorul, fara a

stabili punct de intrerupere permanent ( breakpoint ).- Trace Into ( F7 ) - executa instructiunea urmatoare din program. Daca aceasta contine un

apel de functie, se va executa apelul, respectiv bara de executie se muta la inceputul functiei respective. Aceasta trasare se poate realiza doar daca functia a fost compilata cu optiunea Options/Compiler/Code Generation/Obj debug information pe ON si codul ei sursa e disponibil.

- Step Over ( F8 ) - executa instructiunea urmatoare din program, fara trasare in interiorul functiilor.

- Arguments - permite trimiterea catre functia principala a programului, main, a unor argumente de intrare.

Compile – meniul dat prezntă un set de comande ce permit detectarea greşelilor sintactice şi semantice ale programului curent. Aici sunt ataşate aşa comenzi ca „link, build şi compile”. Compileaza si creaza fisierul executabil:

- Compile ( Alt+F9 ) - compileaza sursa C creind un fisier obiect, al carui nume este obtinut din numele sursei C, la care se adauga extensia .obj

- Make ( F9 ) - creaza fisierul executabil efectuand compilarea si linkeditarea fisierelor actualizate. Numele se obtine, in ordine descrescatoare a prioritatii, din numele fisierului proiect, din numele sursei C sau din numele ultimului fisier incarcat.

- Link - realizeaza editarea de legaturi, creind fisierul executabil.- Build all - creaza fisierul executabil, compiland si legand neconditionat toate fisierele proiectului.- Remove Messages - sterge fereastra de mesaje.

Debug – datorită acestui meniu apar aşa posibilităţi ca ataşarea breack- pointerilor (breackpoint), examinarea valorilor variabilelor pe parcursul executării programului (inspect...) şi a altor operaţii de tipul dat . Controleaza sesiunea de depanare a programului executabil:

- Inspect ( Alt+F4 ) - permite urmarirea valorii unor variabile- Evaluate/modify ( Ctrl+F4 ) - permite evaluarea si, optional, modificarea valorii unei expresii.

Exista diferiti specificatori de format pentru afisare- Call stack ( Ctrl+F3 ) - afiseaza intr-o fereastra sub forma de meniu cu bara de selectie, lista

functiilor apelate pana in punctul curent de executie a programului. Permite vizualizarea liniei executate curent dintr-o anumita functie.

- Watches - permite definirea unor variabile ale caror valori se doresc a fi urmarite in timpul executiei ( depanarii ). Acest meniu are un submeniu, care ofer optiunile de adaugare, stergere, editare a unor watch-uri

- Toggle breakpoint

Page 6: Raspunsuri intrebari autocontrol Lurcearea nr 1-2-3

- Breakpoint - permit definirea unor puncte de intrerupere in program, la care executia se va opri automat. Daca utilizatorul permite reluarea executiei programului, aceasta va continua pana la urmatorul punct de intrerupere.

Project – prin meniul dat putem efectua operaţiile de închidere , deschidere , adăugare sau ştergere unor obiecte ale însuşi proectului prelucrat.

Options – meniul dat include în sine opţiunele sistematice ale softului dat.

Window – meniul dat prezintă comenzile de prelucrare ale ferestrei de redactare.

Help – acest meniu include în sine , informaţia despre producătorul acestui soft şi funcţiile (cu exemple de interpretarea acestora în cadrul elaborării ale programului ) ale limbajului C/C++ .

B. Platforma de editare include în sine panoul (fereastra) de redactare ale sursei programului .

Panoul de ediatare are posibilitate de a schimba dimensinele sale. Datorită acestei operaţii avem posibilitate să examinăm informaţia a panourilor ce se află în spatele panoului prelucrat fără a se adresa la acela însuşi.

Platforma dată mai are o prioritate de afişare ale panoului de compilare. Această fereastră ne dă posibilitate după efectuarea operaţiei de compilare şi link-uire ale codului programei , să afişeze greşelile sintactice sau şi semantice ale sursei programului prelucrat.

C. Bara de Statut În bara dată se afişează informaţia despre butoanele fierbinţi ale comenzilor clasice ale compilatorlui dat.

Pentru a simplifica lucrul utilizatorului asupra softului dat , aici apare posibilitatea de a se folosi de combinaţiile de taste pentru efectuarea unor comenzi , fără a se adresa la meniuri corespondente. De exemplu : Pentru a efectua operaţia de compilare tastăm Alt+F9 sau pentru a se adresa la bara de meniuri tastăm butonul F10.

Fig1. Fereastra principală ale colpilatorului- translatorului Borland C .

Varianta-18

Raspunsuri la întrebările de la autocontrol:

2.1. Verificaţi dacă sunt corecte constatele întregi? Pentru restul constantelor determinaţi tipul şi valorile

123 A 1E6 A 123456789LU F -5 A 0XFUL F

‘0’ A 058 F ‘\x7’ A 0X-1AD F ‘\122’ A

Page 7: Raspunsuri intrebari autocontrol Lurcearea nr 1-2-3

00123 F 0xffffffL F 01A F -‘x’ F x A

‘a’U F 0731UL F ‘\n’ A +0xaf F 0X0 A

2.2. Verificaţi dacă sunt corecte constatele reale? Pentru restul constantelor determinaţi tipul şi valorile:

1.71 A 1E-6 A 0.314159E1F F .005 A 0051E-04 F

5.E+2 F 0e0 F 0x1A1.5 F 05.5 F 0 A

0X1E6 0F F 1234.56789L F 1.0E-10D F 3.1415U F

1e-2f F -12.3E-6 +10e6 A 123456L F E-6 A

2.3. Verificaţi dacă sunt corecte expresiile? Determinaţi tipul şi valorile.

int a, b, c, d, e; a = 2; b = 13; c = 7; d = 19; e = -4;

b / a / c Afloat d / a % c A întreg c % d-e A întreg -e % a + b / a -5+5 F

b % e A întreg 7-d%+(3-a) F b % - e c F 9 / c - - 20 / d F

2.4. Verificaţi dacă sunt corecte exerciţiile? Determinaţi tipul şi valorile

int a, c; c = 5;

a). c ++ ; A întregb). 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.4. Verificaţi dacă sunt corecte exerciţiile? Determinaţi tipul şi valorile.

int 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)

Page 8: Raspunsuri intrebari autocontrol Lurcearea nr 1-2-3

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.5. Verificaţi dacă sunt corecte exerciţiile? Determinaţi tipul şi valorile:

int 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.8. Verificaţi dacă sunt corecte exerciţiile? Determinaţi tipul şi valorile:

int i, j, k, m; char c, d; i = 1; j = 2; k = -7; m = 0; c = ‘w’;

d = ’a’+1 < c F m = - i - 5 j >= k+1 A i + j++ + k = = -2j A

m = 3 < j < 5 F m = 3 = = j < 5 F m = = c = ’w’ F

m = c != 87 F m = c = ! 87 F m = ! c = 87 F

m = !c+87 A ! m = =c + 87 F m ! = c + 87 A

2.9. De scris expresiile echivalente în C, însă să nu conţină 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.10. Ce se va afişa în rezultatul efectuării următorului fragment de program?

. . .

#include<stdio.h>

Page 9: Raspunsuri intrebari autocontrol Lurcearea nr 1-2-3

#include<conio.h>

#include<math.h>

main() {

short s; int i; long lngl; float f; double d;

s = i = lng = f = d = 100/3;

printf("s = %hd i = %d lng = %ld f = %f d = %f\n", s, i, lng, f, d);

d = f = lng = i = s =100/3;

printf("s = %hd i = %d lng = %ld f = %f d = %f\n", s, i, lng, f, d);

s = i = lng = f = d = 1000000/3;

printf("s = %hd i = %d lng = %ld f = %f d = %f\n", s, i, lng, f, d);

d = f = lng = i = s =1000000/3;

printf("s = %hd i = %d lng = %ld f = %f d = %f\n", s, i, lng, f, d);

lng = s = f = i = d =100/3;

printf("s = %hd i = %d lng = %ld f = %f d = %f\n", s, i, lng, f, d);

f = s = d = lng = i = (double)100/3;

printf("s = %hd i = %d lng = %ld f = %f d = %f\n", s, i, lng, f, d);

s = i = lng = f = d = 100/(double)3;

printf("s = %hd i = %d lng = %ld f = %f d = %f\n", s, i, lng, f, d);

f = s = d = lng = i = (double)100/3;

printf("s = %hd i = %d lng = %ld f = %f d = %f\n", s, i, lng, f, d);

i = s = lng = d = f = (double)(100/3);

printf("s = %hd i = %d lng = %ld f = %f d = %f\n", s, i, lng, f, d);

getch();

}

Page 10: Raspunsuri intrebari autocontrol Lurcearea nr 1-2-3

2.11. Ce se va afişa în rezultatul efectuării următorului fragment de program?

#include<stdio.h>

#include<conio.h>

void main() {

double d = 3.2, x; int i = 2, y;

clrscr();

x = ( y = d / i ) * 2; printf ("x = %f ;y = %d\n", x, y);

x = ( y = d / i ) * 2; printf ("x = %d ;y = %f\n", x, y);

y = ( x = d / i ) * 2; printf ("x = %f ;y = %d\n", x, y);

y = d * ( x = 2.5 / d); printf ("x = %f; y = %d\n", x, y);

x = d * ( y = ( (int)2.9 + 1.1)) / d; printf ("x = %d y = %f\n", x, y);

getch();

}

Page 11: Raspunsuri intrebari autocontrol Lurcearea nr 1-2-3

1.1De elaborat algoritmul pentru programul TP(pr1032;) de mai jos.{ De obţinut toate combinaţiile din 10 elemente (1,...,10), câte 4 elemente in fiecare }program 1032;const n=10; num=4;var i:integer;

a:array[1..n] of 1..n; procedure tipareste; var i:integer; begin for i:=1 to num do write(a[i],' '); writeln; end;

procedure permuta(k:integer); var i,x:integer; begin if k=1 then tipareste else begin for i:=1 to k do begin x:=a[i];a[i]:=a[k];a[k]:=x; permuta(k-1); x:=a[i];a[i]:=a[k];a[k]:=x; end; end;end;

begin for i:=1 to n do a[i]:=i; writeln; permuta(n);end.

Algoritmul programului:

Page 12: Raspunsuri intrebari autocontrol Lurcearea nr 1-2-3

Principal Procedura tipareste Procedra permatari

2.1 Listing-ul programului

//Fisierul „Lab2.h”

#include <conio.h>

#include<stdio.h>

main () {

int i,j,k,d;

Page 13: Raspunsuri intrebari autocontrol Lurcearea nr 1-2-3

for (i=1;i<11;i++)

{

for (j=1;j<11;j++)

{

for (k=1;k<11;k++)

{

for (d=1;d<11;d++)

{

if ( (i!=j) & (j!=k)& (k!=d) & (i!=k) & (i!=d) & (j!=d)){

printf("%d %d %d %d \t",i,j,k,d);

printf (" ");

}d+1;

}k+1;

}j+1;

}i+1;

}getch(); }

Page 14: Raspunsuri intrebari autocontrol Lurcearea nr 1-2-3

Rezultatele obtinute(screenschots):

2.2. Sunt date 4 variabile diferite a,b,c,d; de gasit care sunt negative si de afisat.

Listing-ul programului

# include <stdio.h>

#include <conio.h>

#include <iostream>

using namespace std;

int main()

{int a,b,c,d;

printf ("a = ");

scanf ("%d", &a);

printf ("b = ");

scanf ("%d", &b);

printf ("c = ");

scanf ("%d", &c);

printf ("d = ");

scanf ("%d", &d);

if (a<0) printf ("a=%d\n",a);

if (b<0) printf ("b=%d\n",b);

Page 15: Raspunsuri intrebari autocontrol Lurcearea nr 1-2-3

if (c<0) printf ("c=%d\n",c);

if (d<0) printf ("d=%d\n",d);

return 0;

}

Algoritmul programului:

Page 16: Raspunsuri intrebari autocontrol Lurcearea nr 1-2-3

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 codebloks.