2014 Plcp Laborator2 Gup l2
-
Upload
iancu-adina-floricica -
Category
Documents
-
view
213 -
download
1
description
Transcript of 2014 Plcp Laborator2 Gup l2
-
REPREZENTAREA ALGORITMILOR PRIN PSEUDOCOD
13
2. SCHEME LOGICE I PSEUDOCOD
2.1 Reprezentarea algoritmilor prin scheme logice
Primitivele utilizate n schemele logice sunt simboluri grafice, cu funciuni (reprezentnd procese de calcul) bine precizate. Aceste simboluri sunt unite prin sgei (arce) orientate care indic ordinea de execuie a proceselor de calcul.
Simboluri de nceput i sfrit. Simbolul START desemneaz nceputul unui
program sau al unui subprogram. Simbolul STOP desemneaz sfritul unui program sau al unui subprogram. Prezena lor este obligatorie.
Simbolul paralelogram: semnific procese (operaii) de intrare/ieire (citirea sau scrierea-afiarea).
Simbolul dreptunghi: semnific o atribuire (modificarea valorii unei date). Simbolul romb este utilizat pentru decizii. Se testeaz dac condiia din blocul
de decizie este adevrat (A) sau fals (F). Cu ajutorul acestor simboluri grafice se poate reprezenta orice algoritm. Repetarea unei secvene se realizeaz prin combinarea simbolurilor de decizie
i de atribuire.
2.2 Reprezentarea algoritmilor prin pseudocod
Pseudocodul este inspirat din limbajele de programare i reprezint o punte de legtur ntre limbajul natural i limbajele de programare. Nu exist un standard pentru regulile lexicale. Pseudocodul utilizeaz cuvinte cheie (scrise cu majuscule subliniate) cu urmtoarele semnificaii:
CITETE a,b AFIEAZ a,b
a6 Condiie A
START STOP
F
-
SCHEME LOGICE I PSEUDOCOD
14
Sfrit algoritm: SFRIT nceput algoritm: NCEPUT Citire (introducere) date: CITETE lista Scriere (afiare) date: SCRIE lista Atribuire: Structura de decizie (alternativ): DAC condiie ATUNCI aciune1 ALTFEL aciune2 Structuri repetitive cu test iniial: CT TIMP condiie REPET aciune sau: PENTRU contor=val_ini LA val_fin [PAS] REPET aciune Structuri repetitive cu test final: REPET aciune CT TIMP condiie sau: REPET aciune PN CND condiie
Pe lng cuvintele cheie, n reprezentarea algoritmilor n pseudocod pot apare
i propoziii nestandard a cror detaliere va fi realizat ulterior. n cazul n care se realizeaz un algoritm modularizat, pot apare cuvintele
cheie: SUBALGORITM nume (lista_intrri) CHEAM nume (lista_valori_efective_de_intrare)
2.3 Exemple
2.3.1 Maximul a trei numere
2.3.1.1 Pseudocodul 1. CITETE a, b, c 2. DAC a>b ATUNCI max=a ALTFEL max=b 3. DAC c>max ATUNCI max=c 4. AFIEAZ max
2.3.2 Suma primelor n numere naturale
2.3.2.1 Pseudocodul 1. CITETE n 2. suma=0
-
EXEMPLE
15
3.CT TIMP i0
Dac
-
SCHEME LOGICE I PSEUDOCOD
16
2.3.4 Maximul a 3 numere, calculul unei sume, cmmmc i cmmdc, factorial - scheme logice
Start
Dac in
Citete n
Stop
fact*=i i++
A F
Scrie n! =, fact
i=1 fact=1
Start
Dac a0, b0
Citete a,b
Stop
cmmmc=a*b r=a%b
a=b b=r
A
Scrie cmmdc, cmmmc
F
r=a%b a=b b=r
Dac r0
cmmmc=a cmmdc= cmmmc/ cmmdc
A
F
cmmmc=0 cmmdc=0
Start
Dac a>b
Dac c>max
Citete a, b, c
Stop
max=a
max=c
A F
Scrie Max = , max
A F
max=b
Start
Dac im, jn
Citete a,b,m,n
Stop
s=s+sin(a+3*i)*cos(b+5*j)
max=c
A F
Scrie S = , s
i=1, j=1, s=0
-
STRUCTURA UNUI PROGRAM N C++
17
3. NOIUNI DE BAZ
3.1 Structura unui program n C++
Un program C obinuit are urmtoarea structur (textul dintre /* i */ reprezint comentarii) [1]: /*directive de preprocesare*/ #include /*includeri de fiiere sau biblioteci*/ /*atribuirea de nume simbolice i definiii de macrocomenzi*/ #define /*directive de compilare condiionat*/ /*definiii de tipuri de date*/ typedef int intreg; /*declaraii de variabile globale*/ /*definiii de funcii sau/i descrierea unor functii*/ int main(void) /*antetul funciei principale main*/ { /*nceputul corpului funciei main*/ /*declaraii de variabile locale*/ /*instruciunile funciei principale*/ return 0; /*valoarea returnat de funcia main*/ } /*sfritul corpului funciei main*/ /*descrierea funciilor care au definiiile mai sus*/
Precizare: compilatoarele pentru C i C++ fac distincie ntre litere mari i mici. Un program C++ const n una sau mai multe funcii din care numai una
singur este funcia principal. Fiecare funcie are un nume; cel al funciei principale este main. Celelalte funcii au nume definite de utilizator.
Un nume (identificator) este o succesiune de litere i eventual cifre, primul caracter fiind o liter. Literele pot fi a-z, A-Z sau caracterul de subliniere (_). Numai primele 32 caractere sunt luate n seam.
Pentru ca un fiier text s poat fi considerat un program surs n limbajul C,
acesta trebuie s conin minim antetul i corpul funciei principale main, adic: void main() { }
Aceste lucruri se gsesc n orice program C, indiferent de scopul acestuia.
-
NOIUNI DE BAZ
18
3.2 Principalele mesaje de avertizare i eroare ale compilatorului
Tabelul 3.1 Mesaje de avertizare i eroare Text mesaj (alfabetic) Explicaii
'' is assigned a value that is never used
Avertisment: Valoarea calculat nu este folosit nicieri n continuare.
Bad file name format in include directive
Denumire greit n directiva de preprocesare.
Compound statement missing }
Caracter } sau { omis la o instruciune compus.
Declaration syntax error
Eroare de sintax a declaraiei.
Declaration terminated incorrectly
Declaraie terminat incorect.
Expression syntax Eroare de sintax. For statement missing ; Caracter omis ; la scrierea instruciunii "for". Function '' should have a prototype
Funcia ar trebui s aib un prototip; pentru a putea fi folosit, ea trebuie fie definit de utilizator, fie folosit o directiv de preprocesare (#include ).
Function should return a value
Funcia ar trebui s returneze o valoare: lips "void" la tipul valorii returnate din antet sau lips instruciune "return" n corpul funciei.
If statement missing ) Caracter ) sau ( omis la scrierea instruciunii if.
Illegal structure operation
Structur greit a instruciunii (scriere/citire) - la >> sau
-
DATE N LIMBAJULUI C
19
Pentru a obine mai multe informaii despre o anumit eroare, atunci cnd eroarea este selectat n fereastra cu mesaje (Message), se apas tasta F1.
3.3 Date n limbajului C
3.3.1 Tipuri de date
Datele care intervin n programe sunt de mai multe tipuri. n acest capitol vom prezenta tipurile simple, iar tipurile compuse vor fi prezentate n alte capitole. n tabelul de mai jos se prezint tipurile de baz [2]:
Tabelul 3.2 Tipurile de baz de date Cuvnt cheie
Lungime n bii
Format de reprezentare intern
int 16 ntreg binar reprezentat prin complement fa de 2 pe 2 octei, cuprins n intervalul [-32768, 32767].
char 8 Caracter reprezentat prin codul ASCII, cuprins n intervalul [-128, 127].
float 32 Numr real reprezentat n virgul flotant n simpl precizie, cuprins ntre [3.410-38, 3.41038].
double 64 Numr real reprezentat n virgul flotant n dubl precizie, cuprins ntre [1.710-308, 1.710308].
short 16 Idem int. long 32 ntreg binar reprezentat prin complement fa de 2
pe 4 octei, cuprins n intervalul [-2.147.483.648 to 2.147.483.647].
unsigned char
8 Caracter reprezentat prin codul ASCII, cuprins n intervalul [0, 255].
unsigned int
16 ntreg binar fr semn reprezentat prin complement fa de 2 pe 2 octei, cuprins n intervalul [0, 65535].
unsigned long
32 ntreg binar reprezentat prin complement fa de 2 pe 4 octei, cuprins n intervalul [0, 4.294.967.295].
3.3.2 Constante
Sunt caracterizate prin tip i valoare. Att tipul ct i valoarea se definesc prin caracterele care o compun.
Tabelul 3.3 Reprezentarea constantelor n C/C++ Tip dat Format de
reprezentare Mod de reprezentare Exemple
zecimal (n baza 10)
[- / +] []
125 -11
ntreg*) octal (n baza 8)
[- / +] 0 []
0127 -022
-
NOIUNI DE BAZ
20
Tip dat Format de reprezentare
Mod de reprezentare Exemple
hexazecimal (n baza 16)
[- / +] 0 {x / X} []
0xa12f -0Xad105
real
n virgul fix
[- / +] . Aceasta este scrierea unui numr raional n baza zece, unde virgula zecimal este nlocuit de punctul zecimal. Partea zecimal poate fi vid.
123 123.7 .25
(flotant) n virgul mobil
[- / +] . {e sau E} [- / +] Aceasta reprezint mantisa (ceea ce este nainte de E) nmulit cu 10 la puterea dat de exponent (ceea ce este dup E).
78E4 .1e-3 1234.567e-4
ntre apostrofuri
a A
\ \65 \7 \42 \140
caracter cu secvene escape
\ \t Tab \n Rnd nou \a Alarm (sunet) \b Backspace \r Retur de car (pozi cursorul n rndul curent col 1) \v Tabulator vertical \\ Backslash \ Apostrof
ir de caractere
ntre ghilimele
Acesta este un sir de caractere
cu secvene escape
ir caractere i secv.escape Alte \tsecvente \tescape \nintr-un sir
Obs.: *) Informaiile anterioare erau valabile pentru constantele ntregi de pn la 16 bii. Constantele de 32 bii sunt de tip long i pentru a le nota le postfixm una din: l sau L.
Pentru a specifica o constant ca fiind de tip unsigned (fr semn) o postfixm cu una din: u sau U. Dac o constant este long i unsigned n acelai timp, o postfixm cu una din: ul, lu, UL, LU
Ex: 123, 0123, 40000, 04000, 0123456, 123L, 0123l, 0x123, 0xa1b2c3, 0XABCFL
-
EXEMPLE
21
3.3.3 Variabile
3.3.3.1 Declararea variabilelor Modul general de declarare a variabilelor este:
tip_variabile list_nume_variabile; Se specific tipul variabilei(lor) i o list format din unul sau mai muli identificatori ai variabilelor de tipul respectiv.
Ex.: int i, j; /*declararea var. simple i, j, de tip int. Se rezerv pentru i i j cte 16 bii (2 octei)*/ char c; /*declararea variabilei simple c, de tip char. Se rezerv un octet.*/ float lungime; /* declararea variabilei simple lungime de tip float; se rezerv 4 octei */
3.3.3.2 Iniializarea variabilelor n declaraii n momentul declarrii unei variabile, acesteia i se poate atribui o anumit valoare. n acest caz, n memorie se rezerv numrul de locaii corespunztor tipului variabilei respective, iar valoarea ei va fi memorat n acele locaii. Forma unei declaraii de variabile cu atribuire este:
tip_variabil nume_variabil=expresie; Se evalueaz expresia, iar rezultatul acesteia este atribuit variabilei specificate.
3.4 Exemple
char backslash=\\; /*declararea i iniializarea variabilei simple de tip caracter backslash */ int a=7*9+2; /* declararea variabilei simple a, de tip int i iniializarea ei cu rezultatul unei expresii - valoarea 65*/ float pi=3.14; /*declararea i iniializarea variabilei pi*/ short int z=3; //declararea i iniializarea variabilei simple z char d=\011; char LinieNoua=\n; double x=9.8, y=0;