1 Programmera med strängar nr 9 Tal till sträng Sträng till tal Grep Sträng till lista av ord.

Slides:



Advertisements
Liknande presentationer
Array Skriv ett program som frågar följande: ”Hur många tal vill du mata in?” användaren matat in ett tal t.ex n. då frågar programmet n ggr följande.
Advertisements

void hittaMax(int tal[], int antal, int *pmax) { int i; ??=tal[0]; for(i=1;i??) ??=tal[i]; } int main() { int v[]={1,2,3,4,2}; int.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2004 Datastrukturer och algoritmer Föreläsning 4.
1 Listor En sekvens värden av samma typ Nr 5. 2 Listor Sekvens av värden, element Variabelt antal Alla med samma typ Bara första elementet direkt åtkomligt.
1 Logikprogrammering ons 11/9 David Hjelm. 2 Repetition Listor är sammansatta termer. De består av en ordnad mängd element. Elementen i en lista kan vara.
2D1311 Programmeringsteknik med PBL
Prolog, Mån 16/9 Rebecca Jonson.
Logikprogrammering, Mån 23/9 Rebecca Jonson. Repetition P :- Q, R. Deklarativ syn: –P är sann om Q och R är sanna. –Av Q och R följer P Procedurell syn:
Programmeringsteknik
Nya typer Konstruerare, selektorer och predikat Rekursiva datatyper
Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 1 Föreläsning 11: Funktionella språk Funktioner och variabler i matematiken Funktionella.
Logikprogrammering Ons, 25/9
Abstrakta datatyper Moduler nr 12
Multiplicera lika tal med 3 siffror som slutar på 55
Programmeringsteknik Föreläsning 4 Skolan för Datavetenskap och kommunikation.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Datastrukturer och algoritmer Föreläsning 4.
Några standardalgoritmer
Välkommen Vahid Mosavat
Programmeringsteknik för K och Media
Programmeringsteknik för K och Media
Grundläggande programmering
1 Föreläsning 3 Datalogi för E1 / 2D1343 Repetition List List operationer Stränghantering For-slingor.
Föreläsning 2 Datalogi för E1 2D1343
Föreläsning 5 Python: argument från kommando-tolken
Föreläsning 10 Länkade lista Stack och Kö Att arbeta med listor
Föreläsning 2 Primitiva datatyper Variabler och konstanter Tilldelning Inläsning Operatorer Villkorssatsen if Slingor: while och for.
Hashing / Hash tabeller -- Kapitel 20. Hash? Varför en annan datastruktur? Konstant tid för både insert- och find- operationer.
Växjö 15 april -04Språk & logik: Reguljära uttryck1 DAB760: Språk och logik 15/4: Finita automater och 13-15reguljära uttryck Leif Grönqvist
1 Introduktion till SML Nr 2 Värden, typer och funktioner.
© Patrick Blackburn, Johan Bos & Kristina Striegnitz FL 5: Aritmetik Teori –Introducerar Prologs inbyggda operationer för aritmetik –Tillämpar dessa på.
Föreläsning 11 Arrayer.
1 Funktioner Nr 3 Funktionstyper, högre ordningens funktioner och polymorfism.
Programmering B PHP Lektion 2
Föreläsning 4 Kö Implementerad med array Implementerad med länkad lista Djup kontra bredd Bredden först mha kö.
Föreläsning 2 Kort Översikt Över Javaspråket. Källkodsformat Unicode används åäöμψζ tillåtna Inte alla miljöer klarar av det Källkod Bytekod Java VM för.
Vektorer (klassen Vector) Sortering
Deklarera en struct som kan användas för att representera en rät linje Använd den I main för att deklarera en variabel som du initierar så att den representerar.
1 Träd nr 11 Binära träd ordnade, traversering, sökning.
Föreläsning 3 Programmeringsteknik och Matlab DD1312
Listor En lista är en föränderlig ordnad samling objekt.
Grundläggande programmering
1 Mer om Nr 7 Rekursion, listor, typer och funktioner.
F. Drewes, Inst. f. datavetenskap1 Föreläsning 11: Funktionella språk Funktioner och variabler i matematiken Funktionella språk LISP, ML och.
Föreläsning 10 Stränghantering.
Logikprogrammering 21/10 Binära träd
Föreläsning 1 Reserverade ord Javas API Identifierare Litteraler Variabler Kompilering och interpretering.
Problemlösningsmetodik
Jonny Karlsson INTRODUKTION TILL PROGRAMMERING Föreläsning 3 ( ) INNEHÅLL: -Tabeller -Villkorssatser -Repetitionssatser.
F4 - Funktioner & parametrar 1 Programmeringsteknik, 4p vt-00 Modularisering ”svarta lådor” Väl definierade arbetsuppgifter Enklare validering Enklare.
William Sandqvist C-programmering ID120V Stack och Kö William Sandqvist
Föreläsning 4 Listor, tupler, och for-loopar. Listor En lista är en föränderlig ordnad samling objekt. Listor skapas med hakparenteser. lista = [12,13,14,15]
DATABASHANTERING för programmerare Lektion 6 Mahmud Al Hakim
Länkade listor Binära träd
Planering av ett större program - Funktioner, moduler, if och Boolean Linda Mannila
1 Mönstermatchning och rekursion Nr 4. 2 Förenklad notation val fnname = fn name => expression Förenklas till fun fnname name = expression Exempel fun.
Satslogik, forts. DAA701/716 Leif Grönqvist 5:e mars, 2003.
TILLÄMPAD DATALOGI (TILDA) Övning 4
Negativa tal – några exempel
Föreläsning 3 Villkorssatsen if Slingor: while och for Felsökning.
TILLÄMPAD DATALOGI (TILDA) Övningsgrupp 2 Marcus Hjelm
F2 1 Programmeringsteknik, 4p vt-00 Kommentarer Allt mellan /* och */ Varje kommentar byts ut mot en blank av kompilatorn /* Exempel på uttryck, tilldelningsoperatorn.
TILLÄMPAD DATALOGI (TILDA) Övning 2
Föreläsning 7 programmeringsteknik och Matlab 2D1312/2D1305 Metoddeklaration och parametrar Arrayer och ArrayList.
-Repetition -Variabler -Primitiva typer (+ boolean) -Operatörer +, ++, --, -Typ konvertering -Wrapper klasser -Jämförelse operatörer,(==, =,,!=, !) -String.
Flyttal ● Alla tal kan skrivas tal = ± m. 2 exp ● ± lagras separat (1 bit), resten är absolutbelopp ● m kallas mantissa och anger siffrorna i talet ● exp.
-Repetition -Variabler -Primitiva typer (+ boolean) -Operatörer +, ++, --, -Typ konvertering -Wrapper klasser -Jämförelse operatörer,(==, =,,!=, !) -String.
Lennart Edblom, Frank Drewes, Inst. f. datavetenskap 1 Föreläsning 3: Abstrakta datatyper Algebror Abstrakta datatyper Inkapsling och informationsmaskering.
Manada.se Algebra och funktioner. 1.1 Algebra och polynom Förkunskaper: Grundläggande algebra Konjugatregeln och kvadreringsreglerna Andragradsekvationer.
Lektion 4.
Föreläsning 3 Programmeringsteknik
Presentationens avskrift:

1 Programmera med strängar nr 9 Tal till sträng Sträng till tal Grep Sträng till lista av ord

2 Omvandla tal till strängar Specifikation –En funktion som givet ett heltal returnerar talet som en sträng, om talet är negativ ska det starta med en tilde. Design –Kontrollera först om det är negativt, om det är det se till att strängen börjar med en tilde. –Den delar upp det positiva talet med en entalsdel och den andra som resten av talet. –Entalsdelen omvandlas till ett tecken och läggs sist. –Resten behandla på samma sätt som hela det positiva talet.

3 Implementation fun int2char n =chr (n + ord "0") val int2char = fn : int -> string fun pos2string n = if n < 10 then int2char n else pos2string (n div 10)^ int2char (n mod 10) val pos2string = fn : int -> string fun int2string n = if n < 0 then "~" ^ pos2string (abs n) else pos2string n val int2string = fn : int -> string uml> int2string 234; val it = "234" : string uml> int2string ~776; val it = "~776" : string

4 Omvandla en sträng av siffror till ett tal Design –Omvandla till listor av tecken –Kontrollera om första tecknet är ~, dvs talet är negativt –Omvandla varje tecken till en tal –Omvandla listan av tal till ett tal, uttnyttja positionen dvs 235 = 2 * * * 10 0 och 235 = * ( * 2)

5 Implementation Tecken till tal fun char2int c = ord c - ord "0" val char2int = fn : string -> int Omvandla en listan av tecken till ett tal, förutsätt att den är i omvänd ordning fun charlist2int [] = 0 | charlist2int (x::xs) = char2int x + 10 * charlist2int xs val charlist2int = fn : string list -> int Kontroll om första tecknet är negativt fun list2int ("~"::xs) = ~ (charlist2int (rev xs)) | list2int xs = charlist2int (rev xs) val list2int = fn : string list -> int

6 Sträng till tal val string2int = list2int o explode val string2int = fn : string -> int Test - string2int "234"; > val it = 234 : int - string2int "~345"; > val it = ~345 : int - string2int(int2string ~98245); > val it = ~98245 : int

7 Grep - finns en sträng i en annan sträng? Design –Omvandla båda strängarna till listor av tecken –Kontrollera om den andra strängen börjar med den första genom att jämföra tecken för tecken. –Om den inte gör det ta bort ett tecken från andra strängen och försök igen.

8 Implementation Kontrollera om en lista är början på en annan lista fun startswith nil _ = true | startswith _ nil = false | startswith (x::xs) (y::ys) = x = y andalso startswith xs ys > val startswith = fn : ''a list -> (''a list -> bool) Kontrollera om en lista är en dellista av annan lista fun sublist [ ] lin = true | sublist _ [ ] = false | sublist reg lin = startswith reg lin orelse sublist reg (tl lin) > val sublist = fn : ''a list -> (''a list -> bool)

9 Huvudfunktion Omvandla till listor av strängar och se om första lista är en dellista till den andra fun grep regexp line = sublist (explode regexp) (explode line) > val grep = fn : string -> (string -> bool) Test - grep "HEE" "HEHHEHHEE"; > val it = true : bool - grep "HEE" "HEHHEHHE"; > val it = false : bool - grep "" "Any string"; > val it = true : bool - grep "Any string" ""; > val it = false : bool

10 Hitta orden i en sträng Design –Omvandla strängen till en lista av tecken –Sök till första tecken som särskiljer ord (avskiljare) –Spar listan fram till det tecknet (ett ord) –Tag bort de avskiljare som nu finns först –Upprepa det tidigare tills listan är tom –Omvandla orden som från listor till strängar

11 Implementation Känna igen en avskiljare fun isseparator x = member x (explode ",.()?") val isseparator = fn : string -> bool Ta bort avskiljare från början av en lista fun rem_sep [] = [] | rem_sep (x::xs) = if isseparator x then rem_sep xs else x::xs val rem_sep = fn : string list -> string list

12 Implementation forts. Söka till separerare och och spara del orden i en ackumulator. Dela på det sättet upp listan. fun wordsplit word [] = [rev word] | wordsplit word (x::xs) = if isseparator x then rev word :: wordsplit [] (rem_sep xs) else wordsplit (x::word) xs val wordsplit = fn : string list -> (string list -> string list list) Omvandla till lista, dela upp i ord, omvandla tillbaka till strängar val words = map implode o wordsplit [] o explode val words = fn : string -> string list

13 Exempel words "Hej detta är ett (litet) meddelande. Vi ses"; val it = ["Hej","detta","är","ett","litet","meddelande", "Vi","ses"] : string list