C-ohjelmoinnin perusteet

Slides:



Advertisements
Samankaltaiset esitykset
15. Loogiset operaatiot.
Advertisements

@ Leena Lahtinen Helia Ohjelman perusrakenteet 1. PERÄKKÄISRAKENNE 2. VALINTARAKENNE 3. TOISTORAKENNE.
Olio-ohjelmoinnin perusteet luento 3: Muuttujista ja funktioista Sami Jantunen LTY/Tietotekniikan osasto.
JavaScript (c) Irja & Reino Aarinen, 2007
3. Pseudokoodi.
4. Lausekielinen ohjelmointi
Rakenteinen ohjelmointi
Rakenteinen ohjelmointi
Käännösaikaiset virheilmoitukset • Tulee silloin, kun koodissa on jotain sellaista, joka ei ole Javan syntaksin mukaista • Esim. – Syntax error, insert.
1. Olio-ohjelmointi.
Ohjelmointitaito (ict1td002, 12 op) Syksy 2008
Näytölle tulostaminen. 7.2 Sisällys System.out.println - ja System.out.print -operaatiot. Tulostus erikoismerkeillä. Edistyneempää tulosteiden.
Ohjelma on kokoelma toimintaohjeita annetun tehtävän ______________________. Ohjelmassa on peräkkäisten toimintojen lisäksi yleensä valintaa ja _____________.
Sovellusohjelman suunnittelu & toteutus
C-ohjelmointi, kevät 2006 Taulukot Binääritiedostot Luento
Java-ohjelmointi Opas ammattimaiseen osaamiseen Luku 4 Toistolauseet
TIETOKONEOHJELMAN RAKENNE OHJELMALLA ON KAKSI OSAA  MÄÄRITYSOSA TIETOJEN KUVAUKSIA VARTEN  SUORITUSOSA TIETOJEN KÄSITTELYÄ VARTEN.
OLIO-OHJELMOINTI PERUSTEET PERUSTIETOTYYPIT
Ehto- ja toistolauseet
TyyppimuunnoksettMyn1 Tyyppimuunnokset Joskus kääntäjän on tehtävä itse päätöksiä, jos ohjelmoija ei ole ajatellut yksityiskohtia: int arvo1=10; long arvo2=25;
5.3.3 Koodin generointi Koodin generointi tarkoittaa objektikoodin eli konekielisen ohjelman tuottamista. Generointi jakautuu kolmeen osatehtävään: 1.Muistin.
16. Lohkot Sisällys Tutustutaan lohkoihin. Muuttujien ja vakioiden näkyvyys sekä elinikä erityisesti operaation lohkossa. Nimikonfliktit. Muuttujat.
Poikkeustenkäsittely  Mitä poikkeustenkäsittely tarkoittaa?  Poikkeuksen käsitteleminen  Poikkeusluokkien hierarkia  Poikkeuksen heittäminen 1.
Toiston tekeminen Javalla  Mikä toistorakenne on?  while toistorakenne  do-while toistorakenne  for toistorakenne 1.
Ohjelmoinnin tekniikkaa Sisällys for -lause lyhemmin. Vaihtoehtoisia merkintöjä aritmeettisille lauseille. Useiden muuttujien esittely.
Sami Jantunen LTY/Tietotekniikan osasto
13. Hyvä ohjelmointitapa (osa 1)
1 Kertaus koetta varten oleellisista asioista Jukka Juslin.
ict1td002 - Copyright Raine Kauppinen 1 Alkuarvot ja tyyppimuunnokset (1/5)  Aiemmin olemme jo antaneet muuttujille alkuarvoja, esimerkiksi: int.
Visual Basic -ohjelmointi
String-vertailusta ja Scannerin käytöstä (1/2)
Tietokoneohjelman suoritus opintojakso Olioajattelu ja –ohjelmointi, osa I Hans Nieminen Syksy 2013.
Muuttujat ja vakiottMyn1 Muuttujat ja vakiot PHP-kielen syntaksi on lainattu suurimmaksi osaksi C- kielestä. PHP on erityisesti HTML-dokumenttien sisään.
HelloWorld-ohjelma. 5.2 Sisällys Lähdekoodi. Lähdekoodin (osittainen) analyysi. Lähdekoodi tekstitiedostoon. Lähdekoodin kääntäminen tavukoodiksi.
4. Attribuutit 4.1. Sisällys Yleistä attribuuteista. Näkyvyys luokan sisällä ja ulkopuolelta. Attribuuttien arvojen käsittely aksessoreilla. 4.2.
Hyvä ohjelmointitapa (osa 2) Yleistä Lisää hyviä ohjelmointikäytäntöjä: − Jaa pitkä koodi osiin. − Käytä attribuutteja säästeliäästi.
Ohjelmointitaito (ict1td002, 12 op) Kevät 2008 Raine Kauppinen
1 Ohjelmointikielten varhaishistoria Esa-Matti Miettinen
@ Leena Lahtinen TIETOKONEOHJELMAN RAKENNE OHJELMALLA ON KAKSI OSAA:  MÄÄRITYSOSA TIETOJEN KUVAUKSIA VARTEN  SUORITUSOSA TIETOJEN KÄSITTELYÄ.
© Jukka Juslin1 Osio2 Olio-ohjelmointi: Merkkijonot eli Stringit Jukka Juslin.
Johdatus ohjelmointiin – C kielen peruselementit Tutkijayliopettaja Manne Hannula Opetusharjoittelu (ohjaava opettaja Jukka Jauhiainen)
2. Lisää Java-ohjelmoinnin alkeita
Visual Basic -ohjelmointi
Kontrollirakenteet laajemmin
Visual Basic -ohjelmointi
Visual Basic -ohjelmointi
Ohjausrakenteet Määräävät ohjelmakoodin suoritusjärjestyksen Ehtolause if – else on muotoa if (lauseke) lause1 else lause2 Jos lauseke on tosi, niin suoritetaan.
Muuttujan osoite int a=1; 0xbfffea64 /* tulostetaan a:n osoite*/ printf(“%p\n”, &a); 0xbfffea68 /* tulostetaan a:n osoite + 1*/ printf(“%p\n”, &a+1); /*
C-ohjelman käännösvaiheet
Aiheet ● Ohjelmointikielten kääntäminen ● Kieliopin määrittely ● Kääntäjän toiminta.
Tiedosvirtat Puskuroiduissa virroissa lukeminen/kirjoittaminen tapahtuu lohko kerrallaan stdin – puskuroitu (näppäimistö) stdout – purkuroitu (näyttö)
TIEP114 Tietokoneen rakenne ja arkkitehtuuri, 3 op Assembler.
Lausekielinen ohjelmointi. 4.2 Sisällys Konekieli, symbolinen konekieli ja lausekieli. Hyvä ohjelmointitapa. Lausekielestä konekieleksi: - Lähdekoodi,
String-vertailusta ja Scannerin käytöstä (1/2)
1. Olio-ohjelmointi.
7. Hyvä ohjelmointitapa..
3. Luokat, oliot ja metodit Java-kielessä (Lausekielinen ohjelmointi I ja II –kursseilla opitun kertausta.)
5. HelloWorld-ohjelma.
7. Näytölle tulostaminen
9. Aritmeettiset operaatiot
9. Aritmeettiset operaatiot
16. Ohjelmoinnin tekniikkaa
14. Hyvä ohjelmointitapa.
11. Javan valintarakenteet
7. Näytölle tulostaminen
Kontrollirakenteet laajemmin
5. HelloWorld-ohjelma.
13. Loogiset operaatiot.
4. Luokan testaus ja käyttö olion kautta
16. Ohjelmoinnin tekniikkaa
Esityksen transkriptio:

C-ohjelmoinnin perusteet 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)

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 BASIC Visual Basic SIMULA I Eiffel SIMULA 67 ADA 83 ADA 95 Oliopohjai-suus C++ C# Smalltalk 80 Java Funktio-naaliset LISP Scheme COMMON LISP COMMON LISP/CLOS Logiikka-kielet PROLOG Prolog++ 1960 1970 1980 1990 2000

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.c hello.exe run/execute Hello world _ Käyttöjärjestelmä

2. Ohjelmointiympäristö Osoite data/käsky Ohjelman muistialue: -Data -Konekieliset käskyt 004010F9 0110101100111001 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 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ä. Kolme toimivaa ohjelmakoodia #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ä #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 } 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).

4. C-ohjelmoinnin peruselementit C-kieli on imperatiivinen kieli, jossa koodi sisältää tyypitettyjä tietomuuttujia ja lauseita. Lauseiden sisältämien käskyjen avulla hallitaan 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 /*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; } Muuttujat alustetaan yleensä sijoituslauseella Ohjelman käyttäjä voi myös antaa muuttujalle arvon näppäimistöltä Harj. Kirjoita ohjelma ja aja se.

4. C-ohjelmoinnin peruselementit Tärkeimmät perustyypit int main() { /*muuttujien esittely */ int ika; usigned int indeksi; long asukasluku; float paino; double etaisyys; char merkki; … 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)

4. C-ohjelmoinnin peruselementit Vakiot #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’; … 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

4. C-ohjelmoinnin peruselementit Perustietotyyppien tulostaminen (printf) #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; } 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.

4. C-ohjelmoinnin peruselementit Perustietotyyppien tulostaminen (printf) #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; } Merkkijonossa sarkainasetus \t Muotoilumääreen syntaksi %leveys.desimaalit tyyppi Harj. Kirjoita, käännä ja aja ohjelma. Lisää muuttuja iälle, alusta se koodissa ja tulosta ikä kolmannella rivillä.

4. C-ohjelmoinnin peruselementit Arvon lukeminen näppäimistöltä (scanf) 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; } 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

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 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.