‫מבוא למדעי המחשב‬
Lecture A
Slide 1 of 40.
Lesson A - Introduction
Unit A1 – About This Course
Lecture A
Slide 2 of 40.
‫מבוא למדעי המחשב‬
‫•מרצה‪ :‬נעם ניסן‬
‫‪‬שעת קבלה‪ :‬ג’ ‪( 2:00-3:00‬בנין רוס‪ ,‬חדר ‪)218‬‬
‫•מתרגלים‪ :‬ניר שרוני‪ ,‬מיכאל אוקון‪ ,‬מעאוויה עקש‬
‫•אתר הקורס‪www.cs.huji.ac.il/~intro2cs :‬‬
‫•ספר הקורס‪:‬‬
‫‪Java software solutions / Lewis & Loftus‬‬
‫‪Slide 3 of 40.‬‬
‫‪Lecture A‬‬
‫תוכן הקורס‪ :‬תכנות נכון בשפת ‪.Java‬‬
‫מטרות הקורס‪:‬‬
‫• אלגוריתמים‬
‫‪ ‬קורסים‪ :‬אלגוריתמים‪ ,‬חישוביות‬
‫• מבני נתונים‬
‫‪‬‬
‫קורסים‪ :‬מבני נתונים‪ ,‬מסדי נתונים‬
‫• רמות הפשטה מרובות‪:‬‬
‫ממשק ומימוש‬
‫• הנדסת תוכנה‬
‫‪‬‬
‫• שפה ומשמעות‬
‫‪‬‬
‫קורסים‪ :‬מתמטיקה‪ ,‬לוגיקה‪,‬‬
‫חישוביות‪ ,‬שפות תכנות‪ ,‬מהדרים‬
‫‪Slide 4 of 40.‬‬
‫קורסים‪ :‬מעבדת תכנות‪ ,‬מבני נתונים‬
‫• מערכות חישוב ותוכנה‬
‫‪‬‬
‫קורסים‪ :‬מיתוג‪ ,‬מסדי נתונים‪,‬‬
‫מערכות הפעלה‬
‫‪Lecture A‬‬
‫נושאי הקורס‬
‫• אלמנטים בסיסיים‪:‬‬
‫‪ ‬מבנה התוכנית וניסוחה‬
‫‪ ‬משתנים וביטוים‬
‫‪ ‬פקודות‬
‫‪ ‬בחירות‬
‫‪ ‬לולאות‬
‫‪ ‬מערכים‬
‫‪ ‬חריגות‬
‫• תיאוריה‪:‬‬
‫‪‬‬
‫‪‬‬
‫‪Slide 5 of 40.‬‬
‫ניתוח זמן ריצה‬
‫מה ניתן לחישוב‬
‫• תכנות מונחה עצמים‪:‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫שימוש באובייקטים‬
‫כתיבת אובייקטים‬
‫ירושה‬
‫ממשקים‬
‫• שיטות תכנות‪:‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫רקורסיה‬
‫מבני נתונים דינמיים‬
‫תבניות‬
‫ממשק משתמש‬
‫‪Lecture A‬‬
‫דרישות הקורס‬
‫• תרגיל תכנות כל שבוע (לפעמים כל שבועיים)‪.‬‬
‫‪‬‬
‫‪‬‬
‫‪‬‬
‫הרבה עבודה‪ .‬אין ברירה‪.‬‬
‫מומלץ לדון עם חברים‬
‫אסור!!!!! להעתיק‬
‫‪ ‬הבחנה‪ :‬דיון = דיבורים בעל פה ‪ --‬אין הכנסה או הוצאה של חומר‬
‫כתוב או מודפס‪.‬‬
‫• מבחן‬
‫• ציון סופי‪50/50 :‬‬
‫‪‬‬
‫‪Slide 6 of 40.‬‬
‫ציון תרגילים יחושב בהתעלמות מציון תרגיל נמוך ביותר‬
‫‪Lecture A‬‬
‫תלמידים ללא רקע תכנותי‬
‫•‬
‫•‬
‫•‬
‫•‬
‫הקורס מיועד לכם (וגם למי שיש לו רקע)‬
‫חודש ראשון יהיה קשה מאוד (קצת משעמם למי שיש רקע)‬
‫עד סוף הקורס צפוי "יישור קו" של כולם‬
‫מנגנוני עזרה‪:‬‬
‫‪‬‬
‫שעור עזר במהלך חודש ראשון‬
‫• שלישי ‪ 20:00-18:00‬פלדמן א‬
‫‪‬‬
‫ייעוץ במעבדות‬
‫• רשימת תורנות ‪http://www.cs.huji.ac.il/~intro2cs/toranot.html‬‬
‫‪‬‬
‫‪‬‬
‫‪Slide 7 of 40.‬‬
‫שעות קבלה‬
‫קבוצת דיון‬
‫‪Lecture A‬‬
Lesson A - Introduction
Unit A2 - Introduction to Hardware
Lecture A
Slide 8 of 40.
Our abstraction of a computer
Screen
Keyboard
Java
Program
CPU
Data
Memory
Lecture A
Slide 9 of 40.
Computer Organization Overview
Screen
Keyboard
Disk
Modem
Bus
Software
Operating System
Compiler
Our Program
CPU
…
Data
Random Access Memory
Lecture A
Slide 10 of 40.
Binary Representations
• Digital Computers only deal with 0 and 1
• We don’t care (mostly)
• Anything can be represented by sequences of 0 and 1:

