Guido van Robot och olika UNIX-kommandon

Relevanta dokument
kommando -fl argument

Lab 7, 48 steg till ett bättre liv i Unix-labbet

Övningar för del I av kursen

Övningar till UNIX/Linux Grundkurs och förslag till LÖSNING

Instruktioner för att kunna programmera på skolans datorer

HF1010, Introduktionskurs i datateknik, 1.5 hp, hösten Föreläsning 1

Möte 7: Uppföljning av föreläsningen med Peer Instruction - (PI)

Introduktion till programmering, hösten 2011

Konsolfönster i Windows Momentet ingår i kursen PDA DTR1206 Lab 1 DOS Konsolfönstret

HF1010, Introduktionskurs i datateknik, 1.5 hp, hösten Föreläsning 2

Övningar till UNIX/Linux Grundkurs och förslag till LÖSNING

Datorer och datoranvändning Föreläsningar 2014/15. Föreläsning 1 Unix. Operativsystem. Unix

SF1672, Linjär Algebra med Matlab för F1 Lab0

DN1212, Numeriska metoder & grundläggande programmering. Laboration 1 del 1-3 (frivilliga delar) Del 1-3 (dvs upg ) behöver inte redovisas

Övning Installation av Gentoo och/eller Arch Linux

Introduktion till processer

Instruktion för laboration 1

SF1546, Numeriska Metoder för O1 Lab0 - frivillig. (dvs uppgifterna behöver inte redovisas!)

Datorintroduktion 2009 Föreläsning 1. Dieter Larsen (IT-chef Matematiska vetenskaper)

Textbearbetning i skalet och man-sidor

OBS! Snabbinsatt Matlab-intro vissa fönsterhanteringsdetaljer kan vara fel men gör gärna Matlab-uppgifterna. DN1240, Numeriska metoder för OPEN1.

1.#Bakgrund# En#kort#introduk+on#+ll#Unix# Klassiskt#första#bemötande# Håkan#Jonsson# Ins+tu+onen#för#systemteknik# Luleå#tekniska#universitet#

Föreläsning 1 Unix. Datorer och datoranvändning Föreläsningar 2018/19. Operativsystem. Unix

DN1240, Numeriska metoder. Laboration 0 (frivilliga delar) (dvs uppgifterna behöver inte redovisas) Introduktion till UNIX och MATLAB

TDDC74 Lab 04 Muterbara strukturer, omgivningar

SF1520, Numeriska Metoder och Grundläggande Programmering för K2 Lab1.

Laboration: Grunderna i MATLAB

Omkoppling av in- och utmatning. In- och utmatning i Unix. Kommando exempel, ls, pipe forts. Kommando exempel, ls, pipe

Kort-kort om utdelade användarkonton och datormiljön på NADA

Instruktion för laboration 1

SF1520, Numeriska Metoder och Grundläggande Programmering för K2 Lab1.

Lathund för Linuxkommandon

729G04 Programmering och diskret matematik TEN kl 8-12

Datorintroduktion 2010 Föreläsning 1. Dieter Modig

Introduktion till programmering D0009E. Föreläsning 1: Programmets väg

Möte 9: Relationer mellan körande processer - (PI)

Uppgifter teknik HT17 (uppdaterad v. 40)

Användarhandledning Version 1.2

UNIX. 2D1339 Programkonstruktion Hösten 2001 Datorintroduktion Laboration 1. Mål. Vad laborationen går ut på. Redovisning

Tentaupplägg denna gång

Objektorienterad programmering i Java I. Uppgifter: 2 Beräknad tid: 5-8 timmar (OBS! Endast ett labbtillfälle) Att läsa: kapitel 5 6

Planering av ett större program, del 2 - for och listor. Linda Mannila

Program. Kapitel make Program Interpreterande och kompilerande program

Tentamen i. Programmering i språket C

Olika shell. Skalprogrammering. Pipor och omdirigering av strömmar

Arduinokurs. Kurstillfälle 4

Tentamen *:58/ID100V Programmering i C Exempel 3

MMA132: Laboration 2 Matriser i MATLAB

Obs! Inget ur Javas standardbibliotek får användas i ett svar (om det inte står att man får det).

Lär dig programmera! Prova på programmering med enkla exempel! Björn Regnell

Bilaga B Specifik programinformation

Subversion. Laboration. Höstterminen 2008 r81. Ronny Kuylenstierna

Filers innehåll. Grundläggande databehandling. Representation av text. pffb = påhittat filformat för bilder

Tips och tricks. Några bra tips. Lägg till sökvägar

komplex av nödvändiga, understödjande program som kallas Utanpå OS existerar ett - eller flera olika - slags skal som

Grundläggande datalogi - Övning 1

Datorsystem och programmering

Kort-kort om utdelade användarkonton och datormiljön på NADA

Systemutvecklare SU13, Malmö

Bygg din egen verktygslåda till PC-DMIS. Workshop, PC-DMIS dagar 2015

BASH. Bourne-Again SHell. Eric Elfving Institutionen för datavetenskap (IDA)

