Utilizarea şi Programarea Calculatoarelor L. A. Fulop
Istoric.
Curs 1
Povestea calculatoarelor – Personalităţi 1800 George Boole – Logica Booleană Charles Babbage – Maşină de calcul mecanic Lady Lovelace – Ideea de PROGRAMARE Herman Hollerith – Maşină tabulară (recensământ) 1930 Alan Turing – Maşina Turing | Spargerea codurilor 1940 Howard Aitken – Calculator digital Grace Hopper - Cobol Mauchey & Eckert - ENIAC John von Neumann – Conceptul de salvare a programelor Maurice Wilkes - EDSAC (utilizare de programe) Bardeen & Brattain & Shockley - Tranzistor
Povestea calculatoarelor – Personalităţi 1950
John Backus - (Fortran) Reynold Johnson – Unitatea de discheta Donald Shell – Algoritmi de sortare 1960 Kemeny & Kurtz - BASIC Edsger Dijkstra – Eliminarea lui ‘Go To’ Donald Knuth – Arta Programării Calculatoarelor Hoff, Mazer, Noyce, Faggin - INTEL microprocesor 1970 Ted Codd – Baze de date relaţionale Paul Allen & Bill Gates - Microsoft Steve Wozniak & Steve Jobs - Apple Bricklin & Fylstra – Tabele de calcul
Povestea calculatoarelor – Personalităţi 1980 William Sydnes - IBM PC Mitchel Kapor - LOTUS Tim Berners-Lee - www 1990 Marc Andreessen - Mosaic / Navigare Netscape
Povestea calculatoarelor – Charles Babbage
Charles Babbage – Maşină de calcul mecanic Periada ”mecanismelor ingenioase”
Povestea calculatoarelor – Herman Hollerith
Tabulating Machine Company Computer Tabulating Recording Company În 1924 CTR schimbă numele în International Business
Machines sau IBM.
Povestea calculatoarelor – Alan Turing
Automat imaginar
Povestea calculatoarelor – Mark 1
1939 Harvard primul calculator modern MARK 1
Povestea calculatoarelor – SUA
ENIAC - Electronic Numerical Integrator Analyzer and Computer Primul calculator electronic – fără componente în mişcare John von Neumann
Povestea calculatoarelor – EDVAC, EDSAC
EDVAC (Electronic Discrete Variable Automatic Computer) EDSAC (Electronic Delay Storage Automatic Calculator)
Povestea calculatoarelor – UNIVAC 1107
Inventarea tranzistoare –
Dezvoltări IBM
Povestea calculatoarelor – IBM
Povestea calculatoarelor – IBM
NASA Space Flight Center în Greenbelt (1968) IBM System/360 Model 91
Azi?
Mai multă putere de calcul într-o maşină de clasă mijlocie decât în Apollo 13!!!
Povestea calculatoarelor – Maşina Abaca ~300Bc în Babionia (Iraq) Blaise Pascal 1642 – Maşina manuală cu roţi pentru taxe (+|-)
Îmbunătăţit de Gottfried Leibnitz 1672 (* & /) 1801 Jacquard Loom – cartele perforate 1834 Maşina analitică Babbage - Muzeul de Ştiinţe - Londra Avea Depozit (memorie) - Motor (Procesor) – Intrare Date (Cartele) - Ieşire Date (cartele perforate) Lady Lovelace (Byron) primele instrucţiuni (primul program)
Povestea calculatoarelor – Maşina 1941- 44 calculatoare speciale cu lampă electronică la Bletchley Park - Collossus pentru decodarea mesajelor Germane 1944 - Mark 1 la Harvard bazat pe conceptul lui Babbage Proiecte bazate pe ideile lui John von Neumann în SUA şi UK UNIVAC şi Ferranti Anii 1950 IBM 1401 şi Elliot 803 – Cu tranzistori 1965 calculatoare de generaţia a 3-a cu Circuite Integrate IBM 360, ICT 1900 şi VLSI
Povestea calculatoarelor – Maşina 1969 Intel produce primul microprocesor - 4004 Urmat de 8008 (procesor pe 8 biti) 1980 sisteme integrate într-un telefon mobil etc.
Povestea calculatoarelor – Limbaje de programare Hardwired Cod maşină - Binar - Octal(0-7) - Hex (0-F) Assambler Funcţionale ML, Lisp Limbaje procedurale Fortran, Basic, Cobol, ALGOL (68), PL1, Coral, C Limbaje orientate spre obiect C++, JAVA, Smalltalk Declarative Prologue
Ciclul dezvoltării unui program 1. Analiza – definirea problemei 2. Proiectarea – Paşii soluţionării problemei (algoritm) 3. Interfaţa – Date de intrare (Input) / Date de ieşire 4. Codificarea în TC 5. Testarea şi eliminarea erorilor 6. Documentarea programului
Proiectarea unui program (1) Date de intrare Care sunt cunoscutele ?
Prelucrarea (Ce facem cu datele de intrare?)
Date de iesire (Ce vrem să obţinem ca rezultat?)
Proiectare unui program (2) Ce vrem să aflăm? (Output) Înţelegerea datelor de intrare Proiectarea conecxiunilor – prima dată în
limbaj natural! (algoritm) Implementarea conexiunilor într-un limbaj de programare (VB, C++, Java etc) Testarea Eliminarea erorilor Documentarea programului
Proceduri de proiectare Limbaj natural Pseudocod Scheme logice
Exemplu de rezolvare a unei probleme Program de inventariere Program de inventar Descriere generală
Iniţializare
Meniu
Date de intrare
Proceduri
Rezulate
Grafice
Liste
Examplul 1 –Pseudocod (1) Întrebare – În clădire sunt 20 de trepte între fiecare etaj, fiecare de 33 cm. Căt Nutella trebuie să mânânce un om de 70 kg să recupereze energia consumată pentr a ajunge la secretariat? (Nutella are 2147 joules / 100 gr)
Examplul 1 –Pseudocod (2) Soluţie: Energia folosită pentru a urca o treptă = m x g x h = 70 x 9.81 x 0.33 = 226.61 j Energia utilizată pentru a ajunge la etajul 1 = 1 x 20 x 226.61 = 4532.22 j Dacă 100 gr de Nutella conţine 2147 kilo jouli atunci: ∴1 joul este produs de 100/2147000 gr de Nutella. ∴Va trebui să mânânce 4532.22 x 100 / 2147000 = 0.211 gr de Nutella să ajungă la secretariat.
Exempul 1 – Date de intrare (Input) Evidente (date în enunţ): Masa persoanei 70 kg; înălţimea unei trepte 0.33 m; numărul de trepte pe etaj 20; conţinutul de energie a Nutella (2147 KJ/gr) Ascunse (cunoştiinţe anterioare): Acceleraţia gravitaţională 9.81 m/sec2; faptul că secretariatul este la etajul 1 şi nou suntem la parter;
Exempul 1 – Rezultate (Output) Finale (cerute prin enunţ): Cantitatea de Nutella care trebuie consumat (0.21 gr). Parţiale (necesare pentru a ajunge la soluţie – deregulă rezultate ale unor subprobleme): Energia consumată pentru a urca o treaptă; Energia consumată pentru a urca un etaj; Cantitatea de Nutella care conţine un Joul de energie;
Ciclul de viaţă al unui program (1) Concept – Scopul proiectului (programului) Necesităţi – Informaţii necesare pentru a atinge scopul propus Concepere – Specificarea a cea ce primeste utilizatorul Codare – Activitatea programatorului Testare – Corectarea, verificarea programului până ajunge să realizeze ce s-a dorit (versiuni beta) Mentenanţă – Suport client (utilizator)
Ciclul de viaţă al unui program (2) Dorinţa clientului Propunere Furnizare Tehnică Produs 40%
Conceperea sistemului Conceperea program Implementare
20%
Probe Teste Acceptare sistem Integrare Testare
40%
Modele de cicluri de viaţă (1) Cascadă – Concepere sistematică bazată pe definiţie clară Incremental – Folosit când definiţia poate suporta modificări în timpul dezvoltării
Model cascadă
Concept Necesităţi
Proiectare Concept Codificare Necesităţi
Test
Proiectare
Suport
Codare Test
Model Incremental
Suport
Architectură - Traditională Modul procedural Modul procedural Modul procedural Structura modulelor
Set Date Set Date Set Date Set Date Structura de date
Architectură – Orientată către Obiect Modul Procedural Modul Procedural
Set Date Set Date Structura în obiect (Date + Module)
Modul Procedural
Set Date
Modul Procedural
Set Date