Dit is CS50x

Aan de slag

CS50 IDE is een web-gebaseerde “geïntegreerde ontwikkel omgeving” die je in staat stelt om “in the cloud” te programmeren, zonder software lokaal te installeren. CS50 IDE biedt je je eigen “werkruimte” (opslagruimte) waarin je je eigen bestanden en mappen (ook wel directories genoemd) kunt opslaan.

Inloggen

Ga naar ide.cs50.io en klik op “Aanmelden met GitHub” om toegang te krijgen tot je CS50 IDE. Zodra je IDE geladen is, zou je moeten zien dat het (standaard) verdeeld is in drie delen. Aan de bovenkant van CS50 IDE is je “tekst editor”, waar je al je programma’s zult schrijven. Onderin is een “terminal venster” (standaard lichtblauw), een command-line interface (CLI) waarmee je de bestanden en mappen van je werkruimte kunt verkennen, code kunt compileren, programma’s kunt draaien, en zelfs nieuwe software kunt installeren. En aan de linkerkant is uw “file browser”, die u alle bestanden en mappen laat zien die momenteel in uw IDE staan.

Begin met klikken in uw terminal venster. U zult merken dat de “prompt” op het onderstaande lijkt.

~/ $

Klik in dat terminal venster en typ dan

mkdir ~/pset1/

gevolgd door Enter om een directory (d.w.z., map) genaamd pset1 in uw home directory te maken. Let op dat u de spatie tussen mkdir en ~/pset1 of een ander teken niet over het hoofd ziet! Onthoud dat ~ uw home directory aangeeft en ~/pset1 een directory genaamd pset1 binnen ~.

Hierbij betekent het uitvoeren (d.w.z. uitvoeren) van een commando dat u het in een terminal venster typt en dan op Enter drukt. Commando’s zijn “hoofdlettergevoelig”, dus typ niet in hoofdletters als je kleine letters bedoelt of andersom.

Nu uitvoeren

cd ~/pset1/

om jezelf in die directory te verplaatsen (d.w.z., te openen). Uw prompt zou er nu uit moeten zien zoals hieronder.

~/pset1/ $

In het andere geval, volg uw stappen en kijk of u kunt bepalen waar u de fout in bent gegaan.

Uitvoeren

mkdir ~/pset1/hello

om een nieuwe directory genaamd hello aan te maken in uw pset1 directory. Voer vervolgens

cd ~/pset1/hello

uit om uzelf in die directory te verplaatsen.

Zullen we u uw eerste programma laten schrijven? Klik in het menu Bestand op Nieuw bestand, en sla het op (zoals via de optie Opslaan in het menu Bestand) als hello.c in uw directory ~/pset1/hello. Schrijf je eerste programma door precies deze regels in het bestand te typen:

#include <stdio.h>int main(void){ printf("hello, world\n");}

Merk op hoe CS50 IDE “syntax highlighting” (d.w.z., kleur) toevoegt terwijl je typt, hoewel CS50 IDE’s keuze van kleuren kan verschillen van die van deze probleem set. Deze kleuren zijn niet opgeslagen in het bestand zelf; ze zijn alleen toegevoegd door CS50 IDE om bepaalde syntax te laten opvallen. Als je het bestand niet vanaf het begin als hello.c had opgeslagen, zou CS50 IDE niet weten (door de extensie van de bestandsnaam) dat je C code aan het schrijven bent, in welk geval de kleuren niet aanwezig zouden zijn.

Listing Files

Volgende, in je terminal venster, direct rechts van de prompt (~/pset1/hello/ $), voer je uit

ls

Je zou alleen hello.c moeten zien? Dat komt omdat u zojuist de bestanden in uw hello map heeft opgesomd. In het bijzonder hebt u een commando uitgevoerd (d.w.z. uitgevoerd) met de naam ls, wat steno is voor “lijst”. (Het is zo’n vaak gebruikt commando dat de auteurs het gewoon ls noemden om toetsaanslagen te besparen). Snap je?

Compileren van programma’s

Nou, voordat we het hello.c programma kunnen uitvoeren, herinneren we ons dat we het moeten compileren met een compiler (b.v. clang), die het vertaalt van broncode naar machinecode (d.w.z., nullen en enen). Voer het onderstaande commando uit om dat te doen:

