1 Texthantering. 1.1 Typen char. Exempel, skriv ut alfabetet
|
|
- Åke Nyström
- för 9 år sedan
- Visningar:
Transkript
1 1 Texthantering I detta avsnitt tas det upp två sätt att arbeta med text i C++ program. Det första sättet som behandlas är hanteringen av textfält. Texter i C++ består utav en serie med enstaka tecken av typen char. Dessa serier med tecken kallas fält eller arrayer. 1.1 Typen char #include<iostream> Variabler av datatypen char representerar ett tecken som exempelvis bokstaven 'A'. Datatypen char är i grund och botten ett heltal bestående av en enda byte, alltså med ett väldigt litet talområde. Skillnaden mellan variabler av chartyp och heltalsvariabler visar sig när man skriver ut dem till skärmen. När en char variabel skrivs ut till skärmen visas ett tecken exempelvis 'A', när en heltalsvariabel skrivs till skärmen visas ett tal. Programexempel med char variabler. char tecken_1, tecken_2, tecken_3; tecken_1 = 'H'; tecken_2 = 'e'; tecken_3 = 'j'; cout<< tecken_1 << tecken_2 << tecken_3 <<endl; Resultatet av programmet blir Hej Press any key to continue Skrivsättet vid tilldelningarna exempelvis tecken_1 = 'H'; anger att variabeln ska tilldelas den teckenkod/värde som tecknet H har. Teckenkoderna för de flesta tecken hittar du i bilagan. Som tur är behöver man väldigt sällan bry sig om vilka teckenkoder ett visst tecken har, utan man kan nästan alltid använda sig av det skrivsätt som visats ovan. Man kan däremot i olika sammanhang utnyttja att char variabler är heltal, som i följande exempel Exempel, skriv ut alfabetet Tecknen 'A' till 'Z' ligger i ordnade i turordning i teckentabellen (se bilaga), man kan därför skriva ut alfabetet genom en iteration som startar på tecknet 'A' och slutar på tecknet 'Z' och för varje iteration skriver ut tecknet som representeras av iterationsvariabeln.
2 #include<iostream> for (char c='a'; c <='Z'; c++) cout<<c; Programmet ger resultatet ABCDEFGHIJKLMNOPQRSTUVWXYZ Press any key to continue Rad 6: Initieringen i for satsen kan läsas som tilldela heltalet/tecknet c teckenkoden till tecknet 'A' ( värdet 65 ) Rad 6: Iterationsvillkoret blir då, repetera tills heltalet/tecknet c har ett värde större än värdet/teckenkoden för tecknet 'Z' Char fält cout<<"hello World"; Vi har tidigare sett i samband med utmatningar hur texter skickats till utskrift genom exempelvis följande sats Uttrycket "Hello World" representerar ett char fält eller en char array. Termerna fält och array är synonymer. I datorns minne representeras detta som flera på varandra följande char instanser 1. H e l l o W o r l d \0 Varje cell representerar en byte av datorns minne. Det sista tecknet kallas för nolltecken och skrivs i programkod som '\0'. Teckenkoden för nolltecknet är 0. Nolltecknet har till uppgift att ange att texten slutar. Varje textfält måste ha ett avslutande nolltecken, i många fall erhåller fältet automatiskt ett nolltecken, men ibland måste man foga till nolltecknet uttryckligen i programkoden. Deklarationer av charfält Char fält kan deklareras ungefär på samma sätt som vanliga variabler, men man måste i deklarationen ange att det är fråga om ett fält. Fältdeklarationer kommer i två olika former 1: char min_text[] = "Hello World"; här skapas ett fält bestående av 12 tecken, och variabeln min_text kallas för en fältvariabel. 1 Termen variabel används ibland synonymt med instans. Det hade varit felaktigt i detta fall eftersom det inte finns någon variabelidentifierare som refererar till de olika tecknen som utgör texten.
3 Operatorn [], kallad indexeringsoperator, anger att det är frågan om ett fält. Vid deklarationer används indexeringsoperatorn för att ange en storlek på fältet. I 1 ovan behövs inte det eftersom storleken är antydd av texten "Hello World" = 11 tecken + nolltecknet = 12 tecken. Fältet min_text är således 12 tecken(bytes) stort. 2: char tom_text[12]; här skapas ett fält bestående av 12 ej initierade char instanser. Det faktum att de ej är initierade som i 1, gör att innehållet inte är definierat eller, om man så vill, innehåller skräp. Denna typ av deklaration har ett liknande syfte som en vanlig variabeldeklaration typ int i; dvs. att fungera som en behållare för texter. 1.2 Fältvariabler En fältvariabel fungerar inte riktigt på samma sätt som en vanlig variabel. Man ska betrakta en fältvariabel som att den anger var fältet börjar. En fältvariabel pekar ut det första tecknet i fältet, eller mer korrekt, den första char instansen. Den anger vilken minnescell, adress, som den första instansen befinner sig i. Man kan i ett schematiskt diagram åskådliggöra deklarationen char min_text[]="hello World"; som Variabel: min_text Adress: Innehåll: 206 H e l l o W o r l d \0 Numreringen av cellerna är påhittad och är olika från programkörning till programkörning. Ett enklare men lika användbart diagram ser ut som min_text En egenskap hos fältvariabler är att de refererar alltid till samma fält. Detta innebär att char min_text[]="hello World"; char tom_text[12]; H e l l o W o r l d \0 // tilldelning? tom_text = min_text; // otillåtet, kan inte referera till nytt fält tom_text = "Hello World"; // otillåtet, samma operation som ovan inte fungerar. Man ska betrakta denna tilldelning som att man försökt låta pilen för tom_text peka på min_text fältet. min_text H e l l o W o r l d \0 tom_text Detta är alltså ej tillåtet eftersom man "slarvar bort" det ursprungliga tomma fältet.
4 1.2.1 Hantering av enstaka fältelement En fältvariabel tillåter genom indexeringsoperatorn att man manipulerar enstaka element. char hej_text[4]; // tomt hej_text[0] = 'H'; // obs första elementet är element 0 hej_text[1] = 'e'; hej_text[2] = 'j'; hej_text[3] = 0; // alternativt skrivsätt = '\0' Programraderna resulterar i att det fält som deklarerats att innehålla 4 char element tilldelas tecken för tecken innehållet. Obs, tecknet H är element nummer 0. min_text H e j \0 1.3 In och utmatning Man kan använda de vanliga in och utströmsoperatorerna på samma sätt som man gör för enkla variabler ex char in_text[256]; cout<<"hej vad heter du?"<<endl; cin>>in_text; cout<<"hejsan "<<in_text<<"!"; En programkörning kan då se ut som Hej vad heter du? Gunvald Hejsan Gunvald! Inmatningen fyller då de 8 första elementen i fältet in_text med texten "Gunvald" + nolltecken. Ett problem med denna typ av inmatning dyker upp om användaren skriver fler än ett ord per inmatning, exempelvis om programkörningen sett ut som Hej vad heter du? Gunvald Larsson Hejsan Gunvald! Det är inte utströmsoperatorn som felar utan det är sättet som inströmsoperatorn fungerar på som är otillräckligt. Det som händer är samma sak som tidigare att in_text fylls med texten "Gunvald" + nolltecken och texten Larsson lämnas kvar i inmatningsbufferten för senare inläsning.
5 Inströmsoperatorn ser alltså "Gunvald Larsson" som två texter eftersom de är åtskilda med ett så kallat vittecken (eng. whitespace). All inmatning med >> operatorn, sk. formaterad inmatning, skiljer element med vittecken. Vittecken är blankstegstecken, tab tecken, nyrad tecken och vagnreturtecken. Jämför sidan 7, inmatning av två flyttal. Det finns två sätt att komma runt denna egenskap hos inströmsoperatorn 1. Gör två inmatningar 2. Använd medlemsfunktionen getline Exempel getline char in_text[256]; cout<<"hej vad heter du?"<<endl; cin.getline(in_text, 255); cout<<"hejsan "<<in_text<<"!"; #include<iostream> getline kallas för medlemsfunktion eftersom den verkar på cin (är medlem av cin). Detta är det första exemplet på ett funktionsanrop. ( ) kallas funktionsoperatorn och har en hög prioritet. Innanför parenteserna anger man funktionsargument. Det första argumentet in_text anger en fältvariabel (eller motsvarande) som ska ta emot den inmatade texten. Det andra argumentet anger den maximala längden på den inmatade texten i form av ett heltal (int). Exempel, in och utmatning med teckenfält char hej[]="välkommen till kronorsfrågan"; char fraga[]="ange ditt för och efternamn"; char fornamn[80], efternamn[80]; cout<<hej<<endl; cout<<fraga<<endl; cin>>fornamn>>efternamn; cout<<"hej "<<fornamn<<" "<<efternamn<<endl; Övning Skriv om exemplet ovan så att samma funktion fås med funktionen getline Texthanteringsoperationer Att handskas med text på detta sätt gör att enkla operationer som tilldelning, jämförelser osv blir ganska besvärliga. De naturliga operatorerna som =, ==, < etc. kommer istället för att tilldela och jämföra texter, bara att tilldela och jämföra fältvariabler. Fältvariabler anger ju bara vilken position/adress i minnet texten befinner sig. Därför är man tvungen att gå vissa omvägar för att exempelvis göra en tilldelning.
6 #include<iostream> Exempel, tilldelning av ett textfält char source[]="den ursprungliga texten"; char target[80]; // en tilldelning görs genom att kopiera element för element for( int idx=0; source[idx]!=0; idx++) target[idx]=source[idx]; target[idx]=0; cout<<"efter tilldelningen innehåller target:"<<target; Principen är att med iteration löpa igenom varje tecken i source och gör tilldelningen tecken för tecken till target. Notera särskilt hur indexoperatorn används. Operationen på rad 11 ska ses som en (char) = (char) operation. Ej (char[])=(char[])! Indexoperatorn väljer alltså ut en speciell char ur ett charfält. Rad 10: Variabeln idx (index) initieras till noll, vilket kan ses som att iterationen börjar på fältets första element. Jämför avsnitt Hantering av enstaka fältelement ovan. Rad 10: source[idx]!=0, iterationsvillkoret anger att repetionen skall fortgå tills nolltecknet (textslut) påträffas. Detta är en väldigt viktig egenskap att komma ihåg för alla textfält. Eftersom ett fält inte innehåller någon information om storleken på fältet har man alltid ett nolltecken som avslutar varje textfält. Rad 10: idx++ nästa tecken i fälten Rad 11: för över det tecken som finns på position idx i source fältet till samma position i target fältet. Rad 12: Iterationen slutar innan nolltecknet förs över. Satsen garanterar att även target avslutas med ett nolltecken Övning: Tänk igenom programexekvering rad för rad, sats för sats, och se till att du förstår meningen hos varje programrad. Detta är en standardkonstruktion av en for sats för fält som du måste behärska.
7 #include<iostream> Exempel, att räkna längden på en text. char in_text[255]; // cout<<"mata in en textrad"<<endl; cin.getline( in_text, 255); for( int idx=0; in_text[idx]!='\0'; idx++); cout<<"längden på den inmatade texten är:"<<idx<<"tecken"; Principen är att gå igenom textfältet tecken för tecken tills man når nolltecket som anger slut på texten. Rad 9: cin.getline( ) används för att kunna ta emot inmatning av flera ord. Rad 11: Observera semikolon ; direkt efter for satsen. Iterationen utför inget annat än att räkna upp idx variabeln tills iterationsvillkoret uppnåtts Övning: Även här måste du tänka igenom programexekvering rad för rad, sats för sats, och se till att du förstår meningen hos varje programrad. Som tidigare är detta en standardkonstruktion av en forsats för fält som du måste behärska. 1.4 Texthanteringsfunktioner I det tidigare avsnittet visades hur for satser var nödvändiga för att göra vanliga textoperationer. Naturligtvis har man sett ett behov av att göra detta på en enklare sätt. Det finns ett bibliotek eller headerfil som heter cstring (string.h på äldre kompilatorer) där många texthanteringsfunktioner finns för att göra de vanligaste funktionerna. Funktioner i cstring (urval) strcpy string copy tilldelning strcat string concatenate konkatenering (ihopslagning) strcmp string compare alfabetisk jämförelse strlen string length textlängd
8 Syntax funktioner i cstring strcpy(char * target, const char * source):char * den kopierade texten strcat(char * target, const char * source):char * den konkatenerade texten strcmp(const char * txt1, const char * txt2):int se nedan strlen(const char * ):int längden, antal tecken Typen char * i tabellen ovan är en variant av char fält som vi kan betrakta som likvärdiga variabler som deklarerats som char text[80]; dvs ett vanligt textfält. (Typen char * är en pekartyp, en pekare är en variabel som pekar ut olika positioner i minnet, som här; början på texten/första tecknet i texten). Typen const char innebär en garanti att inget tecken i texten kommer att ändras. strcat: Att konkatenera texterna "Hello " och "World" ger resultatet "Hello World". strcmp: Det heltal som anges som returvärde kan anta tre olika slags värden <0: txt1 kommer före txt2 alfabetiskt. Mer korrekt enligt teckentabellen vilket innebär att alla stora bokstäver kommer före alla små bokstäver i "alfabetet" (se bilaga för teckenkoder). 0: txt1 och txt2 innehåller likadan text >0: txt2 kommer före txt1. Syntaxtabellen ska tolkas som ex Funktionen strcmp tar 2 argument av textfältstyp, returvärdet är ett heltal. Ett lösryckt avsnitt kan då se ut som: char passwd[80]; cin>>passwd; if( strcmp(passwd, "hemligt") == 0) cout<<"korrekt lösen"; else cout<<"felaktigt lösen"; Notera speciellt hur jämförelsen == 0 måste göras för att kontrollera likhet. Det naturliga för likhet är vanligtvis något i stil med if ( lika(text1,text2)==true). Det konstiga med detta är att heltalet 0 betyder logiskt false. Rad 3: strcmp( ) kallas för funktionsanrop. De argument som ges innanför parenteserna kallas aktuella argument. Det som händer är att ett underprogram anropas/utförs med de aktuella argumenten. Då underprogrammet har utfört sitt arbete lämnar det tillbaka resultatet av programmet i form av returvärdet. Det är sedan med detta returvärde som jämförelsen görs. Dvs if ( (returvärde) == 0) Underprogrammet för strcmp (och de andra funktionerna) är en del av det som kallas standardbiblioteket.
9 Exempel, användning av texthanteringsfunktioner. #include<iostream> #include<cstring> // för texthanteringsfunktioner char namn1[255]; char namn2[255]; // cout<<"mata in ett efternamn"<<endl; cin>> namn1; cout<<"mata in ett annat efternamn"<<endl; cin>> namn2; int len_namn1 = strlen( namn1 ); cout<<"det första namnet innehåller:"<< len_namn1 <<" tecken"<<endl; int jmf = strcmp( namn1, namn2 ); cout<<namn1<<" kommer "; if ( jmf < 0) cout<< "före "<<namn2; else cout<< "efter "<<namn2; cout<<" i ordlistan"<<endl; char namn1och2[512]; // tilldelning namn1 > namn1och2 strcpy( namn1och2, namn1 ); // lägg till texten ", " strcat(namn1och2, ", "); // lägg till namn2 strcat(namn1och2, namn2); cout<<"de båda namnen var "<<namn1och2<<endl; Exempel på programkörning
10 Mata in ett efternamn Larsson Mata in ett annat efternamn Svensson Det f rsta namnet innehõller:7 tecken Larsson kommer f re Svensson i ordlistan De bõda namnen var Larsson, Svensson Press any key to continue Vanligtvis ignoreras de returvärden som erhålls från funktionerna strcpy och strcat. Dessa funktionsanrop är väldigt viktiga för förståelsen för skrivsättet vid funktionsanrop. De är dessutom viktiga för förståelsen av syftet med funktioner. for satsen i exemplet, att räkna längden på en text, är förbluffande lik det underprogram som utförs då funktionen strlen anropas. Teknisk not: Jämför gärna funktioner och operatorer. Ex och strcat( txt1, txt2 ): resultat tal1 + tal 2: resultat en giltig omskrivning av tal1 + tal 2 skulle vara operator+ (tal1, tal2 ): resultat Där enda skillnaden är funktionsnamnet strcat respektive operator+ och dess datatyper. Skillnaden mellan funktioner och operatorer är språkmässigt mest syntaktisk. Det finns en viss fast uppsättning operatorer +,, * osv. medan funktionsnamn och funktioner kan skapas helt efter behov. Annars är den bakomliggande principen densamma. Det finns en operator ( ) funktionsoperatorn (se operatortabell i bilaga) som utvärderas på samma sätt som övriga operatorer, sånär som på det syntaktiska. 1.5 Datatypen string Det finns i moderna C++ miljöer en datatyp speciellt utvecklad för att handskas med text som en enkel datatyp. För denna datatyp fungerar de enkla operatorerna på ett naturligt och enkelt sätt. Datatypen heter string och är en sk. klasstyp. Det innebär att typen är skapad med de enkla datatyperna som bas men med funktioner och operatorer omskrivna så att de kan användas på ett naturligt sätt. Typen är definierad i en header string. Headern cstring behövs inte om man använder typen string.
11 #include<iostream> #include<string> Exempel, operationer för text av typen string string text1 ="Hello World"; // deklaration + initiering string text2; // deklaration text2 = text1; // enkel tilldelning, ingen strcpy if ( text2== text1) // sant, jämför textinnehållet cout<<"texterna är lika"<<endl; if ( text2 < text1) // ej sant, jämför ordning cout<<"text2 är före i ordlistan"<<endl; text1 = "Hello"; text1 +=" "; // konkatenering text2 = text1 + "World"; // konkatenering cout<< text2<<endl; // ger texten "Hello World" int len_text2 = text2.size(); cout<< "består av "<< len_text2 <<" tecken"<<endl; Datatypen string kan i många lägen helt ersätta det gamla skrivsättet med char fält. Programmet ger följande utskrift Texterna õr lika Hello World bestõr av 11 tecken Press any key to continue Övning: Ersätt textfälten i de tidigare exemplen med texter av typen string.
1 Funktioner och procedurell abstraktion
1 Funktioner och procedurell abstraktion Det som gör programkonstruktion hanterlig och övergripbar och överhuvudtaget genomförbar är möjligheten att dela upp program i olika avsnitt, i underprogram. Vår
Att använda pekare i. C-kod
Att använda pekare i C-kod (Bör användas av de som känner sig lite hemma med C-programmering!) Rev 1, 2005-11-23 av Ted Wolfram www.wolfram.se Syfte: Man kan tycka att det är komplicerat att använda pekare
Programmeringsteknik 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
SMD 134 Objektorienterad programmering
SMD 134 Objektorienterad programmering Dagens agenda: Typer i Java: primitiva datatyperna, referenstyper Variabler och variabeltilldelningar med primitiva typer Konstanter av de olika typerna. Heltalsräkning
Föreläsning 3.1: Datastrukturer, en översikt
Föreläsning.: Datastrukturer, en översikt Hittills har vi i kursen lagt mycket fokus på algoritmiskt tänkande. Vi har inte egentligen ägna så mycket uppmärksamhet åt det andra som datorprogram också består,
Dagens föreläsning. Repetition. Repetition - Programmering i C. Repetition - Vad C består av. Repetition Ett första C-program
Dagens föreläsning Programmeringsteknik för Ingenjörer VT05 Föreläsning 3-4 Repetition Datatyper Uttryck Operatorer Satser Algoritmer Programmeringsteknik VT05 2 Repetition Repetition - Programmering i
För att skriva data till skärmen ( konsolen) används objektet System.out tillsammans med metoden println eller print.
1 Inmatning och utskrift Inmatning från tangentbord och utskrift till skärm sker i java med hjälp av objekten System.out och System.in. Dessa båda objekt är exempel på strömmar. En ström är en typ som
4 Sammansatta datatyper
4 Sammansatta datatyper De enkla datatyper som vi hittills använt är otillräckliga när man ska hantera stora datamängder. Vill man exempelvis läsa in 100 reella mätvärden, som man tillfälligt vill spara
Programmering A. Johan Eliasson johane@cs.umu.se
Programmering A Johan Eliasson johane@cs.umu.se 1 Jag Undervisar mest grundläggande programmering på Institutionen för datavetensakap Applikationsutveckling för iphone Applikationsutveckling i Java Datastrukturer
5 Grundläggande in- och utmatning
5 Grundläggande in- och utmatning För att användaren skall kunna kommunicera med programmet krävs att man inkluderar ett eller flera bibliotek med rutiner. I Ada finns det ett antal paket som gör detta
TDIU01 - 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
1 Datorn som miniräknare. 1.1 Räkneoperationer. 1.2 Variabler
1 Datorn som miniräknare I detta avsnitt tas upp hur man kan skriva program som utför enkla räkneoperationer och skriver resultat på skärmen. Syftet är i huvudsak att se hur flera satser kan bygga upp
Skizz till en enkel databas
Skizz till en enkel databas Data: Register En vektor Funktioner: Databas Initiera huvudloop Avsluta Poster (struct( struct) val Mata in Skriv ut Spara Hämta Ändra Radera Enligt diskussion 1999-11-23 Bertil
Programmera 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
Tentamen i Programmering grundkurs och Programmering C
1 of 7 Örebro universitet Institutionen för naturvetenskap och teknik Thomas Padron-McCarthy (thomas.padron-mccarthy@oru.se) Tentamen i Programmering grundkurs och Programmering C för D1 m fl, även distanskursen
Föreläsning 3: Typomvandling, villkor och val, samt textsträngar
Föreläsning 3: Typomvandling, villkor och val, samt textsträngar Camilla Kirkegaard camilla.kirkegaard@liu.se Linköpings universitet Sweden October 14, 2013 1 Innehåll n n n n n Repetition Typomvandlingar
PROGRAMMERING 2 GRUNDLÄGGANDE SEMANTIK 4
Modul 2 Byggstenar PROGRAMMERING 2 GRUNDLÄGGANDE SEMANTIK 4 Byggstenar 4 Nyckelord 4 Tecken 4 Syntax 5 Standardbibliotek 5 Vårt första program 5 Variabler 6 Konstanter 9 Operatorer 9 Övningar 9 Mer operatorer
Datatyper 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
Inledande programmering med C# (1DV402) 27+15=42 1 (22)
27+15=42 1 (22) Variabler Upphovsrätt för detta verk Detta verk är framtaget i anslutning till kursen Inledande programmering med C# vid Linnéuniversitetet. Du får använda detta verk så här: Allt innehåll
Fö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(
Dagens föreläsning. Repetition. Repetition - Programmering i C. Repetition - Vad C består av. Repetition Ett första C-program
Dagens föreläsning Programmeringsteknik för Ingenjörer VT05 Föreläsning 3-4 Repetition Datatyper Uttryck Operatorer Satser Algoritmer Programmeringsteknik för ingenjörer, VT06 2 Repetition Repetition -
Programmering 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
Datorlära 3 Octave Workspace ovh mijlö Skriva text på skärmen Värdesiffror Variabler och typer Strängar Makro Vektorer
Datorlära 1 Introduktion till datasystemet, epost konto, afs hemkonto Introduktion till datorer och datasalar Open Office Calculator Beräkningar med Open Office Calc Diagram med OO Calc Datorlära 2 Utforma
Variabler och konstanter
Variabler och konstanter Deklareras automatisk när man stoppar in data i dem. X = 7 Y = A Z = Kalle Definieras av att de har: ett namn (X) en datatyp (Integer) ett värde (t.ex. 7) Lagras i datorns minne!
En villkorssats är den konstruktion som finns i C++ för att göra en selektion av två alternativa sekvenser. Formen för if satsen är
1 Villkor och styrsatser I de program vi sett tidigare har programkörning inneburit att sats efter sats utförts i den ordning de skrivits i källkoden. Vi har inte kunna ändra programmets uppförande beroende
Programmering, grundkurs, 8.0 hp, Elektro, KTH, hösten 2010
Föreläsning 6 Kapitel 5 5.1 switch-satsen Vi ser på ett par exempel ur boken: int a; srand(time(0)); a=rand()%6+1; if(a==1) printf("hej Du glade\n"); else if(a==2) printf("god dag\n"); else if(a==3) printf("är
Grundläggande programmering med C# 7,5 högskolepoäng
Grundläggande programmering med C# 7,5 högskolepoäng Provmoment: TEN1 Ladokkod: NGC011 Tentamen ges för: Omtentamen DE13, IMIT13 och SYST13 samt öppen för alla (Ifylles av student) (Ifylles av student)
Föreläsning 6: Introduktion av listor
Föreläsning 6: Introduktion av listor Med hjälp av pekare kan man bygga upp datastrukturer på olika sätt. Bland annat kan man bygga upp listor bestående av någon typ av data. Begreppet lista bör förklaras.
Tentamen i. för D1 m fl, även distanskursen. lördag 19 januari 2013
1 of 7 Örebro universitet Institutionen för naturvetenskap och teknik Thomas Padron-McCarthy (thomas.padron-mccarthy@oru.se) Tentamen i Programmering grundkurs och Programmering C för D1 m fl, även distanskursen
Tentamen 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
C++ - En introduktion
C++ - En introduktion De imperativa grunderna för dig som kan programmera Eric Elfving Institutionen för datavetenskap 1 / 72 Översikt 1 Grunderna 2 Uttryck och satser 3 Funktioner 4 Poster 1 Grunderna
Föreläsning 7 Strängar
Föreläsning 7 Strängar I C använder vi strängar för att lagra text. Strängar kommer in ganska sent i kursen, det är jag inte så glad över, men det finns också fördelar, vi har grundat oss rejält nu i funktioner,
Objektorienterad programmering i Java
Objektorienterad programmering i Java Föreläsning 4 Täcker i stort sett kapitel 6 i kursboken Java Software Solutions 1 Läsanvisningar Den här föreläsningen är uppbyggd som en fortsättning av exemplet
Tecken. char. char ch = A ; sizeof(char) = 1 byte (ej 16-bitars tecken som i Java) char namn[]= "Nils"; // längd = 5 bytes
Tecken EDAF30 Programmering i C++ 2. Tecken och texter char char ch = A ; Sven Gestegård Robertz Datavetenskap, LTH 2015 sizeof(char) = 1 byte (ej 16-bitars tecken som i Java) char c1, c2; c1 = A ; c2
Introduktionslaboration
TDDC76 Laborationshandledning 1 TDDC76 Programmering och datastrukturer Introduktionslaboration Denna introduktionslaboration introducerar programmeringsspråket C++, hur du skriver enkla C++-program samt
Programmeringsuppgifter 1
Programmeringsuppgifter 1 Redovisning: Ni demo-kör och förklarar för handledaren några av de program ni gjort. Ni behöver inte hinna allt, redovisa så långt ni kommit. Om ni hinner mer kan ni alltid redovisa
Vem ä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)
Textsträngar från/till skärm eller fil
Textsträngar från/till skärm eller fil Textsträngar [Kapitel 8.1] In- och utmatning till skärm [Kapitel 8.2] Rekursion Gränssnitt Felhantering In- och utmatning till fil Histogram 2010-10-25 Datorlära,
C++ Lektion Tecken och teckenfält
C++ Lektion Tecken och teckenfält Teori Hittills har alla variabler du jobbat med varit olika typer av tal, men du kan också deklarera variabler som håller bokstavstecken. Denna variabeltyp kallas för
Tentamen i. för D1 m fl, även distanskursen. fredag 13 januari 2012
1 of 6 Örebro universitet Akademin för naturvetenskap och teknik Thomas Padron-McCarthy (thomas.padron-mccarthy@oru.se) Tentamen i Programmering grundkurs och Programmering C för D1 m fl, även distanskursen
Programmering A C# VT 2010. Ett kompendie över Programmering A (50p) i c# Stefan Fredriksson 2010 02 08
Programmering A C# VT 2010 Ett kompendie över Programmering A (50p) i c# Stefan Fredriksson 2010 02 08 Innehåll Hjälp och referenser... 3 Kap 1 Introduktion... 3 Steg för steg... 3 Kapitel 2 Variabler...
Tentamen DE12, IMIT12, SYST12, ITEK11 (även öppen för övriga)
Grundläggande programmering med C# Provmoment: Ladokkod: Tentamen ges för: 7,5 högskolepoäng TEN1 NGC011 Tentamen DE12, IMIT12, SYST12, ITEK11 (även öppen för övriga) (Ifylles av student) (Ifylles av student)
Introduktion till PHP
PHP - Grund Copyright 2016 Mahmud Al Hakim mahmud@dynamicos.se www.webacademy.se Introduktion till PHP PHP = PHP: Hypertext Preprocessor PHP är ett programmeringsspråk. PHP är ett skriptspråk som körs
Grunderna i stegkodsprogrammering
Kapitel 1 Grunderna i stegkodsprogrammering Följande bilaga innehåller grunderna i stegkodsprogrammering i den form som används under kursen. Vi kommer att kort diskutera olika datatyper, villkor, operationer
Visual Basic, en snabbgenomgång
Visual Basic, en snabbgenomgång Variabler och Datatyper En variabel är som en behållare. Olika behållare passar bra till olika saker. I Visual Basic(härefter VB) finns olika typer av behållare för olika
Agenda. 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
Lektion 1, del b Utskrifter av variabelvärden Inläsning av värden till variabler
Lektion 1, del b Utskrifter av variabelvärden Inläsning av värden till variabler Denna lektion tar upp Utskrifter: Utskrift av variabelvärden på skärmen i DrJavas Interaktions-fönster eller i ett Popup-fönster
Programmering, 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
Fö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
Kapitel 15: Data/Matrix Editor
Kapitel 15: Data/Matrix Editor 15 Översikt över Data/Matrix Editor... 226 Översikt över list-, data- och matrisvariabler... 227 Starta en Data/Matrix Editor-session... 229 Mata in och visa cellvärden...
Objektorienterad 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
Programmering 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ösningar till tentauppgifterna sätts ut på kurssidan på nätet idag kl 19. Omtentamen i Programmering C, 5p, fristående, kväll, 040110.
1(8) ÖREBRO UNIVERSITET INSTITUTIONEN FÖR TEKNIK Lösningar till tentauppgifterna sätts ut på kurssidan på nätet idag kl 19. Denna tenta kommer att vara färdigrättad On 14/1-04 och kan då hämtas på mitt
Introduktionslaboration
LINKÖPINGS TEKNISKA HÖGSKOLA Institutionen för datavetenskap Avdelningen för programvara och system (SaS) Tommy Olsson 2006-08-31 TDIU06 Programmering g.k Introduktionslaboration Ht1, 2006 Detta häfte
I 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
Sätt att skriva ut binärträd
Tilpro Övning 3 På programmet idag: Genomgång av Hemtalet samt rättning Begreppet Stabil sortering Hur man kodar olika sorteringsvilkor Inkapsling av data Länkade listor Användning av stackar och köer
( ostream ) << ( annan datatyp ) : ostream
1 Inmatning och utskrift Inmatning från tangentbord och utskrift till skärm sker i C++ med hjälp av strömmar. Vi har tidigare sett exempel på utskrift. Vi kommer i det här avsnittet även ta upp inmatning
Föreläsning 1 & 2 INTRODUKTION
Föreläsning 1 & 2 INTRODUKTION Denna föreläsning Vad händer under kursen? praktisk information Kursens mål vad är programmering? Skriva små program i programspråket Java Skriva program som använder färdiga
Ö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
732G 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 (
Labb i Datorsystemteknik och programvaruteknik Programmering av kalkylator i Visual Basic
Labb i Datorsystemteknik och programvaruteknik Programmering av kalkylator i Visual Basic Inledning Starta Microsoft Visual Studio 2005. Välj create Project Välj VB + Vindows Application och välj ett nytt
Föreläsning 5: Introduktion av pekare
Föreläsning 5: Introduktion av pekare Det bör påpekas att det som tas upp i introduktionen inte är reella exempel på kod. Man anväder inte pekare till att peka på enstaka heltal som i exemplen nedan, men
Föreläsning 4: Poster
Föreläsning 4: Poster Följande är genomgånget: type Person_Type is Namn : String(30); Skonr : Float; Kon : Boolean; Diskussion runt detta med olika typer m.m. Har tagit upp vilka operationer man kan göra
Övningar i JavaScript del 2
Övningar i JavaScript del 2 Genm dessa övningar frtsätter intrduktinen av JavaScript. Vi tar nu upp if-satser ch lite mer m funktiner. Vi kmmer ckså in på tillämpningar sm att byta en bild på webbsidan
Exempel 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
Innehå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
2.4. Teckensträngar och logiska uttryck
2.4. Teckensträngar och logiska uttryck I Fortran sparar man text i variabler av typen CHARACTER. För varje tecken reserveras normalt 1 byte i minnet. För att deklarera en teckenvariabel TEXT och samtidigt
Föreläsning 2. Variabler, tilldelning och kodblock{} if-satsen Logiska operatorer Andra operatorer Att programmera
Föreläsning 2 Variabler, tilldelning och kodblock if-satsen Logiska operatorer Andra operatorer Att programmera Variabler Det är i variabler som all data (information) lagras. Genom att ändra värde på
Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling
metoder Föreläsning 2 Objektorienterad programmering DD1332 Array [modifierare] String metodnamn (String parameter) Returtyp (utdata typ) i detta fall String Indata typ i detta fall String 1 De får man
16 Programmering TI -86 F1 F2 F3 F4 F5 M1 M2 M3 M4 M5
16 Programmering Skriva program till TI-86... 214 Köra program... 221 Arbeta med program... 223 Hämta och köra assemblerprogram... 226 Arbeta med strängar... 227 TI -86 M1 M2 M3 M4 M5 F1 F2 F3 F4 F5 214
Hej Då, Karel! Programmering. Vårt första Javaprogram. hh.se/db2004. Java. Grundtyper, variabler och arrayer
Programmering hh.se/db2004 Föreläsning 3: Java. Grundtyper, variabler och arrayer Hej Då, Karel! Verónica Gaspes www2.hh.se/staff/vero www2.hh.se/staff/vero/programmering Center for Research on Embedded
Beräkningsvetenskap föreläsning 2
Beräkningsvetenskap föreläsning 2 19/01 2010 - Per Wahlund if-satser if x > 0 y = 2 + log(x); else y = -1 If-satsen skall alltid ha ett villkor, samt en då det som skall hända är skrivet. Mellan dessa
Omtentamen (del 1, 6 högskolepoäng) i Programkonstruktion och datastrukturer (1DL201)
Omtentamen (del 1, 6 högskolepoäng) i Programkonstruktion och datastrukturer (1DL201) Lars-Henrik Eriksson Fredag 5 april 2013, kl 14:00 17:00, i Polacksbackens skrivsal Hjälpmedel: Inga. Inte heller elektronisk
Datorlära 6. Arbeta med strängar Inmatning med tangentbordet Bygga ett program med inmatning, funktioner, osv
Datorlära 6 Arbeta med strängar Inmatning med tangentbordet Bygga ett program med inmatning, funktioner, osv 1 Arbeta med Strängar Strängar skapas med text inom citattecken, enkla eller dubbla.!>> str=
Dynamisk HTML JavaScript och webbläsarens objektmodell
Dynamisk HTML 1 JavaScript och webbläsarens objektmodell Ove Lundgren (2009) Ove Lundgren - 1 - DOMDHTML2009.doc Innehåll Dynamisk HTML Webbläsarens variabler och metoder. Objektmodellen. Anropa metoder
Chapter 3: Using Classes and Objects
Chapter 3: Using Classes and Objects I dessa uppgifter kommer du att lära dig om hur man använder klasser och metoder från java biblioteket. Du kommer inte att förstå allt som händer bakom metod anrop
Övningar Dag 2 En första klass
Kurs i C++ Sid 1 (5) Övningar Dag 2 En första klass Denna övning går ut på att steg för steg bygga upp en klass och skapa objekt. Vi kommer att utgå från en sammansatt datatyp i en struct och parallellt
TDDC76 - Programmering och Datastrukturer
TDDC76 - Programmering och Datastrukturer C++ - en introduktion Eric Elfving Institutionen för datavetenskap 1 / 72 Översikt 1 Grunderna 2 Uttryck och satser 3 Funktioner 4 Poster 1 Grunderna Ett första
Kompilering 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
"if"-satsen. Inledande programmering med C# (1DV402)
"if"-satsen Upphovsrätt för detta verk Detta verk är framtaget i anslutning till kursen Inledande programmering med C# vid Linnéuniversitetet. Du får använda detta verk så här: Allt innehåll i verket if-satsen
(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
En snabb titt på XML LEKTION 6
LEKTION 6 En snabb titt på XML Bokstaven x i Ajax står för XML, ett mycket användbart beskrivningsspråk som gör det möjligt för Ajax-tillämpningar att hantera komplex strukturerad information. I den här
Föreläsning 11. Arrayer. Arrayer. Arrayer. Lagrar flera värden av samma typ Kan vara primitiva typer eller objekt. Kan ha en array av t.
Föreläsning 11 Arrayer Arrayer Lagrar flera värden av samma typ Kan vara primitiva typer eller objekt int[] tal = new int[3]; Kan ha en array av t.ex: Heltal (int) Tecken (char) Personer (objekt av klassen
Översikt 732G11 PROGRAMMERING 1. Personal. Kursens mål. Litteratur. Kursens innehåll 2010-04-22
Översikt 732G11 PROGRAMMERING 1 Institutionen för datavetenskap Om kursen Vad är programmering (bra för)? Programmeringsspråket Java Utvecklingsmiljön Eclipse Genomgång av några programexempel Programmering
Programmering 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,
Föreläsningsanteckningar, Introduktion till datavetenskap HT S4 Datastrukturer. Tobias Wrigstad
1 Datatyper Tobias Wrigstad Det finns flera olika typer av (slags) data Olika datatyper har olika egenskaper. T.ex. är ett personnummer inte ett tal. (Den sista siffran skall stämma enligt den s.k. Luhnalgoritmen
TDIU01 (725G67) - Programmering i C++, grundkurs
. TDIU01 (725G67) - Programmering i C++, grundkurs Program, datatyper och IO Eric Elfving Institutionen för datavetenskap 7 oktober 2015 Översikt 2/14 Struktur på ett C++-program Köra ett program Variabler
Introduktion till formella metoder Programmeringsmetodik 1. Inledning
Introduktion till formella metoder Programmeringsmetodik 1. Inledning Fokus på imperativa program (ex. C, Java) program betyder härefter ett imperativt program Program bestäms i en abstrakt mening av hur
1 Iteration. 1.1 for-satsen
1 Iteration Iteration innebär en upprepning, repetition av satser. Vi har nu sett hur en villkorssats kan välja att utföra ett satsblock beroende på om ett villkor är uppfyllt, selektion. För selektion
Föreläsning 6 pekare och pekare tillsammans med arrayer
Föreläsning 6 pekare och pekare tillsammans med arrayer Vi ska nu undersöka vad pekare egentligen är och hur de relaterar till arrayer. Det är ett centralt tema i C-programmering. Vi följer boken och går
Klassdeklaration. 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
Begrepp :: Determinanten
c Mikael Forsberg 2008 1 Begrepp :: Determinanten Rekursiv definition :: Kofaktorutveckling Låt oss börja definiera determinanten för en 1 1 matris A = (a). En sådan matris är naturligtvis bara ett vanligt
Introduktion till algoritmer - Lektion 3 Matematikgymnasiet, Läsåret 2014-2015. Lektion 3
Introduktion till algoritmer - Lektion 3 Matematikgymnasiet, Läsåret 014-015 Lektion 3 Denna lektion är temat hur man effektivt ska organisera den data som en algoritm använder för att åtkomsten till datan
Datastrukturer. Erik Forslin. Rum 1445, plan 4 på Nada
Datastrukturer Vad är en datastruktur? Vad är en datatyp? Primitiva datatyper i Java Icke-primitiva datatyper i Java Minnesexempel med datastrukturer Vektorer i Java Erik Forslin efo@nada.kth.se Rum 1445,
TDIU01 - Programmering i C++, grundkurs
TDIU01 - Programmering i C++, grundkurs Grundläggande satser och uttryck Eric Elfving Institutionen för datavetenskap 5 augusti 2014 Översikt Uttryck Litteraler Operatorer Satser Villkor Upprepning Teckenhantering
Objektorienterad 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
TDDC77 Objektorienterad Programmering
TDDC77 Objektorienterad Programmering Föreläsning 3 Sahand Sadjadee IDA, Linköpings Universitet Hösttermin 2018 Outline Operatorer Java Standard Library Inmatning Operatorer operatorer En operator är en
Hjälpmedel för kompilatorkonstruktion, DVB004
Hjälpmedel för kompilatorkonstruktion, DVB004 Version 4.2 021104 Göran Fries 031104 GF Kompilatorn kan lämpligen konstrueras i tre ganska fristående pass (p1,p2,p3). Första passet gör en lexikalisk analys,
Uttryck, satser och strömhantering
Linköpings Universitet Institutionen för datavetenskap (IDA) UPP-gruppen 2018-09-06 Mål Uttryck, satser och strömhantering I denna laboration ska du lära dig Formaterad inläsning och utskrift Vanliga repetitions-
Programmering i C++ EDA623 Mer om klasser. EDA623 (Föreläsning 6) HT 2013 1 / 26
Programmering i C++ EDA623 Mer om klasser EDA623 (Föreläsning 6) HT 2013 1 / 26 Mer om klasser Innehåll Konstanta objekt Statiska medlemmar Pekaren this Vänner (friends) Överlagring av operatorer EDA623