הרצאה 7: מחרוזות וחתימה של פונקציה

Slides:



Advertisements
Similar presentations
Chapter 7 Strings F To process strings using the String class, the StringBuffer class, and the StringTokenizer class. F To use the String class to process.
Advertisements

Chapter 7 Strings F Processing strings using the String class, the StringBuffer class, and the StringTokenizer class. F Use the String class to process.
Java Programming Strings Chapter 7.
Chapter 7: User-Defined Functions II
Declaring Variables You must first declare a variable before you can use it! Declaring involves: – Establishing the variable’s spot in memory – Specifying.
Strings In Java, strings are contained in an object that is an instance of the String class. String in java is the name of a class. That’s why it starts.
Java Programming: From Problem Analysis to Program Design, 4e Chapter 7 User-Defined Methods.
Chapter 7: User-Defined Methods
Java Programming Constructs 1 MIS 3023 Business Programming Concepts II The University of Tulsa Professor: Akhilesh Bajaj All slides in this presentation.
The string data type String. String (in general) A string is a sequence of characters enclosed between the double quotes "..." Example: Each character.
Primitive Types Java offers a number of primitive types eg.) int, short, long double, float char A variable which is declared as a primitive type stores.
Basic Java Programming CSCI 392 Week Two. Stuff that is the same as C++ for loops and while loops for (int i=0; i
Java means Coffee Java Coffee Beans The name “JAVA” was taken from a cup of coffee.
Outline Character Strings Variables and Assignment Primitive Data Types Expressions Data Conversion Interactive Programs Graphics Applets Drawing Shapes.
1 Text processing. 2 text processing: Examining, editing, formatting text.  Text processing often involves for loops that examine the characters of a.
Hello.java Program Output 1 public class Hello { 2 public static void main( String [] args ) 3 { 4 System.out.println( “Hello!" ); 5 } // end method main.
The while Loop Syntax while (condition) { statements } As long condition is true, the statements in the while loop execute.
Chapter 2: Java Fundamentals Type conversion,String.
Algorithm Programming Bar-Ilan University תשס"ח by Moshe Fresko.
College Board A.P. Computer Science A Topics Program Design - Read and understand a problem's description, purpose, and goals. Procedural Constructs.
Introduction to Java Java Translation Program Structure
Java Overview. Comments in a Java Program Comments can be single line comments like C++ Example: //This is a Java Comment Comments can be spread over.
Assignment An assignment statement changes the value of a variable The assignment operator is the = sign total = 55; Copyright © 2012 Pearson Education,
1 CSC 201: Computer Programming I Lecture 2 B. S. Afolabi.
Chapter 3: Classes and Objects Java Programming FROM THE BEGINNING Copyright © 2000 W. W. Norton & Company. All rights reserved Java’s String Class.
Array Objectives To understand the concept of arrays To understand the purpose to which we use arrays. To be able to declare references to arrays. To be.
Method Overloading  Methods of the same name can be declared in the same class for different sets of parameters  As the number, types and order of the.
String Processing Word processing term papers, writing memoirs, sending messages, responding to surveys, placing online orders and registering products.
CSC Programming I Lecture 9 September 11, 2002.
Java String 1. String String is basically an object that represents sequence of char values. An array of characters works same as java string. For example:
Converting string to integer class StringToInt { public static void main (String arg[]) { // Assume arg[0] is the input string int result = 0, pos; int.
1 Predefined Classes and Objects Chapter 3. 2 Objectives You will be able to:  Use predefined classes available in the Java System Library in your own.
Method OverloadingtMyn1 Method overloading Methods of the same name can be declared in the same class, as long as they have different sets of parameters.
An Introduction to Java – Part 1 Erin Hamalainen CS 265 Sec 001 October 20, 2010.
Strings and I/O. Lotsa String Stuff… There are close to 50 methods defined in the String class. We will introduce several of them here: charAt, substring,
Computer Programming 2 Lab (1) I.Fatimah Alzahrani.
C OMMON M ISTAKES CSC Java Program Structure  String Methods.
Midterm Review Tami Meredith. Primitive Data Types byte, short, int, long Values without a decimal point,..., -1, 0, 1, 2,... float, double Values with.
Strings, Characters, and Regular Expressions Session 10 Mata kuliah: M0874 – Programming II Tahun: 2010.
Object Oriented Programming Lecture 2: BallWorld.
CSE 110: Programming Language I Matin Saad Abdullah UB 1222.
Lecture 3: More Java Basics Michael Hsu CSULA. Recall From Lecture Two  Write a basic program in Java  The process of writing, compiling, and running.
Chapter 8 String Manipulation
Strings A String is a sequence of letters
Defining Your Own Classes II
Chapter VII: Arrays.
Course Contents KIIT UNIVERSITY Sr # Major and Detailed Coverage Area
Numbers Mar 27, 2013.
Java Programming: From Problem Analysis to Program Design, 3e Chapter 7 User-Defined Methods.
Strings.
Lecture 5: Some more Java!
Conditional Execution
Multiple variables can be created in one declaration
Java Programming: From Problem Analysis to Program Design, 4e
Maximization and Minimization Problems
IDENTIFIERS CSC 111.
مساق: خوارزميات ومبادئ البرمجة الفصل الدراسي الثاني 2016/2015
An Introduction to Java – Part I, language basics
Building Java Programs
Chapter 2: Java Fundamentals
CS2011 Introduction to Programming I Methods (II)
CS2011 Introduction to Programming I Strings
Building Java Programs
Building Java Programs
Lecture 22: Number Systems
CSS161: Fundamentals of Computing
Building Java Programs
More on iterations using
In Java, strings are objects that belong to class java.lang.String .
String Methods Strings have actions known as method. We will review a few of the methods associated with strings that are a part of the built in Java.
Presentation transcript:

הרצאה 7: מחרוזות וחתימה של פונקציה מבוא למדעי המחשב הרצאה 7: מחרוזות וחתימה של פונקציה אולי מקום לדיון קצר על יעילות: does the solution scale for large inputs? usually we dont mind to waste a few actions or memory bits if we can perform an algorithm in 2^n vrs n or even n^2 vrs n then we should. constants are less important. but still: why stay in a loop if we could exit earlier. why perform redundant checks if we can avoid them. בעיקרון זו הרצאה עם זמן פנוי להוספת דגשים והשלמת פערים

מחרוזת - String הטיפוס מחרוזת (String) איננו טיפוס פרימיטיבי (נשים לב שהמחלקה כתובה באות גדולה). שימוש בסיסי: String str1 = new String(“abc”); String str2 = new String (“abc”); String str3 = “def”; טבלת משתנים זכרון ערך שם טיפוס 4 x int arr int [] str1 String str2 איך מיוצג מערך בזיכרון: .(new) שוויון: אותו מקום מזיכרון \ שוויון לוגי. S s1= new S (“abc”) S s2 = new S (“abc”) S s3 = s2; s1 != s2 s2==s3 הדוגמא הזאת לא עובדת בלי new לשים לב ש-str3 תצביע ל-String pool, לעומת str1 ו-str2 שיצביעו למקומות אחרים להסביר \b \t \n \\ \” \’ 3 8 2- abc abc 2

שיטות שימושיות של מחרוזות אורך המחרוזת str1.length() התו ה i במחרוזת str2.charAt(i) האינדקס הראשון במחרוזת בו מופיע התו 'A' str1.indexOf(‘A’) השוואת התוכן של שתי מחרוזות str1.equals(str2) כיצד בעצם אנו יודעים אילו שיטות יש למחלקה מסוימת (נניח String)? נא להכיר Java API כבר נתקלנו בעבר - בפרמטרים של main הופיע String כיצד בעצם אנו יודעים אילו שיטות יש למחלקה מסוימת (נניח String)? נא להכיר java api! במקום לרשום בגוגל java api ניתן לרשום ישירות java String ולהגיע לדף המתאים ב-API להסביר ששיטה של מחרוזת היא פונקציה של מחרוזת ספציפית – נדון בכך בהמשך הקורס we cannot change a string (ie at char i) talk about (a) Place.action(...) example Math.random() (b) action(...) example gcd(m,n) (c) animal.action(...) example: s.charAt(i) s.equals(r) 3

אופרטור + במחרוזות System.out.println(6+3+” is the answer”); System.out.println(“The answer is “+6+3);  The answer is 63 System.out.println(“The answer is “+(6+3));  The answer is 9

דוגמא לשימוש ב char וב String מספר הופעות התו ‘a’ במחרוזת str: public static int aCouner (String str) { int counter = 0; for (int i = 0; i<str.length(); i=i+1) if (str.charAt(i) == ‘a’) counter = counter+1; return counter; } counter , char c) { c להציג את aCounter (שמוסתר ע"י האנימציה) לשאול: מה אם רוצים לספור את ההופעות של תו אחר כל פעם? אז מציגים את הפונקציה counter לשים לב שניתן לקרוא למשתנה ולפונקציה באותו השם 5

הטיפוס הפרימיטיבי char char char1 = ‘b’; char char2 = ‘a’; S.o.p(char1);  b S.o.p((int) char2);  97 S.o.p((int) char1);  98 S.o.p((char)97);  a S.o.p((char)(int)char1);  b int i = ‘1’; // i=49 S.o.p(i+1);  50 char c = ‘9’; // c=57 S.o.p(c-’0’);  9 A<B<..<Z<a<b<..<z להדגיש שלא צריך לזכור את התרגום ל-int של תו כלשהו (גם אני בתור מתכנת ותיק לא זוכר...) מה שצריך לזכור זה את העובדה שהספרות והאותיות הן רצפים 6

פונקציות – מושג החתימה חתימה של פונקציה: public static <return value> <function name> (<arguments list>) חתימה של פונקציה: שם הפונקציה טיפוסי הפרמטרים (וסדרם!!) תתכן המרת טיפוסים, במידה ולא קיימת פונקציה בעלת החתימה המבוקשת לא יתכן מצב בו למספר פונקציות תהיה אותה חתימה כללי המרה!! Example: Math.sqrt(int) מבנה של פונקציה: public static <return value> <function name> (<arguments list>) חתימה של פונקציה מורכבת משמה ומרשימת הארגומנטים שהפונקציה מקבלת (מספר ,סוגי טיפוסי הפונקציה וסדרם). חתימה הפונקציה מסומנת בקו תחתי. לכל שתי פונקציות בתכנית חתימה שונה. p.s. int sig (int I, double j) {return 1;} p.s. int sig (double I, int j) {return 2;} p.s. void main (String[] args) { int x=1; double y=2.0; S.o.p(sig(x,y)); // 1 S.o.p(sig(y,x)); // 2 S.o.p(sig(x,x)); // Compilation error: ambiguous היה עובד אם היתה קיימת רק פונקציה אחת מהשתיים S.o.p(sig(y,y)); // Compilation error: can’t find… }

פונקציות – מושג החתימה public static int sig (int I, double j) {return 1;} public static int sig (double I, int j) {return 2;} public static void main (String[] args) { int x=1; double y=2.0; System.out.println (sig(x,y)); // 1 System.out.println (sig(y,x)); // 2 System.out.println (sig(x,x)); // Compilation error: ambiguous היה עובד אם היתה קיימת רק פונקציה אחת מהשתיים System.out.println (sig(y,y)); // Compilation error: can’t find… } זה נקרא "העמסה" (Overloading)

פונקציות – מושג החתימה String s = new String(“abcdc”); S.o.p(s.indexOf(‘c’) );  2 S.o.p(s.indexOf(‘c’,3) );  4 זה נקרא "העמסה" (Overloading)

הפיכת String מספרי ל-int: class Literal { public static void main(String[] args) { String s = args[0]; int myVal = intValue(s); … } Note that now s is a parameter given to main!! לדבר על המבנה של ה MAIN The students will see how to practically do it in the PS This function does something similar to Scanner.nextInt()

הפיכת String מספרי ל-int: public static int intValue(String s){ int base; // 8,10 or 16 int first; // Where does the number part start int value = 0, power = 1; if (s.length()==1 | s.charAt(0) != '0') { first=0; base=10;} else if (s.charAt(1)!='x') // Starting with 0 represents octal numbers { first=1; base=8;} else // Starting with 0x represents hexadecimal numbers { first=2; base=16;} for (int i = s.length()-1; i >= first; i = i-1){ value = value + intValue(s.charAt(i)) * power; power = power * base; } return value; Integer literals are strings which represent numeric data. In Java, integer literals of type byte, short, int or long may be written in three different bases: decimal, octal or hexadecimal. To distinguish in which base an integer literal is to be interpreted we examine the first characters in the string. Let us focus on positive integer values. If the first two characters in an integer literal are '0' and 'x' then the literal is specified in base 16; otherwise if the first character is a '0' then it is in base 8, otherwise if the first character is a non-zero digit the literal is decimal.

המשך: public static int intValue(char c) { // assuming c is a digit (indexOf returns also -1) final String conversion = "0123456789ABCDEF"; return conversion.indexOf(c); { an alternative is to return c-'0' or c-'A‘+10 depending on if c is between 0,9 or A,F שימו לב להעמסה של הפונקציה intValue

מחיקת איבר מ-String: public static String removeIndex(String str, int index) { return str.substring(0, index) + str.substring(index+1, str.length()); } // removeIndex להסביר על substring שזה מהאינדקס הראשון כולל ועד לאינדקס השני לא כולל 13

החלפת כל המופעים של תו מסוים: public static String replaceChar(String str, char c1, char c2) { String newStr = str; int i = str.indexOf(c1); while (i != -1) { // -1 means that indexOf did not find c1 newStr = newStr.substring(0,i) + c2 + str.substring(i+1,str.length()); i = str.indexOf(c1, i+1); } // while return newStr; } // replaceChar ניתן היה לרוץ על כל איברי המערך, אבל למה לא להשתמש ב-indexOf? ה-API של String מכיל פנינים רבות, כגון... replace ניתן היה פשוט לקרוא ל str.replace(c1,c2) replace public String replace(char oldChar, char newChar) לשים לב שזה מחזיר string חדש 14