Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele Kuinka Suorittaa Ohjelma? | Section
C Perusteet

bookKuinka Suorittaa Ohjelma?

Pyyhkäise näyttääksesi valikon

Note
Määritelmä

Kääntäjä on erikoistunut ohjelma, joka muuntaa ihmisen luettavan C-lähdekoodin konekieleksi, jota prosessori voi suorittaa. Tämä muunnosprosessi mahdollistaa kirjoitettujen ohjeiden muuttamisen suoritettavaksi tiedostoksi, jonka tietokone ymmärtää ja ajaa.

Jotta koodi voidaan muuntaa prosessorille tarkoitetuiksi komennoiksi, tarvitaan kääntäjä. Kääntäjä käsittelee koodin järjestyksessä ylhäältä alas. Käännösprosessi etenee useiden vaiheiden kautta:

  • Esikäsittelyvaihe: kaikki #include-ohjeet käsitellään, jolloin ulkoiset tiedostot, kirjastot ja muut tarvittavat osat liitetään ohjelmaan;

  • Syntaksivirheiden tarkistus: kääntäjä tarkistaa syntaksivirheet ja keskeyttää käännöksen, jos virheitä löytyy, korostamalla ne korjausta varten;

  • Kääntäminen suoritettavaksi tiedostoksi: ohjelma muunnetaan suoritettavaksi tiedostoksi (esim. .exe Windowsissa), jolloin sitä voidaan käyttää kuten mitä tahansa muuta sovellusta.

Suoritettava tiedosto on yksinkertaisesti joukko ohjeita (konekoodia), tarkoitettu suorittimelle. Esimerkiksi lause "Hello, c<>definity" konekoodina voisi muistuttaa jonoa.

program.exe

program.exe

copy
12
01001000011001010110110001101100011011110010110000100000011000110011110000111 110011001000110010101100110011010010110111001101001011101000111100100100001

Koodiin on lisätty tarkoituksellinen virhe, jotta voidaan havainnollistaa, miten C-kääntäjä tunnistaa ja raportoi ongelmat.

Main.c

Main.c

copy
12345678
#include <stdio.h> int main() { printf("some text") // Error line return 0; }

Kääntäjä odottaa puolipistettä (;) viidennen rivin lopussa. Ilman sitä kääntäjä ei tunnista, mihin lause päättyy, ja käsittelee return 0; osana samaa riviä. Tämän seurauksena virheilmoitus ilmestyy seuraavalle riville, vaikka todellinen ongelma on puuttuva puolipiste printf-lauseen jälkeen.

Main.c

Main.c

copy
12345678
#include <stdio.h> int main() { ;; ;;;;;; printf("C language\n");;; ;return 0; ;;; }

C-kääntäjä on varsin salliva ylimääräisten puolipisteiden suhteen. Vaikka ne saattavat näyttää oudolta, useita ; käsitellään tyhjinä lauseina, eikä niillä ole vaikutusta ohjelman toimintaan. Koodi kääntyy ja suorittuu silti ongelmitta, mutta ylimääräisten puolipisteiden välttäminen on hyvä tapa pitää koodi siistinä ja luettavana.

question mark

Mitkä ovat käännösprosessin vaiheet?

Select the correct answer

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 1. Luku 3

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme

Osio 1. Luku 3
some-alt