Arrays in Computer Programming

 
ESC101: 
Fundamentals of 
Computing
 
Arrays (Contd.)
 
  Nisheeth
Recap: Arrays
 
A collection of elements all of which have the same data type
 
 
 
 
 
Each array element is accessed using the array 
index
 (integer-valued)
For the above example, marks[0], marks[2], marks[499], marks[
int_expr
] where
int_expr 
is integer-valued expression such that 0 <= int_expr <= 499
2
 
float marks[500];
 
marks[0]
 
marks[1]
 
marks[2]
 
marks[499]
Recap: Array: Declaration and Initialization
 
 
Can be initialized at time of declaration itself
 
 
Can be partly initialized as well
 
 
Over initialization may crash
 
 
Better way to initialize is the following
 
Warning
: uninitialized arrays contain garbage, not zeros
 
 
int a[6] = {3,7,6,2,1,0};
int a[6] = {3,7,6};
a
3
7
6
2
1
0
a
3
7
6
 
int a[6] = {1,2,3,4,5,6,7,8,9};
 
int a[] = {1,2,3,4,5,6,7,8,9};
I will figure out how
much space needed
No need to specify
the array size during
declaration
3
Array: Declaration and Initialization
 
Can declare the array first and initialize its elements later
The later initialization can be done using 
user-provided values 
(e.g.,
using scanf), or some expression, or using some fixed values
 
 
 
 
 
int i,tmp,a[5];
for(i=0;i<5;i++){
   
scanf(“%d”,&tmp)
;
   a[i] = 
tmp
;
}
Read a use-
provided value
Assign the read
value to the i
th
element of the
array
4
Can I run the
loop
 as
for(i=1;i<=5;i++)?
Yes, if you use
a[
i-1
] = tmp; in
loop
’s body
Array: Declaration and Initialization
Can declare the array first and initialize its elements later
The later initialization can be done using 
user-provided values 
(e.g.,
using scanf), or some expression, or using some fixed value
    
 
int i,a[5];
for(i=0;i<5;i++){
   
scanf(“%d”
,&a[i]
);
}
Directly read a user
provided
 
value into the
i
th
 element of the array
(the tmp variable is not
needed)
Note: &a[i] is evaluated
as &(a[i]) since [] has
higher precedence than &
A 
s
hortcut for
reading user
provided
va
lues
5
6
Array: Declaration and Initialization
Can declare the array first and initialize its elements later
The later initialization can be done using user-provided values (e.g.,
using scanf), or 
some expression
, or using some fixed value
    
 
int i,a[5];
for(i=0;i<5;i++){
   a[i] = 
i+1
;
}
Assign a value of
expression i+1 to
the i
th
 element of
the array
7
 
1
 
2
 
3
 
4
 
5
 
a[0]
 
a[1]
 
a[2]
 
a[3]
 
a[4]
Array: Declaration and Initialization
Can declare the array first and initialize its elements later
The later initialization can be done using user-provided values (e.g.,
using scanf), or some expression, or using some 
fixed value
    
Assign a fixed
(constant) value 10
to the i
th
 element of
the array
 
int i,a[5];
for(i=0;i<5;i++){
   a[i] = 
10
;
}
8
 
10
 
10
 
10
 
10
 
10
 
a[0]
 
a[1]
 
a[2]
 
a[3]
 
a[4]
Tracing the execution of an array based program
include <stdio.h>
int main () { 
     int a[5];
     int i;
       
      for (i=0; i < 5; i= i+1) {
  
a[i] = i+1;
       }
       return 0; 
}
 
Let us trace the 
execution of the program.
 
Statement becomes a[0] =0+1;
Statement becomes a[1] =1+1;
Statement becomes a[2] =2+1;
 
Statement becomes a[3] = 3+1;
Statement becomes a[4] = 4+1;
9
Arrays: Some Example Programs
Create an integer array of size 100
Initialize elements with even index as 0
Initialize elements with odd index as 1
    
 
int i,a[100];
for(i=0; i<100; i=i+1){
   if(i%2==0) a[i] = 0;
   else a[i] = 1;
}
Method 1
10
Arrays: Some Example Programs
Create an integer array of size 100
Initialize elements with even index as 0
Initialize elements with odd index as 1
    
 
int i,a[100];
for(i=0; i<100; i=i+2){
   a[i] 
= 0
;
   a[i+1] = 1;
}
Method 2,
without if-else
Incrementing
 the
loop counter by 2
This for loop will run
50 times.
 Each
iteration will assign
values to 2 elements,
one at odd index,
one at even index
11
Arrays: Some Example Programs
Check whether a sequence of numbers is a 
palindrome
 sequence
    
