Kääntäjän virheilmoituksia



Samankaltaiset tiedostot
Apuja ohjelmointiin» Yleisiä virheitä

Ohjelmoinnin perusteet, syksy 2006

12 Mallit (Templates)

Tehtävä 1. TL5302 Olio-ohjelmointi Koe Malliratkaisuja. Tässä sekä a)- että b)-kohdan toimiva ratkaisu:

Olio-ohjelmointi 2. välikoe HYV5SN

815338A Ohjelmointikielten periaatteet Harjoitus 3 vastaukset

\+jokin merkki tarkoittaa erikoismerkkiä; \n = uusi rivi.

Osoitin ja viittaus C++:ssa

5. HelloWorld-ohjelma 5.1

Luokassa määriteltävät jäsenet ovat pääasiassa tietojäseniä tai aliohjelmajäseniä. Luokan määrittelyyn liittyvät varatut sanat:

Operaattoreiden ylikuormitus. Operaattoreiden kuormitus. Operaattoreiden kuormitus. Operaattoreista. Kuormituksesta

T Olio-ohjelmointi Osa 3: Luokka, muodostin ja hajotin, this-osoitin Jukka Jauhiainen OAMK Tekniikan yksikkö 2010

Maahan on pudonnut omenoita, ja Uolevi aikoo poimia niitä. Tiedät jokaisesta omenasta, kuinka painava se on.

11. oppitunti III. Viittaukset. Osa. Mikä on viittaus?

C++ rautaisannos. Kolme tapaa sanoa, että tulostukseen käytetään standardikirjaston iostreamosassa määriteltyä, nimiavaruuden std oliota cout:

812347A Olio-ohjelmointi, 2015 syksy 2. vsk. X Poikkeusten käsittelystä

Olio-ohjelmointi Syntaksikokoelma

C++11 Syntaksi. Jari-Pekka Voutilainen Jari-Pekka Voutilainen: C++11 Syntaksi

5. HelloWorld-ohjelma 5.1

Geneeriset luokat. C++ - perusteet Java-osaajille luento 6/7: Template, tyyppi-informaatio, nimiavaruudet. Geneerisen luokan käyttö.

Harjoitus 5. Esimerkki ohjelman toiminnasta: Lausekielinen ohjelmointi I Kesä 2018 Avoin yliopisto 1 / 5

Operaattoreiden uudelleenmäärittely

Ohjelman virheet ja poikkeusten käsittely

13 Operaattoreiden ylimäärittelyjä

Harjoitus 5 (viikko 41)

Ohjelmointi funktioiden avulla

815338A Ohjelmointikielten periaatteet Harjoitus 5 Vastaukset

Demo 6 vastauksia. 1. tehtävä. #ifndef #define D6T1 H D6T1 H. #include <iostream> using std::ostream; using std::cout; using std::endl;

AS C-ohjelmoinnin peruskurssi 2013: C-kieli käytännössä ja erot Pythoniin

C-ohjelmoinnin peruskurssi. Pasi Sarolahti

Luokat. Luokat ja olio-ohjelmointi

MITÄ JAVASCRIPT ON?...3

Plagioinnin tunnistaminen lähdekielisistä ohjelmista

Ohjelmoinnin perusteet Y Python

Osoittimet. Mikä on osoitin?

C++ Ohjelmoijan käsikirja. Johdanto

1.3 Lohkorakenne muodostetaan käyttämällä a) puolipistettä b) aaltosulkeita c) BEGIN ja END lausekkeita d) sisennystä

812347A Olio-ohjelmointi, 2015 syksy 2. vsk. I Johdanto ohjelmointiin C++kielellä

Osa. Listaus 2.1. HELLO.CPP esittelee C++ -ohjelman osat. 14: #include <iostream.h> 15: 16: int main() 17: {

Harjoitus 3 (viikko 39)

T Olio-ohjelmointi Osa 5: Periytyminen ja polymorfismi Jukka Jauhiainen OAMK Tekniikan yksikkö 2010

Perusasiat. Mitkä ovat C++-ohjelman perusosat. Miten lähdeteksti kommentoidaan. Miten lähdetekstistä tulee suoritettava ohjelma

Muuttujien roolit Kiintoarvo cin >> r;

Valinnat ja päätökset

Zeon PDF Driver Trial

Dart. Ryhmä 38. Ville Tahvanainen. Juha Häkli

14. oppitunti. Operaattorin ylikuormitus. Osa. Operaattorin ylikuormittaminen

Ohjelmointi 1 Taulukot ja merkkijonot

Ohjelmoinnin perusteet Y Python

