1 PC intro 2 Logga in När du är inloggad ska du byta det tilldelade lösenordet mot ett eget. Klicka på ikonen Byt lösenord på skrivbordet. Skulle du sedan glömma ditt lösenord så måste du gå till support för att få ett nytt. 3 Läsa websidor På kursens hemsida står all viktig information om kursen, t.ex. schema, handledningstider, laborationer och laborationsresultat. För att surfa på weben från labsalsdatorerna kan du tex använda dig av webläsaren Firefox. Se till så att du kan hitta kurshemsidan! (http://www.cs.umu.se/kurser/5dv059/ht07/c/) 4 Skapa kataloger Alla som går kurser vid Datavetenskapliga institutionen får en egen hemkatalog. Det är där filerna du skapar ska sparas. Under din tid som student här kommer du att lämna in flera obligatoriska uppgifter. Ofta ska man i samband med det också ha tillhörande filer tillgängliga för läraren/handledaren så att denne kan testköra och bedöma filerna. För denna kurs gäller att filerna ska lagras i underkatalogen progmetodik och att varje obligatorisk uppgift ska lagras i en separat underkatalog. Detta innebär att filerna för laboration 1 ska lagras i H:/edu/progmetodik/lab1/ Denna sökväg brukar också anges på UNIX-sätt och då ser den ut så här: /edu/progmetodik/lab1 Hitta din hemkatalog. Skapa sedan en katalog som heter edu här. Öppna den nya katalogen och skapa en ny katalog progmetodik. För att få lite fin ordning kan du skapa en katalog som heter intro i progmetodik och spara intro uppgiften i den. 5 Putty Det är från ett Putty-fönster som ni ska kompilera era program. Härifrån går det även att kolla mailen (se nedan). Starta Putty från startmenyn start >All Programs >Internet Tools >Putty. Skriv peppar.cs.umu.se där markören står. Välj ssh som protokoll om det inte redan är ikryssat. Skriv peppar under saved sessions och tryck på save knappen. Nu kan ni starta Putty genom att välja open eller load eller dubbelklicka där det står peppar under saved sessions. Kommer det upp ett mystiskt meddelande så tryck på OK. Nu syns ett terminalfönster. Logga in med det nya användarnamnet och lösenordet (markören flyttar inte på sig när ni skriver lösenordet). Du är nu inloggad på UNIX-systemet och står i din hemkatalog (samma som ovan). 1
6 E-mail Den mesta informationen som rör kurserna på institutionen kommer antingen via websidorna eller (oftast) via email. All email från lärare/handledare/studievägledare etc skickas till den adress man fått vid institutionen; xxxxx@cs.umu.se. Det är därför extremt viktigt att du tar som vana och läser dessa email minst en gång om dagen. 6.1 Skicka vidare e-mail Om du redan har en inarbetad email-adress sedan tidigare kan du göra så att all mail till cs-adressen vidarebefodras. För att vidarebefodra mail så skapar du en fil i din hemkatalog som heter.forward. I den skriver du två rader: på den första den e-mail adress du vill vidarebefordra till och på andra raden ditt användarnamn på cs. Då kommer alla mail att skickas vidare till den adress du skrev på första raden samt sparas lokalt. Filen skapar du genom att starta en texteditor. Du kan förslagsvis använda pico som startas genom att skriva pico i Putty-fönstret. Där skriver du dina två rader och trycker sedan Ctrl-X. Du får då frågan om du vill spara filen, svarar ja på den(tryck y) och anger namnet.forward sedan avslutas editorn. 6.2 Webmail Det går att hantera sin cs-mail via en vanlib webläsare genom att ligga in via webmail.cs.umu.se. 6.3 Pine För att kunna ta emot och skriva elektroniska brev via datavetenskaps system kan du starta ett mailprogram som heter Pine genom att skriva pine i terminalfönstret. Om det dyker upp några frågor, svara y (yes) på dessa. Notera de kommandon som finns uppradade längst ned i rutan. De kommandon du kan skriva just där du befinner dig finns alltid längst ned på skärmen. Ibland ryms inte alla kommandon då kan du trycka O för att se de andra kommandona som finns att välja på. Ett kommando som börjar med ˆ betyder att du ska trycka ned Ctrl-tangenten och bokstaven som anges samtidigt. Överallt i Pine kan du välja Help (?) och då får du hjälp om just den skärmbild du har framför sig med tips om hur du ska arbeta. 6.3.1 C (Compose) för att skicka ett brev. Fråga en bordsgranne vad hon/han har för användarnamn (har du ingen granne, använd ditt eget) och skriv in det på raden To:. Om du vill skicka samma brev till flera personer kan du rada upp deras användarnamn, separerade med komma. Tryck return eller nedåtpil för att komma till nästa rad. Ett annat sätt att skicka samma brev till flera personer är att skriva användarnamnen som kopiorna ska gå till på raden Cc:. 2
Raden Attchmnt: används till för att skicka med filer i ditt brev. Du kan du strunta i tills vidare. Är du nyfiken på hur den fungerar mer i detalj kan du använda den inbyggda hjälpen. Beskriv med några få ord om vad ditt brev handlar om på raden Subject:, t.ex. test eller hej. Skriv ditt meddelande. När du är klar tryck Ctrl-X för att skicka iväg ditt brev. Du får då en fråga om du verkligen vill skicka ditt brev. Svara Y på den. 6.3.2 Läsa elektroniska brev (e-mail) Vänta tills du får ett brev. Tar det lång tid, skicka ett till dig själv. (För att veta om du har mail att läsa titta i Pines övre högra hörn. Där står Folder: INBOX XX Messages där XX står för antalet brev som du fått. När du fått brev tryck L för att få en lista över dina foldrar där breven lagras. När du startar Pine för första gången har du bara en folder INBOX, du kan skapa egna själv - titta i hjälpen för att ta reda på hur. Se till att foldern INBOX är markerad. Tryck return för att få en lista över dina brev. Flytta markeringen med hjälp av piltangenterna till det brev du vill läsa och tryck sedan return. (Kom ihåg alla kommandon finns uppradade längst ned på skärmen.) 6.3.3 Svara på ett brev Placera markören på det brev du vill svara på. Tryck R(Reply) och följ instruktionerna. Då kan du få frågan Reply to all recipients? om du svarar ja på den går svaret på ditt brev inte bara till den som skrev brevet utan också till alla andra som också fått brevet. Svarar du nej går brevet bara till avsändaren. Pine fyller automatiskt i raden To: och raden Subject: Du kan naturligtvis ändra det om du skulle vilja. En kopia av brevet som du svarar på finns redan inskriven i filen. Skriv ditt svar och sänd iväg det. Avsluta Pine genom att trycka Q. Vid eventuell fråga svara y (yes). 6.3.4 Vanliga kommandon i Pine i inbox m meny mellanslag du hamnar längst ner på sidan. q avsluta 3
7 Läs och skrivrättigheter Under tiden du arbetar med en laboration bör filerna bara kunna ses, ändras och köras av dig själv. När du har lämnat in en uppgift däremot måste du öppna upp så att handledaren kommer åt att läsa filerna. Att ändra läs- och skrivrättigheter sköts med hjälp av chmod-kommandot: chmod [-R] mode <katalog/fil> Det ändrar rättigheter på <katalog/fil> till de rättigheterna som anges i mode. Rättigheterna visas (via ls -l som beskrivs nedan) som tre grupper med rwx där r står för läsrättighet, w för skrivrättighet och x för rättigheten att exekvera filen. Första gruppen rwx anger rättigheterna för ägaren av filen. Andra gruppen rwx anger vilka rättigheter för andra personer i samma persongrupp som ägaren (i vårt fall är det studenterna i din årskull). Tredje gruppen anger rättigheterna för resten av användarna på systemet (andra studenter och lärarna på Institutionen för datavetenskap). Rättgheterna kan sättas med bokstavskombinationer. Bokstaven u står för User, g för Group och o för Other. Rättighetssymbolerna (rwx) är de samma som ovan, och tilldelningsoperatorerna är + (för att lägga till), - (för att ta bort) och = (för att sätta) rättigheter. För att sätta rättigheterna på fil.c till rw-r-----, skriv kort och gott chmod u=rw,g=r,o= fil.c. Vill du sedan låta alla läsa filen kan du bara lägga till rättigheter: chmod o+r fil.c Bra rättigheter att är t.ex; rwx---r-x, dvs bara ägaren får läsa, skriva och exekvera. Resten av användarna (lärarna) får bara läsa och exekvera. Din egen årskull får inte göra någonting. rwx------, dvs bara ägaren får läsa, skriva och exekvera. Ingen annan får läsa, skriva eller exekvera (inte ens lärarna). För att man ska kunna se vilka filer som finns i en katalog så måste man åtminstånde ha läs och exekveringsrättigheter för katalogen. Om man anger -R (det är valfritt) ändras rättigheterna rekursivt i alla filer och kataloger som ligger under den katalogen som anges. 8 Starta ConTEXT Editorn ni ska använda heter ConTEXT och startas från startmenyn. start >All Programs >Editors >ConTEXT. Här ska er c kod skrivas. Snabbkommandon i ConTEXT är samma som det brukar vara i Windows editorer, så förhoppningsvis är de flesta vana vid dessa. Det finns flera inställningar i ConTEXT som man kan mixtra med. Det man bör göra direkt är att gå in på menyn Options >Environment Options, byt Backup directory till någonstans i er egen hemkatalog, eller välj bort att editorn ska skapa en backup-fil när en fil sparas. Detta är för att undvika att ett felmeddelande dyker upp varje gång man sparar. Välj nu fliken Editor (samma meny som ovan). Här kan man välja att editorn ska visa radnummer. Eftersom kompilatorn anger på vilken rad ett fel påträffats underlättar detta felsökning. Det finns mycket att utforska här, tex kan man ändra vilka färger texten ska visas i under fliken Colors, detta kan vara intressant senare när ni börjat skriva c-kod. 4
9 Kompilera och köra program Skapa en ny fil i ConTEXT. Skriv in första kod-exemplet (2.1) från laboration 1 (finns på kurshemsidan). Spara filen i intro katalogen. Fil-ändelsen måste vara.c Det är från ett Putty-fönster som du ska kompilera dina program. Starta Putty om du inte redan gjort det (se avsnittet logga in). För att byta katalog i terminalfönstret använder du kommandot cd (change directory). Skriv cd edu och tryck enter. Nu har du bytt katalog till den nya edu katalogen. Fortsätt tills du står i /edu/progmetodik/intro. Kompilatorn du ska använda heter gcc. Skriv gcc filnamn.c och tryck enter. Om inget felmeddelande dök upp så ska det nu finnas en fil i din intro katalog som heter a.out. Det är det körbara programmet. Starta programmet genom att skriva./a.out(./ anger nuvarande katalog) och tryck enter. Skulle kompilatorn gett något eller några felmeddelanden så står det vilken rad det blev fel på och vad felet är. Det är inte alltid lätt att begripa vad kompilatorn menar med sina felmeddelanden, men man lär sig känna igen vad de verkligen betyder efter ett tag. Putty avslutas med kommandot exit eller logout. 10 Några viktiga UNIX kommandon Följande kommandon kan du köra i ett Putty-fönster. ls -al <katalog> Listar alla filer i katalogen <katalog> tillsammans med olika uppgifter (t.ex. aktuella rättigheter). Om man bara skriver -l istället för -al visas inte systemfilerna (sådana som börjar med en punkt). Utan argument listas alla filer i aktuell katalog. cd <katalog> change directory (cd) byter katalog till den angivna. cd.. går uppåt ett steg i strukturen och cd utan angivelse av katalog gör att man kommer till roten av sin hemkatalog. mkdir <katalog> Skapar en katalog med namnet <katalog> rmdir <katalog> Tar bort en katalog med namnet <katalog> rm <fil> Tar bort filen <fil>. man <kommando> Visar manualsidorna till kommandot <kommando>. Vill man veta lite mer kan man tex titta på http://www.cs.umu.se/kurser/tdbb40/ht05/intro/ där finns ett annat introduktionsmaterial och mest relevant är kanske länken Unixintroduktion för nya studenter. 5
11 UNIX tips Om programmet du skrivit inte avslutar av sig själv så tryck Ctrl-C så avslutas det. För att det ska gå fortare att skriva kommandon och fil /katalognamn i UNIX så kan man använda sig av tab-completion. Skriv början av ett filnamn och tryck tab så fylls resten av namnet i så länge som det inte kan vara tvetydigt med något annat. Om du vill upprepa ett komando som du kört tidigare så kommer du åt det genom att trycka på uppåtpil-tangenten. För att skriva ut koden snyggt så kan du använda kommandot atp eller a2ps. För att skriva ut i MA316/326: atp filnamn.c lpr -P ma316ps eller a2ps -T2 -Pma316ps filnamn.c Använd kommandot pquota för att se hur många sidor du får skriva ut. För att använda matematiska funktioner, t. ex. sqrt och ceil så måste du inkludera math.c i din c-fil och sedan kompilera med flaggan -lm: gcc -lm fil.c Annars så får du ett felmeddelande. Ibland uppstår kompileringsfel som följdfel av tidigare. Får du flera felmeddelanden från kompilatorn så fixa det första och testa sedan att kompilera om. 12 Vanliga felmeddelanden från kompilatorn Detta fel beror på att ett semikolon saknas på raden ovanför rad 5. Det skulle även kunna vara en parentes eller krull-parentes som saknas. testfil.c: In function main : testfil.c:5: parse error before } Här saknas det ett citations-tecken runt en sträng på rad 3. testfil.c:3: unterminated string or character constant testfil.c:3: possible real start of unterminated constant Det här meddelandet beror på ett stavfel. För utskrifter på skärmen används c- kommandot printf, men i det här exemplet är det stavat med stort P, vilket gör att kompilatorn inte känner igen kommandot. Notera att det i felmeddelandet står vilket ord som var fel. Undefined first referenced symbol in file Printf /var/tmp/ccxgsomk.o ld: fatal: Symbol referencing errors. No output written to a.out collect2: ld returned 1 exit status 6
Det här felmeddelandet får man om man inte har någon main-funktion i sitt program. Undefined first referenced symbol in file main /pkg/gcc/2.95.2/lib/gcc-lib/sparc-sun-solaris2.8/2.95.2/crt1.o ld: fatal: Symbol referencing errors. No output written to a.out collect2: ld returned 1 exit status Det här beror på en felanvändning av datatyper. I det här exemplet så försöker programmet tilldela en integer värdet av en char-pekare på rad 8. testfil.c: In function main : testfil.c:8: warning: assignment makes pointer from integer without a cast Fel vid programkörning: Dessa fel dyker upp när progam föröker komma åt saker som inte finns. Här försöker programmet läsa in en char med hjälp av scanf, men ett &-tecken är glömt: scanf( %c, c);, borde stått scanf( %c, &c); >./a.out f <--inmatat av användaren Segmentation fault (core dumped) Programmet ha fastnat i en evig loop och måste avslutas med Ctrl-C. Detta uppstår när stoppvilkoret för en loop aldrig uppfylls. Om det verkar som om ett program bara stannat (kommandoprompten kommer inte tillbaka) så kan det bero på att programmet väntar på att användaren ska skriva in något. Testa då att skriva något och tryck enter, annars avsluta med Ctrl-C. lfelfelfelfelfelfelfelfelfelfelfelfelfelfelfelfelfelfelfelfel felfelfelfelfelfelfelfelfelfelfelfelfelfelfelfelfelfelfelfelf elfelfelfelfelfelfelfelfelfelfelfelfelfelfelfelfelfelfelfelfe lfelfelfelfelfelfelfelfelfelfelfelfelfelfelfelfelfelfelfelfel felfelfelfelfelfelfelfelfelfelfelfelfelfelfelfelfelfelfelfelf elfelfelfelfelfelfelfelfelfelfelfelfelfelfelfelfelfelfelfelfe lfelfelfelfelfelfelfelfelfelfelfelfelfelfelfelfelfelfelfelfel felfelfelfelfelfelfelfelfelfelfelfelfelfelfelfelfelfelfel^c > 13 Logga ut Logga ut från datorn från startmenyn start >Log Off. Obs, stäng inte av datorerna. 7