Limbaje programare

22
Cursul 6 LIMBAJE DE PROGRAMARE Prof.dr.ing. Bucur LUŞTREA – Facultatea de Electrotehnică şi Electroenergetică Timişoara Utilizarea şi programarea calculatoarelor I Introducere în ingineria calculatoarelor şi programării anul I – semestrul I

description

programare

Transcript of Limbaje programare

  • Cursul 6

    LIMBAJE DE PROGRAMARE

    Prof.dr.ing. Bucur LUTREA Facultatea de Electrotehnic i Electroenergetic Timioara

    Utilizarea i programarea calculatoarelor I Introducere n ingineria calculatoarelor i programrii

    anul I

    semestrul I

  • Concepte de baz

    Limbajele de programare:sunt limbaje artificiale, destinate implementrii algoritmelor

    n

    cadrul programelor de calcul

    Caracteristici:

    manipuleaz structuri de date

    controleaz modul de execuie a calculelor

    Elemente:

    sintaxa

    reguli de scriere

    semantica

    interpretarea structurilor sintactice

  • Tipuri de limbaje de programare

    limbajele pentru prelucrarea matricelor

    Matlab

    limbajele de asamblare bazate pe mnemonice

    MASM (Microsoft ASseMbler), TASM (Turbo ASM Borland) etc.

    limbaje pentru interfee gen linie de comand

    BASH (Bourne

    Again

    SHell

    GNU Linux)

    limbaje cu compilator

    C, FORTRAN, Pascal, ALGOL, BASIC etc.

    limbaje concurente

    Java, ADA etc.

    limbaje de prelucrare a datelor: -

    dBase, SQL, FoxPro etc.

    limbaje declarative:

    Prolog, Analytica

    etc.

    limbaje pentru extensii

    JavaScript, VBScript, PHP

    pentru HTML (pagini web)

    limbaje interactive

    (interpretoare)

    BASIC, Lisp, Maple, Matlab, Forth

    etc.

    limbaje cu macrouri

    PHP

    limbaje orientate pe obiecte

    CPP, Java, PHP, Perl5, limbajele vizuale (Delphi,

    Visual studio, Visual Prolog, Visual Basic etc.) etc.

    limbaje procedurale

    C, Pascal, FORTRAN etc.

    limbaje bazate pe reguli:

    Prolog, Clisp

    etc.

    limbaje vizuale

    : Delpi, C++Builder, JavaBuilder, Visual C++, Visual Prolog

  • Evoluia limbajelor de programare

    codul main

    limbaj de asamblare

    limbaje de nivel nalt: compilatoarele, interpretoarele

    programare modular

    biblioteci de funcii, proceduri, link-editorul

    programarea structurat

    era multimedia

    programarea vizual

    programarea imperativ (procedural) versus declarativ

    programarea orientat pe obiecte i pe evenimente

    scheletul programului

    limbaje pentru baze de date, pentru simulare, conducere n timp real, concurente

    paradigma client -

    server

  • Compilatorul

    cod surs translator de limbaj cod obiect

    translator de limbaj: (de)compilator, interpretor

    fazele compilrii:

    tratarea erorilor

  • Editarea legturilor, ncrcarea, execuia

    rolul editorului de legturi genereaz programul executabil (modul ncrcabil):

    aloc memoria pentru ntregul program

    calculeaz adresele de salt ntre module

    ncrctorul programului (loader):

    calculeaz adresele absolute ale segmentelor de program

    transfer programul n memoria intern la adresa de nceput a programului

    ncarc n contorul program adresa primei instruciuni executabile

    segmentarea programelor mari:

    tehnica overlay

  • Etapele de realizare a unui program de calcul

    ERORI ?

    PROGRAMSURS

    EDITORTEXTE

    CONSOL

    ALTE DISPOZITIVEPERIFERICE DE

    INTRARE

    TRANSLATOR

    PROGRAMOBIECT

    EDITORDE LEGTURI

    PROGRAMOBIECT

    EXECUTABIL

    NCRCTOR

    BIBLIOTECIDE SISTEM

    BIBLIOTECIUTILIZATOR

    CORECII

    LANSARE N EXECUIE

    DA

    NU

  • Programare imperativ

    concepte

    tipuri de instruciuni:

    declarative

    imperative

    comentarii

    seciunile unui modul program:

    antetul pentru identificarea modulului

    partea declarativ

    partea procedural

    comentariile sunt prezente n toate seciunile programului, acolo unde este necesar

  • Identificatori

    Identificatorii sunt nume folosite pentru a identifica datele din memorie, zone de memorie, blocuri din program: sufer modificri pe parcursul calculelor variabile rmn neschimbai pe parcursul calculelor:

    literali

    constante

    variabile iniializate

    constante cu tip

  • Tipuri de date

    sunt descrise n seciunea de declaraii a modulului

    tipul datei stabilete:

    modul de interpretare a irului de bii asociat datei

    operaiile pe care le suport data

    tipuri de date predefinite

    (principale) recunoscute automat:

    tipul ntreg

    fr semn: byte, word, dword

    cu semn: shortint, integer, longint

    tipul real: real, double, extended

    etc.

    tipul caracter: char

    tipul ir de caractere: string

    tipul logic: boolean, longbool

    etc.

    tipul reper (vizor): pointer

    compatibilitatea tipurilor:

    identice

    echivalente

    incompatibile

  • Structuri de date

    Zon continu de memorie n care datele sunt grupate unitar din punct de vedere logic, n conformitate cu necesitile programului

    tipuri de structuri de date:

    vectorul

    indice

    matricea

    sau tabloul (array)

    indici multipli

    nregistrarea

    (articolul):

    record

    cmpul (field)

    obiectul

    (object)

    date

    & cod

    forma structurilor poate fi:

    fix

    variabil

  • Instruciunea de atribuire

    Cea mai folosit instruciune imperativVariabil

    simbolul_operaiei_de_atribuire expresie_calculabil

    X

    := 70 * sin (40*y + Psi)

    expresii calculabile

    regula de preceden a operatorilor stabilete ordinea operaiilor

    parantezele rotunde (....) pe mai multe niveluri

    suprancrcarea simbolurilor operaiilor

  • Instruciunile de controlSunt instruciuni imperative care modific ordinea secvenial de execuie

    a

    instruciunilor din program.

    instruciuni de oprire a programului: STOP, HALT, ABORT

    cod eroare

    (error

    level)

    instruciuni de oprire a secvenei de program

    EXIT, RETURN

    Instruciuni condiionale Instruciuni repetitive

  • Comentariile

    au doar valoare explicativ fiind obligatorii pentru o ntreinere uoar a programului

    nu au nici un rol n funcionarea programului

    sunt ignorate de compilator

    forme de comentarii:

    pe o ntreag linie de text surs

    marcaj linie C % etc.

    zon din textul surs

    marcaje pereche: (* *) /* */

    calitile unui bun comentariu:

    pertinent

    clar

    concis

    pstreaz lizibilitatea codului surs

  • ProcedurileModule de program

    scrise independent fa de programul principal

    (main

    program), avnd un rol de sine stttor. Este legat de programul apelant (principal) printr-un proces de transfer

    a execuiei codului

    i apoi de revenire

    la acesta.

    procedura poate fi privit ca un mini program de sine stttor

    cu:

    antetul procedurii

    lista de parametrii de apel

    variabile locale

    variabile globale

    corpul procedurii

    instruciuni de revenire la programul principal

    alte proceduri sau funcii ncuibate

    (nested) (imbricate).

    avantajele pe care le are programarea modular:

    reutilizarea simpl a codului compilat

    bun lizibilitate

    ntreinere uoar

    permite lucrul n echip

  • Apelul i revenirea procedurilor

    apelare prin invocarea numelui

    apelare cu instruciunea CALL

    Revenire

    Apel

    Modulapelant

    Procedur

  • Proceduri recursive

    proceduri care se autoapeleaz

    bucl iterativ: iniializare

    modificare

    revenire

    caz de baz

    (caz degenerativ) ncheie autoapelul

    calculele se fac fie pe ramura de apel, fie la revenire, fie combinat

    problema depirii stivei (stack

    overflow)

    Factorial(n)

    n := 1 DA DANU

    Factorial := 1 Factorial := n * Factorial(n - 1)

    REVENIRE

    cazul de baz cazul recursiv

    Schema logic a procedurii recursive pentru calcul factorialului unui numr n.

  • Proceduri reentrante

    Procedurile reintrabile

    pot fi ntrerupte de un proces i apoi reapelate

    de alt proces

    specifice multitaskingului.

    Condiii necesare:

    datele proceselor simultane care o apeleaz nu trebuie s se interfereze

    fiecare proces trebuie s aib propria zon de date care s fie accesate complet separat de apelurile diferite ale aceleai proceduri reentrante

  • Corutine

    2 (sau mai multe) proceduri care se apeleaz una pe cealalt

    nu exist diferen ntre modul apelant i modul apelat, fiecare corutin avnd alternativ n timp cele 2 roluri

    necesitatea declarrii antetului naintea descrierii procedurii

    declaraia forward

    problema depirii capacitii stivei

    limitarea numrului de apeluri la o valoare rezonabil

    evitarea utilizrii parametrilor formali, caz n care stiva pentru apeluri a calculatorului nu mai este folosit

    exemplu: colectarea dintr-un text a literelor i cifrelor n fiiere separate

  • Funcii

    sunt proceduri speciale care asociaz valoarea calculat la numele funciei, returnnd-o n mod automat la revenirea din procedur

    variabila referit de funcie furnizeaz valoarea memorat

    n urma apelului funciei se furnizeaz valoarea calculat:

    mai lent

    valoarea returnat depinde de context, pe cnd valoarea memorat se pstreaz pn n momentul actualizrii ei

    unele limbaje nu fac diferena ntre funcii i proceduri

  • Instruciuni de intrare / ieire (I / O)

    sunt implementate ca proceduri standard ale limbajului

    se gsesc n bibliotecile cu module obiect (gata compilate)

    se nglobeaz n programul executabil doar n faza de editare a legturilor

    utilizeaz serviciile SO ntr-un mod transparent pentru programator

    READ, WRITE

  • Urmeaz cursul 7 !

    Utilizarea i programarea calculatoarelor I Introducere n ingineria calculatoarelor i programrii anul I semestrul IConcepte de baz Tipuri de limbaje de programare Evoluia limbajelor de programare Compilatorul Editarea legturilor, ncrcarea, execuia Etapele de realizare a unui program de calculProgramare imperativ concepte Identificatori Tipuri de date Structuri de date Instruciunea de atribuire Instruciunile de control Comentariile ProcedurileApelul i revenirea procedurilorProceduri recursive Proceduri reentranteCorutineFunciiInstruciuni de intrare / ieire (I / O)Slide Number 22