PROGRAMMERING ÅK 9 INTRODUKTION

Programmering i C++ Kompilering från kommandoraden

Python. Python är, som Scheme, ett interpreterat språk men det finns kompilatorer för Python.

Python. Python är, som Scheme, ett interpreterat språk men det finns kompilatorer för Python.

Tentamen ID1004 Objektorienterad programmering October 29, 2013

kl Tentaupplägg

Installera Anaconda Python

Tekniska Högskolan i Linköping Institutionen för Datavetenskap (IDA) Torbjörn Jonsson Plot och rekursion

Föreläsning 3. Programmering, C och programmeringsmiljö

Praktiska saker... Om Laboration 1. Studietips. Praktiska saker. Att studera hemifrån på PC. Seminarier & Lektioner & Handledning & Hemsida

kl Tentaupplägg

Operativsystem ID1200/06 Tentamen :00-18:00

Bakgrund. Bakgrund. Bakgrund. Håkan Jonsson Institutionen för systemteknik Luleå tekniska universitet Luleå, Sverige

Operativsystem och användargränssnitt

STOCKHOLMS UNIVERSITET VT 2011 Avd. Matematisk statistik GB DATORLABORATION 1: TIDSSERIER.

JavaScript del 3 If, Operatorer och Confirm

Programmeringsteknik med C och Matlab

Försättsblad till skriftlig tentamen vid Linköpings Universitet

Datorintro för elektro på Solaris

Försättsblad till skriftlig tentamen vid Linköpings Universitet

C++ Funktioner 1. int summa( int a, int b) //funktionshuvud { return a+b; //funktionskropp } Värmdö Gymnasium Programmering B ++ Datainstitutionen

kl Tentaupplägg

TDDC74 Programmering: Abstraktion och modellering Datordugga 2 - exempel

Föreläsning 3. Programmering, C och programmeringsmiljö

kl Tentaupplägg

GitHub for Windows och GitShell

Programmering I Tobias Wrigstad fredag, 2009 augusti 28

Malmö högskola 2007/2008 Teknik och samhälle

729G04 Programmering och diskret matematik. Python 2: Villkorssatser, sanningsvärden och logiska operatorer

Lab1 inginfo07. Detta dokument innehåller övningar för introduktion till Media-programmets datorsystem (Mac OS X).

En kort text om programmering i C.

KPP053, HT2016 MATLAB, Föreläsning 1. Introduktion till MATLAB Skript Inläsning och utskrift av variabler Ekvationssystem Anonyma funktioner

Kopiering av objekt i Java

Dagens program. Programmeringsteknik och Matlab. Administrativt. Viktiga datum. Kort introduktion till matlab. Övningsgrupp 2 (Sal Q22/E32)

Lathund för UNIX och Emacs

Möte 10: Kommunikation mellan processer - (PI)

729G04 Programmering och diskret matematik TEN kl 8-12

Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp

Tips: Titta på relevanta genomgångar på webbplatsen

Transkript:

Guido van Robot och olika UNIX-kommandon Till denna session är det tänkt att ni ska ha arbetat en del med både UNIX-kommandon och börjat med Guido van Robot. Vi ska nu studera dessa båda saker med hjälp av Peer Instruction, en alternativ undervisningsform där vi arbetar med nyckelfrågeställningar som illustrerar viktiga begrepp och testar att man förstår dessa begrepp. Begreppet föreläsning är egentligen ett förlegat arv från medeltiden då man inte kunde trycka böcker, då fanns inte så många böcker och av ekonomiska skäl var man tvungen att ha en person som läste för de andra, det lästes för, därav namnet föreläsning. På engelska heter det lecture som bara betyder läsning. Idag har vi alla varsinn bok och vi ska därför inse detta och börja arbeta med en annan undervisningsform som utnyttjar att ni har eget studiematerial. Vi förutsätter idag alltså att ni har arbetat med materialet innan och ägnar denna dag åt frågor i en speciell form som kallas Conceptests begreppstester. Vi börjar med Guido van Robot. Begreppstest 1. Givet följande utgångsläge: Vad blir resultatet då Guido har kört alla sina instruktioner? A. Guido står tittandes österut, med alla pipare och inga pipare är kvar. B. Guido står i tittandes västerut, med alla pipare och inga pipare är kvar. C. Guido står i samma ställning som nu (tittandes norrut), med 12 pipare och kvar är 10 pipare. D. Guido står i samma ställning som nu (tittandes norrut), med alla pipare och inga pipare är kvar. johnnyp@kth.se 1(5)

Begreppstest 2. Givet följande utgångsläge: (Guido har 100 pipare från början.) Koden till Guido ser till att Guido går runt i hela den kvadratiska strukturen och placerar pipare ända tills han stöter på en pipare som han tidigare lagt ned, hela gången fylls alltså med 16 pipare. Vi intresserar oss nu för olika varianter av ovanstående program. Frågan är vilka av följande tre varianter som fungerar på precis samma sätt som programmet ovan: A B C define _maybe_turn: _maybe_turn define _maybe_turn: _maybe_turn A. Alla alternativ fungerar precis som det givna programmet. B. Alternativen A & B fungerar som det givna programmet, men inte C. C. Alternativen A & C fungerar som det givna programmet, men inte B. D. Alternativen B & C fungerar som det givna programmet, men inte A. define maybe_turn: _maybe_turn johnnyp@kth.se 2(5)

