TDDD78, TDDE30, 729A Tecken och strängar med och utan Java

Relevanta dokument
Tecken och strängar i Java

Tecken och strängar i Java

Tecken och strängar i Java

F2 Datarepresentation talbaser, dataformat och teckenkodning

F2 Datarepresentation talbaser, dataformat och teckenkodning EDAA05 Datorer i system! Roger Henriksson!

F3 Datarepresentation teckenkodning och datakompression EDAA05 Datorer i system! Roger Henriksson!

F3 Datarepresentation teckenkodning och datakompression

Programmering i C++ EDAF hp. EDAF30 (Föreläsning 2) HT / 18

Datatyper och kontrollstrukturer. Skansholm: Kapitel 2) De åtta primitiva typerna. Typ Innehåll Defaultvärde Storlek

Tecken. char. char ch = A ; sizeof(char) = 1 byte (ej 16-bitars tecken som i Java) char namn[]= "Nils"; // längd = 5 bytes

Parameteröverföring. Exempel. Exempel. Metodkropp

Variabler, värden och typer

Enkla datatyper minne

Classes och Interfaces, Objects och References, Initialization

Motivation. Programmeringsuppgift: En första ansats: Lagra info om anställda Håll reda på varje anställds närmaste chef. som också är en anställd!

Sammansatta datatyper Generics: Parametrisk polymorfism

file:///c:/users/engström/downloads/resultat.html

Digitalitet. Kontinuerlig. Direkt proportionerlig mot källan. Ex. sprittermometer. Elektrisk signal som representerar ljud.

Classes och Interfaces, Objects och References Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016

Python. Python är, som Scheme, ett interpreterat språk men det finns kompilatorer för Python.

Övning 1 - Abstrakta datatyper

F2 Datatyper och variabler. ID1004 Objektorienterad programmering Fredrik Kilander

Python. Python är, som Scheme, ett interpreterat språk men det finns kompilatorer för Python.

Variabler, värden och typer

Klassdeklaration. Metoddeklaration. Parameteröverföring

Undantag. Engelska: exceptions. Skansholm: exceptionella händelser

Idag. Javas datatyper, arrayer, referenssemantik. Arv, polymorfi, typregler, typkonvertering. Tänker inte säga nåt om det som är likadant som i C.

TDP002 - Imperativ programmering

TDP002 - Imperativ programmering

F5 Selektion och iteration. ID1004 Objektorienterad programmering Fredrik Kilander

Strängar. TDDD64 Programmering i Python Föreläsning 4. Peter Dalenius Institutionen för datavetenskap

Föreläsning 1 Datastrukturer (DAT037)

Arv: Fordonsexempel. Arv. Arv: fordonsexempel (forts) Arv: Ett exempel. En klassdefinition class A extends B {... }

Typhierarkier del 1 Gränssnitt, ärvning mellan gränssnitt, ärvning mellan klasser

Chapter 3: Using Classes and Objects

Introduktion till objektorientering. Vad är objektorientering egentligen? Hur relaterar det till datatyper? Hur relaterar det till verkligheten?

Mattias Wiggberg Collaboration

TDDD78, TDDE30, 729A Introduktion till Java -- för Pythonprogrammerare

Inledande programmering med C# (1DV402) 27+15=42 1 (22)

Idag. statiska metoder och variabler. private/public/protected. final, abstrakta klasser, gränssnitt, delegering. wrapper classes

TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 6 Erik Nilsson, Institutionen för Datavetenskap, LiU

Felhantering TDDD78, TDDE30, 729A

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 4 Erik Nilsson, Institutionen för Datavetenskap, LiU

Statistik över heltal

Vem är vem på kursen. Objektorienterad programvaruutveckling GU (DIT011) Kursbok Cay Horstmann: Big Java 3rd edition.

TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 6 Erik Nilsson, Institutionen för Datavetenskap, LiU

TDDD78, TDDE30, 729A Introduktion till Java -- för Pythonprogrammerare

Att deklarera och att använda variabler. Föreläsning 10. Synlighetsregler (2) Synlighetsregler (1)

Objektorienterad programmering

Introduktion till objektorientering. Vad är objektorientering egentligen? Hur relaterar det till datatyper? Hur relaterar det till verkligheten?

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Felsökning. Datatyper. Referenstyper. Metoder / funktioner

SMD 134 Objektorienterad programmering

Introduktion till objektorientering. Vad är objektorientering egentligen? Hur relaterar det till datatyper? Hur relaterar det till verkligheten?

OOP Objekt-orienterad programmering

