Presentation is loading. Please wait.

Presentation is loading. Please wait.

Süsteemprogrammeerimine keeles C ja C#

Similar presentations


Presentation on theme: "Süsteemprogrammeerimine keeles C ja C#"— Presentation transcript:

1 Süsteemprogrammeerimine keeles C ja C#
Üheteistkümnes loeng

2 Veel failidest ja streamidest
Failitöötluse soovitus #include <iostream.h> #include <fstream.h> Annab kaks kasulikku klassi sulle ifstream – sisendfailivoog ofstream – väljundfailivoog KASUTAD NAGU cout, cin, cerr jne klasse

3 Veel failidest ja streamidest
#include <iostream.h> #include <fstream.h> #include <stdio.h> void main() { int I = 0; char b[255]; ifstream loe("c:\\boot.ini"); while( loe.getline(b,255)) i++; cout << i << " " << loe.tellg() << " " << b << '\n'; }

4 Veel failidest ja streamidest
#include <iostream.h> #include <fstream.h> #include <stdio.h> void main() { int I = 0; char b[255]; ifstream loe("c:\\boot.ini"); ofstream pane(“c:\\copyboot.ini”); while( loe.getline(b,255)) i++; pane << i << " " << loe.tellg() << " " << b << '\n'; }

5 Template Probleem – klassi kirjeldamisel on vaja terve hulk ühesuguse sisuga kuid eri tüüpi parameetritega funktsioone. See muudab klassi kirjelduse kohmakaks ja ebaotstarbekaks, rakesti loetavaks ja raskesti silutavaks

6 Template int compare_values(int a, int b);
float compare_values(float a, float b); char compare_values(char a, char b); Kõigi kolme sisu on 1 ja seesama return ((a > b) ? a : b);

7 Lihtsam vorm template<class T> T compare_values(T a, T b) {
return ((a > b) ? a : b; } nn GENERIC FUNKTSIOON!

8 Template kasutades saab koostada
Generic funktsioone Generic struktuure Generic klasse Generic tüübiteisendusi (casting) jne jne

9 Veatöötlus Inimene teeb peamiselt vigu Avuti teeb peamiselt vigu
Maailmas juhtub igasugu äpardusi ja kui ei juhtu, siis lugege Murphit

10 Vigade eelkontroll ja järeltöötlus
translaator tüübikindlus nime tõstutundlikkus deklareerimisnõue ... Parameetrite ülekontrollimine (InLine) Järeltöötlus Vigade kinnipüüdmine, veateated, täpsustused

11 DISKUSSIOON KUS TULEKS ANDMEID KONTROLLIDA?
KAS KÕIKI VÕIMALIKKE VIGU SAAB EELKONTROLLIDA?

12 InLine veatöötlus Iga parameetrit kontrollitakse hoolega, enne kui temaga midagi tegema hakatakse if (parameeteronõige) {teemekasulikku} else {teatameveast} while teemidagi(...) ; return (kuidasõnnestus); Keegi ei jõua kõike läbi kontrollida

13 Struktuurne veatöötlus
Mõisted: try – proovi, plokk, milles toimuvat me kontrollime catch – püüa, plokk, mis saab juhtimise tõrke korral finally – peale segadust, plokk mis tuleb täita igal juhul throw – anna teada, koht kus öeldakse, et asi on p...s

14 Veatöötlus eri keeltes
VB-s (vana) ON ERROR GoTo kuhugi C-s süsteemsed plokinimed __try __catch __finally C++ ja C# struktuur try { } catch(...) { } finally { }

15 Veatöötlus on korruseline ehitus
{...; funktsioon1( ... ); ...;} void funktsioon( ... ) funktsioon2( ... );

16 Veatöötluskorrused plaanitud viga ootamatu viga F3 try F3 catch
F3 finally F2 try F2 catch F2 finally F1 try F1 catch F1 finally

17 Milleks finally C ja C++ algselt seda võimalust ette ei näe
tegemist on MS spetsiifilise lisandiga Sõltumata sellest, kas pruut ütleb altari ees jah või ei, tuleb peigmehe vanematel see nali kinni maksta finally – toakoristuskood!

18 Finally C++ - süsteemne märgend C# struktuurielement

19 C# - keeles on veel mõned vigurid
Checked ja unchecked kood checked (avaldis) checked blokk unchecked (avaldis) unchecked blokk

20 throw ja catch ja veatüüp
catch(T muutuja) { ... } blokk täidetakse, kui toimus T-tüüpi viga T muutuja; ... ; throw muutuja; kutsutakse esile T-tüüpi viga T on mingi tüüp (int, char, misiganes) on süsteemsed veatüübid

21 milline catch-blokk täidetakse
Samad reeglid mis overloaditud funktsioonidel leitakse eismene sellele tüübile (klassile) sobiv catch-blokk kui ei ole, siis selle baastüübile sobiv jne kuni catch(...) või catch(System.Exception x) ja kui ikka ei ole, siis järgmisele korrusele ja kõige alumine korrus on süsteem (Dr. Watson)

22 C# keeles - veatüübid tuletatud klassist System.Exception
System.SystemException ... vt tuletatud klassid Igas namespaces vt sealsed exceptionid

23 EXCEPTION Exception = erand Veatöötlus = reegel

24 Järgmine kord – (või harjutustunnis)
käime läbi silumisvahendid transleerimisviisid (checked, unchecked) räägime trace ja debug klassidest (C#)


Download ppt "Süsteemprogrammeerimine keeles C ja C#"

Similar presentations


Ads by Google