1 / 43

Week 9 – Arrays (2) & String

Week 9 – Arrays (2) & String. Outline. 7.1 Passing Array to Function 7.2 Print the Array 7.3 How Arrays are passed in a function call 7.4 Introduction to Strings 7.5 String Type 7.6 Character Array 7.7 Declaration of Strings 7.8 Fundamentals of Strings & Characters

Télécharger la présentation

Week 9 – Arrays (2) & String

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Week 9 – Arrays (2) & String EKT150: Computer Programming

  2. Outline 7.1 Passing Array to Function 7.2 Print the Array 7.3 How Arrays are passed in a function call 7.4 Introduction to Strings 7.5 String Type 7.6 Character Array 7.7 Declaration of Strings 7.8 Fundamentals of Strings & Characters 7.9 Initialization of Strings 7.10 Assigning Values to Strings 7.11 Calculation of String Size 7.12 String Conversion Functions 7.13 Comparison Functions of the Strings 7.14 ASCII Table EKT150: Computer Programming

  3. Passing Array to Function void initialize (int list [ ]) { int count; for (count = 0; count < 5; count ++) list [count] = 0; } • Initializes int array of size 5 to 0. EKT150: Computer Programming

  4. Array as Parameters to Function • If size changes (lets say 10 or 20), need to write another function. • Introduce another variable, size. void initialize (int list [ ], int size) { int count; for (count = 0; count < size; count ++) list [count] = 0; } EKT150: Computer Programming

  5. Constant Arrays • Prevent the function from changing the values in array. • Use word const in declaration. • Function can modify array x but not array y. void example (int x[ ], const int y[ ], int sizeX[ ],int sizeY[]) { ….. ….. …. …. } EKT150: Computer Programming

  6. Initialize an array to 0 void initializeArray (int x [ ], int sizeX) { int counter; for (counter = 0; counter < sizeX; counter ++) x [counter] = 0; } EKT150: Computer Programming

  7. Read data and store it in an array void fillArray (int x [ ], int sizeX) { int counter; for (counter = 0; counter < sizeX; counter ++) scanf (“%d”, &x [counter]); } EKT150: Computer Programming

  8. Print the Array void printArray (const int x [ ], int sizeX) { int counter; for (counter = 0; counter < sizeX; counter ++) printf (“%d”, x [counter]); } EKT150: Computer Programming

  9. Find & return the sum of an array int sumArray (const int x [ ], int sizeX) { int counter; int sum = 0; for (counter = 0; counter < sizeX; counter ++) sum = sum + x [counter]; return sum; } EKT150: Computer Programming

  10. Find & return index of largest element of an array int indexLargestElement (const int x [ ], int sizeX) { int counter; int maxIndex = 0; for (counter = 0; counter < sizeX; counter ++) if ( x[maxIndex] < x[counter] ) maxIndex = counter; return maxIndex; } EKT150: Computer Programming

  11. Copy one array into another array void copyArray (const int x [ ], int y [ ], int length) { int counter; for (counter = 0; counter < length; counter ++) y [counter] = x [counter]; } EKT150: Computer Programming

  12. How Arrays are passed in a function call(sample) #include <stdio.h> const int arraySize = 10; void initializeArray (int x [], int sizeX); void fillArray (int x [], int sizeX); void printArray (const int x [], int sizeX); int sumArray (const int x [], int sizeX); int indexLargestElement (const int x [], int sizeX); void copyArray (const int x [], int y [], int length); EKT150: Computer Programming

  13. How Arrays are passed in a function call(sample) int main() { int listA [arraySize] = {0}; int listB [arraySize]; printArray (listA, arraySize); initializeArray (listB, arraySize); printArray (listB, arraySize); fillArray (listA, arraySize); printArray (listA, arraySize); sumArray (listA, arraySize); copyArray (listA, listB, arraySize); printArray (listB, arraySize); return 0; } EKT150: Computer Programming

  14. Sample Program #include <stdio.h> void printArray( const int a[][3]); // function prototype //function main begins program execution int main() { //initialize array1, array2, array3 const int array1 [2][3] = { {1, 2, 3}, {4, 5, 6} }; const int array2 [2][3] = { 1, 2, 3, 4, 5 }; const int array3 [2][3] = { {1, 2 }, { 4 } }; printf (“Values in array1 by row are : \n); printArray (array1); printf ("Values in array2 by row are : \n"); printArray (array2); printf ("Values in array3 by row are : \n"); printArray (array3); return 0; } // end of main EKT150: Computer Programming

  15. Sample Program (cont…) //function to output array with two rows and three columns void printArray (const int a[][3]) { int i;//row counter int j;//column counter //loop through row for (i = 0; i <= 1; i++) { //output column values for (j = 0; j <= 2; j++) { printf ("%d ", a[i][j]); }// end inner for printf ("\n");// start new line of output }// end outer for } // end function printArray EKT150: Computer Programming

  16. Sample Program (cont…) Output Values in array1 by row are : 1 2 3 4 5 6 Values in array2 by row are : 1 2 3 4 5 0 Values in array3 by row are : 1 2 0 4 0 0 EKT150: Computer Programming

  17. What is a String? • The data type string is a programmer-defined and it not part of the C language. The C standard library supplies it. • A string with no characters is called a null or empty string. • “ ” is the empty string. • Every character in a string has a relative position in the string. • The position of the first character is 0, position of the second is 1, and so on. • The length of a string is the number of character in it. • Strings can be treated as array of type char used to store names of people, places, or anything that involves a combination of letters. • However, as number can be stored as characters, a string can be an array of numbers, too. EKT150: Computer Programming

  18. Example String Position of a Character Length of the String in the String “William Jacob” Position of ‘W’ is 0 13 Position of the first ‘i’ is 1 Position of ‘ ’ (the space) is 7 Position of ‘J’ is 8 Position of ‘b’ is 12 “Mickey” Position of ‘M’ is 0 6 Position of ‘i’ is 1 Position of ‘c’ is 2 Position of ‘k’ is 3 Position of ‘e’ is 4 Position of ‘y’ is 5 EKT150: Computer Programming

  19. String Type • To use the data type string, the program must include the header file string. #include <string.h> • The statement string info = “Welcome”; declares info to be string variable and also initializes info to “Welcome”. • The position of the first character, ‘W’, in the info is 0, the position of the second character, ‘e’, is 1, and so on. • The variable info is capable of storing (just about) any size string. EKT150: Computer Programming

  20. Character Array (string of characters) • char info [10]; • Can store “Welcome”, “Good Bye”. • char name [50]; • Able to store shorter strings that total length. • The last value in the string will be null character (‘\0’). EKT150: Computer Programming

  21. Declaration of Strings • An example of declaration of an array (or string of characters): • It is no necessary that this max size of 10 characters should at all the times be fully used. info could store at any part of the program either the string of characters “Welcome” or the string “Good Bye”. char info [10]; can store a string up to 10 characters long, and may visualize it as below info EKT150: Computer Programming

  22. Declaration of Strings (cont..) • A null character, constant 0 or ‘\0’ can be written at the end of the valid content of a string if the characters to be stored is shorter strings that its total length (10 in this case). • info is an array of 10 elements of type char could be represented by storing the strings of characters “Welcome” and “Good Bye” in the following way: EKT150: Computer Programming

  23. Declaration of Strings (cont..) info W e l c o m e \0 to indicate end of string indefinite values G O o d B y e \0 EKT150: Computer Programming

  24. Fundamentals of Strings and Characters • String declarations • Declare as a character array or a variable of type char * char info[] = “Welcome"; char *infoPtr = “Welcome"; • Remember that strings represented as character arrays end with '\0' • info has 8 elements • Inputting strings • Use scanf scanf("%s", word); • Copies input into word[] • Do not need & (because a string is a pointer) • Remember to leave room in the array for '\0' EKT150: Computer Programming

  25. Initialization of string • Same like other array, but each character is enclosed in ‘ ‘ or “ “. • Eg: • char newstring[]={‘W’, ‘e’, ‘l’, ‘c’, ‘o’, ‘m’, ‘e’, ‘\0’}; • char newstring[]= “Welcome”; • ‘\0’ is automatically inserted. • The difference is that single quotes (‘) are used to specify single character constants and null character must be added at the end of the sentence. EKT150: Computer Programming

  26. Initialization of string (cont…) • On the other hand, double quotes (“) are constant that specify sequence of characters and between double quotes have always a null character (‘\0’) automatically inserted at the end. char newstring[]= {‘W’,’e’,’l’,’c’,’o’,’m’,’e’,’\0’}; char newstring[] = “Welcome”; Single quotes – null char must be added Double quotes – null char automatically inserted EKT150: Computer Programming

  27. Initialization of string (cont…) • The examples below are not valid for string of characters (array). newstring = “Welcome”; // no [] and data type newstring [] =“Welcome”; // no data type newstring = {‘W’,’e’,’l’,’c’,’o’,’m’,’e’,’\0’}; // no [] and data type EKT150: Computer Programming

  28. Assigning values to string • The left hand side value of an assignation can only be array items and not the entire array, the probable way to assign a string of characters to an array of char can be shown as: newstring[0] = ‘W’; newstring[1] = ‘e’; newstring[2] = ‘l’; newstring[3] = ‘c’; newstring[4] = ‘o’; newstring[5] = ‘m’; newstring[6] = ‘e’; newstring[7] = ‘\0’; EKT150: Computer Programming

  29. Calculation of string size • char is 1 byte, the total number of alphabets plus a null would be the size of the string. Example program: #include <stdio.h> #include <string.h> char newstring[] = {'W','e','l','c','o','m','e','\0'}; char mystring[] = "Good Bye"; int main() { printf ("Size of newstring is %d", sizeof (newstring)); //size of string Welcome printf ("\nSize of mystring is %d", sizeof (mystring));// size of string Good Bye return 0; } What are the result? EKT150: Computer Programming

  30. Character & String manipulation • Eg: • a program may need to verify that an ID number of first year students starts with ’04’. • Determine whether last three characters in a part number are valid. • Built-in functions available – makes it easier. EKT150: Computer Programming

  31. Controlling the Case of a Character • ‘K’ is not equal to ‘k’. • You use: if (choice == ‘K’ || choice == ‘k’) while (choice == ‘K’ || choice == ‘k’) • Can use a function that temporarily converts the letter to uppercase or lowercase before comparing it. strupr(charVariable) strlwr(charVariable) EKT150: Computer Programming

  32. Controlling the Case of a Character (Example) char repeat; printf ( “Continue? (Y or N) : “); scanf (“%c”, &repeat); while (strupr(repeat) == ‘Y’) { ….. ….. ….. } EKT150: Computer Programming

  33. Controlling the Case of a Character (Example) char name[]; printf (“Enter a name : “); scanf (“%s”, name); strupr( name ); printf("The name in uppercase is %s", name ); EKT150: Computer Programming

  34. Sample Program To convert a string to uppercase #include <stdio.h> #include <string.h> void main() { char name[80]; /* declare an array of characters 0-79 */ printf("Enter in a name in lowercase\n"); scanf( "%s", name ); strupr( name ); printf("The name in uppercase is %s", name ); } Output Enter in a name in lowercase ahmad The name in uppercase is AHMAD EKT150: Computer Programming

  35. Controlling the Case of a Character • Real value does not changed. • The functions only affect characters of letters or alphabet. Doesn’t affect numbers and special characters such as $ and %. • If the character of already lowercase or uppercase, the function will not affect the real value. It will return the original value. char repeat = ‘Y’; letter = strupr(repeat); • Letter = ? EKT150: Computer Programming

  36. Comparison Functions of the String • Comparing strings • Computer compares numeric ASCII codes of characters in string int strcmp( const char *s1, const char *s2 ); • Compares string s1 to s2 • Returns a negative number if s1 < s2, zero if s1 == s2 or a positive number if s1 > s2 int strncmp( const char *s1, const char *s2, size_t n ); • Compares up to n characters of string s1 to s2 • Returns values as above EKT150: Computer Programming

  37. ASCII Table EKT150: Computer Programming

  38. Sample Program 1 #include <stdio.h> #include <string.h> int main() { char string1[20], string2[20]; //declaration of string1 and string2 int result; printf( "Enter two strings: " ); scanf( "%s%s", string1, string2 ); result = strcmp( string1, string2 );// compare between string1 and string2 if ( result > 0 ) printf( "\"%s\" is greater than \"%s\"\n", string1, string2 ); else if ( result == 0 ) printf( "\"%s\" is equal to \"%s\"\n", string1, string2 ); else printf( "\"%s\" is less than \"%s\"\n", string1, string2 ); return 0; } EKT150: Computer Programming

  39. Sample Program 1 (cont…) • Output Enter two strings: computer programming "computer" is less than "programming" Enter two strings: programming computer "programming" is greater than "computer" EKT150: Computer Programming

  40. Sample Program 2 #include <stdio.h> #include <string.h> int main() { char string1[ 20 ], string2[ 20 ]; int result, compareCount; printf( "Enter two strings: " ); scanf( "%s%s", string1, string2 ); printf( "How many characters should be compared: " ); scanf( "%d", &compareCount ); result = strncmp( string1, string2, compareCount ); if ( result > 0 ) printf( "\"%s\" is greater than \"%s\" up to %d characters\n", string1, string2, compareCount ); else if ( result == 0 ) printf( "\"%s\" is equal to \"%s\" up to %d characters\n", string1, string2, compareCount ); else printf( "\"%s\" is less than \"%s\" up to %d characters\n", string1, string2, compareCount ); return 0; } EKT150: Computer Programming

  41. Sample Program 2 (cont…) Output Enter two strings: computer programming How many characters should be compared: 7 "computer" is less than "programming" up to 7 characters Enter two strings: programming computer How many characters should be compared: 7 "programming" is greater than "computer" up to 7 characters EKT150: Computer Programming

  42. Built in Functions for String Handling • strcat Appends a string • strchr Finds first occurrence of a given character • strcmp Compares two strings • strcmpi Compares two strings, non-case sensitive • strcpy Copies one string to another • strlen Finds length of a string • strlwr Converts a string to lowercase • strnca t Appends n characters of string • strncmp Compares n characters of two strings • strncpy Copies n characters of one string to another • strnset Sets n characters of string to a given character • strrchr Finds last occurrence of given character in string • strrev Reverses string • strset Sets all characters of string to a given character • strspn Finds first substring from given character set in string • strupr Converts string to uppercase EKT150: Computer Programming

  43. End Week 8 – Arrays (2) & String Q & A! EKT150: Computer Programming

More Related