Studiepraktik Thomas Bøgholm boegholm@cs.aau.dk Mikkel Hansen mhan@cs.aau.dk Jacob Elefsen jelefs12@student.aau.dk www.cs.aau.dk/~boegholm/studiepraktik
Studiepraktik -- program Program onsdag 10.00 – 10.15 Registrering af fremmøde og gennemgang af dagens program 10.15 – 11.15 Introduktion til programmering / Opgaver 11.15 – 11.25 Pause 11.25 – 12.30 12.30 – 13.00 Frokost 13.00 – 14.30~ Besøg i grupperum 14.30 – 15.00 www.cs.aau.dk/~boegholm/studiepraktik
Studiepraktik -- program Torsdag 10.00 – 10.15 Registrering af fremmøde og gennemgang af dagens program 10.15 – 11.15 Besøg den sociale klub, F-Klubben 11.15-11.30 Pause 11.30 – 12.30 Introduktion til programmering / Opgaver 12.30 – 13.00 Frokost 13.00 – 14.00 Om uddannelserne på Cassiopeia (af studievejledningen) 14.00 – 15.00 www.cs.aau.dk/~boegholm/studiepraktik
Studiepraktik -- program Fredag 10.00 – 10.15 Registrering af fremmøde og gennemgang af dagens program 10.15 – 11.15 Besøg af gamle studerende fra Elsevier 11.15-11.30 Pause 11.30 – 12.30 Introduktion til programmering / Opgaver 12.30 – 13.00 Frokost 13.00 – 14.00 Afslutning og evaluering www.cs.aau.dk/~boegholm/studiepraktik
Mål Målet for studiepraktikken er Se institut for datalogi Høre om uddannelserne Møde nuværende studerende Møde tidligere studerende Besøge studerende i deres grupperum Lære at programmere! Og lidt mere… www.cs.aau.dk/~boegholm/studiepraktik
Hvad skal der ske? Opleve et kursus Programmering er et grundlæggende begreb I vil opleve det på første studieår 2 sprog på første studieår I får en lille bid af et af et kursus på 1. studieår www.cs.aau.dk/~boegholm/studiepraktik
Programmeringskursus Studiepraktik 2016 Thomas Bøgholm www.cs.aau.dk/~boegholm/studiepraktik
Programmer Mekanisk løsning af en opgave Behandling af data Beregninger Programmer minder om opskrifter Skal specificeres i mindste detalje Et program beskriver en proces til at løse en opgave/beregning www.cs.aau.dk/~boegholm/studiepraktik
Hvad er et program? En sekvens af instruktioner der fortæller computeren hvad den skal gøre. Et program skrives i et sprog Mennesker forstår ikke: 1010101001010101000002010101001010… Computere forstår ikke: “læg 1 og 2 sammen og skriv det på skærmen” Tekst oversættes til instruktioner Oversætter Tekst 0101010101 www.cs.aau.dk/~boegholm/studiepraktik
Hvor passer det ind i uddannelsen? Programmering er et værktøj! Der findes mange forskellige værktøjer! (sprog) https://en.wikipedia.org/wiki/List_of_programming_languages Forskellige måder at programmere på Sprogstammer, hellere end sprog Det er lettere at tale om sne, i lande der oplever snevejr I kommer til at designe jeres eget sprog! (4. semester) www.cs.aau.dk/~boegholm/studiepraktik
http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html Hvilket sprog? www.cs.aau.dk/~boegholm/studiepraktik
http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html Hvilket sprog? www.cs.aau.dk/~boegholm/studiepraktik
Hvordan skriver vi? Samlet udviklingsværktøj Skriveprogram Oversætter Fejlfindingsværktøjer Overblik Microsoft Visual Studio 2015 www.cs.aau.dk/~boegholm/studiepraktik
Første opgave Hent visual studio installer https://www.visualstudio.com/free-developer-offers/ http://www.monodevelop.com/ Kør installer under forelæsning Vi laver opgaver bagefter www.cs.aau.dk/~boegholm/studiepraktik
Et simpelt program Her starter programmet Funktionskald static void Main(string[] args) { Console.WriteLine("Hello World!"); Console.WriteLine("Tryk en tast for at afslutte..."); Console.ReadKey(); } Her starter programmet Funktionskald Parameter til funktionskald (en tekst) Funktionskald uden parametre www.cs.aau.dk/~boegholm/studiepraktik
Oversigt Hukommelse, udtryk og typer Metoder og operatorer Kontrolstrukturer Datastrukturer Program www.cs.aau.dk/~boegholm/studiepraktik
Hukommelse Variabler er hukommelsespladser ‘skuffer’ med navne Variabler har typer string velkomst = "Velkommen til Studiepraktik!"; int antalStuderende = 60; Type Navn på variabel Værdi www.cs.aau.dk/~boegholm/studiepraktik
Hukommelse Typer bestemmer hvad der kan komme i en given skuffe string velkomst = "Velkommen til Studiepraktik!”; int antalStuderende = 60; int (integer / heltal) www.cs.aau.dk/~boegholm/studiepraktik
Hukommelse Typer bestemmer hvad der kan komme i en given skuffe string (tekst streng) string velkomst = "Velkommen til Studiepraktik!”; int antalStuderende = 60; int (integer / heltal) www.cs.aau.dk/~boegholm/studiepraktik
Hukommelse Typer bestemmer hvad der kan komme i en given skuffe string (tekst streng) string velkomst = "Velkommen til Studiepraktik!”; int antalStuderende = 60; Navn er identificerer vores skuffe int (integer / heltal) www.cs.aau.dk/~boegholm/studiepraktik
Hukommelse Typer bestemmer hvad der kan komme i en given skuffe string (tekst streng) string velkomst = "Velkommen til Studiepraktik!”; int antalStuderende = 60; int (integer / heltal) www.cs.aau.dk/~boegholm/studiepraktik
Hukommelse Typer bestemmer hvad der kan komme i en given skuffe string velkomst = "Velkommen til Studiepraktik!”; int antalStuderende = 60; string talStreng = "10"; string talStreng = 80; int antalStuderende = ”firs"; int antalStuderende = ”50"; www.cs.aau.dk/~boegholm/studiepraktik
Hukommelse Typer bestemmer hvad der kan komme i en given skuffe string velkomst = "Velkommen til Studiepraktik!”; int antalStuderende = 80; string talStreng = "10"; string talStreng = 80; int antalStuderende = ”firs"; int antalStuderende = ”50"; www.cs.aau.dk/~boegholm/studiepraktik
Udtryk Variabelerklæring int tal; tal = 10 + 10; Værditilskrivning Udtryk bliver ‘evalueret’ når programmet kører www.cs.aau.dk/~boegholm/studiepraktik
Udtryk Heltal int tal = 10 + 10; tal = 30; tal = tal * 2; int ekstraStuderende = 10; int antalStuderende = 60 + ekstraStuderende; Strenge string velkomst = "Velkommen til Studiepraktik!"; string udvidetVelkomst = velkomst + " Programming Rocks!!"; www.cs.aau.dk/~boegholm/studiepraktik
Datatyper int og string kender vi allerede char – enkelte tegn bool – sandhedsværdier double - Kommatal char c = 'a'; bool s = true; bool f = false; double d = 10.0; www.cs.aau.dk/~boegholm/studiepraktik
Oversigt Hukommelse, udtryk og typer Metoder og operatorer Kontrolstrukturer Datastrukturer Program www.cs.aau.dk/~boegholm/studiepraktik
Metoder En genbrugelig klump kode Det meste af vores kode vil være i metoder En måde at tilføje operationer på string navn = Console.ReadLine(); Console.WriteLine("Hej " + navn + "!"); Console.WriteLine("Velkommen til studiepraktik"); Metodekald www.cs.aau.dk/~boegholm/studiepraktik
Metoder metodenavn (int, string, etc) Returtype Parametre static void Hilsen(string navn) { Console.WriteLine("Hej med dig, " + navn); } ......... Hilsen("Thomas"); <- Hej med dig, Thomas www.cs.aau.dk/~boegholm/studiepraktik
Metoder Metoder kan bruges som udtryk / værdier metodenavn (int, string, etc) Returtype Parametre static string Hilsen(string navn) { return "Hej med dig, " + navn; } ......... string hilsenStreng = Hilsen("Thomas"); Console.WriteLine(hilsenStreng); <- Hej med dig, Thomas Returværdi (streng) www.cs.aau.dk/~boegholm/studiepraktik
Input/Output Input: Output Console.ReadLine(); Bruges som et udtryk / værdi Eksempel: string navn = Console.ReadLine(); Output Console.WriteLine(”…”); Udskriver den angivne tekst til konsollen Console.WriteLine("Hej med dig " + navn); www.cs.aau.dk/~boegholm/studiepraktik
Numeriske typer Metoder på numeriske typer findes ikke i typerne selv, men i Math klassen. static void numeriskeTyperEksempel() { int a = 2; double b = 9.75 + a; int c = (int)b; //cast, giver 11 double sqrtB = Math.Sqrt(b); //3.42... double powA = Math.Pow(a, 5); //32 Console.WriteLine(Math.PI); //3.14... } www.cs.aau.dk/~boegholm/studiepraktik
Aritmetiske operationer Man kan benytte de aritmetiske operationer (*, /, +, -, % (modulo)) på de numeriske typer. Almindelige præcedens-regler (*, / og % over + og -) gælder. Udtryk evalueres fra venstre mod højre Parenteser kan bruges til at ændre den normale evaluering. static void aritmetiskeOperationerEksempel() { int a, b, c, d, e; a = 2 + 3; //5 b = a * 6; //30 c = ((2 + 3) * 5) / a; //5 d = c % 3; //2 e = 10 / 2 * 5; //25 } www.cs.aau.dk/~boegholm/studiepraktik
Streng-metoder static void stringMetodeEksempel() { string a = "Noget tekst"; string aUp1 = a.ToUpper(); //NOGET TEKST string aUp2 = "Noget tekst".ToUpper(); //NOGET TEKST string c = aUp1.Substring(0, 5); //NOGET string d = a + " " + c; //Noget tekst NOGET string.Compare("Ib", "Bo"); //minus, 0, eller positivt tal } www.cs.aau.dk/~boegholm/studiepraktik
Logiske operationer sammenligningsoperatorerne (<, <=, ==, >=, >, !=) logiske operatorer: && (AND) || (OR) !(NOT) static void logiskeOperationerEksempel() { int two = 2; bool a = two < 4; //true bool b = two == 3; //false bool c = !a; //false bool d = a || b; //true bool e = a && b; //false bool f = a ^ b; //true } www.cs.aau.dk/~boegholm/studiepraktik
Oversigt Hukommelse, udtryk og typer Metoder og operatorer Kontrolstrukturer Datastrukturer Program www.cs.aau.dk/~boegholm/studiepraktik
Kontrolstrukturer Normalt kører kode sekventielt Kontrolstrukturer bruges til at bryde dette mønster To typer kontrolstrukturer if-sætninger Bruges til forgreninger Løkker Bruges til iteration www.cs.aau.dk/~boegholm/studiepraktik
if-sætninger if (betingelse1) { // betinget kode } else // alternativ www.cs.aau.dk/~boegholm/studiepraktik
static void ifEksempel() { int alder = 12; if (alder < 13) { { Console.WriteLine("Du er et barn"); } else { Console.WriteLine("Du er ikke et barn mere! "); } } www.cs.aau.dk/~boegholm/studiepraktik
static void ifEksempel() { int alder = 12; if (alder < 13) { { Console.WriteLine("Du er et barn"); } else if (alder < 20) Console.WriteLine("Du er teenager"); } else if (alder >= 20 && alder <= 67) Console.WriteLine("Du er i den arbejdsduelige alder"); } } www.cs.aau.dk/~boegholm/studiepraktik
static void ifEksempel() { string input = Console.ReadLine(); int alder; bool gyldigAlder = Int32.TryParse(input, out alder); if (!gyldigAlder) { Console.WriteLine("Fejl! Du har indtastet en ugyldig alder"); } else if (alder < 13) { Console.WriteLine("Du er et barn"); } else if (alder < 20) Console.WriteLine("Du er teenager"); else if (alder >= 20 && alder <= 67) Console.WriteLine("Du er i den arbejdsduelige alder"); } } www.cs.aau.dk/~boegholm/studiepraktik
While løkke Vi kan bruge løkker til at udføre de samme statements et antal gange - bruges ofte når vi ikke på forhånd kender antallet af iterationer En while løkke udfører en kodeblok indtil en given betingelse ikke længere holder. int tal = 1; while (tal < 10) { Console.WriteLine("Tallet er nu: " + tal); tal = tal + 1; } while (betingelse) { … } NB: Pas på uendelige løkker!!! www.cs.aau.dk/~boegholm/studiepraktik
For-løkker for løkken bruges når vi vil udføre en kodeblok et bestemt antal gange. For løkken: initialiserer en tæller-variabel inden første gennemløb; Tester tæller-variablens værdi inden hvert gennemløb Tæller tæller-variablens værdi op el. ned efter hvert gennemløb for (initialiser tæller ; test tæller ; tæl tæller op/ned ) { … } www.cs.aau.dk/~boegholm/studiepraktik 43
static void forEksempel() { //for-pendanter til while løkker for (int tal = 0; tal < 10; tal++) { Console.WriteLine("Tallet er nu: " + tal); } for (int nytTal = 2; nytTal % 7 != 0; nytTal += 2) Console.WriteLine("7 går ikke op i " + nytTal); for (string tekst = "jubi"; tekst.Length < 8; tekst = tekst + "i") Console.WriteLine(tekst); } www.cs.aau.dk/~boegholm/studiepraktik
Oversigt Hukommelse, udtryk og typer Metoder og operatorer Kontrolstrukturer Datastrukturer Program www.cs.aau.dk/~boegholm/studiepraktik
Data strukturer De variable vi har set indtil videre indeholder en enkelt værdi En datastruktur derimod kan indeholde en række værdier. Vi skal kigge på 2 datastrukturer: Array Indeholder et bestemt antal elementer List Indeholder et varierende antal elementer www.cs.aau.dk/~boegholm/studiepraktik
Arrays Indeholder et bestemt antal værdier af en bestemt type (string, char, bool, int, double) Elementer i arrayet tilgås via et index. Indeksering starter ved 0 1 2 ”hej” ”med” ”dig” 1 2 3 4 26 10 2011 12 30 1 2 3 4 ’c’ ’y’ ’k’ ’e’ ’l’ 1 2 true false www.cs.aau.dk/~boegholm/studiepraktik
Eksempel static void arrayEksempel() { string[] tekst; tekst = new string[3]; tekst[0] = "hej"; tekst[1] = "med"; tekst[2] = "dig"; int[] jokerTal = new int[7]; jokerTal[0] = 16; jokerTal[1] = 25; Console.WriteLine("Dagens første ord er " + tekst[0]); Console.WriteLine("Dagens sidste ord er " + tekst[2]); int sidsteJoker = jokerTal[6]; } www.cs.aau.dk/~boegholm/studiepraktik
Arrays og for-løkker går hånd i hånd: static void arrayForEksempel() { int[] jokerTal = new int[7]; jokerTal[0] = 16; jokerTal[1] = 25; for (int i = 0; i < jokerTal.Length; i++) { Console.WriteLine(jokerTal[i]); } } www.cs.aau.dk/~boegholm/studiepraktik
Arrays af arrays - kan fx bruges til matricer static void jaggedArrayEksempel() { int[][] niTal = new int[3][]; niTal[0] = new int[4]; niTal[1] = new int[2]; niTal[2] = new int[3]; niTal[0][0] = 1; niTal[0][1] = 2; niTal[0][2] = 3; niTal[0][3] = 4; niTal[1][0] = 5; niTal[1][1] = 6; niTal[2][0] = 7; niTal[2][1] = 8; niTal[2][2] = 9; int nr6 = niTal[1][1]; } Arrays af arrays - kan fx bruges til matricer 1 2 3 4 5 6 7 8 9 www.cs.aau.dk/~boegholm/studiepraktik
List<T> datastrukturen Bruges til variabel-størrelse samling af elementer Listens størrelse kan vokse og skrumpe <T> kaldes en type parameter (kan være string, char, bool, int, double) using System.Collections.Generic; //(namespace) www.cs.aau.dk/~boegholm/studiepraktik
static void listEksempel() { List<string> liste = new List<string>(); liste.Add("hej"); liste.Add("med"); liste.Add("dig"); liste.Remove("asdf"); liste.Remove("med"); liste[0] = "mig"; liste.Insert(1, "og"); liste.RemoveAt(2); for (int i = 0; i < liste.Count; i++) { Console.WriteLine(liste[i]); } } List<string> stringListe = new List<string>(); List<char> charListe = new List<char>(); List<bool> boolListe = new List<bool>(); www.cs.aau.dk/~boegholm/studiepraktik
Oversigt Hukommelse, udtryk og typer Metoder og operatorer Kontrolstrukturer Datastrukturer Program www.cs.aau.dk/~boegholm/studiepraktik
static void Main(string[] args) { int potens = Potens(2, 4); class Program { static void Main(string[] args) { int potens = Potens(2, 4); HelloWord(); } static int Potens(int tal, int potens) { int resultat = 1; for (int i = 1; i <= potens; i++) resultat = resultat * tal; return resultat; static void HelloWord() Console.WriteLine("Hello World"); Metode kald Metode definitioner www.cs.aau.dk/~boegholm/studiepraktik
C# ressourcer http://people.cs.aau.dk/~boegholm/studiepraktik/ I skal bruge et udviklingsværktøj Visual studio community 2015 https://www.visualstudio.com/ MonoDevelop/Xamarin (Windows, Linux og Mac) http://monodevelop.com/ https://xamarin.com/studio Visual Studio Express 2013 for Windows Desktop: http://www.microsoft.com/visualstudio/eng/downloads#d-express-windows-desktop Hvis andet ikke virker… www.cs.aau.dk/~boegholm/studiepraktik