C/C++
- ilmoittautuminen Sisussa.
- Asenna tämän sivun ohjeista aloittaen: C/C++ -kääntäjä, IDE (miel VSCode), TIDE (ks Demo1)
- tulkaa luentojan aluksi sisään osoittesta: r.jyu.fi/ohj2
- Luennot: Zoomissa (salasana ohj2) katsotaan yhdessä videot ja keskustellaan
- demot:
- pääteohjaukset Zoomissa, tarkoitus on että ensin harjoitellaan työkalujen käyttöä ja sitten voi tehdä demoja
- muistakaa ilmoittautua alla
- ennen pääteohjauksia koita asentaa itsellesi jokin alla olevista C++ työkaluista (CodeLite, Eclipse C++ tai Visual Studio)
- Ohjaus C1, ilmoittautuminen, pääte 14
- Ohjaus C2, ilmoittautuminen, pääte 15
- C/C++ pyhitetyt ohjaukset on merkitty C:llä ilmotaulukkoon Pääteohjaussivulla
- Kevään 2024 kurssiasiossa neuvoo ensisijaisesti:
- Kurssin postilista ohj2cpp24@tim.jyu.fi
Mikä on kevään deadline?
VL: Suoritus on niin että tehdään kahden viikon demot. Heti perään kun tämä Ohj2 kurssi loppuu Koitan laskea päivämäärät kun ehdin, pääsiöinen hieman sotkee. Sisukalenterissa saattaa olla oikein.
—
Please
Please
1. Suoritus
Demoista C1 ja C2 on tehtävä yhteensä 60%, min 50%/kerta, jotta saa 1 op merkinnän kurssista TIEP112 Ohjelmointi 2, C++. Demokertojen maksimina pidetään 10, eli käytännössä Hyväksyttyyn vaaditaan 12 tehtyä tehtävää.
Tehtävät voi tehdä etukäteenkin jos katsoo nuo neljä videota.
Kummankin demokerran palautustilaisuuden (deadline maanantaisin klo 14-16) jälkeen omat vastaukset on korjattava TIMissä niin, että niistä tulee 10 p. Jos tehtävää ei ole tehnyt, on se opiskeltava edes mallivastauksesta (pelkkä copy/paste ei riitä). Korjattaessa vastauksia on katsottava palautustilaisuudessa käsitellyt virheet ja parannusehdotukset. Tälle viikkoa aikaa palautustilaisuudesta.
- mallivastaukset löytyvät GitLabista
- demojen videot Ohj2 kurssin demojen pääsivulta
Kurssi arvostellaan Hyväksytty/Hylätty.
Vaihtoehtoinen suoritustapa: Oman Ohj2-harkan vaihe 6 (ilman käyttöliittymää) C++:lla tehtynä. Tällöin ei ole aikataulurajoja.
Hei!
Pitääkö tästä kurssista pyytää erikseen suoritusmerkintää?
VL: Jos demot tekee ennen kurssia, niin joo. Jos kurssin aikana, niin ei. Jos tekee ht:lla, niin ht pitää näyttää ohjaajille ja kertovat että nyt voi laittaa merkinnän.
—2. Materiaalia
2.1 Monisteita ja kirjallisuutta
- TIM-materiaali C ja C++ (luennoilla läpi käytävä TIM-materiaali), PDF
- Matti Rintala ja Jykke Jokinen: Olioiden ohjelmointi C++:lla
- Aalto yliopiston C-ohjelmoinnin peruskurssi | same in English
- Aalto-yliopiston C++ -kurssi (in English)
- Moniste 2003 - Ohjelmointi 2 -kurssia vastaava moniste C++:lla TIMIssä. (Alkuperäinen Ohjelmointi++)
- Olio-ohjelmointi ja C++
- Merkkijonot ja C++ / Antti-Juhani Kaijanaho
- Ohjaajien kirjoittamaa kertausmateriaalia mm. osoittimista, olioista, merkkijonoista ja tiedostoista.
- C++ -sivu (in English)
- K&R: Brian Kernighan and Dennis Ritchie: The C Programming Language, Second Edition
- Bjarne Stroustrup: The C++ Programming Language (4th Edition), Addison-Wesley ISBN 978-0321563842. May 2013.
- Bjarne Stroustrup: The Design and Evolution of C++ - Addison-Wesley ISBN 0-201-54330-3, 1994
2.2 Linkkejä
3. C++ kääntäjä
3.1 MinGW ja Windows
aluksi tarvitaan lähes kaikkiin alla oleviin vaihtoehtoihin C/C++ kääntäjä. Tämän saa mm. MinGW-paketista.
Windowsiin kannattaa ihan aluksi hakea MinGW zip ja purkaa se niin, että hakemistoon
c:\devel\mingw
tuleebin
-hakemisto yms samassa paikassa olevat.kääntäjä ja työkalut kannattaa lisätä hakupolkuun (oletetaan asennus
C:\devel\mingw
-hakemistoon). Komentoriviltä:path=C:\devel\mingw\bin;%path%
varminta on asettaa pysyvästi (tarvii admin oikeudet):
- kirjoita komentoriviltä
sysdm.cpl
- valitse
Advanced/Environment Variables
- path-kohtaan lisätään tuo
C:\devel\mingw\bin
- kirjoita komentoriviltä
mikroluokissa MinGW on asennettu polkuun
c:\devel\mingw
eli polkuun saattamiseksi siis:path=c:\devel\mingw\bin;%path% // polun alkuun jotta voittaa vanhat kääntäjät
gcc (tai siis sen ohjelmat kuten gcc) saattaa puhua osittain suomea, kun Windowsin kieliasetus on suomeksi. Jos kaksikielisyys häiritsee, voi kielen vaihtaa englanniksi lisäämällä tai asettamalla järjestelmämuuttujan (kts. yllä, samoin kuin PATHin asettaminen) LANG arvoon C. Komentoriviltä
set LANG=C
.Hakupolun toimivuuden voi testata kirjoittamalla komentoriville käskyn
echo %PATH%
. Lisätyn polun päästä pitäisi löytyä g++.exe- Visual Studio pitää käynnistää uudelleen, jos polkua muutettu
MinGW:n asennuksen voi testata kirjoittamalla käskyn
g++ -v
. Pitäisi tulostua kääntäjän versiotietoja.
3.2 Unix-pohjaiset järjestelmät
Windowsissakin voi käyttää WSL:än kautta Linuxia
sudo apt-get update sudo apt install gcc
Muista komentorivioppimateriaali
Unix-pohjaisissa koneissa C/C++ on monesti valmiiksi asennettuna, tai helposti & ilmaisesti saatavilla
macOS:lle Xcode-kehitystyökalu löytyy App storesta
- uudet versiot Xcodesta ja macOS:stä: komentorivityökalut asennetaan komentoriviltä komennolla
xcode-select --install
- vanhat versiot Xcodesta ja OS X:stä: käyttöä komentoriviltä helpottava "command line tools" asennetaan seuraavasti: install-command-line-tools-mac-os-x.
- uudet versiot Xcodesta ja macOS:stä: komentorivityökalut asennetaan komentoriviltä komennolla
3.3 Kääntäminen komentoriviltä
Kääntäminen, linkittäminen ja ajaminen erikseen (C++-ohjelma, C-ohjelma vastaavasti mutta komento on gcc, macOS:lläkin nuo toimivat, joskin se käyttää gcc:n ja g++:n sijaan clang-ohjelmaa, joka valitsee kääntäjän tiedoston tarkentimen mukaan:
.c
→ C-kääntäjä.cc
tai.cpp
→ C++-kääntäjä):g++ -c -o hello.o hello.cpp g++ -o hello.exe hello.o hello
kaikki kerralla
g++ hello.cpp -o hello.exe hello
Jos tehdään C++11
(tai vastaavasti 14
tai 17
) ohjelmia, pitää tämä kertoa komentorivin optiolla, esim:
g++ -std=c++11 -o hello.exe hello.cpp
Mikäli pärjää hyvin yksinkertaisilla ja askeettisilla työkaluilla, on myös yliopiston etäkoneella asennettuna c-kääntäjä (hyvin vanha) ja c++-kääntäjä. Näillä voi hyvin testailla, jos tarvitsee tehdä jotain nopeasti.
Etäkoneelle pääsee kirjautumaan ssh:llä jonkin Telnet-asiakasohjelman esim. Puttyn avulla. Puttyssa Host Name-kohtaan kirjoitetaan jokin seuraavista osoitteista:
- jalava.cc.jyu.fi
- halava.cc.jyu.fi
- calc.phys.jyu.fi ( en ole varma toimiiko myös ei Fysiikan laitoksen opiskelijoille)
Oletuksena nämä avaavat alussa U-aseman juuren ja tallentavat kaiken roskan sinne. Lisää etälinuxin käytöstä Tietokone ja tietoverkot työvälineenä-kurssin sivuilta.
Palvelun aktivoiminen salasana.jyu.fi:sta saattaa olla tarpeen. Sielta "aktivoi etäkäyttö" tms.
Kääntäminen melkein samoin, kuin edellä:
gcc -o hello hello.c tai ( huomaa puuttuva .exe)
g++ -o hello hello.cpp
Ja ajaminen:
./hello
4. IDE:jä
Ks: IDEt
Vaihtoehtoisia IDE:jä mm (suositus on ehkä VS Code, CodeLite, Windowsiin myös Visual Studio, Macille XCode)
Kevään 2024 kurssilla voisi kokeilla aluksi saako VS Coden kautta tehtyä. Alla on lueteltu vaihtoehtoisia IDEjä, joista mikään ei ole täydellinen, valitettavasti. Noista vakavasti kannattaa katsoa niitä, mitkä on testattu 2024 tai myöhemmin. Jos työkalulle on TIDe palautusohjeet, se on merkitty +TIDE
.
4.1 Visual Studio Code
- paljon on kehuttu Visual Studio Code mutta en osannut kunnolla käyttää, joku voisi parantaa ohjeita :-)
- Projektin tekeminen ja ajaminen VS Codella
- testattu 6.4.2024 / vesal / W11 64 bit (versio VS Code 1.87.2) + TIDE
4.2 Eclipse ja C++
- Asenna Eclipsen tarvitsemat lisäosat
- Mikroluokissa lähtee käyntiin komentoriviltä
ec
(vanha versio, Indico)- ComTestin asennusohjeissa vaihda
e:\
tilalle oikea levykirjain (mikroluokissan:\
)
- ComTestin asennusohjeissa vaihda
- testattu 13.4.2012 / vesal / W7 64 bit (Indigo)
- testattu 19.4.2014 / vesal / W7 64 bit (Kepler)
- testattu 17.4.2016 / vesal / W7 64 bit (Mars)
- testattu 4.4.2017 / vesal / W10 64 bit (Neon)
- testattu 7.4.2018 / vesal / W10 64 bit (Oxygen.2)
- testattu 30.3.2019 / vesal / W10 64 bit (Eclipse 19.03)
- testattu 10.4.2021 / vesal / W10 64 bit (Eclipse 21.03)
- testattu 3.4.2022 / vesal / W11 64 bit (Eclipse 2021-12 (4.22.0))
- testattu 9.4.2023 / vesal / W11 64 bit (Eclipse 2022-12 (4.26.0))
- testattu 6.4.2024 / vesal / W11 64 bit (Eclipse 2023-12 (4.30.0)) + TIDE
ec4 komento ei toiminut Mountainsissa
VL: joo, ei toimi muuta kuin tuo vanha indico ec
-komennolla.
4.3 CodeLite
- Windows, Linux, Mac: CodeLite, lataa ja asenna (asennusohjeet)
- - vaati projektin
- + pysähtyy ajon jälkeen konsoli-ikkunaan jolloin tuloksen ehtii nähdä
- + ComTest toimii hyvin
- + jos MinGW polussa ennen käynistystä, niin toimii ihan hyvin
- jos valittu asennukseen MinGW -versio, niin ei tarvitse mitään temppuja
- projektin tekeminen CodeLitellä.
- mikroluokassa lähtee käyntiin komentoriviltä komennolla
cl
ja muuten ei saakkaan käynnistää, sillä ei ole oikeuksia ajaa ohjelmia. N-levy pitää olla mountattuna.- ComTestin asennusohjeissa vaihda
e:\
tilallen:\
- ComTestin asennusohjeissa vaihda
- testattu 13.4.2012 / vesal / W7 64 bit (versio codelite-3.5.5377.exe)
- testattu 14.4.2013 / vesal / W8 64 bit (versio codelite-5.1.0.mingw4.7.1.exe)
- testattu 14.4.2014 / vesal / W8 64 bit (versio codelite-5.4-mingw4.8.1.exe)
- testattu 17.4.2016 / vesal / W8 64 bit (versio codelite-amd64-9.1.5)
- testattu 4.4.2017 / vesal / W10 64 bit (versio codelite 10.0.3)
- testattu 9.4.2018 / vesal / W10 64 bit (versio codelite 12.0.0)
- testattu 30.3.2019 / vesal / W10 64 bit (versio codelite 12.0.15)
- testattu 10.4.2021 / vesal / W10 64 bit (versio codelite 15.0.0)
- testattu 3.4.2022 / vesal / W11 64 bit (versio codelite 15.0.11)
- testattu 9.4.2023 / vesal / W11 64 bit (versio codelite 17.2.0)
- testattu 6.4.2024 / vesal / W11 64 bit (versio codelite 17.9.0) + TIDE
CodeLite + minGW combolla debuggaus vaatii säätämistä. gcc kääntäjällä tehdyt projektit kääntyvät hyvin ja niitä pystyy debuggaamaan. g++ projektit kaatuivat itsellä aina debugatessa ilman virheilmoitusta, mutta asettamalla 'workspace build configuration' Debug->Release pystyi ohjelmat ajamaan. Debuggaus lähti toimimaan linkin ohjeilla: Linkin teksti
tl;dr poistakaa aina KAIKKI workspacen breakpointit ennen uuden asettamista. CodeLiten pääikkunasta Debugger - Delete All Breakpoints
Ongelma on näköjään sama kuin vesalla n. viikko sitten luennolla, jolloin c++ debuggaus välillä toimi ja välillä ei
—4.4 Visual Studio 2022
- projektin tekeminen Visual Studio 2022
- hyvät täydennykset
- hyvä debuggaus
- raskas
- Oletuksena kääntäjässä eri asetukset kuin timissä
- Sisällyttää joitain kirjastoja kysymättä
- testattu 16.4.2013 / vesal / W8 64 bit
- testattu 17.4.2016 / vesal / W10 64 bit, VS2015
- testattu 4.4.2017 / vesal / W10 64 bit, VS2015
- testattu 7.4.2018 / vesal / W10 64 bit, VS2017
- testattu 30.3.2019 / vesal / W10 64 bit, VS2017
- testattu 6.4.2024 / vesal / W11 64 bit, VS2022 + TIDE
“Cannot run program”g++“: CreateProcess error=2, The system cannot find the file specified” Visual studio community edition 2019 antaa tuollaisen errorin, kun yritän ajaa comtestejä.
VL: Onko ComTestiin liittyvien tiedostojen paikka oikein asetuksissa. Eli Java ja ComTestCpp.jar.
—Kaikki on niinkuin Visual Studio 2012-2015 ohjeissa ComTestCpp-sivulla. Joko java.exe on muuttunut, tai 2019-versiossa noi External Tools:it pitäisi tehdä hiukan eri tavalla.
—4.6 Code::Blocks
- Linux & Windows: http://www.codeblocks.org/
- + projektiin helppo lisätä ja poistaa tiedostoja, näin valita mitä ajetaan
- + pysähtyy konsoli-ikkunaan ajon lopuksi ja näyttää vieläpä ajon kestoajan
- - ctrl-click hyppyä esittelyyn
- + ComTest toimii hyvin
- - ei saa koodilohkoja joilla olisi helppo tehdä testejä (???)
- projektin tekeminen Code::Blocksilla.
- testattu 13.4.2012 / vesal / W7 64 bit (versio codeblocks-10.05-setup.exe, MinGW pitää olla ensin asennettu ja polussa)
4.7 KDevelop
- Linux KDevelop lataa ja asenna
4.8 Qt Creator
- Linux, Windows, Mac: https://www.qt.io/download/
- + Kevyt (oli), aktiivisessa kehityksessä oleva C++ -IDE
- + Erinomaiset Qt-työkalut
- - Hiukan Qt-keskeinen muihin projekteihin, mutta on käytettävissä myös ei Qt-projekteihin (en saanut debuggeria toimimaan Command ohjelmiin W7 64 bit)
- testattu 13.4.2012 / vesal / W7 64 bit
4.9 Dev C++
- Windows: Dev C++ 5.6.2, asenna ja aja
- + konsoli-ikkuna jää näkyviin suorituksen jälkeen
- + yksinkertainen ja toimii ilman projektejakin
- + MinGW (vanha???) tulee ja asentuu mukana
- - debuggaus aika käpystä kun on huono liittymä gdb:hen
- testattu 14.4.2013 / vesal / W8 64 bit
- testattu 19.4.2014 / vesal / W8 64 bit
4.10 C-Free
- Windows: C-Free, asenna ja aja
- - vain 30 päivän käyttö
- + yksinkertainen, toimii ilman projekteja
- - hiiren rulla ei toimi, ei ctrl-click hyppyä esittelyyn
- - ei toiminut kunnolla W7 64 bit (debug ei toimi)
- testattu 13.4.2012 / vesal / W7 64 bit
4.11 C++ ja Xcode (macOS)
- Xcode on Applen virallinen IDE, jolla voi luoda Swift ja Objective-C projektien lisäksi standardi C ja C++ -projekteja. Paras valinta macOS:llä ohjelmoiville, ainakin ilmaisista työkaluista.
- Haettavissa ilmaiseksi AppStoresta.
- Sisältää paljon hyviä työkaluja, mm. debuggaukseen, muistin/prosessoriajan/energiankäytön seurantaan, GUI-kehitykseen, pelikehitykseen (3D ja 2D), tekoälyyn, GPU-laskentaan, ...
- Ohjeita mm. http://help.apple.com/xcode/mac/8.0/.
- Eli C++-ohjelmia kirjoitetaan kuten muitakin. Valitse "Uusi projekti", sitten projektityyppi ja projektin nimen annon yhteydessä voit valita käytettävän kielen.
- Seuraavat ohjeet ovat vanhoille versioille.
- J.L. Popyackin lyhyet ohjeet alkuun pääsemiseksi. Vanhahkot, mutta pitäisi olla vielä täysin soveltuvat uudempiinkiin versioihin.
- Neil Mondayn vastaava blogikirjoitus
4.12 Emacs (ja gcc/clang)
- Kohtuullisella säätämisellä saa Emacsin toimimaan kuten yllä olevat editorit ja IDEt, poislukien tietty GUI- ja muut grafiikkatyökalut.
- Toimii ainakin osittain yleisimmissä käyttöjärjestelmissä.
- Sisältää debuggerin, projektit, kooditäydennykset, koodivärityksen, refaktoroinnin, navigoinnin koodin sisällä, dokumentoinnin näytön (ja tekemisen) ja parhaan muokattavuuden kaikista mainituista editoreista.
5. Dokumentointi
- Doxygen avulla saa samankaltaisen dokumentaation kuin JavaDocilla
6. ComTest
Oma ratkaisuni on ollut se, että asensin snippetin, että saan testit kirjoitettua nopeammin ja ajan testit vain TIM:issä.
—403
VL: nyt annettu jopa muokkausoikeudet jos on pahoja mokia tuolla.Teksti
—7. Valgrind
- Valgrind on ohjelma jolla voi tutkia mm. muistivuotoja. Tämä on mukana osassa TIMissä olevista käännöksistä, erityisesti demoissa.
These are the current permissions for this document; please modify if needed. You can always modify these permissions from the manage page.