11
Greek origin word:
palin = again,
dromos = direction
 
Palindrome: Forward and
Reverse gives  the same
sequence
Some palindromes:
1 2 3 4 5 4 3 2 1
1 2 3 3 2 1
Some non-palindromes:
1 2 3 4 5
1 2 3 3 4 1
9 0 4 0 8
 
int main(){
    int a[100], temp, len = 0, i, flag = 1;
    while(1){
        scanf("%d", &temp);
        if(temp == -1)
            break;
        a[
len++
] = temp;
    }
    for(i = 0; i < len; i++)
        if(a[i] != a[len-i-1])
            flag = 0;
    if(flag) printf("YES");
    else printf("NO");
    return 0;
}
The while(1) loop keeps reading numbers
until user enters -1
, store each number as
an element of the array named a
After the while(1) loop exits, 
len
 is the
size of the array (indices are 0 to len-1)
This line does a[len] = temp;
and then increments len
 
a[0]
 
a[1]
 
a[2]
 
a[len-1]
 
a[len-2]
Compares a[0] with a[len-1], then a[1]
with a[len-2], and so on. If 
any pair 
does
not match, set flag variable to 0
flag = 1 assumes that sequence is
palindrome (set 0 if later found otherwise)
Let’s specify a maximum
sequence size
Arrays: Some Example Programs
#include <stdio.h>
int main() {
     char s[100];
     int count = 0;
     int ch;
     int i;
     return 0;
}
ch = getchar();
while ( ch != EOF && count < 100) {
 
s[count] = ch;
        count = count + 1;
        ch = getchar();
}
/*read_into_array */
/* the array of 100 char */
/* counts number of input chars read */
/* current character read  */
/* index for printing array backwards */
Read until user has
entered 100 chars or
the end-of-file (EOF)
special character
has been read.
Now print the characters
in reverse order
getchar() 
returns a
single character
entered by the user
putchar() 
prints
 a single character
13
 
 Functions and arrays
 Passing by value
 Passing by reference
Next Class
14
Slide Note
Embed
Share

Arrays in programming are collections of elements that have the same data type. Elements in an array are accessed using integer-valued indices. Arrays inescapably play a crucial role in programming as they allow for efficient storage and manipulation of data. Initialization, declaration, and utilization of arrays are key aspects to mastering this fundamental concept.

  • Arrays
  • Programming
  • Data Types
  • Indexing
  • Initialization

Uploaded on Oct 03, 2024 | 0 Views


Download Presentation

Please find below an Image/Link to download the presentation.

The content on the website is provided AS IS for your information and personal use only. It may not be sold, licensed, or shared on other websites without obtaining consent from the author. Download presentation by click this link. If you encounter any issues during the download, it is possible that the publisher has removed the file from their server.

E N D

