1. praktikum - Keskkond ja muutujate tõlgendamine

Allikas: Lambda
Süsteemprogrammeerimine keeles C

Praktikumid

Laborid

Kodutööd peavad töötama dijkstra nimelises serveris, seega tuleks sinna korra vähemasti sisse saada.

Muidu võib laboris kasutada ka praktikumiklassi arvuteid.


Dijkstra

NB! Dijkstrasse sisselogimiseks on tarvis edastada oma kasutajanimi õppejõule: iga klassi konto omanik serverisse sisse ei pääse.

TTÜ sisevõrgust ja väljastpoolt:

dijkstra.cs.ttu.ee 

Windowsis ja kodus võite näiteks Putty või SSH Secure Shell nimelist programmi kasutada)

Ligipääs TTÜ parooli ja kasutajanimega üle ssh

ssh kasutajanimi@dijkstra.cs.ttu.ee

Info

Käsurea-tekstiredaktoriks sobib näiteks vim: kes ei soovi sellesse sisse elada, võib provida ka joe või pico nimelisi. (pico-ga on osadel praegu miskipärast probleemid)

Linuxi arvutis võite dijkstra ühendada ka oma failisüsteemiga (ja lisage sellele Bookmark, et teinekord trükivaeva vähem oleks), selleks tuleb failibrauseris kirjutada käsureale

sftp://dijkstra.cs.ttu.ee/home/kasutajanimi

Tutvuge praktikumiülesannetega.

1. Hello, World

Kompileerimiskatse. Kirjutage programm "Hello, World", salvestage nimega hello.c . Kompileerige see käsuga

gcc hello.c -o hello

-o argument ütleb gcc-le, mis nimega soovid väljundit (vaikimisi pakutakse sulle faili a.out).

  • Vihje: programmiteksti leiate võrguavarustest
  • Vihje2: programmi käivitamiseks kataloogist, kus te viibite kirjutage ./hello

2. Mälu tõlgendamine

Järgmise praktikumi eelharjutusena on mõistlik järele proovida mälu tõlgendamise viisid. Nendega tutvumiseks kirjutage programm, milles on järgmine konstant ning täiendage seda vastavalt ülesandele:

int x = 0x74736574;

Ülesanne:

  • Trükkige x funktsiooni printf abil välja võimalikult paljudes tõlgendustes (täisarvuna, ujukomaarvuna, märgita täisarvuna, tähemärgina.
  • Trükkige välja muutuja x mäluaadress (muutuja saab mäluaadressiks teisendada & operaatori abil ning mäluaadressi näitamiseks sobib printf stringis %p tähis.
  • Kirjuta välja muutuja x kõik 4 baiti tähemärkidena tõlgendatult.