1 / 24

Süsteemprogrammeerimine keeles C ja C#

Süsteemprogrammeerimine keeles C ja C#. Üheteistkümnes loeng. 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.

miriam
Download Presentation

Süsteemprogrammeerimine keeles C ja C#

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

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 • Eelkontroll • 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#)

More Related