230 likes | 475 Views
Sisältö Johdatus ohjelmointiin ja C-kielen asema ohjelmointikielten joukossa (3-4) Ohjelmointiympäristö (5-7) Ohjelmakoodin kirjoitusasu (8-9) C-ohjelmoinnin peruselementit (10-23). C-ohjelmoinnin perusteet. 1. Johdatus ohjelmointiin ja C-kielen asema ohjelmointikielten joukossa.
E N D
Sisältö Johdatus ohjelmointiin ja C-kielen asema ohjelmointikielten joukossa (3-4) Ohjelmointiympäristö (5-7) Ohjelmakoodin kirjoitusasu (8-9) C-ohjelmoinnin peruselementit (10-23) C-ohjelmoinnin perusteet
1. Johdatus ohjelmointiin ja C-kielen asema ohjelmointikielten joukossa • Ohjelmakoodi sisältää tietokoneen prosessoreille tarkoitettuja ohjeita haluttujen toimenpiteiden suorittamiseksi • Prosessorit ymmärtävät vain konekieltä, koodi kirjoitetaan korkeamman tason kielillä • C-kieli on ns. lausekieli, jolloin ohjelmointikoodin kirjoittaminen ainakin muistuttaa ihmisen luonnollista ajattelua
1. Johdatus ohjelmointiin ja C-kielen asema ohjelmointikielten joukossa Luonnollinen kieli Uuden sukupolven kielet Ihmisen ajattelutapa Java, C# C++, C Assembler Korkean tason kielet (Tehtävän läheiset ja koneen läheiset kielet) Tietokoneen toiminta Symboliset konekielet Central Processing Unit Konekieli Kääntäminen Konekieli
1. Johdatus ohjelmointiin ja C-kielen asema ohjelmointikielten joukossa Lähde: Concepts of Programming Languages, R. W. Sebesta 5th ed. (2002) COBOL PL/I FORTRAN I FORTRAN IV FORTRAN 90 Imperatii-viset CPL C Pascal ALGOL 68 ALGOL 60 Visual Basic BASIC SIMULA I Eiffel SIMULA 67 ADA 83 ADA 95 Oliopohjai-suus C++ C# Java Smalltalk 80 Funktio-naaliset LISP Scheme COMMON LISP COMMON LISP/CLOS Logiikka-kielet Prolog++ PROLOG 2000 1970 1980 1990 1960
2. Ohjelmointiympäristö Kääntäjä (Compiler) Tekstieditori (lähdekoodi) hello.obj Linkkaaja (Linker) #include <stdio.h> int main() { printf("Hello, world\n"); return 0; } compile link hello.exe hello.c run/execute Hello world _ Käyttöjärjestelmä
2. Ohjelmointiympäristö Osoite data/käsky Ohjelman muistialue: -Data -Konekielisetkäskyt 0110101100111001 004010F9 004010FB 0110111000100111 004010FE 1101111001111011 . . . Data Käskyt Aritmeettinen ja looginen yksikkö Input/ Output Keskusyksikkö (CPU) käskyjen tulkkaus
2. Ohjelmointiympäristö Integroitu ohjelmointiympäristö • Syntaksin tunnistava tekstieditori • Kääntäjä • Linkkaaja • Debuggeri • Virtuaalikone (käyttöjärjestelmä) • Tiedostojen hallinta (projektit) • Online-help + wizard-toiminot ym. Harj. Käynnistä ja tutustu integroituun ohjelmointiympäristöösi. Etsi valikoista toiminnot: • Uuden lähdekooditiedoston (*.c) avaaminen ja tallentaminen nimellä • Ohjelman kääntäminen (compile), linkittäminen (build) ja ajaminen (run, execute)
3. Ohjelmakoodin kirjoitusasu Kolme toimivaa ohjelmakoodia • Erilliset lauseet erotetaan toisistaan puolipisteillä (;) • Välilyönneillä erotetaan sanat toisistaan • Sarkaimilla ja rivin-vaihdoilla selkeytetään koodin ymmärtämistä • Kaarisulkuja () käytetään funktioiden argumenttien erottamiseksi, aaltosulkeita {} ohjelmalohkojen merkitsemiseksi Harj. Kirjoita, käännä ja aja ohjelma. Huom! Voit joutua kirjoittamaan main-funktion loppuun ennen return-lausetta rivin system(”PAUSE”); Tämä jättää tulostusikkunan näkyviin kunnes painetaan jotain näppäintä. #include <stdio.h> int main(){printf("Hello,world\n");return 0;} #include <stdio.h> int main() {printf("Hello, world\n"); return 0;} #include <stdio.h> int main() { printf("Hello, world\n"); return 0; }
3. Ohjelmakoodin kirjoitusasu Koodin lisätyillä kommenteilla selkeytetään koodin ymmärtämistä ja uudelleen käytettävyyttä Harj. Lisää ohjelmaan kommentit. Tutustu myös kääntäjän generoimiin virheilmoituksiin (esim. poista puolipiste lauseen lopusta, merkitse #include komento kommentiksi tai kirjoita printf –funktio virheellisesti). #include <stdio.h> int main() { printf("Hello, world\n"); return 0; } #include <stdio.h> /* Tämä ohjelma tulostaa tervehdyksen. Yleensä tämä on kaikkien ohjelmoijien ensimmäinen ohjelma millä tahansa ohjelmointikielellä */ int main() { printf("Hello, world\n"); // Tulostuslause return 0; // Paluu main-funktiosta }
4. C-ohjelmoinnin peruselementit C-kieli on imperatiivinen kieli, jossa koodi sisältää tyypitettyjä tietomuuttujia ja lauseita. Lauseiden sisältämien käskyjen avullahallitaan muuttujien osoittamien muistipaikkojen sisältöä • Perustietotyypit • Tyypitetyt muuttujat • Vakiot • Lause (Statement) • Lauseke (Expression)
4. C-ohjelmoinnin peruselementit Muuttujien esittely • Muuttujat esitellään ohjelmalohkon alussa • Esittelyssä ilmoitetaan ensin muuttujan tyyppi (type) ja sen jälkeen tunniste (identifier) /*Tämä ohjelma kysyy kokonaisluvun ja tulostaa sen neliön */ #include <stdio.h> int main() { /*muuttujien esittely */ int luku, nelio; /* ohjelma */ printf("Anna jokin kokonaisluku"); scanf("%d",&luku); nelio=luku*luku; printf("Antamasi luvun neliö on %d",nelio); return 0; }
4. C-ohjelmoinnin peruselementit Muuttujien alustus • Muuttujat alustetaan yleensä sijoituslauseella • Ohjelman käyttäjä voi myös antaa muuttujalle arvon näppäimistöltä Harj. Kirjoita ohjelma ja aja se. /*Tämä ohjelma kysyy kokonaisluvun ja tulostaa sen neliön */ #include <stdio.h> int main() { /*muuttujien esittely */ int luku, nelio; /* ohjelma */ printf("Anna jokin kokonaisluku"); scanf("%d",&luku); nelio=luku*luku; printf("Antamasi luvun neliö on %d",nelio); return 0; }
4. C-ohjelmoinnin peruselementit Tärkeimmät perustyypit • int (kokonaisluku) • unsigned int (etumerkitön kokonaisluku) • long (suuri kokonaisluku) • float (desimaaliluku) • double (desimaaliluku, suurempi laskenta-tarkkuus) • char (yksi merkki tai myös pieni kokonaisluku) int main() { /*muuttujien esittely */ int ika; usigned int indeksi; long asukasluku; float paino; double etaisyys; char merkki; …
4. C-ohjelmoinnin peruselementit Vakiot • Esikääntäjällä nimetty vakio, jonka nimeä voidaan käyttää kuten muitakin muuttujia, mutta sen arvoa ei voi enää muuttaa • Muuttujat alustetaan usein jo esittelyn yhteydessä ohjelmoijan kirjoittamilla vakioilla #define PII 3.14 int main() { /*muuttujien alustus esittelyn yhteydessä */ int ika=23; long asukasluku=23450765; float paino=68.2; double etaisyys=4122133235.650; char merkki=’a’; …
4. C-ohjelmoinnin peruselementit Perustietotyyppien tulostaminen (printf) • Perusmuoto printf(”merkkijono”,muuttujat) • Merkkijonossa • rivinvaihdot \n • Muuttujien arvot muotoilumääreen avulla • %d tai %i int • %ld long • %f float • %lf double • %c char Harj. Kirjoita, käännä ja aja ohjelma. #include <stdio.h> #define PII 3.14 int main() { int ika=23; long asukasluku=23450765; float paino=68.2; double etaisyys=4122133235.650; char merkki=’a’; printf(”Tulostetaan muuttujien arvot\n”); printf(”Ikä = %d ja paino = %f\n”, ika, paino); printf(”Asukasluku = %ld\n”, asukasluku); printf(”Merkki = %c\n”, merkki); printf(”Vakion pii arvo on %f\n”, PII); return 0; }
4. C-ohjelmoinnin peruselementit Perustietotyyppien tulostaminen (printf) • Merkkijonossa sarkainasetus \t • Muotoilumääreen syntaksi %leveys.desimaalittyyppi Harj. Kirjoita, käännä ja aja ohjelma. Lisää muuttuja iälle, alusta se koodissa ja tulosta ikä kolmannella rivillä. #include <stdio.h> int main() { float paino=68.2,pituus=1.72; printf(”Tulostetaan paino ja pituus\n”); printf(”Pituus = \t %4.2f m\nPaino = \t %4.2f kg”, pituus, paino); return 0; }
4. C-ohjelmoinnin peruselementit Arvon lukeminen näppäimistöltä (scanf) • Perusmuoto scanf(”muotoilumääre”, &muuttuja) • Muotoilumääreenä käytetään samoja kuin printf-lauseessa • %d tai %i int • %ld long • %f float • %lf double • %c char • Huom! &-operaattori muuttujan nimen edessä hakee muistiosoiteen int main() { int ika; float paino; printf(”Anna ikäsi täysinä vuosina\n”); scanf(”%i”, &ika); printf(”Anna painosi 0.1 kg tarkkuudella\n”); scanf(”%f”, &paino); printf(”Ikäsi on %i vuotta\n”, ika); printf(”Painosi on %f kg\n”, paino); return 0; }
4. C-ohjelmoinnin peruselementit Arvon lukeminen näppäimistöltä (scanf) ja tulostaminen (printf) Harjoitus: Laadi ohjelma, joka lukee käyttäjältä henkilön painon ja pituuden, laskee henkilön painoindeksin kaavalla sekä tulostaa painoindeksin ja oheisen taulukon Normaalia alhaisempi paino 18,4 tai alle Normaali paino 18,5 - 24,9 Lievä lihavuus 25,0 - 29,9 Merkittävä lihavuus 30,0 - 34,9 Vaikea lihavuus 35,0 - 39,9 Sairaalloinen lihavuus 40,0 tai yli
4. C-ohjelmoinnin peruselementit Lause (statement) ja lauseke (expression) • Lause on ohjelman toiminnallinen perusosa • Lauseke on lauseen osa, jolla on jokin arvo. Lauseke voi koostua muuttujista, vakioista, operaattoreista, sulkeista ja/tai funktiokutsuista • Esimerkkinä if-lause if (lauseke) lause; else lause; int main() { int Kallen_ika=15, Villen_ika=16; if (Kallen_ika>Villen_ika) printf(”Kalle on vanhempi kuin Ville\n”); else if (Kallen_ika==Villen_ika) printf(”Kalle ja Ville ovat yhtä vanhoja\n”); else printf(”Ville on vanhempi kuin Kalle\n”); return 0; }
4. C-ohjelmoinnin peruselementit Esimerkkejä lausekkeista • Aritmeettinen lauseke (arvo = 2.5) • Looginen lauseke (arvo = 1 eli tosi tai 0 eli epätosi) • Funktiokutsu (arvo = 2) • Sijoituslause on C-kielessä myös lauseke, jonka arvoksi tulee sama kuin sijoitettava arvo (Jos muuttuja luku on liukulukutyyppiä, tulee arvoksi 2.5, jos taas luku on kokonaislukutyyppiä, tulee arvoksi 2) (2+3)/2 Kallen_ika==Villen_ika sqrt(4) luku=(2+3)/2;
4. C-ohjelmoinnin peruselementit Kielen tunnistamat merkistöt ja sanat • Numerot (digits) • 0 1 2 3 4 5 6 7 8 9 (myös oktaali ja heksadesimaalinumerot) • Ei-numerot (nondigits) • _ a b c … x y z A B C … X Y Z • Tunnisteet voidaan kirjoittaa käyttämällä ei-numeroita ja numeroita, kunhan ne alkavat ei-numerolla ja ne eivät ole varattuja sanoja (kts. myöh.)
4. C-ohjelmoinnin peruselementit Kielen tunnistamat merkistöt ja sanat • Erikoissymbolit • Väli- ja sulkumerkit . ; , : ( ) [ ] { } • Aritmeettiset merkit + - * / = < > • Muita erikoismerkkejä ! % & # ? \ ^ | ~ • Edellisten yhdistelmiä Jokaiseen merkkiin tai merkkiyhdistelmään liittyy erityinen syntaksi ja semantiikka, jotka voivat myös riippua siitä yhteydestä, jossa merkki(yhdistelmä) esiintyy. Esimerkiksi % -merkki voi toimia muotoilumääreenä tai jakojäännösoperaattorina /* % muotoilumääreenä */ scanf (”%i”,&luku); /* % jakolaskuoperaattorina */ luku = 5%2; //luku saa arvon 1
4. C-ohjelmoinnin peruselementit Kielen tunnistamat merkistöt ja sanat • Varatut sanat • auto double int struct break else long switch case enum register typedef char extern return union const float short unsigned continue for signed void default goto sizeof volatile do if static while Varattuja sanoja ei voi yksinään käyttää ohjelmoijan määrittäminä tunnisteina. Lisäksi on syytä välttää standardikirjastossa määriteltyjen funktioiden nimiä, kuten esimerkiksi printf.