clang hello.c

En voer deze dan nog een keer uit:

ls

Deze keer zou u niet alleen hello.c maar ook a.out in de lijst moeten zien staan? (U kunt hetzelfde grafisch zien als u nogmaals op dat map-icoontje klikt.) Dat komt omdat clang de broncode in hello.c heeft vertaald naar machinecode in a.out, wat toevallig staat voor “assembler output,” maar daarover een andere keer meer.

Nu het programma uitvoeren door het onderstaande uit te voeren.

./a.out

Hallo, wereld, inderdaad!

Programma’s benoemen

Nou, a.out is niet de meest gebruikersvriendelijke naam voor een programma. Laten we hello.c opnieuw compileren, deze keer de machinecode opslaan in een bestand met de toepasselijke naam hello. Voer de onderstaande uit.

clang -o hello hello.c

Zorg ervoor dat u geen van die spaties daarin over het hoofd ziet! Voer deze dan nog een keer uit:

ls

U zou nu niet alleen hello.c (en a.out van daarnet) maar ook hello moeten zien staan? Dat komt omdat -o een command-line argument is, soms bekend als een vlag of een switch, die clang vertelt om een bestand genaamd hello uit te voeren (vandaar de o). Voer het onderstaande uit om het nieuw genoemde programma uit te proberen.

./hello

Hallo daar!

Dingen makkelijker maken

Houd in gedachten dat we het proces van het uitvoeren van clang kunnen automatiseren, door make voor ons uit te laten zoeken hoe dat moet, waardoor we ons een aantal toetsaanslagen besparen. Voer het onderstaande uit om dit programma nog een laatste keer te compileren.

make hello

Je zou moeten zien dat make clang uitvoert met nog meer command-line argumenten voor jou? Daarover een andere keer meer!

Doe nu het programma zelf nog een laatste keer door het onderstaande uit te voeren.

./hello

Phew!

Getting User Input

Hoe je dit programma ook compileert of uitvoert, het drukt altijd alleen maar hello, world af. Laten we het een beetje personaliseren, net zoals we in de les hebben gedaan.

Wijzig dit programma zodanig dat het de gebruiker eerst om zijn naam vraagt en dan hello, so-and-so afdrukt, waarbij so-and-so zijn eigenlijke naam is.

Zorg ervoor dat u uw programma compileert met:

make hello

En zorg ervoor dat u uw programma uitvoert, door het een paar keer te testen met verschillende inputs, met:

./hello

Walkthrough

Hints

Weet u niet meer hoe u de gebruiker om zijn naam moet vragen?

Houd in gedachten dat u get_string als volgt kunt gebruiken, waarbij u de retourwaarde opslaat in een variabele genaamd name van het type string.

string name = get_string("What is your name?\n");

Weet u niet meer hoe u een string moet formatteren?

Weet u niet meer hoe u de gebruikersnamen moet samenvoegen (d.w.z., aaneenrijgen) van de naam van de gebruiker met een begroeting? Herinnert u zich dat u printf niet alleen kunt gebruiken om af te drukken, maar ook om een string op te maken (vandaar de f in printf), a la het onderstaande, waarin name een string is.

printf("hello, %s\n", name);

Gebruik van undeclared identifier?

Zie u het onderstaande, misschien boven op andere fouten?

error: use of undeclared identifier 'string'; did you mean 'stdin'?

Om get_string te gebruiken, moet u cs50.h (waarin get_string wordt gedeclareerd) boven op een bestand zetten, zoals in:

#include <cs50.h>

Hoe test u uw code

Uitvoeren van het onderstaande om de juistheid van uw code met check50 te evalueren. Maar zorg ervoor dat u de code ook compileert en test!

check50 cs50/problems/2020/x/hello

Uitvoeren van het onderstaande om de stijl van uw code te evalueren met behulp van style50.

style50 hello.c

Hoe te verzenden

Uitvoeren van het onderstaande, inloggen met uw GitHub gebruikersnaam en wachtwoord wanneer daarom wordt gevraagd. Voor de veiligheid ziet u asterisken (*) in plaats van de echte tekens in uw wachtwoord.

submit50 cs50/problems/2020/x/hello

Plaats een reactie