Introduktion till programmering SMD180. Föreläsning 7: Strängar

Introduktion till objektorientering. Vad är objektorientering egentligen? Hur relaterar det till datatyper? Hur relaterar det till verkligheten?

Heldag om FGS FGS:er och deras tekniska regelverk. Karin Bredenberg, FGS funktionen. Standarder. FGS:er och deras tekniska regelverk 1

F2 Datarepresentation talbaser, dataformat och teckenkodning

(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

OOP Objekt-orienterad programmering

Föreläsningsanteckningar, Introduktion till datavetenskap HT S4 Datastrukturer. Tobias Wrigstad

729G09 Språkvetenskaplig databehandling

Tecken och teckenrepresentation

Datatyper. Programmering. Att definiera datatyper i Java. Laddade partiklar. (x,y) (Rx,Ry) hh.se/db2004

Sammanfattning. Listor. List-manipulering. Matris. /home/lindahlm/activity-phd/teaching/11dd1310/exercise3/exercise3.py September 13, 20111

Tentamen i Grundläggande Programvaruutveckling, TDA548

Föreläsning 3: Typomvandling, villkor och val, samt textsträngar

TDDD02 Föreläsning 2 HT Reguljära uttryck och reguljära språk Lars Ahrenberg

Påminnelse: en datatyp för bilder. Programmering. En datatyp för bilder. Spegelbild. hh.se/db2004

Moment 2 - Digital elektronik. Föreläsning 1 Binära tal och logiska grindar

Grafiska användargränssnitt i Java

Tentamen i Grundläggande Programvaruutveckling, TDA548

Tentamen Datastrukturer (DAT037)

Objekt som argument. Föreläsning 7-8 Innehåll. Hur komma åt den andra kvadratens attribut? Anropa metod på objektet självt

Översikt 5 delar. 1: Fysisk representation. Binär, oktal och hexadecimal representation

Föreläsning 7-8 Innehåll

OOP F1:1. Föreläsning 1. Introduktion till kursen OOP Vad är Java? Ett första Java-program Variabler Tilldelning. Marie Olsson

Sekvensdatatyper, ASCII och chiffer. Linda Mannila

TDDD78 Objektorientering: Lagring och livstid

ITK:P1 Föreläsning 1. Programmering. Programmeringsspråket Java. Stark typning Explicit typning Strukturerat Hög säkerhet

Grafiska användargränssnitt i Java

Programmering A. Johan Eliasson

PNSPO! Adressering i Omrons PLC. 14 mars 2012 OMRON Corporation

Objektorientering: Lagring och livstid

Faktorisering med hjälp av kvantberäkningar. Lars Engebretsen

Sammansatta datatyper Generics: Parametrisk polymorfism

Introduktion till Datalogi DD1339. Föreläsning 2 22 sept 2014

TDDD78 Viktiga begrepp, del 2

Internationalized Domain Names (Internationaliserade domännamn)

Tentamen OOP

Datastrukturer. Erik Forslin. Rum 1445, plan 4 på Nada

4.4 Swing ett interaktivt grafiskt gränssnitt

C konstruerades i början på sjuttiotalet av Dennis Ritchie vid Bell Laboratories.

E02 "The Review" Föreläsning 2, HT2013 Grunderna, repetition. Johan Leitet. Kurs: 1dv403 Webbteknik I

Objektorienterade programmeringsspråk. Objektorienterade språk. Den objekt-orienterade modellen. Jämför med icke-oo

TDDD78 Introduktion till OOP i Java

Tecken & Strängar. Kapitel 7

TDP002 - Imperativ programmering

Variabler, värden och typer

Objektorienterad Programmering (TDDC77)

Transkript:

TDDD78, TDDE30, 729A85 jonas.kvarnstrom@liu.se 2019 Tecken och strängar med och utan Java

Begrepp: Tecken, kodpunkter, kodningar, Unicode: A till Z och mer

Tecken 3 Steg 1: Ett tecken (en symbol) Odelbar symbol Minsta enheten för information A B C D # "! ( ) å ä ö ċ õ ĕ ķ Ħ Ŗ ǽ Ґ ы Ω Ą Ж ΐ ਈ ਉ ਊ ਏ ਓ ਔ ਕ ਖ ਗ ਘ ਛ R M ریال 略 X

Teckenrepertoar 4 Steg 2: En teckenreportoar (character repertoire) Välj ut en bestämd (men inte ordnad) mängd av tillgängliga tecken w 0 M } a p N! o. D b ] y 8 C L z 5 h G ( V [ c v P \ U : 7 m ; < 4 S = 2 I J _ A 1 % g F ~ R H + e & d B n s # f { k l * @ / i O ` W r > X ) 6 Q x 9 u t - K 3, T j q E? $ Y ^ Z

Kodad teckenuppsättning 5 Steg 3: En kodad teckenuppsättning (coded character set, CCS) Varje tecken motsvaras av ett heltal exempel: ASCII från 0 till 127

Kodad teckenuppsättning (2) 6 Annat exempel: ISO Latin-x ISO Latin-1: Adderar 32 kontrolltecken, 96 symboler (västeuropa) ISO Latin-2: Adderar 32 kontrolltecken, 96 symboler (östra/centraleuropa)

Kodad teckenuppsättning (3) 7 EBCDIC (IBM-stordatorer): 129 = a, 130 = b,, 137 = i, 145 = j,

Kodad teckenuppsättning (4) 8 Men hur får vi plats med kinesiska tecken, då?

Kodad teckenuppsättning (5) 9 Och alla nya emojis?

Kodad teckenuppsättning (6) 10 Java 11 använder Unicode 11 1,114,112 kodpunkter, 0 hex till 10FFFF hex 137,220 namngivna grafiska (synliga) tecken! https://vimeo.com/48858289 ਈਉਊਏਓਔਕਖਗਘਛ ໜໝༀ

Teckenkodning 11 Steg 4: Character encoding form + character encoding scheme Ungefär: Hur representerar man dessa tal som bytes i en dator? ISO Latin-1: Värden 0-255 Får plats i en enda byte Trivialt

Teckenkodning (2) 12 Unicode: >100000 tecken Räcker inte ens med 2 bytes (16 bitar) Enkel representation: UTF-32 Tecken 32-bitars heltal Oftast ineffektivt Exempel:

Teckenkodning (3) 13 UTF-8: Varierande antal bytes per tecken! Räksmörgås 72 c3 a4 6b 73 6d c3 b6 72 67 c3 a5 73 (hexadecimalt) 13 bytes Ganska effektivt för engelska och liknande språk I ISO Latin-1 skulle dessa 13 bytes betyda "rã ksmã rgã s" Kodningsschema: Informativt bitmönster!

Tecken och strängar 15 Java skiljer på: Tecken Exakt en symbol Inom apostrofer: x Primitiv datatyp, char 16 bitar, Unicode-tecken Strängar Noll eller flera symboler Inom citat: "Hello World" Objekttyp, java.lang.string

String 1: Strängar är objekt 17 Strängar i Java är objekt String-pekare String-objekt Teckenarray används internt för lagring Använder för att stödja hela Unicode: Oftast 1 char per tecken 2 chars för de "ovanligaste"

String 2: Literaler 18 Även strängliteraler representerar objekt Kan användas "direkt" Resulterar i ett String-objekt med 5 tecken

String 3: Jämförelser 19 Har två strängar samma innehåll? == jämför pekare! om ska vara före, om lika, om ska vara efter ƦƧ Ж ڥ Se även: java.text.collator Sortering enligt specifika språk (svenska: XYZÅÄÖ)

Formattering 1: Object String 21 Varje objekt har en strängrepresentation Exempel: Circle har ingen egen tostring() använder standardimplementation klassnamn + "@" + ett unikt ID

Formattering 2: Object String 22 Implementera en egen tostring()! Här adderas strängar men ett String-objekt är immutable (oföränderligt)! Gäller även Python Detta är en override diskuteras senare

Formattering 3: Strängkonkatenering 23 : Manipulering av teckensekvenser Används av kompilatorn för att implementera "+" konverterar till tecken Skapa en som denna med samma tecken

Formattering 4: Strängkonkatenering 24 Vad händer om man gör detta? 50000 Tid (ms) 45000 40000 35000 30000 25000 20000 15000 10000 5000 0 0 50000 100000 150000

Formattering 5: Strängkonkatenering 25 Konkatenering kan bli ineffektivt -- tidskomplexitet Vi kan ju inte ändra en sträng så vad händer här? Kopiera alla tecken till StringBuilder Lägg till några tecken Kopiera till en ny String Sätt om res-pekaren Släng StringBuilder + gammal String

Formattering 6: Strängkonkatenering 26 Lösning: Använd själv! 50000 45000 40000 35000 30000 25000 20000 15000 10000 5000 0-5000 0 50000 100000 150000

Formattering 6: Detaljerad kontroll 27 För mer detaljerad kontroll: Liknar () i C/C++ %s=sträng %d=heltal I finns både och