Integers:
• 13 = “0000 1101”, 14 = “0000 1110” …

Characters:
• ‘A’ = “0010 0001”, ‘B’ = “0010 0010” ...
• The number of bits determines the number of items that
can be represented



2 bits give 4 combinations (00, 01, 10, 11)
8 bits (a byte) give 256 combinations
32 bits (a word) give more than 4,000,000,000 combinations
Lecture A
Slide 11 of 40.
An Example PC Specification
• 1.1 GHz Pentium IV Processor
• 256 MB RAM
• 20 GB Hard Disk
• 17” Display with 1280 x 1024 resolution
• 56 KB Modem
Lecture A
Slide 12 of 40.
More about Hardware
• Much more to learn
• Not the topic of this course
• Other courses deal with computer hardware




Digital Systems course
Computer Architecture course
Digital Communications course
Advanced courses
• In this course, we stick with our abstraction
Lecture A
Slide 13 of 40.
Lesson A - Introduction
Unit A3 – Introduction to Software
Lecture A
Slide 14 of 40.
Problems and Algorithms
• We need to solve a computational problem


“Simulate an Boeing 767 airplane”
“Convert a weight in pounds to Kg”
• An algorithm specifies how to solve it, e.g.:
1. Read weight-in-pounds
2. Calculate weight-in-Kg = weight-in-pounds * 0.455
3. Print weight-in-Kg
• Computers must be given exact instructions
• A computer program is a computer-executable description
of an algorithm
Lecture A
Slide 15 of 40.
Machine languages
• Each processor has its own machine language
• An assembly language is a human-readable form of the
machine language
load R7, value
0100 0111 1101 0011 ...
jgt label3
0101 1011 0110 0111 ...
add R7, bonus
0110 0111 1010 1100 ...
Lecture A
Slide 16 of 40.
High Level Languages
• Humans prefer programming in a high level language
• A compiler can translate to machine language
• A Interpreter can execute high-level code
load R7, value
If (value < 0)
value = value + bonus
jgt label3
add R7, bonus
Compilation
Lecture A
Slide 17 of 40.
Operating Systems
• Provides hardware-dependant services in a hardware-
independent way
• Used by application programs
• OS services to users




Files
Printing
Communication
Running programs
• OS services to application programs




All of the above
Memory Management
User Interface
Processes
Lecture A
Slide 18 of 40.
Lesson A - Introduction
Unit A4 – First Java Program
Lecture A
Slide 19 of 40.
The Java Programming Language
• Invented 1995 by James Gosling at Sun Microsystems.
• Based on previous languages: C, C++, Objective-C, …
• Intended to be a safe programming language for the
Internet
• Common choice for first programming language





