Læringsmål og pensum

Like dokumenter
TDT4105 Informasjonsteknologi grunnkurs: Uke 42 Strenger og strenghåndtering

Læringsmål og pensum. Tekststrenger Læringsmål Skal kunne forstå og programmere med tekststrenger. Pensum Matlab, Chapter 7

TDT4110 Informasjonsteknologi grunnkurs: Eksempler. Mangekanter

Læringsmål og pensum. Oversikt

Binærfiler versus tekstfiler

Datastrukturer (kap. 8)

TDT4110 Informasjonsteknologi grunnkurs: Tema: Betingelser og logiske uttrykk Utgave 3: Kap. 3

if (be): else (not_to_be): TDT4110 Informasjonsteknologi grunnkurs: Tema: Betingelser og logiske uttrykk Utgave 3: Kap.

TDT4110 IT Grunnkurs Høst 2016

TDT4110 Informasjonsteknologi grunnkurs: Tema: Mer om strenger. - 3rd edition: Kapittel 8. Professor Alf Inge Wang

TDT4105 Informasjonsteknologi, grunnkurs MatLab: Filbehandling - load, save, type - fopen, fgetl, feof, fprintf, fclose

Bruk piazza for å få rask hjelp til alles nytte!

TDT4105 Informasjonsteknologi, grunnkurs

TDT4110 IT Grunnkurs Høst 2016

TDT4105 Informasjonsteknologi, grunnkurs. Mer om funksjoner: - rekursive funksjoner

Læringsmål og pensum. Oppgave

Største primtallsfaktor i tall

TDT4110 Informasjonsteknologi grunnkurs: Uke 43: Datastrukturer (kap. 8)

Palindrom - iterativt

Noen innebygde funksjoner - Vektorisering

O-notasjon og kompleksitet

Noen innebygde funksjoner - Vektorisering

Ta kontakt i pausen. Viktig at vi kommer i gang med dette arbeidet!

Kapittel september Institutt for geofag Universitetet i Oslo. GEO En Introduksjon til MatLab. Kapittel 7.

TDT4105 Informasjonsteknologi grunnkurs: Uke 43: Datastrukturer (kap. 8)

TDT4105 Informasjonsteknologi grunnkurs Øvingsforelesning 2. Iver Dihle Skjervum Vit.ass. ITGK

TDT4105 Informasjonsteknologi, grunnkurs. Introduksjon til programmering i Matlab

TDT4105 IT Grunnkurs Høst 2016

HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring - AITeL

TDT4105 IT Grunnkurs Høst 2014

ITGK - H2010, Matlab. Repetisjon

TDT4105 Informasjonsteknologi, grunnkurs. Introduksjon til programmering i Matlab. Rune Sætre / Anders Christensen {satre, anders}@idi.ntnu.

Læringsmål og pensum. if (be): else (not_to_be):

Del 2 Tabeller, arrays, strenger

Del 1 En oversikt over C-programmering

Mål. Pensum. TDT4110 Informasjonsteknologi grunnkurs: Tema: Unntak (exceptions) (Kap 6) Dictionaries (Kap. 9) Terje Rydland - IDI/NTNU

Repetisjon, del 2. TDT 4110 IT Grunnkurs Professor Guttorm Sindre

Python: Strenger 3. utgave: Kapittel 8

TDT4110 IT Grunnkurs Høst 2015

TDT4110 Informasjonsteknologi grunnkurs: Tema: Betingelser og logiske uttrykk. - 3rd edition: Kapittel 3. Professor Alf Inge Wang

HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring - AITeL

Læringsmål og pensum. Oversikt. Læringsmål Forstå og bruke cell array og strukturer. Pensum Matlab, Chapter 8

TDT4105/TDT4110 Informasjonsteknologi grunnkurs:

Obligatorisk oppgave 1 INF1020 h2005

TDT4102 Prosedyreog objektorientert programmering Vår 2016

