C/C++
Ajankohtaista
- Vuoden 2026 kevään kurssi aloittelee pikkuhiljaa
- Luentovideot julkaistu, demot julkaistaan hieman myöhemmin.
- Alustava aikataulu demoille on viikon syklit kevään Ohj2-kurssin jälkeen (20.4 ja 27.4)
- Demoja odotellessa vastaa kyselyyn ohjausajoista, asentele itsellesi C++-yhteensopiva IDE ja kääntäjä
- Apuja tehtäviin ja demojen tekemiseen saat Koodaamosta. Vastaathan ylempänä olevaan kyselyyn.
Please
1. Suoritus
Kurssi on yhden opintopisteen kokoinen pintaraapaisu C++-kieleen (ja hieman C-kieleen). Kovin monimutkaisiin C++-kielen erikoisuuksiin kurssilla ei keretä, ja myös uudempien C++-standardien läpikäynti jää kurssin ulkopuolelle.
Kurssi suoritetaan tekemällä kurssin demotehtävät, joita on kahdessa erässä. Aikataulut speksataan lähiviikkoina, alustava suunnitelma on noin viikon syklit tämänhetkisen kevään Ohjelmointi 2 -kurssin jälkeen (eli alustavasti 20.4 ja 27.4).
Demotehtävistä tulee suorittaa vähintään 60%, jotta kurssista saa hyväksymismerkinnän. Lisäksi yhden demokerran aikana tulee tehdä vähintään puolet tehtävistä. Jos yhdellä demokerralla on esimerkiksi 10 tehtäväää, tuo tarkoittaa siis vähintään 5 tehtävää per demokerta, ja yhteensä vähintään 12 demotehtävää itsenäisesti tehtynä aikataulujen mukaisesti. Lisäksi demotehtävät tulee täydentää mallivastausten julkaisemisen jälkeen 100%:iin asti, eli ne tehtävät, joita ei ole tehty deadlineen mennessä, tulee opiskella vähintään mallivastausten ja demojen läpikäyntivideon avulla.
Itsenäisen työn tukemiseksi kurssilla tarjotaan ohjausta Koodaamojen yhteydessä. Koodaamoaikojen ja kurssin suorittajien yhteensovittamiseksi käythän vastaamassa kyselyyn sopivista ohjausajoista: linkki. Aikoja pyritään lisäämään pääsiäisen jälkeen, pääasiassa kutakin demoa edeltävälle viikolle. Jos tiedät kokemuksesta, ettet käytä ohjelmointikursseilla ohjauksia, vastaathan silti kyselyyn, jotta kartoitetaan opiskelijoiden tarpeita tarkemmin.
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. IDE
3.1 Visual Studio Code
- Asenna kääntäjä
- Windowsille voi asentaa Build Tools for Visual Studio, ja asennusohjelmasta "Desktop development with C++"
- Linuxille voi asentaa vaikkapa gcc
- Macille voi asentaa clang
- Toki voit kokeilla käyttää muitakin kääntäjiä. Demoissa/luentovideoissa käytetään mallina gcc:tä
- Asenna Visual Studio Code
- Käynnistä VSC, etsi marketplacesta (Ctrl+Shift+x) Microsoftin C++ -plugin
- Pluginin mukana tulee kohtuullinen sisäinen tutoriaali, jota kannattaa käydä läpi ainakin kohdan "Run and debug your C++ file" loppuun
- Jos tutoriaali katoaa, voit koittaa avata sen uudestaan:
- Paina f1
- Valitse "Welcome: Open walkthrough" (voit hakea esim sanalla "walkt")
- Valitse "Get started with C++ development"
Vanhoja/muita ohjeita
3.2 Muita IDEjä
Voit toki asentaa minkä tahansa C++ ohjelmistoympäristön, jolla saat kirjoitettua ja käännettyä kurssin tehtäviä. Vanhoja kerättyjä ohjeita löytyy tästä linkistä.
4. C++ kääntäjä
4.1 Asentaminen
4.1.1 MinGW ja Windows CMD
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\mingwtuleebin-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\mingweli polkuun saattamiseksi siis:path=c:\devel\mingw\bin;%path% // polun alkuun jotta voittaa vanhat kääntäjätgcc (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.
4.1.2 GitBash
Myös GitBashia varten asenna MinGW kuten edellä. Erona että polkuun lisätään:
Avaa nanolla
.bashrc:nano ~/.bashrcJos on `export rivi, lisää sen perään tai jos ei ole, lisää uutena:
export PATH=$PATH:/C/devel/mingw/binTallenna ja poistu (
Ctrl-X)Käynnistä uusi GitBash
Kokeile
g++ -v
4.1.3 Unix-pohjaiset järjestelmät
Windowsissakin voi käyttää WSL:än kautta Linuxia
sudo apt-get update sudo apt install gccMuista komentorivioppimateriaali
Unix-pohjaisissa koneissa C/C++ on monesti valmiiksi asennettuna, tai helposti & ilmaisesti saatavilla
4.1.4 Mac
- 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
4.2 Kääntäminen komentoriviltä
Katso tarkemmin monisteesta C ja C++.
Kirjoita
hello.cpp: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ä.cctai.cpp→ C++-kääntäjä),Windows:
g++ -c -o hello.o hello.cpp g++ -o hello.exe hello.o hellokaikki kerralla
g++ hello.cpp -o hello.exe helloLinux, Mac, GitBash: (huom, .exe puuttuu ja pitää antaa ajon hakemisto)
g++ -c -o hello.o hello.cpp g++ -o hello hello.o ./hellokaikki kerralla
g++ hello.cpp -o hello ./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 VPN + 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 kuten edellä Linux-kohdassa.
5. ComTest
6. Dokumentointi
- Doxygen avulla saa samankaltaisen dokumentaation kuin JavaDocilla
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.