Object oriented
Encourages good programming habits
Very popular commercially
Simpler and more elegant than C++, but similar to it
Cool
Lecture A
Slide 20 of 40.
Hello World Program
// My First Program!!
public class HelloWorld {
public static void main(String[] args){
System.out.println(“Hello World!”);
}
}
Lecture A
Slide 21 of 40.
Java Program Elements
• Words


Keywords
Identifiers
• Constants


Numbers
Strings
• Symbols

()[]{},.;+-*/
• Comments
Lecture A
Slide 22 of 40.
Java Elements
Comment
Identifier
Symbols
// My First Program!!
public class HelloWorld {
public static void main(String[] args){
System.out.println(“Hello World!”);
}
}
Keywords
String Constant
Lecture A
Slide 23 of 40.
Java Program Structure
• A program is composed of a collection of classes
• Each class contains a collection of methods
• Each method is composed of a sequence of instructions
(commands, statements)
Lecture A
Slide 24 of 40.
Java Program Structure
Class
Method
// My First Program!!
public class HelloWorld {
public static void main(String[] args){
System.out.println(“Hello World!”);
}
}
Instruction
Lecture A
Slide 25 of 40.
Lesson A - Introduction
Unit A5 – Running Your Program
Lecture A
Slide 26 of 40.
Running a Java Program
• Use an editor to enter (type) the program

Save to a file named HelloWorld.java
• Use the compiler to translate the program into bytecode


javac HelloWorld.java
This produces a file named HelloWorld.class
• Run the program using the Interpreter

java HelloWorld
Lecture A
Slide 27 of 40.
Java Compilation
Xxx.java
Compiler
Xxx.class
Interpreter
Output
Lecture A
Slide 28 of 40.
Entering a Java Program into an Editor
Lecture A
Slide 29 of 40.
Running a Java Program
Lecture A
Slide 30 of 40.
Integrated Development Environments (IDE)
• Include a combination of:




Editor
Compiler
Debugger
Project Management
• Some Commercial IDEs




Lecture A
Sun Forte
IBM Visual Age
Borland Jbuilder
…
Slide 31 of 40.
Forte – Screen Capture
Lecture A
Slide 32 of 40.
Debugging
• You will make many errors!
• Most of your time will be spent finding them and correcting
them -- debugging.
• There are several types of errors:

Syntax errors
• detected at compilation time

Run-time errors
• the program runs and crashes

Logical errors
• the program does something other than what you want it to do
• It does exactly what you told it to do
• The earlier an error is caught, the easier it is to correct
Lecture A
Slide 33 of 40.
Lesson 1 - Introduction
Unit A6 – Introduction to Objects
Lecture A
Slide 34 of 40.
Large Programs
• Commercial software may require millions of lines of code
• Humans can only handle about 7 things together
• To construct large programs:


break the program into components
then break each component, etc.
• When you use a component you only use its abstraction.
• When you construct a component you forget about the
rest of the program.
Lecture A
Slide 35 of 40.
Interfaces
• The interface of a software component is an exact
definition of what it can do
• It does not address how it does what it does
• When you use a component you only consider its
interface
• A good component will have a clear, narrow interface
Lecture A
Slide 36 of 40.
Objects
• Objects are the basic components in Java
• An object has an interface and an internal state.
• The interface encapsulates (hides) the internal operation
• The interface specifies the services the object provides
Object A that uses Object B
Lecture A
Object B
Slide 37 of 40.
A Turtle Object
Lecture A
Slide 38 of 40.
A Turtle Object
• A Turtle object represents a turtle that walks on the screen
with a pen on its tail
• Turtle object interface:





moveForward(distance)
moveRight(degrees)
moveLeft(degrees)
tailUp()
tailDown()
• Turtle object internal state



Location on screen
Direction facing
Tail is up or down
Lecture A
Slide 39 of 40.
Using a Turtle
public class TurtleDrawing {
public static void main(String[] args){
Turtle leonardo = new Turtle();
leonardo.tailDown();
leonardo.moveForward(100);
leonardo.turnRight(60);
leonardo.moveForward(100);
}
}
Lecture A
Slide 40 of 40.
Descargar

Lesson 1 - Introduction