Presentation Transcript


  1. Arrays (Contd.) ESC101: Fundamentals of Computing Nisheeth

  2. Recap: Arrays A collection of elements all of which have the same data type float marks[500]; marks[499] marks[0] marks[1] marks[2] Each array element is accessed using the array index (integer-valued) For the above example, marks[0], marks[2], marks[499], marks[int_expr] where int_expr is integer-valued expression such that 0 <= int_expr <= 499 2

  3. Recap: Array: Declaration and Initialization Can be initialized at time of declaration itself int a[6] = {3,7,6,2,1,0}; a 3 7 6 2 1 0 Can be partly initialized as well int a[6] = {3,7,6}; a 3 7 6 Over initialization may crash int a[6] = {1,2,3,4,5,6,7,8,9}; No need to specify the array size during declaration I will figure out how much space needed Better way to initialize is the following int a[] = {1,2,3,4,5,6,7,8,9}; Warning: uninitialized arrays contain garbage, not zeros 3

  4. Array: Declaration and Initialization Can declare the array first and initialize its elements later The later initialization can be done using user-provided values (e.g., using scanf), or some expression, or using some fixed values Can I run the loop as for(i=1;i<=5;i++)? int i,tmp,a[5]; for(i=0;i<5;i++){ scanf( %d ,&tmp); a[i] = tmp; } Read a use- provided value Assign the read value to the ith element of the array Yes, if you use a[i-1] = tmp; in loop s body 4

  5. Array: Declaration and Initialization Can declare the array first and initialize its elements later The later initialization can be done using user-provided values (e.g., using scanf), or some expression, or using some fixed value Note: &a[i] is evaluated as &(a[i]) since [] has higher precedence than & int i,a[5]; for(i=0;i<5;i++){ scanf( %d ,&a[i]); } Directly read a user provided value into the ith element of the array (the tmp variable is not needed) A shortcut for reading user provided values 5

  6. Operator Name Symbol/Sign Associativity Brackets, array subscript, Post increment/decrement (), [] ++, -- Left Unary negation, Pre increment/decrement, NOT -, ++, --, ! Right Multiplication/division/ remainder *, /, % Left Addition/subtraction +, - Left Relational <, <=, >, >= Left Relational ==, != Left AND OR && || Left Left Conditional ? : Right Assignment, Compound assignment =, +=, -=, *=, /=, %= Right 6

  7. Array: Declaration and Initialization Can declare the array first and initialize its elements later The later initialization can be done using user-provided values (e.g., using scanf), or some expression, or using some fixed value 1 2 3 a[2] a[3] 4 5 int i,a[5]; for(i=0;i<5;i++){ a[i] = i+1; } a[4] a[0] a[1] Assign a value of expression i+1 to the ith element of the array 7

  8. Array: Declaration and Initialization Can declare the array first and initialize its elements later The later initialization can be done using user-provided values (e.g., using scanf), or some expression, or using some fixed value 10 10 10 10 a[2] a[3] 10 a[0] a[1] int i,a[5]; for(i=0;i<5;i++){ a[i] = 10; } a[4] Assign a fixed (constant) value 10 to the ith element of the array 8

  9. Tracing the execution of an array based program include <stdio.h> int main () { int a[5]; int i; for (i=0; i < 5; i= i+1) { a[i] = i+1; } return 0; } a[0] a[1] a[2] a[3] a[4] Let us trace the execution of the program. i 0 1 2 3 4 5 5 1 2 3 4 Statement becomes a[0] =0+1; Statement becomes a[1] =1+1; Statement becomes a[2] =2+1; Statement becomes a[3] = 3+1; Statement becomes a[4] = 4+1; 9

  10. Arrays: Some Example Programs Create an integer array of size 100 Initialize elements with even index as 0 Initialize elements with odd index as 1 int i,a[100]; for(i=0; i<100; i=i+1){ if(i%2==0) a[i] = 0; else a[i] = 1; } Method 1 10

  11. Arrays: Some Example Programs Create an integer array of size 100 Initialize elements with even index as 0 Initialize elements with odd index as 1 Incrementing the loop counter by 2 int i,a[100]; for(i=0; i<100; i=i+2){ a[i] = 0; a[i+1] = 1; } Method 2, without if-else This for loop will run 50 times. Each iteration will assign values to 2 elements, one at odd index, one at even index 11

  12. Greek origin word: palin = again, dromos = direction Arrays: Some Example Programs Check whether a sequence of numbers is a palindrome sequence int main(){ int a[100], temp, len = 0, i, flag = 1; while(1){ scanf("%d", &temp); if(temp == -1) break; a[len++] = temp; } for(i = 0; i < len; i++) if(a[i] != a[len-i-1]) flag = 0; if(flag) printf("YES"); else printf("NO"); return 0; } Let s specify a maximum sequence size flag = 1 assumes that sequence is palindrome (set 0 if later found otherwise) Palindrome: Forward and Reverse gives the same sequence The while(1) loop keeps reading numbers until user enters -1, store each number as an element of the array named a This line does a[len] = temp; and then increments len Some palindromes: 1 2 3 4 5 4 3 2 1 1 2 3 3 2 1 After the while(1) loop exits, len is the size of the array (indices are 0 to len-1) Compares a[0] with a[len-1], then a[1] with a[len-2], and so on. If any pair does not match, set flag variable to 0 Some non-palindromes: 1 2 3 4 5 1 2 3 3 4 1 9 0 4 0 8 a[0] a[1] a[2] a[len-2] a[len-1] 11

  13. Arrays: Some Example Programs #include <stdio.h> int main() { char s[100]; int count = 0; int ch; int i; ch = getchar(); while ( ch != EOF && count < 100) { s[count] = ch; count = count + 1; ch = getchar(); } i = count-1; while (i >=0) { putchar(s[i]); i=i-1; } Read until user has entered 100 chars or the end-of-file (EOF) special character has been read. /* the array of 100 char */ /* counts number of input chars read */ /* current character read */ /* index for printing array backwards */ Now print the characters in reverse order /*read_into_array */ getchar() returns a single character entered by the user /*print_in_reverse */ putchar() prints a single character return 0; } 13

  14. Next Class Functions and arrays Passing by value Passing by reference ESC101: Fundamentals of Computing

More Related Content

giItT1WQy@!-/#giItT1WQy@!-/#giItT1WQy@!-/#giItT1WQy@!-/#giItT1WQy@!-/#giItT1WQy@!-/#giItT1WQy@!-/#giItT1WQy@!-/#giItT1WQy@!-/#giItT1WQy@!-/#