150 likes | 314 Views
ITEC 320. Lecture 9 String rehash. Review. Questions? Arrays Dynamic arrays How? Typed and anonymous Slices Copying / Assignment. String’s. What do you remember about them? Declaration? Input? Output?. Code. What is the difference between. s: String := “Hello World”; And
E N D
ITEC 320 Lecture 9 String rehash
Review • Questions? • Arrays • Dynamic arrays • How? • Typed and anonymous • Slices • Copying / Assignment
String’s • What do you remember about them? • Declaration? • Input? • Output?
Code • What is the difference between s: String := “Hello World”; And s2: String(1..15);
Issues: types must match sizes have to match Modification s: String := "Hi World"; begin put(s’first); put(s’last); s(4) := 'T'; put_line(s); s(4 .. 6) := "Ron"; put_line(s); s := ”Bye world"; put_line(s);
Modification(2) • Combinations s: String := "HiMom!"; u: String(1 .. 10); ... -- s := u; -- Compileerror -- u := s; -- Compileerror s := "HiBob!"; -- Okay -- s := "HiBilly-Bob!"; -- Compileerror -- s := s & "!"; -- Compileerror u = s & "!!!";
Loops • Why access character by character? for i in 1 .. s'length loop for i in s'first .. s'last loop for i in s'range loop
Input • Common usage s: String(1..10); len: Natural begin while not end_of_file loop get_line(s, len); put_line(s(1..len)); end loop;
Java • Reference versus value • Why do you think ADA is focused on values? String s; String t = "Mama!"; System.out.println(s); s = "today"; s = t;
Declare • Want to resize a String? • Use same syntax as arrays get(size); declare s3: String(1..size); begin get_line(s3, size);
Differences • What is the difference between put(v(1 .. len)); put(v);
Power tools • Unbounded strings (Like java) with Ada.Strings.Unbounded; use Ada.Strings.Unbounded; with Ada.Strings.Unbounded_Text_IO; use Ada.Strings.Unbounded_Text_IO; procedure showUnboundedis s: Unbounded_String := "first"; begin s := "different"; s := s & "!!"; put_line(s); -- different!! end showUnbounded
Issues • Stack versus heap • Assignment with Ada.Strings.Unbounded; use Ada.Strings.Unbounded; with Ada.Strings.Unbounded_Text_IO; use Ada.Strings.Unbounded_Text_IO; ... s: Unbounded_String := "first"; t: Unbounded_String := s; ... s := s & "!!"; put_line(s); -- first!! put_line(t) -- first;
Strength/Weakness • Fixed length • Unconstrained • Unbounded type string is array (Positive range) <> of Character
Summary • String’s are just like arrays • Slices make them tolerable • Don’t have the tools you have in Java