......................................................................................17 Ülesandeid.........................................................................................................................17 Massiivid...............................................................................................................................17 Tsükkel andmete kasutamiseks.........................................................................................18 Massiiv ja alamaprogramm...............................................................................................19 Algväärtustamine, järjestamine.........................................................................................19 Osutid ja koopiad.............................................................................................................. 20 Massiiv alamprogrammi parameetrina..............................................................................21
detektiivi roll ning püüda asuda tõestama, et mõni stantardne koodikäsklus toimib vigaselt. Kõige kindlam võimalus midagi tööle saada on tõestada, et seda pole olemasolevate vahenditega võimalik teha. Enamasti selgub süstemaatilise läbiproovimise käigus siiski, et soovitud lahendus on tehtav - kuigi mõnikord küllaltki pikka teed pidi. Paratamatult aga leidub kohti, kus ka programmeerimiskeele enese käsklus käitub vähemasti mõningates olukordades kõhutunde pakutust erinevalt. Vahel aitab sellistel puhkudel manuaali lugemine. Välistatud pole aga ka olukord, kus on võimalik tehnoloogia autoritele saata uhkusega kiri, kus kirjeldada leitud viga ning selle esinemise olukordi - enne muidugi mitmel moel selle esinemist ise läbi katsetades. Kui raamistik pole surnud, vaid elab järgmiste versioonide tekkimise näol edasi, siis sellised teated on arendajatele igati
nimega Main. Plokke võib vahel tunduvalt rohkem olla. Omaette terviklikud toimingud
paigutatakse üldjuhul alamprogrammidesse. Nende sees võivad olla plokid tingimuste ja
korduste tarbeks.
Lihtne tervitus
Näited
C C++ C#
#include
parameetritega vastavusse meetodi poole pöördumisel. Javas seostatakse parameetrid positsiooni järgi, s.t. oluline on täpne parameetrite järjestus. Ka võtmesõna this võib käsitleda formaalse parameetrina, millele vastab pöördumisel punkti ees olev objekt. Lisaks sellele määratakse meetodi defineerimisel alati nn. tagastustüüp (s.t. mis tüüpi väärtus on meetodi töö tulemuseks). Tagastusväärtuse puudumisel on tagastustüübiks void. Tagastusväärtuse määrab meetodis täidetava return- lause järel olev avaldis (void-meetoditel on return-lause ilma avaldiseta). Sisendparameetrid on meetodile algandmeteks, mida ei muudeta. Väljundparameetrid (Java korral on ainsaks väljundparameetriks tagastusväärtus) on meetodi töö tulemuseks. Sisend-väljundparameetrid on korraga mõlemas rollis (s.t. neid muudetakse meetodi töö käigus), olles Javas siiski süntaktiliselt samaväärsed sisendparameetritega.
1 Loeng. Sissejuhatus Võtmesõnad: abstract assert boolean break byte case catch char class const* continue default double do else enum extends final finally float for goto* if implements import instanceof int interface long native new package private protected public return short static strictfp super switch synchronized this throw throws transient try void volatile while NB! Tunduvad võtmesõnadena, aga on literaalid: false null true Algtüübid: Täisarvud · byte(8-bitiline), short(16-bitiline ), int(32-bitiline), long(64-bitiline) Ujukomaarvud · float(32-bitiline), double(64-bitiline) Tõeväärtused · boolean(true, false) Sümbolid · char(16-bitiline Unicode-sümbol, 'u0000'(0) kuni 'uffff'(65535)) Nimi: · on tõstutundlik · võib sisaldada tähti, numbreid, _ , $ · ei tohi alata numbriga
vastutajad.html. Osa kujundust on mugav disainivaates teha. Et tulemuseks aga HTML-kood, siis ei saa disainivaates teha midagi sellist, mida otse koodi sisse kirjutada ei saa. Vastupidi aga küll. Üheks selliseks mooduseks on definitsiooniloend sõna ja tema seletus. Ehk siin on sõna ehk definitsiooni rollis klassi number, selgituseks aga nende roll peol. Kogu selle loo ülesmärkimiseks on vaja kolme eri HTML-käsklust. Käsk dl ehk definition list teatab, et nüüd loetelu algab, nüüd lõpeb. Definition term ehk dt märgib seletatava termini, dd ehk definition määrab termini vaste. Ning nende abil saab iga klassi koos oma rolliga kirja panna. Kood:
küsimustes teadmist, mida enamus ei pruugi enese kohta tõeselt evida (olen üsna alluva iseloomuga). Küsimuste-hinnangute selgitus: Ekspertteadmiseks ongi vastusevalikute puhul tingimused muutujate väärtuste kohta (näiteks see, et 'juht/strateeg' peab kindlasti olema domineeriv ja initsiaator, ent pole oluline, et ta oleks detailidesse süüviv või pedantne). Igale lõppvastusele on küsimuste erinevate väärtuste varieerumisel erinev mõju selle mõju suurust näitab muutuja kindlusteguri (ingl. k. 'confidence') suurus ning muutumine reeglibaasis. Küsimuste/väidete vastusevariandid on antud kolme-valentsel skaalal (soovisin teha viievalentset, ent aja ja arendusvahendi testiversiooni limiteerituse tõttu piirdusin kolmega) tähendustega 'pigem ei', 'ei nii ega naa', 'pigem jah'. Selle skaala ning vastusevalikutele esitatud kriteeriumite alusel jagatakse vastusmuutujatele punkte valitud erialaks saab see, mille kriteeriumitele
0 2011a) See on juhend kiireks Java õppimiseks, esialgsete teadmiste omandamiseks. Näited teen eclipse'iga. Koostanud Alex. Email: [email protected]. Tänud Roelile, kes leidis kirja- ja muid näpuvigasid ning tegi huvitavaid soovitusi manuaali redigeerimiseks/täiendamiseks! I. Valmistumine programmi kirjutamiseks. Alustame kõige lihtsamast asjast ehk põhimõttest. Programm koosneb pakettidest. Pakett koosneb klassidest, millest üks on alati main class, mis jooksutab teisi klasse. Main klassi all mõtlen ma seda, et meil on üks suvalise nimega klass, mis hoiab endas staatilist main nimega funktsiooni (sellest veidi hiljem). Klassid on selleks, et hoida erinevaid programmi osi eraldi. Näitena võib tuua maja. Maja puhul on klassideks näiteks sein, aken, uks, katus, vundament jne. Maja elamiskõlblikuks muutumiseks on vaja Main klassi. Klassid koosnevad funktsioonidest. Java programm koosneb pakettidest, pakid aga klassidest
asendada sellest n tähte tähestikust tagapool oleva tähega. Teksti tagastamiseks on vaja võtta krüpteeritud tekst, seesama nihkenumber n, ja asendada krüpteeritud tekstis iga täht sellest n tähte tähestikust tagapool oleva tähega. Kui krüpteerimisel või dekrüpteerimisel valitud täht osutub tähestikust väljapoole, tuleb hakata teiselt poolt tähestikku edasi lugema. Programmi kood: public class EX03 { /** * Given text and a rotation, encrypts text. * @param plainText plain text, readable by humanoids * with relative ease. * @param rotation * @return encrypted text */ public static String encrypt(String plainText, int rotation) { if (plainText == null) return null; if (plainText.isEmpty()) return plainText; String encrypted = ""; //plainText = minimizeText(plainText);
Ülesande püstitus
Vastavalt oma matrikli viimasele numbrile valitakse ülesande variant. Koostada tuleb
C-keelne programm.
Tingimused:
1) failist F1 sisestatakse kirjed struktuuriga:
Nimi - string
Vanus naturaalarvuline
Palk reaalarvuline
2) faili F2 väljastatakse keskmisest madalama vanusega kirjed;
3) faili F3 väljastatakse keskmiset suurema palgaga kirjed.
Programmikood
#include
meelde tuletada. Aga kui kommentaarid on olemas piisab selleks ~5 minutist. Kommentaarid peavad kirjeldama loodava koodi eesmärke, kasutatud muutujaid, funktsioone ja algoritme. PHP parser ei loe teksti, mis asub kommentaaride vahele. Ta lihtsalt ignoreerib seda. PHP programmeerimiskeeles on 2 tüüpi kommentaare: 1. / voi # - üherealiste märkuste jaoks 2. /* ... */ - mitmerealised kommentaarid comments.php muutuja $a lühikirjeldus $b = 8; // muutuja $b lühikirjeldus # kaivitame funktsiooni sum() # ja kirjutame tulemuse väljundisse echo $a.' + '.$b.' = '.sum($a, $b); /* Funktsioon summa leidmiseks. Sisendiks on 2 argumenti ja tulemuseks on nende summa */ function sum ($x, $y) { return $x + $y; } ?> Näide 1.3.2 Eraldajad PHP programmid on põhimõtteliselt käskude kogumid. Käskude eraldamiseks kasutatakse programmeerimiskeeltes spetsiaalseid sümboleid - eraldajaid. PHP's seda tehakse semikooloniga: separators.php
Vastuvõttev klass ei pea ise mõtlema, millist tüüpi objekti luua või kasutada Näide : Klass DataParser töötleb andmeid Andmed tulevad ja kirjutatakse tagasi DataService-tüüpi teenusega Olemas on mitu erinevat DataService teenust – millist kasutada? Sõltuvuse sisestamine (dependency injection): klass kasutab mingit teenust, mis on spetsifitseeritud liidesega. Klassi kasutaja/looja tarnib sellele liidesele vastava teenuse. public class DigiDocContainer { private CryptoAlgorithm cryto; public DigiDocContainer( CryptoAlgorithm crypto) { this.cryto = crypto; } } DigiDocContainer kasutab krüpteerimiseks mingit liidesele CryptoAlgorithm vastavat algoritmi objekti Konkreetne realisatsioon (algoritm) sisestatakse nt konstruktoris 13. Mis on race condition (konkurentsiolukord)? Programmi korrektne täitmine sõltub tegevuste järjestusest.
.........................18 Identifikaator..........................................................................................18 Andmetüüp.............................................................................................19 Väärtus...................................................................................................19 Konstant.................................................................................................19 Muutuja..................................................................................................20 Andmemudel..........................................................................................20 Arvutiga seotud mõisted............................................................................21 Protsessor...............................................................................................21 Mälu....................................................
töötab veebilehitseja juhtimisel veebidokumendi aknas. · Midlet (Midlet) -- piiratud võiimalustega spetsialiseeritud programm, mis töötab mobiilseadmel. · Servlet (Servlet) piiratud võiimalustega spetsialiseeritud programm, mis töötab veebirakenduse serveri poolel. · Serveripoolne rakendus (Enterprise Application) on määratud mitmekordsele kasuamisele serveri poolel. · Java klasside teek (Java Class Library) on ettenähtud mitmekordseks kasutamiseks Java keeles kirjutatud programmides. C++ vs Java · Süntaks. Kuivõrd see võimalik on, C++s püütakse hoida järjepidevust ja ühilduvust C keelega. Java on pealtvaadates sarnane C ja C++ keeltega, sest võttis nendelt üle suure osa põhikonstruktsioone, jättes samas kasutamata vahendid, milleta läbi saab ja mis kirjutamise keerulisemaks või veaohtlikumaks teevad
1. Milles seisneb static typing ja dynamic typing erinevus? Static- Muutuja tüüpi on teada kompileerimise ajal ning seda muuta ei saa. See vähendab vigade hulka programmi töö ajal. Dynamic – Muutuja tüüp selgub programmi töö ajal. 2. Milliseid piiranguid seavad nähtavusele proteced ja package-private (default) nähtavused? Public – nähtav kõigile Package private- nähtav paketi sees Private – nähtav klassi sees Protected – nähtav paketi sees ja alamklassidele 3. Mis on Oracle Java virtuaalmasina (JVM) nimi? Kes ei tea, kukub ainest läbi :) JRE Java Runtime Environment – java programmi käivitamiseks JDK – Java Development Kit - arendusvahend java programmi arendamiseks
SW a.out / .exe / .com Kõik ülesanded töötavad, kuni on lõpetanud. language: OS-i poolt mällu laetav programmi "toorik" OS ülesanded Reageerimine välistele C++ class library including required functions. Sisaldab Rakenduste juhtimine sündmustele võib võtta kaua aega Concurrency: via processes, controlled by programmi initsialiseerimine & sisu mäluhaldus sensivity lists* algväärtustatud andmed (muutujad & rakendustele tööaja eraldamine and calls to wait primitives
......................................................................36 SUUNAMISLAUSE..............................................................................................................38 VALIKULAUSE...................................................................................................................39 ÜLESANDED....................................................................................................................... 39 STRUKTUURSED ANDMETÜÜBID: JADA, MASSIIV, KIRJE, FAIL. .............................39 ............................................................................................................................................... 39 Sissejuhatus ...........................................................................................................................39 Jada. Massiiv. Massiivi mõõtmed .........................................................................................40 Massiivi deklareerimine ..........
võrdlemist.
Algoritmi ajaline keerukus halvimal juhul W(n)=n võrdlemist.
Asümptootiline hinnang f(n)=O(n).
Ülesanne: koostada skeemprogramm ja C++ kood kogu probleemi lahendamiseks.
Esialgu teha kõik töö main funktsioonis (lihtsuse mõttes) hiljem teha alamfunktsioon
otsingu realiseerimiseks. Lähteandmetena kasutada juhuslike arvude massiivi (pikkus
valida niit et aeg ei tuleks null). 2.4 GHZ AMD-l osutus piisavalt suureks juhuslike
arvude massiiv pikkusega 1 miljon elementi.
Programmi tööaja leidmine
Uurime kui kaua kulub aega algoritmi täitmiseks (C++ kood):
#include
kommenteerimine nõuab liiga palju resurssi. ? 1 Muutujate loomine Muutujad on nimelised mälupesad, millele on omistatud mingi väärtus. Põhimõtteliselt võiks seda kirjeldada kui konteinerit, mille sisuks võib olla näiteks tekst või number. Ja kuna tegemist on muutujaga, siis selle sisu võib alati muutuda. Meie võimuses on määrata ise muutujale nimi ja määrata, mis on selle sisuks - oluline on et muutuja algaks dollariga ($). Näiteks: mul on vaja hoida mälus eesnimesid. Selleks pean välja mõtlema muutujale nime, millel võiks olla mingi tähendus. Valin selleksks $enimi. Nüüd omistan (=) sellele tekstilise väärtuse näiteks "Karin". PHP's tuleb see kirja panna nii: $enimi="Karin". NB! Kõik tekstid lisatakse jutumärkide vahele! Kasutusel on nii ühekordsed (' ') kui ka kahekordsed (" ") jutumärgid. Mis on nende vahe, vaatame kohe allpool. Muutuja nime andmine
Aristoteles (470-399 e.m.a) : väidete struktuur kui iseseisev uurimisobjekt 1967- IBM builds the first floppy disk Süllogism (Aristoteles): 1967 - Seymour Papert designed LOGO as a computer language for children. 1. eeldus: iga x on y. 1968 - Robert Noyce and Gordon Moore found Intel Corporation 2. eeldus: mõni z on x. 1968 - Douglas C. Engelbart, of the Stanford Research Institute, demonstrates järeldus: mõni z on y. his system of keyboard, keypad, mouse, and windows at the Joint Computer Iga b on a Conference in San Francisco's Civic Center. He demonstrates use of a word Mitte ükski b pole a
Sissejuhatus infotehnoloogiasse 1. Loeng Algoritm on täpne samm-sammuline, kuid mitte tingimata formaalne juhend millegi tegemiseks. Näited: a. Toiduretsept. b. Juhend ruutvõrrandi lahendamiseks Algoritmiline probleem - probleem, mille lahenduse saab kirja panna täidetavate juhendite loeteluna. Programm on formaalses, üheselt mõistetavas keeles kirja pandud algoritm. Arvutid suudavad täita ainult programme. Analoogsüsteem andmeid salvestatakse (peegeldatakse) proportsionaalselt Näit: termomeeter, vinüülplaat, foto Digitaalsüsteem (pidevad) andmed lõhutakse üksikuteks tükkideks, mis salvestatakse eraldi Näit: CD, arvutiprogramm, kiri tähtede ja bittidena Ühelt teisele: digitaliseerimine The three major comparisons of computers are: Electronic computers versus Mechanical computers Gen
Joonis 1. Google App Engine SDK graafiline liides programmide haldamiseks Windows ja Mac keskkondades sisaldab SDK graafilist töökeskkonda, mis võimaldab mugavalt luua uusi aplikatsiooniprojekte, neid serverisse laadida ning lokaalses veebiserveris testida. Linux keskkonnas graafiline liides (hetkel) puudub, selle asemel tuleb kasutada tekstilisi käsklusi. SDK käsud Run - Aplikatsiooni käivitamine GAE emulaatoris (lokaalne veebiserver) Linuxis asendab käsklus dev_appserver.py aplikatsiooni_kaust Stop - Lokaalse veebiserveri töö lõpetamine Linuxis tuleb sulgeda programm dev_appserver.py (klahvikombinatsioon ctrl+z) 8 / 55 Google App Engine Andris Reinman Browse - Veebilehitseja avamine aplikatsiooni aadressiga lokaalses veebiserveris
................................................................................................... 12 Meetod parse..............................................................................................................12 Loetava kuupäeva loomine........................................................................................13 Kellaaeg.................................................................................................................... 13 Objekt string...................................................................................................................14 String meetodid..........................................................................................................14 Näited.........................................................................................................................15 Brauseri objekt..................................................................................................
õpetav, kergesti loetavad programmid.
Struktuurprogrammeerimise klassikaline keel.
- Standardis puuduvad madaltaseme vahendid jms. ->
suhteliselt aeglane programm, arvutist "viimast võtta"
on raske/võimatu.
Enamlevinud IBM PC-tüüpi arvuteil (Turbo Pascal, Object
Pascal (Delphi) jm), kuid ka UNIX ja VAX süsteemides.
SUN-i Pascal (meie töövahend) - üldiselt standard-Pascal.
Märkus edasijõudnutele.
moodulitehnika (UNIT) sellisel kujul ei tööta.
andmetüübid - standardsed + string ja alpha.
(string - 255 sümbolit, alpha - 10 sümbolit )
Üldised juhised:
·programm koosneb lausetest. Iga lause on soovitav kirjutada eraldi
reale, rea lõpus vajutada
Kinnitan, et kõigi tööde koodid on minu poolt kirjutatud ning on vabalt kasutatavad kõigile. Ei soovita otse maha kopeerida koodi, sest Tartu Ülikoolil on programmid, millega nad saavad võrrelda sinu koodi sarnasust teiste tudengite koodidega. Ei vastuta, kui panete sellega toime akadeemilise petturluse! Edu! :) 1. Nädala kodutöö 1. Maja Kirjuta programm, mis joonistab kilpkonnaga lihtsa otsevaates maja (võib olla ka pseudo- 3D vaatega). from turtle import * from math import * laius = 200 kõrgus = 200 uksePikkus = 100 ukseLaius = 50 aknaKõrgus = 50 aknaLaius = 50 #Maja forward(laius/2) right(90) forward(kõrgus) right(90) forward(laius) right(90) forward(kõrgus) right(90) forward(laius/2) right(180) forward(laius/2) right(90) right(45) forward((laius/2)/cos(pi/4)) #Trigonomeetriaga saadud katuse diagonaali pikkus right(90) forward((laius/2)/cos(pi/4)) #Ukse joonistamine right(45) forward(kõrgus) right(90) forward(20) right(90) forward(uksePikkus) left(90) forward(uk
• Lihtsaim füüsiline struktuur andmete mälus hoidmiseks on masiiv(id). Algoritmid ja andmestruktuurid 2015 7 • Loogiliseks struktuuriks on andmete jada – andmed on järjestatud, lineaarsed, igale andmeelemendile eelneb ja järgnev alati üks element. On oluline, kes või mis on jadas esimene ja viimane jne. • Ühemõõtmeline massiiv, kus on üliõpilaste nimekiri (loend): seoseks võib olla järjestus tähestistiku alusel. Oluline on vahet teha andmestruktuuri kahel aspektil: loogilisel ja realisatsiooni tasemel. Andmestruktuuri elemendi jaoks kasutatakse tavaliselt järgmisi mõisteid: • Sõlm (node) – andmeelement tabelis, üldisemalt struktuuris (ka kirje, objekt, element). Koosneb ühest või mitmest infoväljast ja ühest või mitmest viidaväljast.
I 625 S(hirl(rfll l6-lr) Bl;ilsc Pn$.il1-:lntltecliliilc illitslt ebmgqav: Fortran, C (portaabel assembler), ALslrgKse[-ia r Pakkudaprogrffimeedjalevalmisehtudstandardtiikke- 1616-11 I6
Sub jmt), mida käsutatakse ainult kindla lause kindlas köhas. Toodud protseduur koosneb viiest lausest. Esimene ja viimane lause moodustavad omavahel seotud paari: esimene määrab protseduuri alguse ja selle nime, viimane protseduuri lõpu. Teise lause täitmisel kuvatakse Visual Basicu sisendboks, milles on esitatud lauses toodud küsimus. Boksi tekstivälja saab sisestada vastuse ning pärast klõpsatust nupule OK võetakse vastus muutuja aasta väärtuseks. Järgnev IF-lause võrdleb muutuja aasta väärtust konstandiga 1976, kui need on võrdsed, siis võetakse muutuja teade väärtuseks tekst Õige!, vastupidisel juhul Vale!. Eelviimane lause kuvab teateboksi, milles on esitatud muutuja teade väärtus. VBA rakendustes võib käsutada kahte liiki protseduure: · funktsioone ehk Function-protseduureja · alamprogramme ehk Sub-protseduure Funktsioon võimaldab määrata eeskirja ühe väärtuse (arv, string jm) leidmiseks ja tagastamiseks
Tuleb varuda veidike kannatust ning oodata. Jälgides tarkvara järgmistes versioonides planeeritud funktsionaalsusi, ähvardab mäng minna veelgi põnevamaks. Olles ühel päeval SQL92/SQL99 nõudmistega ühtiv ning arendades kasutajatoe ning müügivõrku, tuleb küll tõdeda, et Oracle'i, IBMi ja Microsofti kõrvale on andmebaaside vallas tekkimas ääretult huvitav konkurent. Andmete liigid: rida CHAR (suurus) Püsipikkus string (võib sisaldada tähti, numbreid ja erimärke). Fikseeritud suurus sulgudes. Saate salvestada kuni 255 märki VARCHAR (mõõt) Mahutab kuni 255 märki. TINYTEKST Mahutab kuni 255 märki. TEKST Mahutab kuni 65.535 tähemärki. BLOB Mahutab kuni 65.535 tähemärki. MEDIUMTEKST Mahutab kuni 16777215 tähemärki. MEDIUMBLOB Mahutab kuni 16777215 tähemärki.
Esimestel koduarvutitel oli ka 4-16 Kbaiti (umbes sama hulk mälu) Olulist: protsessori sees on väike hulk spetsiaal-mälupesi (registrid) Tehteid saab teha ainult nende registrite vahel. Ei ole näiteks võimalik liita otse kahte mälus olevat arvu: enne tuleb nad registritesse kopeerida, siis seal liita, siis tulemusregistrist (nn akumulaator) mäll kirjutada. Koha, kust mälust loetakse/kirjutatakse näitab ADDR register. Koha, kust lugeda järgmine käsk, näitab PC (program counter) register. Kaks tsuklit uksteise sees:Valimine tsukkel suurendab igal ringil PC-d (program counterit), st igal ringil voetakse taidetav kask jargmisest malupesast. Sisemine tsukkel toimub iga kasu sees. Sisemise tsukli jooksul taidetakse kasu sisemisi pisi-samme. Uks pisisamm vastab mingile juhtmele voolu peale andmisele, mispeale kaivitub vastav loogika-ahel protessoris ja selle tulemus salvestatakse monda registrisse.Masina taktsagedus on see
tutvu lausearvutuse keskkonnaga: http://logik.phl.univie.ac.at/~chris/gateway/formular-uk-zentral.html Millistel muutuja väärtustel on lause (Av(B&A))v(-A&(Cv(B&-C))) väär? Panna tuleb results only, 0 on väär 1 on õige Tutvu ajalooga saidis kuni II maailmasõda: http://www.maxmon.com/history.htm Loe läbi jutt ja proovi andmetega mängida: http://math.hws.edu/TMCM/java/DataReps/index.html Kahend süsteemi arvu(101101001) ->kümnend süsteemiks. Nr sisse ja bianarile punkt, ja vaatan base ten integeri kümnendarvudest annab Ecki appletis juuresoleva graafilise kujutise, teen kujundi ja vaatan base
GO BOTTOM – tabeli viimase kirje
aktiveerimine
GO
1625 - Schickard väitis,et tegi I liitev, lahutav, korrutav, juhitav), GNU(Stallman)tasuta op.s, windows 1.0. (if (fn (car lst)) käsurida (CLI), graafika (GUI);Olemasolevad jagav masin. (every? fn (cdr lst)) rakendused, teenused,Vajalik riistvara, 1986 NNTP uudised liiguvad TCP/IP (interneti) Haldusvahendid, #f)#t)) kaughaldus,Stabiilsus,Skaleeruvus,Tugi,Hind). 1640 - Blaise Pascal-aritmeetiline masin kaudu;inteli 80386.