Download presentation
Presentation is loading. Please wait.
Published byEsther Bates Modified over 8 years ago
1
ITEC 320 Lecture 6 More on arrays / Strings
2
Arrays Review Scope Exceptions Arrays –Dynamic arrays How? Typed and anonymous
3
Arrays Issue Named type required for passing to functions / procedures procedure demo is values1: array (1.. 50) of integer; values2: array (1.. 50) of integer; begin values1 := (2 => 4, 4 => 16, 5 => 25, 3 => 9, others => 0); values2 := (others => 0); end demo; What is values 1? Can’t duplicate when passing to a function.
4
Arrays Comparison s type Myarray is array (1.. 3) of Integer; a, b: Myarray;... a := (10, 20, 30); b := (others => 0); if a = b then... b := a; if a = b then... Note: types must be the same Checks each element! Assignment works element by element Is this shallow or deep copying?
5
Arrays Java Behavior –Java references –Ada values int[] a = {10, 20, 30}; int[] b = {0, 0, 0}; if (a == b)... a = b; if (a == b)...
6
Arrays Attributes 'first 'last 'range 'length Why is it important to know these?
7
Arrays Slices Portions of the whole What are the advantages / disadvantages? How would you do this in Java? s: String := "Hi Mom!"); put(s(3.. 5) & "?"); s(4) := 'T'; put(s); s(4.. 6) := "Bob"; put(s); s(4.. 4) := "R"; put(s);
8
Arrays Consideration s Sending a slice to a function / procedure Can it be a constrained array? What happens when you assign slices to each other? Dynamic slice bounds (not hard coded)
9
Arrays Example declare s: String := "Hi Mom!"; begin put_line(s(4..7) & s(1..2)); and declare s: String := "Hi Mom!"; begin put_line(s(4..7) & s(3..3) & s(1..2)); put_line(s(4..7) & s(3) & s(1..2));
10
Arrays String’s What do you remember about them? Declaration? Input? Output?
11
Arrays Code What is the difference between s: String := “Hello World”; And s2: String(1..15);
12
Arrays 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); Issues: types must match sizes have to match
13
Arrays Modification(2) Combinations s: String := "Hi Mom!"; u: String(1.. 10);... -- s := u; -- Compile error -- u := s; -- Compile error s := "Hi Bob!"; -- Okay -- s := "Hi Billy-Bob!"; -- Compile error -- s := s & "!"; -- Compile error u = s & "!!!";
14
Arrays 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
15
Arrays 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;
16
Arrays 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;
17
Arrays Declare Want to resize a String? Use same syntax as arrays get(size); declare s3: String(1..size); begin get_line(s3, size);
18
Arrays Difference s What is the difference between put(v(1.. len)); put(v);
19
Arrays 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 showUnbounded is s: Unbounded_String := "first"; begin s := "different"; s := s & "!!"; put_line(s); -- different!! end showUnbounded
20
Arrays 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;
21
Arrays Strength/We akness Fixed length Unconstrained Unbounded type string is array (Positive range) <> of Character
22
Arrays Summary Arrays Dynamic Copying
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.