curs2

31
Informatica, Curs 2

Upload: eugen-simion

Post on 20-Oct-2015

6 views

Category:

Documents


0 download

DESCRIPTION

iuiui

TRANSCRIPT

  • Informatica, Curs 2

  • Evoluia limbajelor de programare. Alegerea limbajului adecvat

    Evoluia limbajelor de programare (ntre 1945 i 2006) vezi fiierul Curs2_Teorie.pdf

    peste 2500 de limbaje de programare

    listate cronologic 53 de versiuni ale limbajelor de programare importante

    29 de limbaje de programare au avut o influen major asupra elaborrii celorlalte (20 subliniate)

    Alegerea limbajului adecvat vezi fiierul Curs2_Teorie.pdf

  • Evoluia limbajelor de programare (selecie) FORTRAN FORmula TRANslation, inventat de John Backus pentru computer-ul IBM 704 (specificaii finalizate pe 10 noiembrie 1954)

    ALGOL ALGOrithmic Language sau IAL International Algorithmic Language (1958)/ Comitet internaional (12 + John Backus)

    BASIC Beginners All-purpose Symbolic Instruction Code/ Dartmouth College (USA) pentru uzul studenilor (1964); utilizare interactiv

    BASIC

    Pascal = limbaj structurat/ Niklaus Wirth, ETH Zrich (1971). Aplicaii tehnice, tiinifice (nivel mediu) & economice. Standardul oficial in 1982

    Limbajul C = limbaj de programare orientat pe obiecte, elaborat la AT&T Bell Labs, USA, de Dennis Ritchie ntre 1969 i 1973 (creativ 1972). Conceput pentru a scrie sistemul de operare UNIX. Cel mai popular limbaj pt scrierea sistemelor de operare; larg folosit i pt software de aplicaii (jocuri).

    C++ (1983)/ Bjarne Stroustrup, Bell Labs, pentru software ingineresc i pt grafic.

  • Fortran A fost primul limbaj de nivel nalt. Datorit facilitilor de scriere a

    formulelor matematice i a faptului c permite efectuarea calculelor cu

    variabile complexe, limbajul FORTRAN a fost adoptat de ctre ingineri i

    cercettori tiinifici nc din anii 60, fiind utilizat i n prezent n aplicaii

    tiinifice, matematice, statistice i inginereti considerate dificile

    FORTRAN permite manipularea variabilelor reale n dubl precizie, ceea ce-i

    confer superioritate n raport cu alte limbaje, erorile de rotunjire fiind reduse;

    sintaxa rigid accelereaz executarea programelor concepute pentru simularea

    numeric cu caracter tiinific, timpul de rulare fiind inferior n raport cu

    cel aferent unor programe analoage, elaborate n alte limbaje

    Dup FORTRAN I au urmat: FORTRAN II n 1958, FORTRAN IV n 1961,

    FORTRAN 66 n anul 1966 (standard ANS: X3.9-1966), FORTRAN 77

    (simbolizat F77) n 1978, Fortran 90 (simbolizat F90) n 1991, Fortran 95

    (F95) n 1996 i Fortran 2003 n 2004.

    Fortran 2003 este o extensie major a dialectului Fortran 95. Fortran 2003

    permite programarea orientat pe obiecte; are interoperabilitate cu limbajul C.

  • Cele mai bune cri de Metode numerice n Fortran

    William H. Press, Saul A. Teukolsky, William T. Vetterling, Brian P. Flannery: Numerical Recipes in Fortran 77 - The Art of Scientific Computing, first edition 1986, 2nd edition 1992, reprinted 1993, 1994, 1995, 1996, 1999 (963 pages) William H. Press, Saul A. Teukolsky, William T. Vetterling, Brian P. Flannery: Numerical Recipes in Fortran 90 - The Art of Scientific Computing, first edition 1996, reprinted 1999 (576 pages) William H. Press, Saul A. Teukolsky, William T. Vetterling, Brian P. Flannery: Numerical Recipes in FORTRAN Example Book: The Art of Scientific Computing, first edition 1986, 2nd edition 1992, reprinted 1993 (twice), 1994, 1995, 1998 (256 pag)

  • BASIC BASIC a fost lansat n 1964 de ctre John George Kemeny i Thomas Eugene

    Kurtz, la Dartmouth College. A fost proiectat ca s permit i studenilor din domeniile non-tiinifice accesul la computere (la programare).

    Bazat pe limbajele FORTRAN II i ALGOL 60

    Visual Basic - abreviat VB. Potenialul acestui limbaj a fost cunoscut abia n 1991, cnd a fost comercializat (release 2.0). Visual Basic nu este doar un limbaj de programare, ci i un mediu de dezvoltare grafic. Visual Basic include anumite faciliti pentru realizarea rapid a aplicaiilor i, de exemplu, ceea ce poate fi creat cu VB n cteva minute, poate dura zile n alte limbaje, ca C sau Pascal.

    Carte recomandat pentru Metode

    Numerice n BASIC:

    Julien C. Sprott (University of Wisconsin,

    Madison): Numerical Recipes Routines

    and Examples in BASIC, Cambridge

    University Press, 1991 (420 pag)

  • Pascal Bazat pe limbajele ALGOL 60 i ALGOL 68

    Permite i manipularea informaiilor non-numerice

    Nu permite realizarea calculelor n dubl precizie.

    Primul compilator Pascal a fost proiectat n Zrich, pentru

    familia de calculatoare CDC 6000 i a devenit operaional n 1970

    Definiia limbajului Pascal a fost publicat n 1971 i

    revizuit n 1973

    n 1974 existau deja 10 compilatoare care rulau pe diferite

    sisteme, iar numrul lor a ajuns la peste 80 n 1979

    nc din 1977, diferite comisii au nceput s lucreze la

    standardizarea limbajului

    n 1982, a aprut standardul oficial al limbajului Pascal: ISO

    7185. n acelai an, ANSI a elaborat un standard american al

    limbajului Pascal: ANSI/IEEE770X3.97-1983.

  • William H. Press,

    Saul A. Teukolsky,

    William T. Vetterling,

    Brian P. Flannery:

    Numerical Recipes in Pascal,

    Cambridge University Press,

    1991 (781 pages)

    Cea mai bun carte de Metode numerice n Pascal

  • Limbajul C CRILE DE BAZ: Brian W. Kernighan & Dennis M. Ritchie, C Programming Language, Prentice Hall Software Series, first edition 1978, 2nd edition 1988, cunoscut drept: K&R - The original book on C

    Bazat pe limbajele ALGOL 60 i BCPL (BCPL = Basic Combined Programming Language, elaborat n 1967)

    C este un limbaj puternic i flexibil, care impune puine restricii programatorului. Este un limbaj cu format liber (free-form)

    Permite accesarea comenzilor la nivel de baz, similar cu limbajul de asamblare, dar cu o sintax de nalt nivel. De aceea este un limbaj potrivit pentru scrierea sistemelor de operare, dar i a programelor de uz general

    Un alt punct important este utilizarea modulelor: seciuni ale codului pot fi stocate n librrii, pentru a fi utilizate n alte programe. Conceptul modularizrii asigur portabilitatea limbajului.

  • William H. Press, Saul A. Teukolsky, William T. Vetterling, Brian P. Flannery: Numerical Recipes in C - The Art of Scientific Computing, Cambridge University Press, first edition 1988, 2nd edition 1992, reprinted 1993 (twice), 1994, 1995, 1996, 1997, 1998, 1999, 2002 (994 pag)

    William H. Press, Saul A. Teukolsky, William T. Vetterling, Brian P. Flannery: Numerical Recipes Example Book (C), Cambridge University Press, first edition 1988, reprinted 1992 (254 pag)

    Cele mai bune cri de Metode numerice n C

  • Limbajul C++

    Bazat pe limbajul C with Classes (C cu clase,

    din 1980)

    Limbajul C este predecesorul limbajului C++

    ns cele dou limbaje au evoluat independent,

    ceea ce a condus la acumularea unui numr

    mare de incompatibiliti ntre acestea

    C++ este un limbaj de programare de uz general,

    cu ramificaie ctre programarea sistemelor

    C++ este mai bun ca C, suport abstractizarea

    datelor, suport programarea orientat pe

    obiecte i suport programarea generic

    Specificatiile pentru limbajul C++ pot fi

    descarcata de la adresa

    http://www.cppreference.com/wiki/

    CARTEA DE REFERIN: Bjarne Stroustrup , The C++ Programming Language, Addison-Wesley, first edition 1985, 2nd edition 1991, 1995, 3rd edition 1997, special edition 2000

  • William H. Press, Saul A. Teukolsky, William T. Vetterling, Brian P. Flannery: Numerical Recipes in C++, The Art of Scientific Computing, Cambridge University Press, 2nd edition 2002 (1032 pag)

    William H. Press, Saul A. Teukolsky, William T. Vetterling, Brian P. Flannery: Numerical Recipes Example Book (C++), Cambridge University Press, 2nd edition 2002, reprinted 2003, 2007 (330 pages)

    Cele mai bune cri de Metode numerice n C++

  • Referine Numerical Recipes Software, http://www.nr.com/

    William H. Press (University of Texas,

    Austin), Saul A. Teukolsky (Cornell

    University, New York), William T.

    Vetterling, Brian P. Flannery, Numerical

    Recipes with Source Code CD-ROM,

    The Art of Scientific Computing, 3rd

    edition, 2007 (1256 pages, 2.082 kg)

    Note: You can use Numerical Recipes to

    extend MATLAB, sometimes giving

    huge speed increases:

    http://www.nr.com/nr3_matlab.html

  • Limbajele de programare clasice: Fortran (din 1954) Basic (din 1964) Pascal (din 1971) C (din 1972) C++ (din 1983)

    GNU Octave (din 1988) = clon free software a MATLAB

    MATLAB (din 1978)/ Cleve Moler, University of New Mexico, bazat pe Fortran i C. Cleve Moler a fost unul dintre autorii librriilor Fortran pentru calcule numerice, denumite LINPACK i EISPACK. Moler a inventat MATLAB-ul, pentru a facilita accesul studenilor si la aceste librrii, fr a fi necesar ca acetia s nvee Fortran. n 1984, a nfiinat compania The MathWorks.

    Limbajele de programare studiate la disciplina Informatic:

  • Pseudocodul Pseudocodul reprezint o metod alternativ de a

    exprima secvenele unui algoritm n vederea transpunerii acestuia ntr-un program de calcul.

    n cadrul pseudocodului, simbolurile grafice comune schemelor logice sunt nlocuite de scrierea comenzilor utilizate n programare.

    Pseudocodul nu respect o sintax general valabil i poate fi personalizat de ctre utilizator: n cadrul pseudocodului, utilizarea limbii engleze nu este obligatorie.

  • Schema logic (n englez = flowchart)

    Schema logic este o reprezentare schematic a algoritmului de calcul, prin intermediul unor simboluri grafice, care pun n eviden succesiunea logic a etapelor de calcul i deciziile logice, necesar a fi luate pentru obinerea soluiei. Simbolurile grafice utilizate au semnificaie consacrat, fiind standardizate (standard ANSI).

    Cteva simboluri grafice sunt prezentate n tabelul 2.2. din fiierul Curs2_Teorie.pdf

    Un exemplu de scheam logic pentru calcularea unui numr factorial este prezentat n figura 2.1 din fiierul Curs2_Teorie.pdf

    Programatorii experimentai nu agreeaz schemele logice: n general, ntocmirea direct a unui program de calcul concis, ntr-un anumit limbaj de programare, este mult mai simpl dect transpunerea succesiunii de pai de calcul a algoritmului ntr-o schem logic. Din punct de vedere didactic ns, realizarea schemelor logice prezint avantaje pentru programatorii debutani: faciliteaz nelegerea algoritmului, respectiv este util pentru a descrie ce face un anumit program, deja elaborat ntr-un anumit limbaj.

  • Simboluri grafice uzuale ntlnite n schemele logice

    Simbol Denumire Semnificaie

    Terminal nceputul unui program (START) sau sfritul unui program (STOP)

    Proces Blocul de calcul (instruciuni) sau manipulare a datelor

    Intrare / Ieire

    Blocul de intrare sau ieire a datelor i informaiilor

    Decizie

    Blocul de decizie (sau de condiionare), aferent unei comparaii, ntrebri sau decizii care influeneaz calea ce trebuie urmat. Are dou ieiri posibile: una pentru rspunsul DA (sau ADEVARAT) i cealalt pentru rspunsul NU (sau FALS)

    Sens de parcurs

    Sgeata indic sensul de parcurgere a schemei logice, n conformitate cu succesiunea operaiilor

    Conector n cadrul paginii

    Punct de legtur n schem, n cadrul aceleiai pagini

    Conector cu alt pagin

    Punct de legtur n schem, cnd aceasta nu ncape pe o singur pagin. Marcheaz terminarea algoritmului pe una din pagini i continuarea algoritmului pe pagina urmtoare

  • Exemplu de scheama logic pentru calcularea unui numr factorial

  • http://progopedia.com/example/factorial/

  • Fortran

    Hello World program program hello print*,"Hello World!" end program hello

    Exemplu de program pentru calcularea n!

    program Factorial

    integer :: f,n

    f = 1

    n = 0

    do

    print '(I2, A, I10)', n, "! = ", f

    n = n + 1

    f = f * n

    if (n==13) then

    exit

    end if

    end do

    end program Factorial

  • Basic

    Hello World program 10 PRINT "Hello, world!" 20 END

    DIM f AS LONG

    f = 1

    PRINT " 0 ! ="; f

    FOR i = 1 TO 12:

    f = f * i:

    PRINT i; "! ="; f

    NEXT i

    END

    Exemplu de program pentru calcularea n!

  • Pascal Hello World program program HelloWorld(output); begin

    writeln('Hello, World!') end.

    program factorial; function fact(n: integer): longint; begin if (n = 0) then fact := 1 else fact := n * fact(n - 1); end; var n: integer; begin for n := 0 to 12 do writeln(n, '! = ', fact(n)); end. Exemplu de program pentru calcularea n!

  • Limbajul C

    Hello World program The following simple application appeared in the first edition of K&R, and has become a standard introductory program in most programming textbooks, regardless of language. The program prints out "hello, world" to standard output, which is usually a terminal or screen display.

    main()

    {

    printf("hello, world\n");

    }

    Brian Kernighan, Dennis Ritchie: The C Programming Language. Also known as K&R The original book on C.

    ANSI C standard

    Hello World program #include int main(void) { printf("hello, world\n"); return 0; }

  • int main() { int count=1,n,fact=1; printf("Enter the value which you need for factorial"); scanf("%d",&n); while(count
  • C++ //Variables: //int num: To save the number(user-input). //int factorial: To calculate and save the factorial of the number.

    #include //Calling the Header File.

    int main() //Declaring the main function

    {

    using namespace std; //Tells the compiler that we'll be using all

    // the standard C++ library functions

    int num, factorial=1;

    coutnum;

    for(int i=1; i

  • HTML

    Hello World

    Hello World

  • Programarea structurat Se bazeaz pe teorema de structur a lui Corrado Bhm i Giuseppe Jacopini,

    teorem care precizeaz c orice program de calcul de tip flux (avnd un singur punct de nceput i un singur punct de terminare a execuiei) poate fi reprezentat ca o combinaie a trei structuri de control fundamentale (structuri pentru controlul fluxului), anume:

    Structura secvenial. Secvena este succesiunea a dou sau mai multe operaii;

    Structura alternativ. Selecia sau decizia reprezint alegerea unei operaii din dou alternative posibile, n urma verificrii unei condiii. Se recomand structura IF-THEN-ELSE. Poate fi utilizat i instruciunea de selecie multipl, CASE, dac trebuie selectat pentru execuie unul din blocurile structurii;

    Structura repetitiv. Iteraia de tip ciclu cu test iniial (n englez: pre-test loop) const n repetarea unei operaii att timp ct o anumit condiie este ndeplinit. Structura corespunztoare este DO WHILE. Dei structurile de control fundamentale sunt suficiente (conform teoremei de structur), pentru scrierea algoritmilor se mai poate utiliza i iteraia de tip ciclu cu test final, care implic repetarea unei operaii pn cnd o anumit condiie este ndeplinit. Structura corespunztoare este DO UNTIL (sau REPEAT UNTIL). Iteraiile de tip ciclu cu contor pot fi realizate prin instruciunea FOR.

  • Structuri pentru controlul fluxului

  • Structuri pentru controlul fluxului

  • Structuri pentru controlul fluxului