Kommando och generell funktion för att anropa sorteringsalgoritmer samt Subversion versionshantering.
|
|
- Pernilla Olofsson
- för 7 år sedan
- Visningar:
Transkript
1 Inbyggda System utbildning: projektarbete Kommando och generell funktion för att anropa sorteringsalgoritmer samt Subversion versionshantering. Introduktion Målet för projektet var att göra ett program för sortering som har grundrutiner som kan sortera både strukturer av rådata och strukturer med pekare till rådata, se projektbeskrivning. Programmet skall kunna anropas via ett kommandoanrop i Windows command prompt eller i Linux (Fedora 17). I princip skulle detta programpaket kunna användas för att integrera vilken sorteringsrutin som helst som bara kräver att man specificerar en funktion som avgör om data objekt är större, mindre eller lika med varandra. Det skulle exvis kunna användas för att jämföra exekveringshastigheter Jag har implementerat ett kommandogränssnitt för sortering samt en subrutin som kan användas för att sortera olika typer av heltal / integers i C och C strängar av characters(strängarna är uppbyggda med C typen char). I princip skall vilken sorteringsrutin som helst kunna anslutas till mitt programpaket, se mer nedan. Som en del av detta har jag även installerat en subversion server för versionshantering under Cygwin, på en av kursens tillhandahållna Windows 7 Professional försedda PC. Cygwin är en gratis programvara för Unix/Linux-emulering under Windows från Redhat som står bakom Linux distributionerna Fedora och Redhat. I Cygwin ingår en Linux-version av Subversion servern från "Apache Software Foundation" (som gör bl.a. den fria webservern Apache, de fria "Big Data"-verktygen Hadoops och Hive m.m.) Jag har använt Subversion's cygwin-klient respektive TortoiseSVN's Windows klient för versionshanteringen. Den senare är integrerad i själva utforskaren som ett shell extension.jag har dessutom valt att använda cygwin's ssh server för att kunna tunnla via ssh till subversion servern under Cygwin/Windows, även om det i första hand använts för att tunnla in till Cygwin's subversion-server direkt på den lokala hosten (men även från min Linux-dator hemma i mitt lokala nätverk). Problembeskrivning Jag har gjort detta med subrutiner preprocessor-definitioner som i princip gör det möjligt att anropa vilken som helst sorteringsrutin med listor/arrayer av olika integer-datatyper eller listor av strängar. Listorna skall kunna finnas dels sammanhängande i minnet som är vanligast 1-
2 Inbyggda System utbildning: projektarbete för vanliga heltal/andra korta datatyper, och dels kunna vara av typen listor/arrayer av C strängar, implementerade som listor/arrayer av pekare till strängar. Jag har implementerat en kommandomottagning för Windows kommandoprompt respektive Linux/Unix terminalen och en subrutin och ett antal preprocessor macros för att åstadkomma detta. Jag har också sett till att ha modern versionshantering för mina filer med Subversion för versionshanteringen, i Linux, Windows 7 och i Windows 7, men med Linux/Unix emulerat av Cygwin. Teori Sorteringsrutiner som bubble-sort och qsort kan i princip sortera vad som helst, man behöver bara specificera en relation som anger hur man avgör om ett objekt av en datatyp är större än, mindre än eller lika stor som ett annat objekt av samma datatyp. Jag har begränsat mig till dessa två sorteringsrutiner eftersom huvuduppgiften för projektet är att göra en generell driver för godtyckliga sorteringsrutinter för godtyckliga C typer (av normal längd, d.v.s. vad som var standard i den första ansi C versionen). För C's egna datatyper är det inbyggt i C kompilatorn hur man gör en jämförelse med hjälp av >, < och = operatorerna, detta kan användas för dessa typer. För C strängar i ANSI-kod använder man traditionellt sett strcmp rutinen för att avgöra detta, men det går att generalisera den strängjämförelse-funktionen till alla typer av data som beskrivs av noll-terminerade arrayer av godtycklig längd (en bra källa för koden till strcmp() är f.ö. Kernigan & Ritchie s ANSI-C bok). Listor/arrayer av C-strängar innehåller normalt sett bara pekarna till noll-terminerade arrayer av characters i ANSI-kod, jag har valt generalisera detta till alla typer av data på detta format. 2-
3 Inbyggda System utbildning: projektarbete KOMMANDO Kommandot för att sortera integers ser ut enligt nedan: iterate_over_word_list_int_cont [-csrgq] [file...] [file...] där alternativen -csrgq motsvarar -c CSV format, komma separerat format -s Sortera lista -r Sortera i omvänd ordning (reverse order) -g Gruppera i jämna och udda listor, konkatenera sedan ihop listorna (eventuellt efter sortering) -q Sortera med quicksort (annars i dag med bubble-sort) Argumenten på slutet, fil att läsa från och fil att skriva till är icke-obligatoriska, det första hittade argumentet antas vara in-filen och det andra argumentet utfilen. Om ingen in-fil eller ut-fil finns/finns angiven läser/skriver man istället från vanliga kommandoprompten i Windows/kommandoraden i terminalen i Linux/Unix. Uppbyggnad av programmet. Programmet består av dessa filer: iterate_over_word_list_int_cont.c sorteringskommando, anropar my_sort_int_cont.c iterate_over_word_list_int_cont.h - deklarationer av gränssnitt mot my_sort_int_cont.c my_sort_int_cont.c - subrutiner för hantering av listor och sortering comp_anything_scalar.h - COMP macro skalära C typer comp_anything_vector.h h - COMP macro nollterminerade vektorer av C typer handle_integer_lists.h - macron för listor av alla integer typer read_write_int_list_cont.h - gränssnitt mot read_write_int_list_cont.c read_write_int_list_cont.c - in- och utmatning av integer data 3-
4 Inbyggda System utbildning: projektarbete Klient och server för versionshantering. För att kunna ha en modern miljö för versionshantering och bakkopior har jag använt den fria programvaran subversion, jag har satt upp en Subversion server under Linux/Unixemuleringen cygwin som jag sedan anropar via en ssh-tunnel mot min egen maskin, localhost. Som klient har jag både använt Cygwin s Subversion-klient och TortoiseSVN s Subversion klient. Material HW och SW som använts Programvara som kör på PC med Windows 7 Professional 64-bitars version CodeBlocks GUI/IDE för debuggning programvaruutveckling i C mingw32-gcc kompilator Tortoise SVN Subversion klient (ett GUI), ett shell-tillägg som är integrerat i utforskaren. Programvara som går under Unix/Linux emulering på Windows m.hj.a. Cygwin, 64- bitars version ssh server ssh klient subversion server subversion klient mingw32-gcc kompilator GDB debugger Emacs och dess Lisp moder Compile mode för att kompilera och parsa kompileringsfel Gud-moden för att debugga m.hj.a gdb debuggern 4-
5 Inbyggda System utbildning: projektarbete vc-mode utbyggd för subversion för versions-hantering Linux maskin med Fedora 17's x86-version CodeBlocks GUI/IDE för debuggning programvaruutveckling i C gcc kompilator GDB debugger ssh klient. svn klient emacs Compile mode för att kompilera och parsa kompileringsfel Gud-moden för att debugga m.hj.a gdb debuggern vc-mode utbyggd för subversion för versionshanteringen Metod Jag har implementerat ett generellt kommando-gränssnitt för att anropa sorteringsrutinerna från Windows kommando prompt eller terminal i unix/linux. I princip skall det kommandot klara av att anropa en generell sorteringsrutin (se nästa stycke) för både noll-terminerade strängar och andra datatyper, men just nu har denna rutin enbart implementerats för vanliga heltal med tecken, signed int. (För teständamål har jag också gjort en version som hanterar korta heltal med tecken, signed short.) Denna del av programvaran hanterar även inläsning och utskrift av ursprungliga listorna och de sorterade listorna. Jag har implementerat en subrutin och preprocessor-makro definitioner för den funktion som anger hur man bestämmer om ett data-objekt är större än ett annat. De två preprocessor-makron som används för att generera "comp"-funktionerna för olika datatyper och list-typer är mycket generella och klarar av att definiera dels vanliga 5-
6 listor/arrayer och dels listor/arrayer av pekare till dataobjekt och sortera dem, se nedan och koden. För närvarande har bara alla normallånga typer av data och C strängar av char / ANSI-tecken implementerats som en del av själva funktionerna för sortering, även om preprocessormakrona finns att göra detta för alla de normal-långa standardtyperna i C. MJUKVARA I C FÖR SORTERING Skrivit ett kommando för att sortera integer data, C-typen int. Testat att göra om detta kommando för att sortera data av C-typen short int. Skrivit ett separat program för att testa sortering av strängar. Alla programmen anropar min generella subrutin för sortering. Sorteringsrutinen utför sortering listor/arrayer av pekare till strängar och vanliga listor/arrayer av de olika normallånga typerna av integers i C. -6-
7 SUBRUTIN ANROPAD FRÅN KOMMANDO-DEL Jag har definierat en generell subrutin för sortering av godtyckliga typer av data inklusive typerna ovan (om den anropas med ej implementerade typer av data listor/arrayer så leder det till programfel med en felutskrift via ett assert-anrop). Subrutinen void Create_sorted_list_of_anything(...) deklarerad/definierad i filerna iterate_over_word_list_int_cont.h/my_sort_int_cont.c har definierats att kunna sortera olika typer av datalistor, och ser ut enligt nedan, utdrag ur header-fil: // Parameters: // char *signedness - pointer to string "signed" or "unsigned" to indicate sign of used data type, // the first part of the data type name for the objects sorted // char *type - pointer to string containing the second part of the name of the used data type // of the objects sorted // bool bool_vector_list - boolean that has logical value true if array/list contains pointers to the data objects // sorted // bool bool_vector_list - boolean that has logical value true if array/list contains pointers to the data objects // sorted // bool reverse - boolean that has logical value true if the array/list is to be sorted in the reverse order // bool qsort_bool - boolean that has logical value true if the array/list is to be sorted using qsort method(default when // false is sorting using bubble-sort method) void Create_sorted_list_of_anything(void **sorted_primary_list_ptr, int count, bool reverse, bool qsort_bool, void *primary_list_ptr, const char *signed_ness, const char *type, bool bool_vector_list ); -7-
8 MACROS FÖR "COMP" : Macro i filen comp_anything_scalar.h // Macro defining function for comparing // anything scalar (that is a data object itself, // not a pointer to a data object), where type of scalar // is defined by inputs to macro as // SIGNEDNESS A_TYPE #define COMP_ANYTHING_W_DIRECTION(SIGNEDNESS,A_TYPE) signed int comp_##signedness##_##a_type##_w_direction (const void * elem1, const void * elem2 ) { signed int reverse_sign = 1; signed int result = -2; if( comp_direction_reverse ) { reverse_sign = -1; } const SIGNEDNESS A_TYPE *f = ((const SIGNEDNESS A_TYPE *)elem1); const SIGNEDNESS A_TYPE *s= ((const SIGNEDNESS A_TYPE *)elem2); if( *f > *s ) { result = 1; } else if( *f == *s ) { result = 0; } else { result = -1; } return ( reverse_sign * result ); } -8-
9 Macro i filen comp_anything_vector.h // Macro defining function for comparing // anything vector (that is a pointer to the data object itself, // not the data object, part of a zero-terminated vector list/array), // where type of scalar is defined by inputs to macro as // // SIGNEDNESS A_TYPE // // Most usual case of this is an ordinary string #define COMP_ANYTHING_VECTOR_W_DIRECTION(SIGNEDNESS,A_TYPE) signed int comp_##signedness##_##a_type##_vector_w_direction (const void * elem1, const void * elem2 ) { signed int reverse_sign = 1; signed int result = -2; if( comp_direction_reverse ) { reverse_sign = -1; } const SIGNEDNESS A_TYPE *f = *((const SIGNEDNESS A_TYPE **)elem1); const SIGNEDNESS A_TYPE *s= *((const SIGNEDNESS A_TYPE **)elem2); while( *f && *s && ( *f == *s ) ) { f++; s++; / } if( *f == *s ) { result = 0; } else if( *f > *s ) { result = 1; } else { result = -1; } return ( reverse_sign * result ); } -9-
10 INST. AV IDE/GUI (UTOM C::B) OCH SVN. VERSIONSHANTERING INST. AV CYGWIN MED EMACS GUI, GCC, SVN&SSH KLIENT&SERVER Hämta cygwin från exempelvis och installera (det är klokt att göra det i 2 steg, ladda ner först, och installera från lokal kopia sedan, så du kan flytta installationen mellan PC) Installera emacs, gcc, gdb, allt i svn och ssh (det går att söka fram paketen i installationsverktyget) INST. AV SVN&SSH KLIENTER Installera TortoiseSVN från (jag använder själv bara Subversion klienten) och ssh klient och agent för nyckel, Putty och Pageant från och installera. -10-
11 ANV. AV SVN ÖVER SSH MOT CYGWIN INST. AV SVN&SSH SERVER SAMT SVN&SSH KLIENT I CYGWIN Jag har av praktiska skäl valt att använda SVN servern i Cygwin, eftersom jag också jobbar i Cygwin med Emacs som GUI/IDE för utveckling. Jag hittade en tråd nedan, och har själv kompletterat den med uppdaterade instruktioner: En viktig detalj är sedan att stänga ssh för inloggning via password, se tråd: KONF. AV TORTOISESVN SVN&SSH KLIENT I WINDOWS 7 Det finns information om detta i tråden ovan, men det är viktigt att läsa tillägget här om hur man sätter upp TortoiseSVN för att använda Pageant för hantering av privata nycklar när man kontaktar Cygwin server via svn + ssh (via localhost, IP loop adressen för för den lokala maskinen). (Eftersom jag redan har en SVN server under Cygwin använder jag inte server delen av TortoiseSVN). Se tråd nedan för hur man använder pageant utan att referera till en Putty session (bättre när man skall dela sin utcheckning av SVN-repositoriet med SVN klienten i Cygwin):
12 Resultat TEST AV PROGRAMKOD Jag har dels testat att sortera listor av C-typerna "signed int" och "signed short int" med kommandot ovan, dels i originalversion, dels hackat för att hantera listor med "signed short int". Jag har också gjort en test-rutin för att testa sortering av listor. Allting har packats i en gzippad tar fil, export_dir.tar.gz. Denna fil finns att ladda ner tillsammans med projektrapporten från min egen hemsida Resultatet av testkörningarna finns under: export_dir/test_int - test med sortering av integer export_dir/test_short - test med sortering av short integer export_dir/test_string - test med sortering av strängar Källkoden är bifogad under: export_dir/ - källkod och makefiler RESULTAT AV TEST Sorteringen har fungerat som den skall i alla de fall jag provat i Cygwin's emulering av Linux/Unix enligt ovan. Det skall inte vara någon skillnad om man kör under Windows och kompilerar med CodeBlocks (projektfil finns) istället samt testar med hj.a. motsvarande batscript (fås från författaren på anmodan). Slutsats Jag har implementerat och verifierat en generell subrutin för sortering av listor av normallånga integers och listor av strängar. Detta visar att det i princip är möjligt att göra ett generellt kommando för sortering av både listor av data objekt och noll-terminerade listor av pekare till data-objekt av standard-typerna inom C. -12-
13 För att göra detta med rimlig arbetsinsats behöver man dels skriva om själva kommandomottagningen och listhanteringen runt den att hantera listor med typerna void och (void *), dels på något sätt generera rutinerna för in- och utmatning av resp. list-typ med hjälp av C- preprocessorn. Till hjälp för detta skulle antagligen man kunna ha nytta av en befintlig headerfil som omdefinierar standardtyperna så att preprocessorn kan avgöra hur scanf och printf's formatkoder skall automat-genereras för resp. typ respektive om resp. typ är en pekare eller ej. Jag har byggt en mycket bra och fungerande korsmiljö mellan Unix/Linux emulering (via Cygwin) och Windows 7 med bra debug-iden i båda fallen och väl fungerande versionshantering med Subversion. För Cygwin och Emacs gäller också att versionshanteringen integrerats med IDE/GUI-et för programproduktion och debuggning. Förbättringsförslag Lägg till parametrar för typ av indata till kommando ovan, använd listor/arrayer av typen "void" och "void *" där, och gör sedan generella rutiner för in och ut-matning av de olika typerna på samma sätt som vi gjorde rutiner för jämförelse i subrutinpaketet enligt ovan. Implementera allt detta med preprocessning med automatisk avkänning av typerna, om de är pekare/ej pekare och eventuellt även lesser/bigger-endian (gäller förstås allt typer av data i systemet man jobbar i). Implementera ett test-script i PERL istället för två test-script för respektive Cygwin och Windows 7's kommando-prompt. Registrera den använda datorn med en fri dynamisk DNS-service så att Subversion-servern kan adresseras med ett domännamn istället för med ip-adressen som kan variera. Fixa ett GUI/IDE med Subversion integrerat för Windows 7. Använd dessa rutiner för att implementera motsvarande sorteringsrutiner som C++ STL-bibliotek erbjuder men med mindre footprint. -13-
Konstruktion av kommando och generell funktion för att anropa sorteringsalgoritmer samt Subversion versionshantering.
Konstruktion av kommando och generell funktion för att anropa sorteringsalgoritmer samt Subversion versionshantering. Introduktion Målet var att göra ett program för sortering som har grundrutiner som
Läs merProgrammeringsteknik med C och Matlab
Programmeringsteknik med C och Matlab Kapitel 2: C-programmeringens grunder Henrik Björklund Umeå universitet Björklund (UmU) Programmeringsteknik 1 / 32 Mer organisatoriskt Imorgon: Datorintro i lab Logga
Läs merAtt skriva till och läsa från terminalfönstret
Att skriva till och läsa från terminalfönstret Oftast används grafiska komponenter i Java för att kommunicera med användaren (användargränssnitt), men det finns objekt i standardbiblioteken för de tillfällen
Läs merProgrammering i C++ Kompilering från kommandoraden
Programmering i C++ Kompilering från kommandoraden Sven Gestegård Robertz Datavetenskap, LTH 9 november 2015 Sammanfattning Ibland vill man, av olika anledningar, inte använda en stor integrerad utvecklingsmiljö
Läs merDet finns många flaggor till g++,
C++, Övning 1 Jonas Sjöbergh, jsh@nada.kth.se Inge Frick, inge@nada.kth.se Alexander Baltsatsis hur man kompilerar och kör make preprocessor minnesallokering, pekare grundläggande C++, funktioner m.m.
Läs merIntroduktion C-programmering
Introduktion C-programmering Viktor Kämpe C Historik Utvecklades först 1969 1973 av Dennis Ritchcie vid AT&T Bell Labs. Högnivå språk med kontakt mot maskinvara. Ett utav de mest använda språken. 2 C Standarder
Läs merRepetition C-programmering
Repetition C-programmering Viktor Kämpe C Historik Utvecklades först 1969 1973 av Dennis Ritchcie vid AT&T Bell Labs. Högnivå språk med kontakt mot maskinvara. Ett utav de mest använda språken. Repetition
Läs merTDIU01 - Programmering i C++, grundkurs
TDIU01 - Programmering i C++, grundkurs Sammanfattning period 1 Eric Elfving Institutionen för datavetenskap 1 oktober 2013 Översikt Ett C++-programs uppbyggnad Variabler Datatyper Satser Uttryck Funktioner
Läs merFöreläsning 3. Programmering, C och programmeringsmiljö
Föreläsning 3 Programmering, C och programmeringsmiljö Vad är programmering? Ett väldigt kraftfullt, effektivt och roligt sätt att kommunicera med en dator Att skapa program / applikationer till en dator
Läs merKompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering
Föreläsning 1 Objektorienterad programmering DD1332 Introduktion till Java Kompilering, exekvering, variabler, styrstrukturer Kompilering och exekvering Ett program måste översättas till datorns språk
Läs merProgramsystemkonstruktion med C++: Övning 1. Karl Palmskog september 2010
Programsystemkonstruktion med C++: Övning 1 Karl Palmskog palmskog@kth.se september 2010 Programuppbyggnad Klassens uppbyggnad en C++-klass består av en deklaration och en definition deklaration vanligtvis
Läs merC++-programmets beståndsdelar
C++-programmets beståndsdelar Ett C++-program är uppdelat i headerfiler (fil.h) och implementationsfiler (fil.cpp) Programmet måste innehålla åtminstone funktionen int main() main() startar programmet
Läs merProgrammering B med Visual C++ 2008
Programmering B med Visual C++ 2008 Innehållsförteckning 1 Repetition och lite nytt...5 I detta kapitel... 5 Programexekvering... 5 Loop... 5 Källkod... 6 Verktyg... 6 Säkerhetskopiera... 6 Öppna, kompilera,
Läs merProgrammering, grundkurs, 8.0 hp HI1024, HI1900 etc., Tentamen TEN1. Måndagen den 10 januari 2011,
Programmering, grundkurs, 8.0 hp HI1024, HI1900 etc., Tentamen TEN1 Måndagen den 10 januari 2011, 8.15 12.15 Tentamen består av två delar, del A och del B. Del A innehåller 10 kryssfrågor på olika teman
Läs merByggstenar. C++-programmets beståndsdelar. C++-programmets beståndsdelar. Grundläggande datatyper
C++-programmets beståndsdelar Ett C++-program är uppdelat i headerfiler (fil.h) och implementationsfiler (fil.cpp) Programmet måste innehålla åtminstone funktionen int main() main() startar programmet
Läs merVem är vem på kursen. Objektorienterad programvaruutveckling GU (DIT011) Kursbok Cay Horstmann: Big Java 3rd edition.
Institutionen för Datavetenskap Göteborgs universitet HT2009 DIT011 Vem är vem på kursen Objektorienterad programvaruutveckling GU (DIT011) Kursansvarig : Katarina Blom, tel 772 10 60 Rum: 6126 (E-huset)
Läs mergrundläggande C++, funktioner m.m.
C++, Övning 1 Jonas Sjöbergh, jsh@nada.kth.se hur man kompilerar och kör make preprocessor minnesallokering, pekare grundläggande C++, funktioner m.m. ett exempel Ett enkelt program i C++, hello.cpp #include
Läs merDatatyper och kontrollstrukturer. Skansholm: Kapitel 2) De åtta primitiva typerna. Typ Innehåll Defaultvärde Storlek
De åtta primitiva typerna Java, datatyper, kontrollstrukturer Skansholm: Kapitel 2) Uppsala Universitet 11 mars 2005 Typ Innehåll Defaultvärde Storlek boolean true, false false 1 bit char Tecken \u000
Läs merProgrammering i C. Vad är C? Målsättning. Litteratur. Jämförelse med Java. Exempel : Ett program som skriver ut texten Hello, world
Programmering i C Målsättning Introducera programmering i C för de som inte har någon erfarenhet av C eller C++. Litteratur Kernighan, Ritchie: The C Programming Language, Second edition, Steve Oualline:
Läs mer732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Felsökning. Datatyper. Referenstyper. Metoder / funktioner
732G11 Linköpings universitet 2011-01-21 1 2 3 4 5 6 Skapa program Kompilera: Källkod Kompilator bytekod Köra: Bytekod Virtuell maskin Ett riktigt program Hej.java class Hej { public static void main (
Läs merÖvning från förra gången: readword
(9 september 2010 T4.1 ) Övning från förra gången: readword /** readword.c * * int readword(char w[], int n) { * * Läser tecken tills en bokstav påträffas. * Läser och lagrar sedan högst n-1 bokstäver
Läs merEtt enkelt program i C++, hello.cpp. #include <iostream> int main() { std::cout << "Hello World\n"; return 0; } C++, Övning 1
Ett enkelt program i C++, hello.cpp C++, Övning 1 Jonas Sjöbergh, jsh@nada.kth.se hur man kompilerar och kör make preprocessor minnesallokering, pekare grundläggande C++, funktioner m.m. ett exempel int
Läs merFöreläsning 2 Programmeringsteknik och C DD1316. Mikael Djurfeldt
Föreläsning 2 Programmeringsteknik och C DD1316 Mikael Djurfeldt Föreläsning 2 Programmeringsteknik och C Python introduktion Utskrift Inläsning Variabler Datatyp Aritmetiska operatorer Omvandling
Läs merEn kort text om programmering i C.
En kort text om programmering i C C skapades 1972 av Brian Ritchie och Dennis Kerighan på Bell Labs i USA Det blev det språk som är mest använt genom tiderna Det finns många olika språk Pascal, FORTH,
Läs merPascal... Pascal. Pascal... Pascal...
... Programspråk uppkallat efter Blaise. Skapat av Nicolaus Wirt. Avsett för undervisning för att lära ut typbegreppet och styrstrukturer. Har fått stor spridning p.g.a. enkelhet och att kompilatorn varken
Läs merFöreläsning 11. Strängar
Föreläsning 11 Strängar Dagens kluring void findmax(int v[], int length, int *pmax) int i;??=v[0]; for(i=1;i< length;i++) if(v[i]>??)??=v[i]; int main() int a[]=1,2,3,4,2; int max; hittamax(a,5,???); printf(
Läs merFöreläsning 3. Programmering, C och programmeringsmiljö
Föreläsning 3 Programmering, C och programmeringsmiljö Vad är programmering? Ett väldigt kraftfullt, effektivt och roligt sätt att kommunicera med en dator Att skapa program / applikationer till en dator
Läs merPascal. reserverade ord fördefinierade funktioner och procedurer egendefinierade funktioner, procedurer och objekt
Programspråk uppkallat efter Blaise. Skapat av Nicolaus Wirt. Avsett för undervisning för att lära ut typbegreppet och styrstrukturer. Har fått stor spridning p.g.a. enkelhet och att kompilatorn varken
Läs merFöreläsning 12: Exempel och problemlösning
TDA 545: Objektorienterad programmering Föreläsning 12: Exempel och problemlösning Magnus Myréen Chalmers, läsperiod 1, 2015-2016 Idag Problemlösning, dvs hur man ska tänka för att hitta lösning int mängd/set
Läs merGeneriska konstruktioner. Kursbokens kapitel 13
Generiska konstruktioner Kursbokens kapitel 13 1 Vad är en generisk konstruktion? Generisk står för; allmän eller generell En generisk konstruktion kan användas för olika typer av data Med hjälp av templates
Läs merGrundläggande C-programmering del 2 Pekare och Arrayer. Ulf Assarsson
Grundläggande C-programmering del 2 Pekare och Arrayer Ulf Assarsson Läromoment: Pekare Absolutadressering (portar): typedef, volatile, #define Arrayer av pekare, arrayer av arrayer Hemuppgifter: v2. Föregående
Läs merObjektorienterad programmering D2
Objektorienterad programmering D2 Laboration nr 2. Syfte Att få förståelse för de grundläggande objektorienterade begreppen. Redovisning Källkoden för uppgifterna skall skickas in via Fire. För senaste
Läs merSammanfattning. Listor. List-manipulering. Matris. /home/lindahlm/activity-phd/teaching/11dd1310/exercise3/exercise3.py September 13, 20111
/home/lindahlm/activity-phd/teaching/11dd1310/exercise3/exercise3.py September 13, 20111 0 # coding : latin Sammanfattning Gick igenom listor, dictionary, felhantering, strängjämförelser, split(), rstrip()
Läs merVarför behövs det? I Allegro finns t.ex. stöd för:
Allegro Introduktion Översikt vad är Allegro? Vad är lib och h-fil Kolla kodexempel Strukturen på ett Allegrospel Hur kommer jag igång? Var kan jag läsa mer Addons Alternativ Vad är Allegro? Ett spelprogrammeringsbibliotek
Läs merProgrammera i C Varför programmera i C när det finns språk som Simula och Pascal??
Programmera i C Varför programmera i C när det finns språk som Simula och Pascal?? C är ett språk på relativt låg nivå vilket gör det möjligt att konstruera effektiva kompilatorer, samt att komma nära
Läs merObjektorienterad programmering. Fält som funktionsresultat. Mer om fält: att uppdatera ett parameterfält. Kontrast: Parametrar av primitiv typ
orienterad programmering Föreläsning 3 Exempel: Telefonboken Fält som funktionsresultat Exempel Definiera static double[] vectorsum(double[] a, double[] b) Betrakta sedan följande kodavsnitt:... double[]
Läs merPython. Python är, som Scheme, ett interpreterat språk men det finns kompilatorer för Python.
är, som Scheme, ett interpreterat språk men det finns kompilatorer för. När man interpreterar ett språk tillhandahåller man en interpretator som läser sats för sats och försöker tolka den. När man kompilerar
Läs merIntroduktion till MATLAB, med utgångspunkt från Ada
Introduktion till, med utgångspunkt från Desktop-miljö som innefattar editor, kommandofönster, graffönster och mycket mer. Interpreteras Snabbt att testa kommandon Terminal + emacs + gnatmake Kompileras
Läs merDatalogi, grundkurs 1. Lösningsförslag till tentamen
Datalogi, grundkurs 1 Lösningsförslag till tentamen 10 december 2008 1. a. Man testar med typiska värden, gränsvärden och värden utanför specificerad indatavärdemängd. Helst med alla permutationer av
Läs merInnehållsförteckning. Exempel. Åtkomst & användarhandledning
Framsidan Framsidan på din labrapport kan du utforma ganska fritt. Tänk bara på att den ska vara läsbar, och innehålla (minst) följande information: Ditt namn Din e-mail adress här på CS! Kursens namn
Läs merUnix-miljöer i större sammanhang
Unix-miljöer i större sammanhang Med tonvikt på Linux Andreas Johansson andjo@ida.liu.se TUS-gruppen IDA, LiU Unix-miljöer i större sammanhang p. 1 Introduktion Detta kommer att handla om datormiljön på
Läs merFöreläsning 2: Avlusning och antilustekniker
2D1458, Problemlösning och programmering under press Föreläsning 2: Avlusning och antilustekniker Datum: 2007-09-11 Skribent(er): Emil Hesslow, Stefan Pettersson Föreläsare: Per Austrin Föreläsningen handlade
Läs merPython. Python är, som Scheme, ett interpreterat språk men det finns kompilatorer för Python.
är, som Scheme, ett interpreterat språk men det finns kompilatorer för. När man interpreterar ett språk tillhandahåller man en interpretator som läser sats för sats och försöker tolka den. När man kompilerar
Läs merIdag. Exempel, version 2. Exempel, version 3. Ett lite större exempel
Idag Ett exempel Undantag Substitutierbarhet, subtyper, subklasser När val av metod beror av typerna hos två objekt Lite om överlagring Exempel, version 2 Notera: för samtliga figurer gäller: arean av
Läs merAnteckningar 1: Grundläggande saker
UPPSALA UNIVERSITET Institutionen för lingvistik och filologi Mats Dahllöf http://stp.ling.uu.se/ matsd/uv/uv11/pst1/ Programmering för språkteknologer I Anteckningar 1: Grundläggande saker 1 Programmering
Läs merExempelsamling Assemblerprogrammering
Exempelsamling Assemblerprogrammering I uppgifterna nedan utgå från följande programskelett: #include.data var1:.word 12 var2:.word 19 sum: prod:.float 0.set noreorder.text.globl start.ent start
Läs merGrundläggande C-programmering del 2 Pekare och Arrayer. Ulf Assarsson
Grundläggande C-programmering del 2 Pekare och Arrayer Ulf Assarsson Läromoment: Pekare Absolutadressering (portar): typedef, volatile, #define Arrayer av pekare, arrayer av arrayer Hemuppgifter: v2. Föregående
Läs merClasses och Interfaces, Objects och References Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016
Classes och Interfaces, Objects och References Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016 Abstract class En abstract class är en class som inte kan skapa några objekt. Syfte:
Läs merC-programmering, föreläsning 1 Jesper Wilhelmsson
C-programmering, föreläsning 1 Jesper Wilhelmsson Introduktion till C Variabler, Typer, Konstanter Operatorer Villkorliga satser if-else, switch Loopar for, while, do... while Inmatning och utmatning stdin
Läs merEnkla datatyper minne
Enkla datatyper minne 143.56 sant Sonja A falskt 18 1999-10-29 Bertil Gralvik, KTH Ingenjörsskolan 1 Addera två tal Algoritmen Summera tal Mata in två tal Beräkna Skriv ut resultat Mata in tal 1 Mata in
Läs merF4. programmeringsteknik och Matlab
Programmeringsspråk Föreläsning 4 programmeringsteknik och Matlab 2D1312/ 2D1305 Introduktion till Java Kompilering, exekvering, variabler, styrstrukturer 1 Ett program är en eller flera instruktioner
Läs merDatorlaboration 0, Programmering i C++ (EDAF30)
LUNDS TEKNISKA HÖGSKOLA Programmering i C++ Institutionen för datavetenskap HT 2015 Datorlaboration 0, Programmering i C++ (EDAF30) Under den inledande datorlaborationen får du träna på de grundläggande
Läs merPlanering Programmering grundkurs HI1024 HT TIDAA
Planering Programmering grundkurs HI1024 HT 2016 - TIDAA Föreläsning V35 Föreläsning 1 Programmering Kurs-PM Programmeringsmiljö Hello World! Variabler printf scanf Föreläsning 2 Operatorer Tilldelning
Läs merTDIU01 - Programmering i C++, grundkurs
TDIU01 - Programmering i C++, grundkurs Pekare och Listor Eric Elfving Institutionen för datavetenskap 31 oktober 2014 Översikt 2/41 Internminne Pekare Dynamiska datastrukturer (Enkellänkade) listor Arbeta
Läs merExempel på ett litet Ada-program
Exempel på ett litet Ada-program -- En kommentar som beskriver något. with Ada.Text_IO; procedure Mini is -- Deklarationer. K : constant Integer := 5; X, Y : Integer; -- Körbar kod. Ada.Text_IO.Put( Utskrift
Läs merProgrammering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning.
Programmering med Java Programmering med Java Programspråket Java Källkodsexempel Källkod Java API-exempel In- och utmatning Grunderna Ann Pan panda@nada.kth.se Rum 1445, plan 4 på Nada 08-7909690 Game.java
Läs merImperativ programmering. Föreläsning 2
Imperativ programmering 1DL126 3p Föreläsning 2 Imperativ programmering Kännetecken för imperativa språk: Programmet består av en serie instruktioner. Olika språk har olika uppsättningar av instruktioner.
Läs merArrays (indicerade variabler) Föreläsning 4
Arrays (indicerade variabler) Föreläsning 4 Dagens kluring Hitta felet (ska skriva ut 10,9,8,7,6,5,4,3,2,1): int n; for(n=10;n0;n--) for(m=0;m
Läs merHur man kompilerar och kör IT++-program med MinGW. 1 Sammanfattning. 2 Om dokumentet. 3 Om min konfiguration
1 (12) Hur man kompilerar och kör IT++-program med MinGW 1 Sammanfattning Detta dokument visar hur man lätt (med några få extra raders kod) kan få IT++ att bli kompatibelt med kompilatorn MinGW. Med den
Läs merDatorlaboration 0, Programmering i C++ (EDA623)
LUNDS TEKNISKA HÖGSKOLA Programmering i C++ Institutionen för datavetenskap HT 2013 Datorlaboration 0, Programmering i C++ (EDA623) Under den inledande datorlaborationen får du träna på de grundläggande
Läs merFöreläsning REPETITION & EXTENTA
Föreläsning 18 19 REPETITION & EXTENTA Programmeringsteknik på 45 minuter Klasser och objekt Variabler: attribut, lokala variabler, parametrar Datastrukturer Algoritmer Dessa bilder är inte repetitionsbilder
Läs merDIAGNOSTISKT PROV. Tid. Hjälpmedel. Antaganden. Rättning. Övrigt. Diagnostiskt Prov. Klockan Inga
203-03-9 203-03-9 DIAGNOSTISKT PROV Tid Klockan 09.00-2.00 Hjälpmedel Inga Antaganden Om förutsättningar saknas I en uppgift skall rimliga antaganden göras och nedtecknas. Rättning Tentamen omfattar 6
Läs merInledning. Vad är ett datorprogram, egentligen? Olika språk. Problemlösning och algoritmer. 1DV433 Strukturerad programmering med C Mats Loock
Inledning Vad är ett datorprogram, egentligen? Olika språk Problemlösning och algoritmer 1 (14) Varför använda en dator? Genom att variera de program som styr datorn kan den användas för olika uppgifter.
Läs merDagens föreläsning. Diverse Common Lisp. Konstanter, parametrar, globala variabler
21-1-2 1 Dagens föreläsning Hur fungerar ett Lisp system intern struktur av symbolen, tal, listan pekare - delade strukturer - eq minneshantering fri lista - sophämtning/garbage collection stack Diverse
Läs merProgrammering, grundkurs, 8.0 hp, Elektro, KTH, hösten 2010. Programmering: att instruera en maskin att utföra en uppgift, kräver olika språk:
Föreläsning 1 OH: Övergripande information Programmering: att instruera en maskin att utföra en uppgift, kräver olika språk: * maskinspråk = ettor och nollor, kan bara en maskin förstå. * programmeringsspråk
Läs merLite om felhantering och Exceptions Mer om variabler och parametrar Fält (eng array) och klassen ArrayList.
Institutionen för Datavetenskap Göteborgs universitet HT2009 DIT011 Objektorienterad programvaruutveckling GU (DIT011) Föreläsning 3 Innehåll Lite om felhantering och Exceptions Mer om variabler och parametrar
Läs merTentamen OOP 2015-03-14
Tentamen OOP 2015-03-14 Anvisningar Fråga 1 och 2 besvaras på det särskilt utdelade formuläret. Du får gärna skriva på bägge sidorna av svarsbladen, men påbörja varje uppgift på ett nytt blad. Vid inlämning
Läs merOOP Objekt-orienterad programmering
OOP F6:1 OOP Objekt-orienterad programmering Föreläsning 6 Mer om klasser och objekt Hantera många objekt ArrayList tostring() metoden this Vi vill ofta hantera många objekt i ett program: OOP F6:2 public
Läs merProgrammering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p
Programmering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p Skriven av Michael Andersson Introduktion Programmering I högnivåspråk fokuserar på själv problemet (algoritmen) istället
Läs mer(Man brukar säga att) Java är... Denna föreläsning. Kompilering av Java. Historik: Java. enkelt. baserat på C/C++ Allmänt om Java
(Man brukar säga att) Java är... Denna föreläsning Allmänt om Java Javas datatyper, arrayer, referenssemantik Klasser Strängar enkelt baserat på C/C++ objekt-orienterat från början dynamiskt utbyggbart
Läs merEtt problem. Kontrollstrukturer och arrayer. Arrayer. Lösningen. Arrayer och hakparanteser. Exempel int[] results; results = new int[10]; // 0..
Ett problem Kontrollstrukturer och er Hur sparas data T ex när man vill spara resultaten av en tävling Exempel med 3 deltagare: public class Competition private int result1; private int result2; private
Läs merClasses och Interfaces, Objects och References, Initialization
Classes och Interfaces, Objects och References, Initialization Objekt-orienterad programmering och design (DIT953) Niklas Broberg/Johannes Åman Pohjola, 2018 Abstract class En abstract class är en class
Läs merGrundläggande datalogi - Övning 1
Grundläggande datalogi - Övning 1 Björn Terelius October 30, 2008 Python är ett tolkat språk som kan köras interaktivt. tcs-ray:~/grudat08>python >>> 11+3*4 23 >>> a = 15 >>> b=a >>> print "a =", a, "b
Läs merKarlstads Universitet, Datavetenskap 1
DAV B04 - Databasteknik KaU - Datavetenskap - DAV B04 - MGö 229 PHP Hypertext Preprocessor Scriptspråk på serversidan Innebär att webbservern översätter php-scripten innan sidan skickas till webbläsaren,
Läs merAgenda. Arrayer deklaration, åtkomst Makron Flerdimensionella arrayer Initiering Strängar Funktioner och arrayer. Övningar nu och då
Agenda Arrayer deklaration, åtkomst Makron Flerdimensionella arrayer Initiering Strängar Funktioner och arrayer Övningar nu och då 1 Motivering I de flesta problem ingår att hantera multipla data I de
Läs merObjektorienterad Programmering (TDDC77)
Objektorienterad Programmering (TDDC77) Föreläsning II: utmatning, variabler, typer Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2016 Kompilera och köra programmet under terminal 2: I Skapa Hej.java
Läs merArrays (indicerade variabler) Föreläsning 6
Arrays (indicerade variabler) Föreläsning 6 Dagens kluring int i; scanf("%d", &i); switch(i) case 1: printf("1"); case 2: printf("2"); case 3: printf("3"); break; case 4: printf("4"); break; case 5: printf("5");
Läs merProgrammering I Tobias Wrigstad fredag, 2009 augusti 28
Programmering I Tobias Wrigstad tobias@dsv.su.se Vad är programmering? Lågnivåspråk och högnivåspråk Kompilering och interpretering Variabler Notation för flödesschema (flow chart) Kontrollstrukturer (conditionals,
Läs merMATLAB. Python. Det finns flera andra program som liknar MATLAB. Sage, Octave, Maple och...
Allt du behöver veta om MATLAB: Industristandard för numeriska beräkningar och simulationer. Används som ett steg i utvecklingen (rapid prototyping) Har ett syntax Ett teleskopord för «matrix laboratory»
Läs merAtt deklarera och att använda variabler. Föreläsning 10. Synlighetsregler (2) Synlighetsregler (1)
Föreläsning 10 STRING OCH STRINGBUILDER; VARIABLERS SYNLIGHET Att deklarera och att använda variabler När vi deklarerar en variabel, t ex int x; inför vi en ny variabel med ett namn och en typ. När namnet
Läs merKlassdeklaration. Metoddeklaration. Parameteröverföring
Syntax: Class Declaration Modifier Class Body Basic Class Member Klassdeklaration class Class Member Field Declaration Constructor Declaration Method Declaration Identifier Class Associations Motsvarar
Läs merTentamen i TDP004 Objektorienterad Programmering Lösningsförslag
Tentamen i TDP004 Objektorienterad Programmering Lösningsförslag Datum: 2008-08-14 Tid: 08-12 Plats: PC6-PC7 i E-huset. Jour: Per-Magnus Olsson, tel 285607 Jourhavande kommer att besöka skrivsalarna varje
Läs merI Skapa Hej.java och skriv programmet. I Kompilera med javac Hej.java. I Rätta fel och repetera tills du lyckas kompilera ditt program
Kompilera och köra programmet Objektorienterad Programmering (TDDC77) Föreläsning II: utmatning, variabler, typer Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2016 under terminal 2: I Skapa Hej.java
Läs merTDDC30. Kursledning Kursledare: Jonas Lindgren. Labassistent: Jonas Lindgren Labassistent: Niklas Holma Labassistent: Erik Nilsson
TDDC30 Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 1 Jonas Lindgren, Institutionen för Datavetenskap, LiU På denna föreläsning: Kursinformation Imperativa delen av
Läs merOOP Objekt-orienterad programmering
OOP Objekt-orienterad programmering OOP F1:1 Delkursansvarig Epost Kursens webbsidor sm@fc.dsv.su.se http://people.dsv.su.se/~sm/oop/ Föreläsning 1 Introduktion till kursen OOP Vad är Java? Ett första
Läs merInnehåll. Introduktion till objektorientering. OOP (objektorienterad programmering) Objekt, instanser, klasser
Föreläsning 1 Innehåll Introduktion till objektorientering OOP (objektorienterad programmering) Objekt, instanser, klasser C++ OO i C++ Standardbibliotek Utökningar från C (syntaktiskt socker) Introduktion
Läs merTentamen Grundläggande programmering
Akademin för Innovation Design och Teknik Tentamen Grundläggande programmering Kurskod: DVA103 Datum 2012-06-11 Tid 14.10 16.30 Examinator: Lars Asplund Maxpoäng: 48 Betygsgränser: Betyg 3: 20 Betyg 4:
Läs merIndexerade variabler
Indexerade variabler Vad har vi lärt oss så här långt Den första sammansatta (compound) datatypen: matris. Att arbeta med 1-dimensionella matriser. Att arbeta med flerdimensionella matriser. Matriser med
Läs merAtt komma igång. Föreläsning 1
Att komma igång Föreläsning 1 Att komma igång Vad är programmering? Boken! Kurs-PM Vad är ett program? Kompilerande-Interpreterande Programmeringsmiljö Hello World! Att programmera Variabler printf scanf
Läs merProgrammeringsteknik med C och Matlab
Programmeringsteknik med C och Matlab Kapitel 6: Filhantering Henrik Björklund Umeå universitet 13 oktober 2009 Björklund (UmU) Programmeringsteknik 13 oktober 2009 1 / 22 Textfiler Filer är sekvenser
Läs merUlf Assarsson. Grundläggande C-programmering del 2 Pekare och Arrayer. Läromoment:
Grundläggande C-programmering del 2 Pekare och Arrayer Ulf Assarsson Läromoment: Pekare Absolutadressering (portar): typedef, volafle, #define Arrayer av pekare, arrayer av arrayer Hemuppgi9er: v2. Föregående
Läs merITK:P1 Föreläsning 1. Programmering. Programmeringsspråket Java. Stark typning Explicit typning Strukturerat Hög säkerhet
ITK:P1 Föreläsning 1 Att programmera i språket Java DSV Peter Mozelius Programmering Olika typer av programmering som t ex: o Imperativ programmering (C, Pascal m fl) o Funktionell programmering (Lisp,
Läs merExempel. Arrayer. Lösningen. Ett problem. Arrayer och hakparanteser. Arrayer
Exempel for (int antal=; antal < 75; antal++) System.out.println (antal); Arrayer for (int num=5; num
Läs merIntroduktion till användning av linux-servern sledge och några övningsuppgifter
Uppsala universitet Institutionen för utbildning, kultur och medier Monica Langerth Zetterman och Richard Walls IT-stöd i undervisningen, HT10 Introduktion till användning av linux-servern sledge och några
Läs merAgenda. Introducera det individuella projekt Multipla C-filer H-filer Introducera uppgifterna
Agenda Introducera det individuella projekt Multipla C-filer H-filer Introducera uppgifterna Projektupptakt I kursen ingår PRO1, enskild programmeringsuppgift En större programmeringsuppgift som ni löser
Läs merFöreläsning 2 Programmeringsteknik och C DD1316. Programmering. Programspråk
Föreläsning 2 steknik och C DD1316 python introduktion Variabler Datatyp Aritmetiska operatorer av typer Reserverade ord logiska operatorer If-sats kommentarer betyder att instruera en dator Ett program
Läs merSORTERING OCH SÖKNING
Algoritmer och Datastrukturer Kary FRÄMLING Kap. 9, Sid 1 C-språket 2/Kary Främling v2000 och Göran Pulkkis v2003 SORTERING OCH SÖKNING Sortering är ett av de bästa exemplen på problem där valet av lösningsalgoritm
Läs merSymboliska konstanter const
(5 oktober 2010 T11.1 ) Symboliska konstanter const Tre sätt som en preprocessormacro med const-deklaration med enum-deklaration (endast heltalskonstanter) Exempel: #define SIZE 100 const int ANSWER =
Läs merCommand line argumenter. Objektorienterad Programmering (TDDC77) Vad blir resultatet? Nu då? Ahmed Rezine. Hösttermin 2016
Command line argumenter Objektorienterad Programmering (TDDC77) Föreläsning VI: eclipse, felsökning, felhantering Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2016 /* Cla. java * Programmet illustrerar
Läs merObjektorienterad Programmering (TDDC77)
Objektorienterad Programmering (TDDC77) Föreläsning VI: eclipse, felsökning, felhantering Ahmed Rezine IDA, Linköpings Universitet Hösttermin 2016 Outline Felhantering Eclipse Felsökning Command line argumenter
Läs mer