Begreppstest 3. Guido rör sig i en värld som består av en jättestor rektangel enligt bilden nedan: På kanten av rektangeln finns utstående delar, på undre kanten av stora rektangeln har vi tre utstående delar och på rektangelns kortsidor har vi varsinn utstående del, på rektangelns övre långsida ser vi två stycken. Iden med programmet är att Guido ska kunna gå runt den stora rektangeln och komma tillbaka till utgångspunkten, vi åstadkommer det genom att först släppa en pipare på rad 26 och sedan gå in i en loop på rad 27 som blir oändlig. Vi följer sedan vänsterväggen tills den tar slut och när vänsterväggen tar slut gör vi en vänstersväng och tar oss på så sätt runt alltihopa. Under det att vi följer väggen gör vi hela tiden _and_check som kollar om vi kommit fram till en utstående del, när en sådan nås så anropas _around som går runt och sedan körs detta om och om igen tills vi kommit tillbaka till piparen. Hela tiden kollar vi om vi kommit tillbaka till piparen genom att vi aldrig anropar direkt, vi anropar alltid tillsammans med en koll på om vi kommit tillbaka till piparen. (I _and_check.) Nu är frågan, i _and_check, på rad 21 står det while front_is_blocked. Skulle det inte lika gärna kunna stå if front_is_blocked? A. Jo. Det skulle gå lika bra med if. B. Nej. Vi måste ha while. (Det är inte så viktigt att ha rätt alternativ här, det viktiga är att vi resonerar kring hur man programmerar och hur man förstår ett program.) johnnyp@kth.se 3(5)

Vi tar nu ett par begreppstester på UNIX-kommandon. Begreppstest 4. Vi antar att vi gör följande kommandon vid en UNIX-prompt: total 12 -rw-r--r-- 1 johnny johnny 6 May 16 11:25 fil1 -rw-r--r-- 1 johnny johnny 7 May 16 11:25 fil2 -rw-r--r-- 1 johnny johnny 8 May 16 11:25 fil3 $ mkdir dir1 dir2 $ mv fil1 dir1 $ mv -t dir2 fil2 fil3 $ mv dir1 fil1 $ mv dir2 fil2 När vi nu gör ls -l, efter alla kommandon, vad ser vi då för resultat? Här är ett utdrag ur manualsidan för mv: NAME mv - (rename) files SYNOPSIS mv [OPTION]... [-T] SOURCE DEST mv [OPTION]... SOURCE... DIRECTORY mv [OPTION]... -t DIRECTORY SOURCE... DESCRIPTION Rename SOURCE to DEST, or SOURCE(s) to DIRECTORY. Mandatory arguments to long options are mandatory for short options too. --backup[=control] make a backup of each existing destination file -t, --target-directory=directory all SOURCE arguments into DIRECTORY A. Vi ser två filer. B. Vi ser två kataloger. C. Vi ser återigen de filer som fanns i arbetskatalogen från början (fil1, fil2 och fil3). D. Ingetdera av alternativen A-C är korrekta. johnnyp@kth.se 4(5)

Begreppstest 5. Vi antar att vi kör virtuellt med katalogen /media/sf_me som delad katalog. Vi antar att vi gör följande kommandon vid en UNIX-prompt: $ pwd /home/me/test total 12 -rw-r--r-- 1 me me 6 May 16 11:25 fil1 -rw-r--r-- 1 me me 7 May 16 11:25 fil2 -rw-r--r-- 1 me me 8 May 16 11:25 fil3 $ mv fil1 /media/sf_me $ cp fil2 /media/sf_me $ cp fil3 /media/sf_me $ rm fil3 Här är då alltså en katalog i värdsystemet monterad på /media/sf_me via VirtualBox Guest Additions. Vilket påstående är sant? A. Alla filer, fil1, fil2 och fil3 finns i separata kopior både i värdsystemet och den virtuella maskinen, om vi till exempel redigerar i fil1 på värdsystemet så avspeglas förändringarna i den kopia som finns i den virtuella maskinen i /home/me/test. B. Filen fil2 finns i två separata kopior eftersom vi gjorde en cp på den, om vi ändrar i /home/me/test/fil2 så avspeglas inte dessa förändringar i /media/sf_me/fil2 eftersom det är två separata filer. C. De två sista kommandona som utfördes, $ cp fil3 /media/sf_me $ rm fil3 har inte samma effekt på fil3 som kommandot mv fil1 /media/sf_me har på fil1, filen fil3 får nämligen ett nytt namn vid kopiering från /home/me/test till /media/sf_me, om man använder mv byts inte namnet på filen, den bara flyttas. D. Ingetdera av alternativen A-C är sanna. johnnyp@kth.se 5(5)