2014 Plcp Laborator2 Gup l2

9
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 funcţiuni (reprezentând procese de calcul) bine precizate. Aceste simboluri sunt unite prin săgeţi (arce) orientate care indică ordinea de execuţie a proceselor de calcul. Simboluri de început şi sfârşit. Simbolul START desemnează începutul unui program sau al unui subprogram. Simbolul STOP desemnează sfârşitul unui program sau al unui subprogram. Prezenţa lor este obligatorie. Simbolul paralelogram: semnifică procese (operaţii) de intrare/ieşire (citirea sau scrierea-afişarea). Simbolul dreptunghi: semnifică o atribuire (modificarea valorii unei date). Simbolul romb este utilizat pentru decizii. Se testează dacă condiţia din blocul de decizie este adevărată (A) sau falsă (F). Cu ajutorul acestor simboluri grafice se poate reprezenta orice algoritm. Repetarea unei secvenţe 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 legătură între limbajul natural şi limbajele de programare. Nu există un standard pentru regulile lexicale. Pseudocodul utilizează cuvinte cheie (scrise cu majuscule subliniate) cu următoarele semnificaţii: CITEŞTE a,b AFIŞEAZĂ a,b a6 Condiţie A START STOP F

description

Limbaje de programare, C++

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;