TDT4105 IT Grunnkurs Høst 2014

TDT4105/TDT4110 Informasjonsteknologi grunnkurs:

Høst Øving 5. 1 Teori. 2 Månedskalender. Norges teknisknaturvitenskapelige universitet Institutt for datateknikk og informasjonsvitenskap

Oppsummering fra sist

HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring - AITeL

Øvingsforelesning TDT4105 Matlab

Norsk informatikkolympiade runde

TDT4105 Informasjonsteknologi, grunnkurs

TDT4105 Informasjonsteknologi, grunnkurs. Introduksjon til programmering i Matlab. Rune Sætre / Anders Christensen {satre,

Med løkke: Læringsmål og pensum. TDT4110 Informasjonsteknologi grunnkurs: Tema: Løkker/Sløyfer Utgave 3: Kap. 4 Utgave 2: Kap. 5. Mål.

INF1000 undervisningen INF 1000 høsten 2011 Uke september

INF 1000 høsten 2011 Uke september

Øvingsforelesning 1 Python (TDT4110)

TDT4110 Informasjonsteknologi grunnkurs: Tema: Mer om strenger Utgave 3: Kap. 8

Norsk informatikkolympiade runde

HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring - AITeL

Løsningsforslag Kontinuasjonseksamen i TDT4110 Informasjonsteknologi - grunnkurs

TDT4110 Informasjonsteknologi grunnkurs: Tema: Lister og tupler. - 3rd edition: Kapittel 7. Professor Alf Inge Wang

Python: Valg og betingelser. TDT4110 IT Grunnkurs Professor Guttorm Sindre

Eksamensoppgave i IFUD1025 Programmering i Java og IINI4013 Programmering i Java

TDT4105 Informasjonsteknologi, grunnkurs

Designe et program. TDT4110 Informasjonsteknologi grunnkurs: Kapittel 2 Python: Bruk av funksjoner, variabler og input/output. Mål.

INF1000 Behandling av tekster

Tirsdag 21/11. Onsdag 24/11. Tirsdag 12/12. TDT4110 Informasjonsteknologi grunnkurs: Tema: Et større case

Python: Variable og beregninger, input og utskrift. TDT4110 IT Grunnkurs Professor Guttorm Sindre

Norsk informatikkolympiade runde. Sponset av. Uke 46, 2017

Python: Løkker. TDT4110 IT Grunnkurs Professor Guttorm Sindre

TDT4110 Informasjonsteknologi grunnkurs: Python: Repetisjon. Professor Alf Inge Wang

UNIVERSITETET I OSLO

Eksamensoppgave i IFUD1025 Programmering i Java

Python: Løkker. TDT4110 IT Grunnkurs Professor Guttorm Sindre

INF Ekstrainnlevering

TDT4105 Informasjonsteknologi, grunnkurs. Introduksjon til programmering i Matlab. Forelesningsinfo. Tider Mandag Tirsdag Onsdag Torsdag Fredag

TDT4105 Informasjonsteknologi, grunnkurs (ITGK)

UNIVERSITETET I OSLO

Kapittel 1 En oversikt over C-språket

INF1000 (Uke 15) Eksamen V 04

INF1000 (Uke 15) Eksamen V 04

Øvingsforelesning 5 Python (TDT4110)

Norsk informatikkolympiade runde. Sponset av. Uke 46, 2015

Mål. Pensum. TDT4110 Informasjonsteknologi grunnkurs: Tema: Et større case. Terje Rydland - IDI/NTNU. Lære å lage større og sammensatte programmer

HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring - AITeL

TDT4102 Prosedyre og Objektorientert programmering Vår 2015

HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring - AITeL

Øvingsforelesning 7 i Python (TDT4110)

Mål. Pensum. TDT4110 Informasjonsteknologi grunnkurs: Tema: Filer og unntak (exceptions) Utgave 3: Kap. 6. Terje Rydland - IDI/NTNU

INF1000 EKSTRATILBUD. Stoff fra uke 1-5 (6) 3. oktober 2012 Siri Moe Jensen

Norsk informatikkolympiade runde

Øvingsforelesning 5 Python (TDT4110)

MAT1030 Plenumsregning 3

Programmering Høst 2017

Lese fra fil. INF1000 : Forelesning 5. Eksempel. De vanligste lesemetodene. Metoder:

Læringsmål og pensum. Algoritmeeffektivitet

TDT4110 Informasjonsteknologi grunnkurs: Tema: Algoritmer i praksis. Professor Alf Inge Wang

Norsk informatikkolympiade runde

Transkript:

1 Kunnskap for en bedre verden TDT4110 Informasjonsteknologi grunnkurs: Uke 42 Strenger og strenghåndtering Amanuensis Terje Rydland Kontor: ITV-021 i IT-bygget vest (Gløshaugen) Epost: terjery@idi.ntnu.no Tlf: 735 91845 TDT4105 IT G 1 Uke42-Matlab-9-kap7-Tekststrenger_TR 9. oktober 2015 2 Læringsmål Læringsmål og pensum Skal kunne forstå og programmere med tekststrenger Funksjoner blanks, double, char, deblank, ischar, isletter, isspace, length, lower, num2str, size, str2num, strcat, strcmp, strfind, strncmp, strrep, strtok, strtrim, upper, Pensum Matlab, Kapittel 7 2 Uke42-Matlab-9-kap7-Tekststrenger_TR 9. oktober 2015

3 Tekststrenger Består av et hvilket som helst antall bokstaver (tegn) omsluttet av enkel apostrof: 'dette er en streng' '2a@.' 'c' Behandles som vektorer der hver enkelt bokstav er et element Mange av vektoroperasjonene kan derfor anvendes på strenger >>length('hus') Ans= 3 3 Uke42-Matlab-9-kap7-Tekststrenger_TR 9. oktober 2015 4 Behandling av tekst i Matlab Alle tegn som kan benyttes i forbindelse med behandling av data er representert i datamaskinens tegntabell De første 128 tegnene i tegntabellen utgjør ASCII tabellen. Lenke til ASCII tabellen: http://www.asciitable.com/ Fra tabellen kan vi lese at tegnet A ligger på plass 65 i ASCIItabellen Ved sortering av tekst er det bokstavenes plass i ASCII tabellen (datamaskinens tegn-tabell) som avgjør rekkefølge Problemet med norsk tekst er Æ, Ø, Å, æ, ø og å 4 Uke42-Matlab-9-kap7-Tekststrenger_TR 9. oktober 2015

5 24327 24326 24325 24324 24323 24322 24321 24320 24319 24318 24317 24316 24315 Tegnet A lagret i primærlager (RAM) A Behandling av tekst i Matlab 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 1 0 1 0 0 0 0 0 1 Hver byte er bygd opp av åtte bits. Matlab benytter to byte for å lagre et tegn (Octave 1 byte) Den siste byten gir ASCIIkode Tegnets binære tegnkode (tall i to-talls systemet) Tegnets desimale tegnkode 0 2 7 + 1 2 6 + 0 2 5 + 0 2 4 + 0 2 3 + 0 2 2 + 0 2 1 + 1 2 0 = 65 5 Uke42-Matlab-9-kap7-Tekststrenger_TR 9. oktober 2015 6 ASCII-tabellen 01000001 = 0 2 7 + 1 2 6 + 0 2 5 + 0 2 4 + 0 2 3 + 0 2 2 + 0 2 1 + 1 2 0 = 65 69 68 67 66 65 64 63 62 61 E D C B A @? > = Utsnitt av datamaskinens tegntabell Tegnet A sin binære tegnkode : 01000001 Tegnet A sin desimale tegnkode : 65 Tegnkoden angir tegnets plass i tegntabellen (tabellen starter med element 0 på første plass) 6 Uke42-Matlab-9-kap7-Tekststrenger_TR 9. oktober 2015

7 Tre Forskjellige Variabeltyper bryter=true tall = 5 (talltekst='5') tekst = 'Fem' 7 Uke42-Matlab-9-kap7-Tekststrenger_TR 9. oktober 2015 8 Strengoperasjoner Konkatenering (sammentrekking) horisontalt: >>start = 'heia'; >>slutt = 'RBK'; >>[start slutt] heiarbk vertikalt: >>char( start, slutt ) heia RBK 8 Uke42-Matlab-9-kap7-Tekststrenger_TR 9. oktober 2015

9 Flere funksjoner for generering av tekststrenger Med blank streng: blanks >>[start blanks(5) slutt] Ans= heia RBK lage matrise av strenger: char >> melding = char( 'God dag','studenter' ) melding = God dag Studenter >> size(melding) 2 9 skrive til en streng: sprintf >> tekst = sprintf('tilfeldig tall er %d', randi(9) ); >> strcat(tekst, '!!!') Tilfeldig tall er 8!!! 9 Uke42-Matlab-9-kap7-Tekststrenger_TR 9. oktober 2015 10 Noen andre nyttige strengfunksjoner >>melding = ' AbCdeFgHi ' Fjerne blanke i slutten av strenger: deblank >>deblank( melding ) AbCdeFgHi Fjerne blanke i både start og slutt av streng: strtrim >>strtrim( melding ) AbCdeFgHi Forandre til små bokstaver lower >> lower( melding ) abcdefghi Forandre til store bokstaver upper >>upper( melding ) ABCDEFGHI 10 Uke42-Matlab-9-kap7-Tekststrenger_TR 9. oktober 2015

11 Sammenligning av tekst Sammenligning av tegn i strenger: strcmp >>ord1= 'hus'; >>ord2= 'hud'; >>ord3= 'hustru'; >>strcmp(ord1,ord1) 1 >>strcmp(ord1,ord2) 0 >>strncmp( ord1, ord3, 3 ) 1 11 Uke42-Matlab-9-kap7-Tekststrenger_TR 9. oktober 2015 12 Finn, erstatt og splitt tekst Finn den 2. strengen i den 1., og returner indeksen(e) / posisjonen(e) >>strfind( 'abcd abcd', cd') 3 8 Merk rekkefølge på parameterne: strfind( høystakk, nål ) Ingen forekomster -> [] returneres Erstatte tekst i en streng: >>strrep('abcd abcd','a','x') Splitt tekst i to : xbcd xbcd >>[start rest] = strtok( 'heia RBK' ) start= heia rest= RBK 12 Uke42-Matlab-9-kap7-Tekststrenger_TR 9. oktober 2015

13 Konvertering mellom tekst og tall Tekst til tall: str2num >> nummer = str2num('123.456') nummer = 123.456 >> nummer2 = str2num('1 2 3'); nummer2 = 1 2 3 >> num2str(123) 123 13 Uke42-Matlab-9-kap7-Tekststrenger_TR 9. oktober 2015 14 Funksjonene is Returner en boolsk vektor med samme lengde som strengen og som indikerer om is-betingelsen er oppfylt: >>isletter('rbk23') 1 1 1 0 0 >>isspace('rbk 23') 0 0 0 1 0 0 >>vektor = 'RBK' >>ischar(vektor) 1 14 Uke42-Matlab-9-kap7-Tekststrenger_TR 9. oktober 2015

15 Eksempel 1 Lag et program i Matlab som leser inn et tegn og som skriver ut tegnets desimale tegnkode tegn = input('skriv inn et tegn (# avslutter) :, s ); while (tegn ~= '#') kode = double(tegn); fprintf('innlest tegn %2s\n',tegn); fprintf('desimal tegnkode %3.0f\n',kode); tegn = input('skriv inn et tegn (# avslutter) :, s ); end Funksjonen double( ) mottar tegn og returnerer tegnkode (10- tallsystem) 15 Uke42-Matlab-9-kap7-Tekststrenger_TR 9. oktober 2015 16 Eksempel 2 Lag et program i Matlab som leser inn en desimal tegnkode og som skriver ut det tegn som ligger på tegnkodens plass i tegntabellen kode = input('skriv inn et tegnkode (-1 avslutter) : '); while (kode > 0) tegn = char(kode); fprintf('innlest tegnkode %3.0f\n',kode); fprintf('aktuelt tegn %2s\n',tegn); kode = input('skriv inn et tegnkode (-1 avslutter) : '); end Funksjonen char( ) mottar en tegnkode og returnerer det tilhørende tegn 16 Uke42-Matlab-9-kap7-Tekststrenger_TR 9. oktober 2015

17 Eksempel 3 Lag et program som leser inn en tekst fra tastaturet Les også inn to tall som angir start- og sluttindeks for en deltekst i teksten Til slutt skrives delteksten ut på skjerm. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 D e t t e e r e n t e k s t 17 ind1 ind2 e r e n 17 Uke42-Matlab-9-kap7-Tekststrenger_TR 9. oktober 2015 18 finndelstreng() 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 D e t t e e r e n t e k s t 17 ind1 ind2 delstreng = tekst( ind1:ind2 ); delstreng = [ tekst(ind1) tekst(ind1+1) tekst(ind2) ] Logisk tolking while ( strcmp( svar, 'ja ) ) Funksjonen strcmp( ) mottar to tekststrenger. Dersom de er identiske returneres true, ellers returneres verdien false 18 Uke42-Matlab-9-kap7-Tekststrenger_TR 9. oktober 2015

19 19 Uke42-Matlab-9-kap7-Tekststrenger_TR 9. oktober 2015 20 Eksempel 4 Lag et program som leser inn en (hoved-) tekst fra tastaturet. Deretter leses det inn en ny (del-) tekst. Programmet skal sjekke om delteksten finnes i hovedteksten. Melding skal skrives ut. tekst = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 D e t t e e r e n t e k s t 17 deltekst = e r e n length(tekst) Funksjonen length( ) mottar en tekst og returnerer lengden av denne (antall tegn i teksten) 20 Uke42-Matlab-9-kap7-Tekststrenger_TR 9. oktober 2015

21 tekst = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 D e t t e e r e n t e k s t 17 deltekst = e r e n resultat = 'nei'; for (m = 1 : lengdetekst - lengdedeltekst + 1) delstreng = tekst( m : m+lengdedeltekst-1 ); if ( strcmp(deltekst, delstreng) ) resultat = 'ja'; end end Bygger delstreng som er like lang som deltekst, fra indeks m Sjekker om nåværende delstreng er lik den deltekst som vi leter etter 21 Uke42-Matlab-9-kap7-Tekststrenger_TR 9. oktober 2015 22 22 Uke42-Matlab-9-kap7-Tekststrenger_TR 9. oktober 2015

23 Formatet : %-32s reserverer 32 plasser for en tekst. Minustegnet gjør at teksten venstre-justeres innen plassen. Dette er en tekst D e t t e e r e n t e k s t 23 Uke42-Matlab-9-kap7-Tekststrenger_TR 9. oktober 2015 24 Eksempel 5 Vi skal lage to funksjoner for «hemmelig kommunikasjon» i Matlab krypter() leser inn en tekst og returnerer en kryptert versjon (ASCII +1) dekrypter() leser inn en kryptert melding, og returnerer den opprinnelige teksten (ASCII -1) Eksempel på innlest tekst og kryptering >> krypter('jeg heter Terje Rydland') Kfh!ifufs!Ufskf!Szemboe Eksempel på dekryptering >> dekrypter(ans) Jeg heter Terje Rydland 24 Uke42-Matlab-9-kap7-Tekststrenger_TR 9. oktober 2015