L 5,R 65,J,T 5 20 HEADINGC Demo 12 (osa) Merkitse seuraavaan listaan ne monisteen kohdat, miss„ kustakin asiasta kerrotaa: Kurssia edelsi jakso, jossa opeteltiin algoritmien m„„rittely„ ja ohjelmointia suomen kielell„. HEADINGC 1. C-kielt„ lapsille L 5,R 95,J,T 5 20 BEGIN GESIMERKKI - Yksinkertaisen p„„ohjelman rakenne - Standardit #include-tiedostot () - main() { ... return 0; } - Kommentit - Tietotyypit int ja double ja vastaavat vakiot desimaalimuodossa - Muuttujien m„„rittely e.m. tietotyypeill„ - #define-m„„ritys vakioille - Operaattorit ( ) + - * / = ja aritmeettisten talletuslausekkeiden kirjoittaminen niiden avulla. - Operaattorit % += -= *= /= %= ++ -- - Perusmuodot printf-funktiosta: printf("%d\n",i); printf("%d %d %f\n",i,j,x); printf("Ympyr„n pinta-ala: %f\n",pi*r*r); - Perusmuodot scanf-funktiosta scanf("%d",&i); scanf("%d%d%d",&i,&j,&k); scanf("%d%d%lf",&i,&j,&z); - Yksinkertaiset funktiot - Funktiot ovat p„„ohjelman kanssa samassa tiedostossa - Parametrilista ANSI-muodossa - Ei pointer-parametreja - if-lause - Vertailuoperaattorit == != < <= > >= - Yksinkertaisten vertailujen teko if-lauseessa - {} ja blokin k„ytt” if-lauseessa (my”s kirjoitustapa) - if-else-kombinaatiot (my”s kirjoitustapa) - while ja do-while-silmukat - break, continue - Esitet„„n esimerkiksi siin„ yhteydess„, ett„ luetaan ja k„sitell„„n toistuvia tietoja ja lopetetaan, kun annetaan poikkeuksellinen tieto. - Osoittimet - Osoittimien k„ytt” aliohjelman tietojen v„lityksess„ - Yksinkertaiset taulukot - Taulukon yhteys osoittimiin. - Osoitinaritmetiikkaa: pa+i, *(pa+1). - *(pa+i) esitettyn„ toisella tavalla on pa[i]. - for-silmukka taulukoiden k„sittely„ varten - for (i = 0; i < n; ++i) - Matemaattiset funktiot - Merkkijonot - Merkkijonojen m„„rittely ja alustaminen - char-vakiot - printf("%s",str); - Luku rivi kerrallaan: fflush(stdin); gets(str); - K„sittely osoittimen (indeksin) avulla. - Joitakin standardifunktioita: strlen, strcpy, strcmp, strcat. - isdigit, isalnum jne. - Varoitus skandaalisista merkeist„ - K„ytt”ymp„rist”n ja debuggerin perusk„ytt” (ei kaikkia temppuja) Edellisi„ mahdollisuuksia k„ytt„en tehd„„n ohjelmia, jotka tekev„t jotain j„rkev„lt„ kuulostavaa. END GESIMERKKI HEADINGC 2. C-kielen kansanversio BEGIN GESIMERKKI - Tietotyypit: char, short, int, long, float, double, unsigned-tyypit - Useampiulotteiset taulukot - Vakiokokoiset taulukot - Vaihtuvakokoisten matriisien k„ytt” funktioiden parametreina (talletus sarakelistana Fortran-yhteensopivasti, alkion (i,j) saanti: *(a+i+m*j) tai a[i+m*j] - Relaatio-operaattorit ja loogiset operaattorit && || ! - If-else if-else kombinaatiot t„ydellisesti - ++ -- (k„ytet„„n vain yksin„„n toistaiseksi) - for-lause t„ydellisesti - ? : -lauseet - Sijoitusoperaattorin k„ytt” if-lauseissa yms. - switch-lause - Tietueet (struct), . -> - typedef erityisesti tietueiden yhteydess„ typedef struct T trec; struct T { char key[LKEY]; trec *next; }; - Tietueiden v„litys aliohjelmiin pointereilla. - Linkityt lineaariset listat - Pointereiden k„ytt” listan k„sittelyss„. Listat esitet„„n yksinkertaisuuden vuoksi niin, ett„ aina alussa on tyhj„ tietue. - Listojen k„ytt” parametreina aliohjelmissa. - Funktiopointerit - ++ -- k„ytt” pointereiden yhteydess„ (ankaria varoituksia) - void* - printf ja formatointi kutakuinkin t„ydellisen„. - scanf ja formatointi kutakuinkin t„ydellisen„. - Erityisesti kiinnitet„„n huomiota sy”t”n oikeellisuuden valvontaan ja merkkitiedon lukuun. - Vertailu skandaalimerkkej„ k„ytett„ess„ - Merkkitiedostojen k„sittely. - Bin„„ritiedostot ja hajak„sittely. - argc,argv - Ohjelmiston kokoaminen erillisist„ ohjelmatiedostoista. - Funktioprototyypit - h-tiedostot - Muistin allokointi - Aliohjelmaryhm„t. static-alueet ohjelmatiedostossa - Preprosessori-direktiivit. Ehdollinen k„„nt„minen - Standardifunktioita - qsort,string.h-funktiot jne mutta ei kaikkia END GESIMERKKI HEADINGC 3. Edistynyt C BEGIN GESIMERKKI (Otetaan joitakin kohtia mik„li hyvin ehdit„„n) - Bittioperaatiot & | ^ ~ >> << - Bittikent„t tietueissa - Standardifunktioita (time.h, locale.h, limits.h) - Eksoottisia merkint”j„ ja temppuja: while(*a++ = *b++); a+++++b etc - Mutkikkaita tyyppim„„rityksi„ ja niiden analyysi„ - Tutustumista systeemin h-tiedostoihin - Preprosessori t„ydellisesti - Erilaiset muistimallit - C ja Unix - Edistyksellist„ debuggerin ja k„ytt”ymp„rist”n k„ytt”„ - Overlay- ym ihmeohjelmia END GESIMERKKI