Pääteohjaustehtäviä
1 / 8.-9.9
1. Pääteohjaukset
ja demot
1.1 Pääteohjausten
paikka ja aika
Pääteohjaukset
pidetään mikroluokassa AgB212.2 ja/tai AgB213.1 (tarkista
Korpista).
Ohjaukset alkavat xx.15.
1.2 Pääteohjausten
pakollisuus
Pääteohjaukset
ovat siinä mielessä pakollisia, että niistä voi olla pois
korkeintaan 3 kertaa. Vuonna -01 ohjauksia oli 13 kertaa. 3:en poissaolon
jälkeen vähennetään tentissä 1p/poissaolokerta. Eli
jos ei tosita yhtään ohjausta, lähtee kokeeseen 10 pistettä
muita huonommasta asemasta (tätä voi tietysti kompensoida
vähän demoilla)!
1.3 Pääteohjausten
palauttaminen sähköisesti
DemoWWW:llä.
Katso kurssin WWW-sivut:
http://www.mit.jyu.fi/~vesal/kurssit/winohj03/.
Jos
on ohjauksessa paikalla, sähköistä palautusta ei tarvita. Jos
ei ole paikalla tai tehtävät jäävät pahasti kesken,
silloin tarvitaan palautus DemoWWW:llä. Huom! DemoWWW on konsepti, ei
mikään yksittäinen ohjelma, vaikka onkin olemassa DemoWWW.exe.
1.4 Demojen
tai pääteohjausten tekeminen ryhmässä
Jos
demot tai pääteohjukset tehdään ryhmässä, laittaa
jokainen ryhmäläinen oman DemoWWW-hakemistonsa kuntoon.
files.txt-tiedostoon
tulee sitten kaikkien tekijöiden nimi:
=--------------------
= Demo 1
= Vesa Lappalainen & Markku Vire
=--------------------
...
Samoin
tietysti ohjelmien kommentteihin kaikkien tekijöiden nimet. Toisten
vastausten
kopiointi
on kiellettyä
(vaikka DemoWWW voikin tehdä kopioinnin "houkuttelevaksi").
2. Työskentely
mikrolla ja harjoitustyön näyttäminen
2.1 Työskentele
aina kovalevyllä tai verkon levyllä
Käytä
työhakemistona
AINA
omaa hakemistoasi KOVALEVYLLÄ, jopa mieluummin kuin VERKON levyllä.
Tämä nopeuttaa työskentelyä!
ÄLÄ
KOSKAAN TYÖSKENTELE KORPULLA.
Töiden
talletus oman korppusi/verkkolevyn ja kovalevyn välillä on helpointa
hoitaa esim.
KOPIOI-ohjelmalla
tai siihen liitetyillä ajojonoilla (voi yrittää myös
Windowsin matkalaukkua):
kopioi *.c *.h a:: /s - kopioi korpulle vastinpaikkaan
kopioi *.c *.h u:: /s - kopioi U:-levylle vastinpaikkaan
kopioi *.c *.h a:: /q /s - "tasaa" korpun ja kovalevyn vastaaviksi
2.2 HT:n
säilytys omassa WWW-hakemistossa
Kurssin
sivuilla on ohjeet miten HT siirretään ja säilytetään
WWW-muodossa.
3. C++
// \kurssit\winohj\oop\cpp\luku.cpp
#include <iostream.h>
class cLuku {
int a;
public:
void set(int n);
int get(void) const;
};
void cLuku::set(int n)
{
a = n;
}
int cLuku::get(void) const
{
return a;
}
int main(void)
{
cLuku luku;
luku.set(3);
cout << "Luku = " << luku.get() << endl;
return 0;
}
Seuraavat
voi tehdä esim. BC 3.1:n Dos- versiolla,
gcc:llä
tai vaikka
C++
Builder 6
:lla
- 1.
- Käännä
ja korjaa ohjelmassa olevat viat.
- 2.
- Lisää
edelliseen ohjelmaan
set
- metodiin tarkistus siitä, ettei luku voi olla alueen [0,10] ulkopuolella
(esim. lukua ei aseteta lainkaan tai luvuksi asetetaan liian pienille 0 ja
liian suurille 10, tai jopa
set
- funktio laitetaan palauttamaan sijoituksen onnistumista kuvaava arvo).
- 3.
- Kokeile
mitä tapahtuu jos luku on alustamaton (eli ei ole kutsua
a.set).
Kokeile myös dynaamisella (
cLuku
*p = new(cLuku);
)
muuttujalla.
- 4.
- Lisää
metodi
lisaa(int
i=1);
,
joka lisää lukua.
Muista
lukualue!
- 5.
- Lisää
luokkaan rakentajafunktio (
constructor),
joka alustaa luvun 0:ksi tai rakentajan parametrina annetuksi. Muista edelleen
lukualue!
- 6.
- Kokeile
voiko luokan muuttujaan (attribuuttiin)
a
viitata suoraan! Jollei voi, muuta
public-
sanan paikkaa ja kokeile uudelleen. Palauta lopulta
public
paikalleen.
- 7.
- Kokeile
kirjoittaa
get
ja
set
inline-
funktioiksi kahdella eri tavalla.
- 8.
- Kirjoita
pinon käsittelyohjelma, jossa pinoa varten on seuraava luokka:
const SIZE=10;
class cPino {
char alkiot[SIZE]; // Pinoon talletetut alkiot
int top; // Pinon pinnan "osoitin"
public:
cPino(); // Pinon rakentaja (alustus)
void Push(char ch); // Laittaa kirjaimen pinon päällimmäiseksi
char Pop(void); // Palauttaa pinon päällimmäisne kirjaimen ja poistaa sen
int IsEmpty() const; // Palauttaa tiedon siitä, onko pino tyhjä
};
- 9.
- Kirjoita
pääohjelma jossa on kaksi pinoa ja laita pinoihin jotakin ja ota ne
sitten pois tulostaen samalla.
- 10.
- Mitä
täytyisi muuttaa jos pino täytyisi tehdä toiselle tyypille (esim.
double)?