Virtuaalifunktiot ja polymorfismi

System.out.printf("%d / %d = %.2f%n", ekaluku, tokaluku, osamaara);

IDL - proseduurit. ATK tähtitieteessä. IDL - proseduurit

ATK tähtitieteessä. Osa 3 - IDL proseduurit ja rakenteet. 18. syyskuuta 2014

Loppukurssin järjestelyt C:n edistyneet piirteet

Kerta 2. Kerta 2 Kerta 3 Kerta 4 Kerta Toteuta Pythonilla seuraava ohjelma:

Kirjoita oma versio funktioista strcpy ja strcat, jotka saavat parametrinaan kaksi merkkiosoitinta.

System.out.printf("%d / %d = %.2f%n", ekaluku, tokaluku, osamaara);

Harjoitus 5 (viikko 48)

14. Hyvä ohjelmointitapa 14.1

Ohjelmassa henkilön etunimi ja sukunimi luetaan kahteen muuttujaan seuraavasti:

Ohjelmistojen virheistä

1.3Lohkorakenne muodostetaan käyttämällä a) puolipistettä b) aaltosulkeita c) BEGIN ja END lausekkeita d) sisennystä

ELM GROUP 04. Teemu Laakso Henrik Talarmo

C++11 lambdat: [](){} Matti Rintala

ICS-C2000 Tietojenkäsittelyteoria Kevät 2016

Ohjelmoinnin perusteet Y Python

Standardi mallikirjasto

L7 8.8 Tulorekisteriaineistot: Aineistojen lähetys ja virhetilanteet, aineistojen korjaaminen

Luokan operaatiot. Osoittimet ja viittaukset luokan olioihin

Lohkot. if (ehto1) { if (ehto2) { lause 1;... lause n; } } else { lause 1;... lause m; } 16.3

Periytyminen. Luokat ja olio-ohjelmointi

OHJ-1101 Ohjelmointi 1e

Sisällys. 16. Lohkot. Lohkot. Lohkot

Harjoitus 2 (viikko 45)

Osa III. Edelliset kolme lukua ovat käsitelleet viittausten ja osoittimien käyttöä. Tämän luvun aiheita ovat:

Harjoitus 6 (viikko 42)

Loppukurssin järjestelyt

Olio-ohjelmointi Poikkeusten käsittelystä. 1. Johdanto

Lausekielinen ohjelmointi II Ensimmäinen harjoitustyö

Ohjelmoinnin perusteet Y Python

815338A Ohjelmointikielten periaatteet Harjoitus 6 Vastaukset

Pong-peli, vaihe Aliohjelman tekeminen. Muilla kielillä: English Suomi. Tämä on Pong-pelin tutoriaalin osa 3/7. Tämän vaiheen aikana

C-kielessä taulukko on joukko peräkkäisiä muistipaikkoja, jotka kaikki pystyvät tallettamaan samaa tyyppiä olevaa tietoa.

Esimerkki luokkahierarkiasta: C++-kielen IOstream-kirjasto

-ohjelmointikurssi luentomoniste ja tehtävät

Sangen lyhyt L A T E X-johdatus, osa 2

Perustietotyypit ja laskutoimitukset

Tutnew työkalu C++:n dynaamisen muistinhallinnan testaamiseen

Ohjelmoinnin perusteet Y Python

1. Olio-ohjelmointi 1.1

815338A Ohjelmointikielten periaatteet

Ohjelmointi 2. Jussi Pohjolainen. TAMK» Tieto- ja viestintäteknologia , Jussi Pohjolainen TAMPEREEN AMMATTIKORKEAKOULU

Esimerkkiprojekti. Mallivastauksen löydät Wroxin www-sivuilta. Kenttä Tyyppi Max.pituus Rajoitukset/Kommentit

815338A Ohjelmointikielten periaatteet Harjoitus 7 Vastaukset

Lohkot. if (ehto1) { if (ehto2) { lause 1;... lause n; } } else { lause 1;... lause m; } 15.3

Asiointipalvelun ohje

C-ohjelmointi, syksy Modulaarinen ohjelmointi. Luento C-ohjelmointi Syksy

Modulaarinen ohjelmointi

Osa. Toimintojen toteuttaminen ohjelmissa vaatii usein haarautumisia ja silmukoita. Tässä luvussa tutustummekin seuraaviin asioihin:

Ohjelmoinnin peruskurssien laaja oppimäärä

Transkriptio:

OHJ-1101 Ohjelmointi 1e 2008-09 1 Kääntäjän virheilmoituksia Kun progvh2 ohjelma käännetään antaa tutg++ seuraavat virheilmoitukset ja varoitukset: proffa> tutg++ progvh2.cc progvh2.cc:29:13: warning: missing terminating " character progvh2.cc:29: error: missing terminating " character progvh2.cc:30:21: warning: missing terminating " character progvh2.cc:30: error: missing terminating " character progvh2.cc: In function `int main()': progvh2.cc:20: error: `cuot' was not declared in this progvh2.cc:21: error: expected `;' before `cin' progvh2.cc:24: error: `cout' was not declared in this progvh2.cc:25: error: `cin' was not declared in this progvh2.cc:25: error: `luku2' was not declared in this progvh2.cc:28: error: `endl' was not declared in this progvh2.cc:30: error: `Tulo' was not declared in this progvh2.cc:30: error: expected `;' before `on' progvh2.cc:39: error: expected primary-expression before `else' progvh2.cc:39: error: expected `;' before `else' progvh2.cc:16: warning: unused variable `luku' progvh2.cc:17: warning: unused variable `summa' progvh2.cc:43: error: expected `}' at end of input proffa>

OHJ-1101 Ohjelmointi 1e 2008-09 2 In function int main()' kertoo, mistä osasta ohjelmaa seuraavat virheilmoitukset tulevat. Tämä ohjelma on niin pieni, että siinä ei ole kuin pääohjelma main. Jokaisen virheen alussa lukee, mitä tiedostoa ja riviä se koskee. Joissakin virheilmoituksissa on myös sarakkeen numero: progvh2.cc:29:13: warning: missing terminating character

OHJ-1101 Ohjelmointi 1e 2008-09 3 error: `cout' was not declared in this error: `cin' was not declared in this error: `endl' was not declared in this Jos kääntäjä valittaa, että C++:n standardikirjaston (cstdlib) sisältämät asiat tai syöteja tulostekirjaston (iostream) sisältämät asiat ovat määrittelemättömiä, ensimmäisenä kannattaa tarkistaa, että kyseinen kirjasto on otettu mukaan koodin alussa. #include <cstdlib> #include <iostream> Jos kirjasto on mukana, täytyy virheilmoitusten johtua siitä, että nimiavaruus std ei ole käytössä. using namespace std; Tai sitten kysymyksessä on kirjoitusvirhe. Tarkkana... :)

OHJ-1101 Ohjelmointi 1e 2008-09 4 error: expected `;' before `cin' error: expected `}' at end of input error: expected primary-expression before `else' Virheilmoituksesta kannattaa huomata sana "ennen". Virhe on mainitussa kohdassa tai sitä aikaisemmin. Kääntäjä ei aina osaa ilmoittaa tarkkaa rivinumeroa. Suurin osa kääntäjän antamista virheilmoituksista on kielioppivirheitä ( parse error ). Kääntäjä ei pysty jäsentämään koodia oikein. Kielioppivirheitä tulee aina, kun unohtaa jonkin olennaisen välimerkin: puolipisteen, jotkin sulut, jonkin operaattorin... Joskus kääntäjä sekoaa virheiden kohdalla ja sen jälkeen saattaa tulla kummallisia virheilmoituksia kaikilta seuraavilta riveiltä. Kannattaa korjata (muutama) ensimmäinen virhe ja kääntää sen jälkeen uudelleen.

OHJ-1101 Ohjelmointi 1e 2008-09 5 error: no match for `operator>>' in `std::cout >> "Anna toinen luku: "' Virheilmoitus kannattaa aina lukea loppuun asti, vaikka se olisi ihan kummallisen näköinen. Loppujen lopuksi ilmoitukset ovat vain englantia ja sanakirjan kanssa niistä selviää. Tässä tapauksessa olennainen sana on "operator". Operaattorissa on jotain väärin...

OHJ-1101 Ohjelmointi 1e 2008-09 6 error: `luku2' was not declared in this Mainitulla rivillä käytetään muuttujaa, jota ei ole määritelty aikaisemmin. Virheilmoitus näyttää aivan samalta, kuin siinä tapauksessa, että on unohdettu sanoa using namespace std.

OHJ-1101 Ohjelmointi 1e 2008-09 7 warning: unused variable `luku' warning: missing terminating " character Varoitukset eivät estä ohjelman kääntymistä, mutta kääntäjä arvelee, että ohjelmassa on silti jotain pahasti pielessä. Kokeile vaikka! Käännä ohjelma huomioimatta varoituksia. Toimiiko se? Kääntäjän antamat varoitukset kannattaa aina ottaa tyytyväisenä vastaan. Ne helpottavat ohjelmoijan työtä.