Title Index

Ohjelmoinnin perusteet ja C-kieli - Contents

Alkusanat ja käyttöohje
Alkusanat
Analogiat ja animaatiot
Navigointiohje
Oppaan syntyhistoria
Rinnakkaisteos: painettu kirja
Tekijä
Johdanto
Tietokoneohjelmat
Vuorovaikutteiset ohjelmat
Rakenteinen ohjelmointi
Modulaarinen ohjelmointi
Kommunikointi
Tietorakenteet
Yhteenvetoja ja ohjeita
Ohjelmointiympäristö
Ohjelmoinnin käsitemaailma
Ihminen ja tietokone
Ohjelma
Konekieli
Ohjelmointikielet
Symboliset konekielet
Lausekielet
Hallinnollinen tietojenkäsittely
Teknistieteellinen tietojenkäsittely
Tekoäly
Lause-, symbolisen kone- ja konekielen välinen suhde
Kääntäjä
Tulkki
Ihminen vs. kone: kommunikointihierarkia
Ohjelmistotyö
Ohjelmointi
Määrittely
Suunnittelu
Toteutus
Testaus
Dokumentointi
Vuokaaviot
Kaavio
Algoritmit ja tietorakenteet
Tietorakenteet
Algoritmit
Hyvä algoritmi
Jäsentävä ajattelu
Jäsentäminen
TOPDOWN-suunnittelu
Esimerkki
Esimerkki: hanki rakennuslupa
TOPDOWN-suunnittelun edut
BOTTOMUP-suunnittelu
Kuva
Ohjelman perusrakenteet
Kolme rakennetta
Peräkkäisrakenne
Esimerkki
Valintarakenne
Esimerkki
Toistorakenne
Esimerkki
Rakenteiden yhdistäminen
Esimerkki 1
Esimerkki 2
Esimerkki 3
Esimerkki 4
C-kieli
C-standardi
C-kielen etuja
Siirrettävyys
Laiteläheisyys
C on osajoukko C++:sta
C on silta Javaan
C-kielen heikkouksia
Kryptisyys
C-kielisten ohjelmien ulkoasu
C-kielen varatut sanat
Esimerkkiohjelma
C-kielen perusrakenteet
C-kielen erityispiirteitä
Ohjelman peruselementit
Tunnukset
Tunnuksen määritelmä
Tunnuksen kirjoitussäännöt
Muuttujat
Muuttujan määritelmä
Muuttuja muistissa
Muuttujan määrittely (määritelmä)
Syntaksi
Esimerkki
Määrittelyn paikka ohjelmassa
Muuttujan nimen valinta
Muuttujan alkuarvo
Määrittelemätön muuttuja
Tyypit
Tyypin määritelmä
Esimerkki
C-kielen yksinkertaiset tyypit
Tyyppi määrää tulkinnan
Vakiot
Vakio
Paljaat vakiot
Nimetyt vakiot
Nimetyn vakion määrittely
Esikääntäjä
Esimerkki
Lauseet
Lause
Esimerkki
Koottu lause eli lohko
Lohko
Kommentit
Kommentti
Vihje
Ohjelman rakenne
Vuorovaikutteinen ohjelma
Vuorovaikutteisuus
Vuorovaikutus kuvana
Sijoituslause
Sijoituslause
Laskujärjestys lausekkeessa
Syntaksi
Esimerkki 1
Esimerkki 2
Esimerkki 3
Esimerkki 4
Erikoistapauksia sijoituslauseista
Esimerkki 1
Esimerkki 2
Esimerkki 3
Esimerkki 4
Esimerkki 5
Lyhennysmerkinnät: inkrementointi ja dekrementointi
Tulostusfunktio
printf()
Syntaksi
Muotoilumerkkijono
Muotoilumääreet
Muuttujalista
Esimerkki 1
Esimerkki 2
Esimerkki 3
Esimerkki 4
Rivinvaihdot
Esimerkki 5
Tulostuskentän leveys
Liukulukujen desimaalit
Syöttöfunktiot
scanf()
Syntaksi
Lukemisen päättyminen
Esimerkki
gets()
Syntaksi
Lukemisen päättyminen
Esimerkki
sscanf()
Syntaksi
Lukemisen päättyminen
Esimerkki
scanf() vai gets()?
Esimerkki 1
Esimerkki 2
Ohjelman suunnittelu
Systemaattisuus
Suunnittelun apuvälineitä
Ohjelman yleinen toimintamalli
Esimerkki 1
Ohjelman logiikka (eli algoritmi)
Ohjelman muuttujat (eli tietorakenteet)
Ohjelma kirjoitettuna C:llä
Esimerkki 2
Ohjelman logiikka (eli algoritmi)
Ohjelman muuttujat (eli tietorakenteet)
Ohjelman toteutus C-kielellä
If-valintarakenne
Mitä olikaan rakenteinen ohjelmointi?
Yksittäisen vaihtoehdon valinta
Syntaksi
Vuokaavio
Esimerkki
Algoritmi
Ohjelman toteutus C-kielellä
Valinta kahdesta vaihtoehdosta
Syntaksi
Vuokaavio
Esimerkki
Binäärivalinnan periaate
Esimerkki
Algoritmi
Toteutus C-kielellä
Valinta useasta vaihtoehdosta
Suyntaksi
Esimerkki
Ohjelman toteutus C-kielellä
Lausekkeet
Mikä on lauseke?
Operandit
Operaattorit
Sijoituslausekkeet ja -operaattorit
Aritmeettiset lausekkeet ja operaattorit
Esimerkki 1
Esimerkki 2
Esimerkki 3
Esimerkki 4
Vertailuoperaattorit
Esimerkki 1
Esimerkki 2
Totuusarvon numeerinen tulkinta
Loogiset operaattorit
Presedenssit ja sulkeiden käyttö
Esimerkki
Ratkaisu 1
Ratkaisu 2
Varoitus: älä sekoita sijoituslauseketta ja vertailulausekkeeseen
While-toistorakenne
Mikä on toistorakenne?
While toistuva valinta
Esimerkki
Mitä vikaa esimerkissä?
Korjattu versio
Syntaksi
Vuokaavio
Esimerkki 1
Esimerkki 2
Tee virheentarkistukset while-silmukalla
Esimerkki 1
Esimerkki 2
Tyypillisiä ohjelmointivirheitä
For-toistorakenne
Idea: tee N kertaa
Toistojen hallinta: toistolaskuri
Toistolaskurin käsittely
Syntaksi
Vuokaavio
Esimerkki 1
Esimerkki 2
Esimerkki 3
For vai while?
Taulukot
Rakenteinen tieto
Taulukkotyyppi
Syntaksi
Esimerkki
Taulukon koko on vakio
Taulukon alkio ja indeksi
Esimerkki
Taulukon alkio muuttujana
Taulukon alustus
Yhteenveto
Taulukon peräkkäiskäsittely
Esimerkki 1
Esimerkki 2
Taulukon hajakäsittely
Esimerkki
Ratkaisuperiaate
Tietorakenteet
Ohjelman toteutus C-kielellä
Harva taulukko
Esimerkki
Ongelman 1 ratkaisuehdotus
Ongelman 2 ratkaisuehdotus
"Paras" ratkaisu:
"Paras" ratkaisu kirjoitettuna C-kielellä
Do...while-toistorakenne
Alkuehtoinen toistorakenne
Do...while - loppuehtoinen toistorakenne
Syntaksi
Vuokaavio
Esimerkki 1
Esimerkki 2
Huomaa
Pohdintaa
Esimerkki
While-ratkaisu
Do...while-ratkaisu
Funktiot
Funktio
Kirjastofunktiot
Kaikki tarvitsevat kirjastofunktioita
Kirjastofunktion kutsu
Esimerkki ja sen analysointi
Musta laatikko -ajattelu
Omat funktiot
Tee se itse
Funktion toteutus
Omien funktioiden suunnittelu
Ei parametreja - ei paluuarvoa
Esimerkki
Parametri - ei paluuarvoa
Esimerkki
Parametri ja paluuarvo
Esimerkki
Funktion rakenne
Funktion määrittely
Funktion prototyyppi
Funktion parametrit ja paikalliset muuttujat
Muodolliset parametrit ja todelliset parametrit
Funktiosta palaaminen ja funktion paluuarvo
Esimerkki
Huomautus
Funktion kutsuminen
Esimerkkejä
Esimerkki 1
Esimerkki 2
Funktioiden muuttujaparametrit
Muuttujaparametrit
Muuttujaparametrit ja musta laatikko
Muuttujaparametrit ja funktion kutsu
Esimerkki
& - muuttujan osoite
Muuttujaparametrin esittely
Muuttujaparametrin käyttö
Esimerkki 1
Esimerkki 2
Terminologista pohdintaa
Huomautus
Yhteenveto
Taulukko funktion parametrina
Esimerkki
Yhteenveto
Globaalit muuttujat
Mitä olivatkaan paikalliset muuttujat?
Mitä ovat globaalit muuttujat?
Globaalit muuttujat ja musta laatikko -malli
Milloin kannattaa käyttää globaaleja muuttujia?
Automaattinen alustus
Globaaleihin muuttujiin liittyviä vaaroja
Vaara 1
Vaara 2
Esimerkki
Switch...case -valintarakenne
Esimerkkitilanne
Millainen on switch...case -rakenne?
Syntaksi
Esimerkki
Ohjelman toteutus C-kielellä
Merkkijonot
Esimerkkitapauksia
Merkkijonomuuttujan määrittely
Esimerkki
Arvon lukeminen merkkijonomuuttujalle
Merkkijonomuuttujan arvon tulostaminen
Merkkijonojen vertailu
Esimerkki
Merkkijonojen kopiointi
Esimerkki
Tietueet
Rakenteiset tietotyypit
Tietuetyyppi
Tietuemuuttuja
Tietueen kentät
Kenttiin viittaaminen pisteoperaattorilla
Kenttiin viittaaminen nuolioperaattorilla
Esimerkki 1
Esimerkki 2
Huomioita
Tietue ja sijoituslause
Tietue parametrina
Tietue ja vertailut
Typedef
Esimerkki
Esimerkki 3
Ohjelman toteutus C-kielellä
Tiedostot
Tiedosto
Tekstitiedostot
Binääritiedostot
Tietovirrat
stdin
stdout
stderr
Uudelleenohjaus
Tiedostojen käsittelyn perustoiminnot
Tiedoston määrittely
Tiedoston avaaminen
Avaustapoja
Tiedostopointteri
Tiedoston käsittely
Tiedoston päättyminen
Tiedoston sulkeminen
Tiedostojen käsittely merkki kerrallaan
fgetc()
fputc()
Esimerkki
Binääritiedostojen käsittely tietueittain
fread()
unsigned-tyyppi
sizeof-operaattori ja tietueen koko
fwrite ()
Esimerkki
Peräkkäistiedoston käsittely
Tietueen lisäys tiedostoon
Tietueen poistaminen
Tietueen sisällön muuttaminen
Tiedoston käsittely muistissa
Taulukon määrittely tiedostoa varten
Tiedoston lukeminen taulukkoon
Taulukkoon kohdistuvat muutokset
Lisäys taulukkoon
Poisto taulukosta
Taulukossa olevan tietueen muuttaminen
Taulukon kirjoittaminen takaisin tiedostoon
Tiedoston lajittelu
Valintalajittelu
Esimerkki
Ohjelman toteutus C-kielellä
Tiedoston lajittelu
Kortisto-ohjelma
Osoitinmuuttujat
Epäsuora osoittaminen
Osoittimet
Kuva 1
Kuva 2
Osoittimen määrittely
Kantatyyppi
Muuttujan osoite ja osoiteoperaattori
Muistipaikan sisältö ja sisältöoperaattori
Esim 1
Ohjelman toteutus C-kielellä
Esim 2
Virheetön versio
Osoitinmuuttujat ja laskutoimitukset
Esim 1
Esim 2
Varoitus 1: väärä muistiviittaus
Varoitus 2: ++ ja -- operaattorit
Taulukot ja osoittimet
Taulukon nimi on taulukon osoite
Taulukon käsittely osoittimien avulla
Taulukon nimi on osoitevakio
Lvalue
Taulukon nimi lausekkeen osana
Esim 1
Osoittimien indeksointi
Esim 2
Merkkijonot ja osoittimet
Esim 1
Esim 2
Esim 3
Merkkijonovakiot
Esim 1
Esim 2
Esim 3
Esim 4
Erilaisia tapoja määritellä merkkijono
Merkkijonofunktioiden toteutuksia
Esim 1
string_copy()
string_length()
Koko ohjelma
Huomaa
Esim 2
string_cat()
Huomaa
char_search()
Geneerinen osoitin - void *
Eksplisiittinen tyypinmuunnos (cast)
Osoittimet, sijoituslause ja tyypinmuunnokset
Geneerinen osoitin
Esim 1
Varoituksia
Esim 2
Vaihtoehto 1.
Testiympäristö
Vaihtoehto 2.
Testiympäristö
Moniulotteiset taulukot
Kaksiulotteinen taulukko
Taulukon määrittely
Taulukon alkion käsittely
Taulukon alustus
Rivien määrää voidaan jättää ilmoittamatta
Kolme- ja useampiulotteiset taulukot
Esim 1
Ohjelman toteutus C-kielellä
Esim 2
Ohjelman toteutus C-kielellä
Moniulotteinen taulukko funktion parametrina
Esim
Ohjelman toteutus C-kielellä
Merkkijonotaulukot
Merkkijonotaulukon määrittely
Vaihtoehtoinen määrittelytapa
2-ulotteiset merkkijonotaulukot
Toteutustapa 1
Kuva
Toteutustapa 2
Kuva
Dynaamiset tietorakenteet
Ohjelma ja muistin käyttö
Kuva
Koodisegmentti
Datasegmentti
Pinosegmentti
Kasa
Aliohjelmamekanismin toteutus pinon avulla
Esim
Dynaaminen muistinhallinta
malloc() ja free()
Dynaaminen taulukko
Esim
Ohjelman toteutus C-kielellä
Linkitetyt tietorakenteet
Lineaariset listat
Listoihin liittyvät operaatiot
Sovelluksia
Linkitetyt listat
Kuva
Listan alkio C:n tietueena
Lista on pointteri 1.lista-alkioon
Pino ja jono
Jonokurit
Pino
Pinon sovelluksia
Pinon toteuttaminen
Esim 1
Tietorakennemäärittelyt
Pinon alustaminen
Alkion vienti pinoon
Alkion poistaminen pinosta
Sovellusohjelma
Esim 2
Tietorekenteet (ja muut määrittelyt)
Pinon alustaminen
Alkion vienti pinoon
Alkion poistaminen pinosta
Pinon tyhjentäminen
Sovellus
Esim 3
Tietorakenteet (ja muut määrittelyt)
Pinon alustamien
Onko pino tyhjä?
Alkion vienti pinoon
Kuvana
Alkion poistaminen pinosta
Kuvana
Pinon tyhjentäminen
Sovellus
Jono
Kuva
Jonon toteuttaminen
Esim
Määrittelyt
Jonon alustaminen
Alkion vienti jonoon
Alkion poistaminen jonosta
Jonon sisällön tutkiminen
Onko jono tyhjä
Sovellus
lisaa()
poista()
pääohjelma
Piirrä tilanteet paperille
Talletusluokat ja vaikutusalueet
Muuttujien vaikutusalueet
Muuttujien talletusluokat
Automatic-talletusluokka
Register-talletusluokkamääre
Static-talletusluokka
Mitä staattisuus tarkoittaa?
Globaalit static-muuttujat
Lohkon sisäiset static-muuttujat
Lisähuomioita
Extern-talletusluokkamääre
Yhteenveto
Ehdolliset lausekkeet
Ehdollisen lausekkeen muoto
Esim 1
Esim 2
Esim 3
C-esikääntäjä ja makrot
Esikääntäjän tehtävät
Makrot
Laventaminen
Parametriton makro
Esim
Parametrillinen makro
Esim 1
Esim 2
Esim 3
Makrojen edut ja haitat funktioihin verrattuina
Edut
Haitat
Esikäännöksen ohjaus
Esim 1
Esim 2
Komentoriviargumentit
Ohjelman parametrit
Esim 1
Parametrit muistissa
Numeeriset parametrit
Esim 2
exit()
Unioni-rakenne
Unioni tietotyyppinä
Unionimuuttuja
Esim 1
Operaatiot . ja ->
Esim 2
Lueteltu tyyppi
enum-tietotyyppi
enum-muuttuja
enum-tyypin arvot ovat lukuja
Esim 1
Esim 2
Funktiopointterit
Funktiopointteri muuttujana
Esim 1
Esim 2
Funktion kutsuminen funktiopointterin avulla
Esim 1
Esim 2
Esim 3
qsort()
Lajitteluohjelma kirjoitettuna C-kielellä
Bittioperaatiot
C-kielen bittioperaatiot
Esimerkkejä operaattoreiden käytöstä
Sijoitusoperaattorit
Esim 1
Esim 2
Ohjelma C-kielellä
Bittikentät
Bittikentillä voi säästää tilaa
Esim
Harjoitustehtäviä
Perusrakenteet
Tehtävä 1
Tehtävä 2
Tehtävä 3
Tehtävä 4
Tehtävä 5
Tehtävä 6
Tehtävä 7
Tehtävä 8
Tehtävä 9
Tehtävä 10
Tehtävä 11
Tehtävä 12
Tehtävä 13
Tehtävä 14
Tehtävä 15
Funktiot
Tehtävä 16
Tehtävä 17
Tehtävä 18
Tehtävä 19
Tehtävä 20
Tehtävä 21
Tehtävä 22
Tehtävä 23
Tehtävä 24
Tehtävä 25
Tehtävä 26
Tehtävä 27
Tehtävä 28
Tehtävä 29
Tehtävä 30
Tehtävä 31
Merkkijonot, tietueet, moniulotteiset taulukot, tiedostot
Tehtävä 32
Tehtävä 33
Tehtävä 34
Tehtävä 35
Tehtävä 36
Tehtävä 37
Tehtävä 38
Tehtävä 39
Tehtävä 40
Tehtävä 41
Tehtävä 42
Tehtävä 43
Tehtävä 44
Tehtävä 45
Tehtävä 46
Tehtävä 47
Tehtävä 48
Tehtävä 49
Tehtävä 50
Tehtävä 51
Tehtävä 52
Listat, jonot, pinot
Tehtävä 53
Tehtävä 54
Tehtävä 55
Tehtävä 56
Tehtävä 57
Tehtävä 58
Tehtävä 59
KOOSTESIVUJA
Tietotyypit ja vakiot
Perustietotyypit
Tyyppien tarkentimet
Vakiot
Kokonaislukuvakiot:
Tyypin char vakiot:
Numeeriset char-vakiot
Liukulukuvakiot (tyypit float, double ja long double)
Nimetyt vakiot
Syöttö- ja tulostusfunktioiden muotoilumääreet
printf()
Kokonaisluvut
Liukuluvut
Merkit ja merkkijonot
Osoitteet
Lisämääreet
scanf()
Kokonaisluvut
Liukuluvut
Merkit ja merkkijonot
Osoitteet
Sisennyssäännöt
Operaattoreiden presedenssit
Ohjelmankehitys Turbo C++ 3.0 -ympäristössä
IDE
Editorin käyttö
Kääntäjän käyttö
Virheenjäljittimen käyttö
Grafiikka ja animaatiot Turbo C++ 3.0 -ympäristössä
Animoinnin yleisperiaate
Esim
Projektit Turbo C++ 3.0 -ympäristössä
Projektin koostaminen
Projektin kääntäminen ja ajaminen
Projektin sulkeminen

Title Index