Download - Etsi virhe
![Page 1: Etsi virhe](https://reader036.vdocument.in/reader036/viewer/2022062308/56813424550346895d9b108a/html5/thumbnails/1.jpg)
Etsi virheEtsi virhe
#include <stdio.h>int main() { double x, y; for( x = 0; x < 4.00; x++ ) for( y = 0; y < 5,00; y++ ) { if( x * y < 1000 ) printf( "%g * %g = %g\n", x, y, x*y ); } return 0; }
for( y = 0; y < 5.00; y++ ) {
![Page 2: Etsi virhe](https://reader036.vdocument.in/reader036/viewer/2022062308/56813424550346895d9b108a/html5/thumbnails/2.jpg)
Etsi virheEtsi virhe
int sum( int a[], int n ) {int i;int s = 0; for( i = 0, i < n; i++; ) s += a[i]; return s;}int main(){ int a[10] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; printf("summa on %i\n", sum(a,10)); return 0; }
for( i = 0; i < n; i++ )
![Page 3: Etsi virhe](https://reader036.vdocument.in/reader036/viewer/2022062308/56813424550346895d9b108a/html5/thumbnails/3.jpg)
Etsi virheEtsi virhe
#include <stdio.h>int main(void){ float a=1.345,b=1.123,c; c=a+b; if (c == 2.468) printf("Yhtäsuuret\n"); else printf("Erisuuret! c:n arvo on %13.10f, tai%f\n",c,c);}
if (abs(c-2.468)<EPSILON)
#define EPSILON 0.0001
![Page 4: Etsi virhe](https://reader036.vdocument.in/reader036/viewer/2022062308/56813424550346895d9b108a/html5/thumbnails/4.jpg)
Etsi virheEtsi virhe
int a[10000]; void f() { int i; for( i = 0; i < 10000; i++); a[i] = i;}
for( i = 0; i < 10000; i++)
![Page 5: Etsi virhe](https://reader036.vdocument.in/reader036/viewer/2022062308/56813424550346895d9b108a/html5/thumbnails/5.jpg)
Etsi virheEtsi virhe
#include <stdio.h>void tulosta_summa( double a[], int n ){ int i; double summa = 0; for( i = 0; i < n; i++ ) summa += a[i]; printf( "Summa = %d\n", summa ); } int main() { double x[3] = { 1.0, 2.0, 3.0 }; tulosta_summa( x, 3 ); return 0; }
printf( "Summa = %f\n", sum ); }
![Page 6: Etsi virhe](https://reader036.vdocument.in/reader036/viewer/2022062308/56813424550346895d9b108a/html5/thumbnails/6.jpg)
Etsi virheEtsi virhe
#include <stdio.h>int f(int n){ int m; switch( n ){ case 1: m = 2; break; case 2: m = 4; break; case 3: m = 8; break; delault: m = 0; break;} return m;}int main() { printf( "f(5) = %d\n", f(5) ); return
0; }
default:
![Page 7: Etsi virhe](https://reader036.vdocument.in/reader036/viewer/2022062308/56813424550346895d9b108a/html5/thumbnails/7.jpg)
Etsi virheEtsi virhe
#include <stdio.h> void tulosta( int luku ){ switch (luku){ case 1: printf("yksi\n"); case 2: printf("kaksi\n"); case 3: printf("kolme\n"); case 4: printf("nelja\n"); } } int main(){ int i; for( i = 1; i <= 4; i++ ) tulosta( i ); return 0;}
break;break;break;break;
![Page 8: Etsi virhe](https://reader036.vdocument.in/reader036/viewer/2022062308/56813424550346895d9b108a/html5/thumbnails/8.jpg)
Etsi virheEtsi virheint laske_vokaalit( char *s ){ int sum = 0; for(;;) switch( *s++ ){ case 'a': case 'e': case 'i': case 'o': case 'u': sum++; continue; default: continue; case '\0': break;} return sum; }
case '\0': break;default:
continue; }
![Page 9: Etsi virhe](https://reader036.vdocument.in/reader036/viewer/2022062308/56813424550346895d9b108a/html5/thumbnails/9.jpg)
Etsi virheEtsi virhe
#define VERSI0N 12#include <stdio.h>char *ss( char *s ) { return s; }int main() { #if VERSION > 10 printf( "hello %s\n", ss("world") ); #endif return 0; }
VERSION
![Page 10: Etsi virhe](https://reader036.vdocument.in/reader036/viewer/2022062308/56813424550346895d9b108a/html5/thumbnails/10.jpg)
Etsi virheEtsi virhe
void f( int n ) { if( n > 0 ) { int labs, research; research = n-1; if( research > 15 ) labs = 3; else labs = 0; } if( labs ) labs *= 100; } if( labs ) printf( "%d - 1 is greater than 15\n", n ); } int main() { f(13); return 0; }
paikallisella muuttujalla labson sama nimi kuin funktiollalabs(), joten ennen printf():ääoleva labs on funktion nimi
![Page 11: Etsi virhe](https://reader036.vdocument.in/reader036/viewer/2022062308/56813424550346895d9b108a/html5/thumbnails/11.jpg)
Etsi VirheEtsi Virhe
#include <stdio.h>int main(){unsigned row = 25, col = 80;if( row + col > -1 ) printf("ei-negatiivinen\n");else printf("negatiivinen\n"); return 0;}
signed row = 25, col = 80;
![Page 12: Etsi virhe](https://reader036.vdocument.in/reader036/viewer/2022062308/56813424550346895d9b108a/html5/thumbnails/12.jpg)
* - operaattori* - operaattori
Käänteinen &-operaattorille &-operaattori antaa muuttujan osoitteen *-operaattori antaa osoitteessa olevan muuttujan#include <stdio.h>int main(void){ char a = 'c'; char *p=&a; printf("%c\n", a); printf("%c\n", *p); /* p:n osoittama merkki */ return 0; }
c0xbffffa67
p a
![Page 13: Etsi virhe](https://reader036.vdocument.in/reader036/viewer/2022062308/56813424550346895d9b108a/html5/thumbnails/13.jpg)
Osoittimien käyttöäOsoittimien käyttöä
pointterin osoittamiin arvoihin voidaanmyös kirjoittaa
#include <stdio.h>int main(void){ char a = 'c'; char *p=&a; printf("%c\n", *p); (*p)++; printf("%c\n", a); return 0; }
’c’ ’d’0xbffffa67
p a
![Page 14: Etsi virhe](https://reader036.vdocument.in/reader036/viewer/2022062308/56813424550346895d9b108a/html5/thumbnails/14.jpg)
*p=*q vs p=q*p=*q vs p=q
#include <stdio.h>int main(void){ char a = 'c', b='d'; char *p=&a, *q=&b; *p=*q; printf("%c, %c\n", *p, *q); p=q; printf("%c, %c\n", *p, *q); return 0;}
’c’ ’d’0xbffffa67
p a
’d’0xbffffa68
q b
’d’0xbffffa670xbffffa68
pa
’d’0xbffffa68
q b
![Page 15: Etsi virhe](https://reader036.vdocument.in/reader036/viewer/2022062308/56813424550346895d9b108a/html5/thumbnails/15.jpg)
Etsi VirheEtsi Virhe
#include <stdio.h>
int osamaara(int *q, int *p) { if(*p) return *q/*p /* laske suhde */ ; else return *q; }
int main(){ int n = 20, m = 4; int q = osamaara( &n, &m ); printf( "%d/%d == %d\n", n, m, q ); return 0; }
Kommentti kommentin sisällä
if(*p) return *q/(*p) /* laske suhde */ ;
![Page 16: Etsi virhe](https://reader036.vdocument.in/reader036/viewer/2022062308/56813424550346895d9b108a/html5/thumbnails/16.jpg)
Etsi virheEtsi virhe
int *p = NULL; int i;for( i = 0; i < n; i++ ) p = &a[i]; *p = 0; p on NULL, jos silmukkaa ei
suoriteta kertaakaan
![Page 17: Etsi virhe](https://reader036.vdocument.in/reader036/viewer/2022062308/56813424550346895d9b108a/html5/thumbnails/17.jpg)
Etsi virheEtsi virhe
#include <stdio.h>int prosessoi( char *tiedostonnimi ) { FILE *fp; int laskuri = 0; if( tiedostonnimi ) { if( fp = fopen(tiedostonnimi, "r") ){ while( fgetc( fp ) != EOF ) laskuri++; } fclose( fp ); } return laskuri; }
fopen():in paluuarvoa eitarkisteta virheen varalta
![Page 18: Etsi virhe](https://reader036.vdocument.in/reader036/viewer/2022062308/56813424550346895d9b108a/html5/thumbnails/18.jpg)
Etsi virheEtsi virhe
#define KMAX 30double q[KMAX];void f( double limit ){ double s = 1; int k = 0; q[0] = 0; while( q[k] <= limit && k < KMAX ) { k++; s = s * (k+1); q[k] = q[k-1] + s; } }
q[k] voi ylittää taulukon rajat
![Page 19: Etsi virhe](https://reader036.vdocument.in/reader036/viewer/2022062308/56813424550346895d9b108a/html5/thumbnails/19.jpg)
Dynaamisten taulukoiden Dynaamisten taulukoiden käyttökäyttö
1. Määritä osoitin haluttuun taulukko elementtiin 2. Alusta osoitin malloc():n tai calloc():n avulla
varattuun muistialueeseen3. Vertaa osoitinta NULL osoittimeen4. Lisää/vähennä alkioiden määrää
realloc():n avulla5. Vapauta varattu muisti free():llä
![Page 20: Etsi virhe](https://reader036.vdocument.in/reader036/viewer/2022062308/56813424550346895d9b108a/html5/thumbnails/20.jpg)
PinoPino
Lisäykset ja poistot suoritetaan aina pinon päältä
Toimii LIFO (Last In First Out) periaatteella
Voidaan käyttää esim. undo toiminnon toteuttamiseen
![Page 21: Etsi virhe](https://reader036.vdocument.in/reader036/viewer/2022062308/56813424550346895d9b108a/html5/thumbnails/21.jpg)
JonoJono
Lisäykset tehdään jonon loppuun ja poistot alusta
Toimii FIFO (First In First Out) periaatteellaKäytetään esim. rajapinnoissa:
Yhden systeemin generoima data laitetaan jonoon josta toinen käsittelee sitä
![Page 22: Etsi virhe](https://reader036.vdocument.in/reader036/viewer/2022062308/56813424550346895d9b108a/html5/thumbnails/22.jpg)
Jono renkaanaJono renkaana
34
35 36
37
38häntäpää
poista jonosta
lisää jonoon
![Page 23: Etsi virhe](https://reader036.vdocument.in/reader036/viewer/2022062308/56813424550346895d9b108a/html5/thumbnails/23.jpg)
Linkitetty listaLinkitetty lista
Joukko alkioita jotka on kytketty toisiinsa linkeillä Listan alkio sisältää talletettavan datan ja
linkin seuraavan alkioon Alkion lisääminen listan keskelle on helppoa Alkioihin ei voida viitata indeksin avulla vrt. taulukko Listan kokoa ei ole ennalta rajoitettu
911 112luku
seuraava1
NULL
![Page 24: Etsi virhe](https://reader036.vdocument.in/reader036/viewer/2022062308/56813424550346895d9b108a/html5/thumbnails/24.jpg)
Etsi virheEtsi virhe
typedef struct _solmu {int Arvo; struct _solmu *linkki; } solmu, *solmuos;
solmuos Lisaasolmu( solmuos paa, solmuos uusi ){ solmuos solmu = paa; solmuos edsolmu = NULL; while ( solmu->Arvo <= uusi->Arvo) { edsolmu = solmu; solmu = solmu->linkki; } edsolmu->linkki = uusi; uusi->linkki = solmu; return paa;}
![Page 25: Etsi virhe](https://reader036.vdocument.in/reader036/viewer/2022062308/56813424550346895d9b108a/html5/thumbnails/25.jpg)
Kahteen suuntaan linkitetty listaKahteen suuntaan linkitetty lista
Lisääminen vaatii enemmän operaatiotaAlkioita voidaan lisätä/poistaa käyttämällä
pelkästään alkiota
911 112lukuseuraava
1NULL
pääosoitin häntäosoitin
edellinen
![Page 26: Etsi virhe](https://reader036.vdocument.in/reader036/viewer/2022062308/56813424550346895d9b108a/html5/thumbnails/26.jpg)
Binäärinen hakupuuBinäärinen hakupuu
Jokaisessa solmussa on yksikäsitteinen avainvasemmat jälkeläiset < nykyinen solmu <
oikeat jälkeläiset 9
116
7 105
![Page 27: Etsi virhe](https://reader036.vdocument.in/reader036/viewer/2022062308/56813424550346895d9b108a/html5/thumbnails/27.jpg)
Binäärisen hakupuun läpikäynti Binäärisen hakupuun läpikäynti sisäsisäjjärjesärjestytyksessäksessä ( (ininorder)order)
Järjestys:vasen alipuu - juuri - oikea alipuu5 6 7 9 10 11
9
116
7 105void sisajarjestys(puuos alkio){ if(alkio){ sisajarjestys(alkio->vasen); tulosta_alkio(alkio); sisajarjestys(alkio->oikea); }
![Page 28: Etsi virhe](https://reader036.vdocument.in/reader036/viewer/2022062308/56813424550346895d9b108a/html5/thumbnails/28.jpg)
Maksimi- ja minimikekoMaksimi- ja minimikeko
Täydellinen binääripuu jonka jokaisen solmun avain on suurempi (pienempi) tai yhtäsuuri kuin lasten avain
Suurimman (pienimmän) alkion etsiminen on nopeaa
![Page 29: Etsi virhe](https://reader036.vdocument.in/reader036/viewer/2022062308/56813424550346895d9b108a/html5/thumbnails/29.jpg)
Graafi G – terminologiaGraafi G – terminologia
Ei-tyhjä solmujen/kärkien (vertex) joukko V(G) Kaarien (edge) joukko E(G) Suuntaamaton (G1), Suunnattu (G2)
solmu
kaari
![Page 30: Etsi virhe](https://reader036.vdocument.in/reader036/viewer/2022062308/56813424550346895d9b108a/html5/thumbnails/30.jpg)
Graafin toteutus Graafin toteutus vierusmatriisillavierusmatriisilla
Taulukossa on arvo 1 paikassa < vi,vj> silloin, kun kahden solmunvi ja vj välillä on kaari; muutoin 0.
![Page 31: Etsi virhe](https://reader036.vdocument.in/reader036/viewer/2022062308/56813424550346895d9b108a/html5/thumbnails/31.jpg)
Graafin toteutus vieruslistallaGraafin toteutus vieruslistalla
Vieruslista
Käänteinen vieruslista
![Page 32: Etsi virhe](https://reader036.vdocument.in/reader036/viewer/2022062308/56813424550346895d9b108a/html5/thumbnails/32.jpg)
Graafin leveyshakuGraafin leveyshaku
1. Merkitään aloitussolmu v vierailluksi2. Lisätään solmu v jonoon3. Toistetaan kunnes jono on tyhjä4. Seuraava kärki v jonosta käsittelyyn5. Vieraile v:hen kytketyissä ei-vierailluissa solmuissa w6. Lisää w jonoon7. Merkitse w vierailluksi
![Page 33: Etsi virhe](https://reader036.vdocument.in/reader036/viewer/2022062308/56813424550346895d9b108a/html5/thumbnails/33.jpg)
Suuntaamattoman graafin Suuntaamattoman graafin syvyyshakusyvyyshaku
Vieruslista
A: F C B GB: AC: AD: F EE: G F DF: A E D:G: E A:H: I:I: H:
F
A
B C G
D E
H I
![Page 34: Etsi virhe](https://reader036.vdocument.in/reader036/viewer/2022062308/56813424550346895d9b108a/html5/thumbnails/34.jpg)
Välikokeeseen valmistautumisessa Välikokeeseen valmistautumisessa kannattaa kerrata seuraavat asiat: kannattaa kerrata seuraavat asiat:
1. Luennoilla käsitellyt asiat luentomonisteesta2. Luennoilla esitetyt ohjelmat3. Harjoituksissa käsitellyt asiat