Introduction to Java Programming and Data Structures

Содержание

Слайд 2

Introduction to Java Programming
and Data Structures

Presented to:
Amol University of Special Modern

Introduction to Java Programming and Data Structures Presented to: Amol University of Special Modern Technologies Vahid.khazaeinezhad@gmail.com
Technologies

Vahid.khazaeinezhad@gmail.com

Слайд 3

فصل دوم

زمستان 99

Elementary Programming

Introduction to Java Programming
and Data Structures

فصل دوم زمستان 99 Elementary Programming Introduction to Java Programming and Data Structures

Слайд 4

اهداف فصل

نوشتن برنامه های جاوا که محاسبات ساده ای انجام بدهند
دریافت ورودی

اهداف فصل نوشتن برنامه های جاوا که محاسبات ساده ای انجام بدهند
از کاربر با استفاده از کلاس Scanner
استفاده از Identifiers برای نام گذاری متغیرها، ثابت ها، متدها و کلاس ها
استفاده از متغیرها برای ذخیره سازی مقادیر
معرفی و کار با انواع پایه (Primitive Data Types)
نوشتن برنامه ای برای ارزیابی عبارات (Expression)
کار با ساعت سیستم
شرح فرایند توسعه نرم افزار با برنامه پول خرد کن

Слайд 5

2-1)مقدمه

تمرکز این فصل روی یادگیری تکنیک های پایه برنامه نویسی برای حل

2-1)مقدمه تمرکز این فصل روی یادگیری تکنیک های پایه برنامه نویسی برای
مساله است
در طول این فصل مقدمات کار با داده های اولیه، متغیرها، ثابت ها، اپراتورها، عبارات و ورودی و خروجی شرح داده می شود

Слайд 6

2-2)نوشتن یک برنامه ساده

برنامه نویسی شامل طراحی یک استراتژی برای حل مساله

2-2)نوشتن یک برنامه ساده برنامه نویسی شامل طراحی یک استراتژی برای حل
و سپس پیاده سازی آن با استفاده از یک زبان برنامه نویسی است.
برنامه ساده محاسبه مساحت یک دایره را در نظر می گیریم.
برای این کار ابتدا یک الگوریتم طراحی می کنیم و سپس الگوریتم را به دستورات / کدهای برنامه تبدیل(ترجمه) می کنیم
الگوریتم گام هایی که برای حل مساله باید دنبال بشود را لیست می کند.
الگوریتم امکان برنامه ریزی برای برنامه نویس پیش از شروع را می دهد
الگوریتم می تواند به زبان طبیعی، شبه کد (Pseudo Code) (به معنی ترکیب زبان طبیعی با کدهای برنامه نویسی)
الگوریتم محاسبه مساحت دایره:
شعاع دایره را بخوان
با استفاده از فرمول رو برو مساحت را محاسبه کن
نتیجه را نمایش بده

مساحت = شعاع * شعاع * π

Слайд 7

2-2)نوشتن یک برنامه ساده

در گام اول نیاز است که مقدار شعاع را

2-2)نوشتن یک برنامه ساده در گام اول نیاز است که مقدار شعاع
از کنسول ورودی (کیبورد) بخوانیم
برای این کار نیاز به یک متغیر داریم
متغیر مقداری را که در حافظه ذخیره شده نمایه می کند.
برای نام گذاری متغیر از یک عبارت توصیفی استفاده کنید (از نام گذاری x,y, … اجتناب کنید)
برای شعاع از radius و برای مساحت از area استفاده می کنیم
برای این که کامپیلر متغیرها را بشناسد باید آن ها را اعلان کنیم (Declaration)
باید نوع و نام متغیر مشخص بشود
به همین خاطر جاوا یک زبان static Typed است.
هر متغیر نوع (Type)، نام و مقدار (Value) دارد.

Слайд 8

2-2)نوشتن یک برنامه ساده

2-2)نوشتن یک برنامه ساده

Слайд 9

2-3)دریافت ورودی از کنسول

2-3)دریافت ورودی از کنسول

Слайд 10

2-3)نکته های برنامه

کنسول استاندارد خروجی مونیتور است که استفاده از System.out می

2-3)نکته های برنامه کنسول استاندارد خروجی مونیتور است که استفاده از System.out
توانیم با آن کار کنیم.
کنسول استاندارد ورودی کیبورد است که می توانیم با استفاده از System.in با آن کار کنیم.
برای استفاده از کنسول استاندارد ورودی می توانیم از کلاس Scanner بهره بگیریم.
دستور new Scanner (System.in) یک شی ایجاد می نماید.
دستور Scanner input یک متغیر با نام input از نوع کلاس Scanner می سازد.
یک رفرنس از شی ساخته شده به متغیر ایجاد شده انتساب داده می شود.
متد nextDouble در کلاس Scanner تعریف شده است.
کلاس Scanner در بسته (Package) java.util قرار دارد.
برای استفاده از بسته های از پیش تعریف شده باید ابتدا آن ها را import کنیم.
import java.util.Scanner;
دستور import داخل بسته جاری و خارج از همه ی بلوک ها نوشته می شود.

Слайд 11

مثال 1) برنامه بنویسید که سه عدد از ورودی گرفته و میانگین

مثال 1) برنامه بنویسید که سه عدد از ورودی گرفته و میانگین آن ها نمایش دهد.
آن ها نمایش دهد.

Слайд 12

2-4)شناسه ها (IDENTIFIERS)

شناسه ها نام هایی هستند که برای شناسایی عناصری مانند

2-4)شناسه ها (IDENTIFIERS) شناسه ها نام هایی هستند که برای شناسایی عناصری
کلاس ها و متدها و متغیرها در برنامه مورد استفاده قرار می گیرند.
Number1, input, main, computeAverage, ComputeAverage
قوانین نام گذاری شناسه ها:
شناسه دنباله ای از کاراکترها شامل حروف، عدد و under_score و dollar sign($)
یک شناسه می تواند با underscore, $ و حرف شروع بشود.
نمی تواند با عدد شروع بشود
یک شناسه نمی تواند یک کلمه رزرو شده باشد.
شناسه نمی تواند true, false, null باشد.
یک شناسه هر طولی (تعداد کاراکتری) می تواند داشته باشد.
$2, ComputeArea, print, _all نام های مجاز هستند.
2a, c+d نام های غیر مجاز هستند
کامپایلر وظیفه تطبیق نام ها با قوانین نام گذاری را بر عهده دارد و در صورت تخطی از قوانین تولید خطای نحوی (Syntax Error) می کند.

Слайд 13

2-4)شناسه ها (IDENTIFIERS)

توصیه ها:
به منظور افزایش خوانایی برنامه از نام های توصیف

2-4)شناسه ها (IDENTIFIERS) توصیه ها: به منظور افزایش خوانایی برنامه از نام
کننده استفاده کنید
نام ها در بردارنده کلمات معنی دار و کامل و توصیفی باشند. (Self_Documented)
از به کار بردن نام های اختصاری بپرهیزید.
از کاراکتر $ برای نام گذاری استفاده نکیند.
به عنوان یک قرارداد این کاراکتر برای نام گذاری در سورس کد های تولید شده توسط ماشین استفاده می شود.

Слайд 14

2-5)متغیرها (VARIABLES)

متغیرها برای نمایه کردن مقادیری که ممکن است در طول برنامه

2-5)متغیرها (VARIABLES) متغیرها برای نمایه کردن مقادیری که ممکن است در طول
تغییر کنند استفاده می شوند.
در جاوا متغیرها می توانند یک نوع از قبل اعلان شده را نمایه کنند (Static Typed )
پیش از استفاده از یک متغیر نام آن و نوعی که می تواند در خود ذخیره کند باید به کامپایلر اطلاع داده شود (Declaration)
اعلان متغیر به کامپایلر می گوید که فضای مناسب را در حافظه برای ذخیره سازی متغییر تخصیص بدهد.
انواع اولیه (Primitive) در جاوا:
byte, char, int, double, float, short, long, Boolean
مقدار دهی اولیه متغییر (Initialization):
در زمان اعلان متغییر مقدار دهی هم انجام بشود.
محدوده متغیر (Scope):
محدوده متغیر قسمتی از برنامه است که در آن می توان به متغیر ارجاع کرد.
هر متغیر یک محدوده دارد.
نکته
سعی کنید همواره زمان اعلان متغیر آن را مقدار دهی هم بکنید.
باعث افزایش خوانایی و جلوگیری از تولید خطا می شود.

int i = 0;

int i = 0, j = 0; //shorthand

Слайд 15

2-6) دستور مقدار دهی و عبارت مقدار دهی ASSIGNMENT STATEMENT ASSIGNMENT EXPRESSION

2-6) دستور مقدار دهی و عبارت مقدار دهی ASSIGNMENT STATEMENT ASSIGNMENT EXPRESSION

پس از اعلان متغیر می توان یک مقدار (Value) به آن نسبت داد.
در جاوا از اپراتور ( = ) برای نسبت دهی مقدار به متغیر استفاده می شود.
اگر طرف دوم اپراتور = یک مقدار محاسباتی (شامل مقدار، اپراتور و متغیر) باشد به آن عبارت نسبت دهی گفته می شود.
به طور کلی در جاوا (C++) هر نوع دستوری (Statement) یک عبارت (Expression) است.
در نسبت دهی چندگانه باید دقت نمود که نوع متغیرهای سمت راست اپراتور با نوع متغیرها سمت چپ اپراتور سازگار باشد

Слайд 16

2-7)ثابت ها (CONSTANTS)

ثابت های نام دار شناسه هایی هستند که مقادیر دائمی

2-7)ثابت ها (CONSTANTS) ثابت های نام دار شناسه هایی هستند که مقادیر
/ ثابت را نمایه می کنند.
مقدار متغیرها در زمان اجرای برنامه ممکن است تغیر بکند.
ثابت های نام دار و یا ساده هرگز تغییر نمی کنند.
یک ثابت به عنوان Final Variable نیز در جاوا شناخته می شود.
ثابت ها باید هم زمان با اعلان مقدار دهی اولیه (initialize) بشوند.
کلیدواژه تعریف یک ثابت final است.
به عنوان یک قرارداد ثابت ها با حروف بزرگ (تمامی حروف) نام گذاری می شوند.

Слайд 17

2-8)قرارداد نام گذاری (NAMING CONVENTION)

رعایت قرارداد نام گذاری (به نوعی استاندارد) خوانایی

2-8)قرارداد نام گذاری (NAMING CONVENTION) رعایت قرارداد نام گذاری (به نوعی استاندارد)
برنامه را افزایش می دهد و احتمال بروز خطاها کاهش می دهد.
اطمینان حاصل کنید که نام توصیفی ساده و قابل فهم برای متغیرها، ثابت ها، متدها و کلاس های خود انتخاب کرده اید.
جاوا یک زبان Case Sensitive است.
قواعد نام گذاری:
برای نام گذاری متغیرها و متدها از حروف کوچک استفاده کنید. radius, area
اگر نام شما از چند کلمه تشکیل شده است اولین کلمه با حروف کوچک و اولین حرف باقی کلمات با حروف بزرگ نوشته بشوند. (camelCase)
اولین حرف هر کلمه بکار رفته در نام کلاس را با حروف بزرگ بنویسید Circle
برای نام گذاری ثابت های به طور کامل از حروف بزرگ استفاده کنید SIZE, RATE
در صورتی که نام ثابت متشکل از چند کلمه است بین آن ها آن ها underscore ( _ ) قرار دهید. SIZE_OF_STUDENTS
از به کار بردن نام های استفاده شده در کتابخانه جاوا پرهیز کنید. print
در نام گذاری متدها اولین کلمه فعل باشد.computeArea, printMyValue

Слайд 18

2-9)انواع عددی و اپراتورها

جاوا شش نوعی داده ای عددی دارد.
هر نوع توانایی

2-9)انواع عددی و اپراتورها جاوا شش نوعی داده ای عددی دارد. هر
نگهداری یک رنج عددی را دارد.
چهار نوع byte, short, int, long برای کار با اعداد صحیح است.
دو نوع float, double برای کار با اعداد اعشاری است

Слайд 19

2-9-1)اپراتورهای عددی

اپراتورهای عددی تقویت شده (Augmented)

2-9-1)اپراتورهای عددی اپراتورهای عددی تقویت شده (Augmented)

Слайд 20

مثال 2) برنامه ای بنویسید که بر اساس عدد دریافتی از ساعت

مثال 2) برنامه ای بنویسید که بر اساس عدد دریافتی از ساعت
هوشمند محاسبه نماید کاربر چه مدت زمانی مشغول تمرین بوده است. (معمولا اعداد بر حسب میلی ثانیه داده می شوند)

Слайд 21

تمرین 3) امروز (روز m ام هفته) با دوست خود قرار می

تمرین 3) امروز (روز m ام هفته) با دوست خود قرار می
گذارید که n روز بعد او را ملاقات کنید. برنامه ای بنویسید که مشخص کندn روز بعد چه روزی از هفته خواهد بود. ورودی از کاربر در زمان اجرای برنامه گرفته شود و روز شنبه روز اول هفته در نظر گرفته شود.

به عنوان مثال امروز دو شنبه است و با دوست خود قرار گذاشته اید که 11 روز بعد او را ملاقات کنید. 11 روز بعد چه روزی از هفته خواهد بود؟!

Слайд 22

2-10)ثابت های عددی (NUMERIC LITERALS)

لیترال ها ثابت های عددی (اعدادی) هستند که

2-10)ثابت های عددی (NUMERIC LITERALS) لیترال ها ثابت های عددی (اعدادی) هستند
در برنامه به صورت مستقیم ظاهر می شوند.
اگر لیترال نسبت داده شده به یک متغیر از محدوده نگهداری نوع متغیر بیشتر باشد کامپایلر تولید خطای کامپایل (Compiler Error) می کند.
برای استفاده یا نمایش اعداد در مبناهای مختلف از روش زیر استفاده می شود:
افزودن 0b به ابتدای اعداد مبنای دو (Binary)
افزودن 0 در ابتدای اعداد مبنای هشت (Octal)
افزودن 0x ابتدای اعداد مبنای 16(Hex)
می توانیم برای خوانایی بیشتر اعداد بین آن ها از underScore استفاده کنیم. مانند 123_1455_25
اعداد اعشاری به صورت پیش فرض از نوع double در نظر گرفته می شوند برای جلوگیری ازین کار می توانیم انتهای اعداد اعشاری از f یا F استفاده کنیم.

Слайд 23

2-10)نماد علمی

 

2-10)نماد علمی

Слайд 24

2-11)ارزیابی عبارات و حق تقدم اپراتورها

عبارات در جاوا مشابه عبارات محاسباتی ارزیابی

2-11)ارزیابی عبارات و حق تقدم اپراتورها عبارات در جاوا مشابه عبارات محاسباتی
می شوند.
در عبارات محاسباتی ابتدا عبارت داخل پرانتز ارزیابی می شود.
اگر در یک عبارت بیش از یک اپراتور وجود داشته باشد:
ابتدا اپراتور های *, /, % مورد ارزیابی قرار می گیرند.
اگر در یک عبارت چند اپراتور ضرب و تقسیم و باقیمانده وجود داشته باشد به ترتیب از چپ به راست پردازش می شوند.
اپراتور های جمع و تفریق در انتها ارزیابی می شوند.
اگر در یک عبارت چند اپراتور جمع و تفریق وجود داشته باشد
به ترتیب از چپ به راست پردازش می شوند.
پس از ارزیابی عبارت محاسباتی اپراتورهای تقویت شده ارزیابی می شوند.
اپراتورهای تقویت شده با اپراتور انتساب ترکیب شده اند. (در مرحله انتساب عمل می کنند)
همه عملوندها از چپ به راست ارزیابی می شوند. در عملوند های باینری اول عملوند (عبارت)
سمت چپ ارزیابی می شود.

(3 + 4 * x) / 5 - 10 * (y - 5) * (a + b + c) / x + 9 * (4 / x + (9 + x) / y)

Слайд 25

مثال 3) برنامه ای بنویسید که از کاربر درجه دما به فارانهایت

مثال 3) برنامه ای بنویسید که از کاربر درجه دما به فارانهایت
را از کاربر دریافت نموده و به سیلیسیوس تبدیل کند.

Слайд 26

مثال 4) برنامه ای بنویسید که ساعت جاری سیستم را در قالب

مثال 4) برنامه ای بنویسید که ساعت جاری سیستم را در قالب h:m:s نمایش دهد.
h:m:s نمایش دهد.

Слайд 27

2-15)تبدیل انواع عددی

 

*2-12 و 2-13 و 2-14 در بخش 2-11 تجمیع گردید.

2-15)تبدیل انواع عددی *2-12 و 2-13 و 2-14 در بخش 2-11 تجمیع گردید.

Слайд 28

مثال 5) برنامه ای بنویسید که مقدار مالیات بر مصرف کننده (ارزش

مثال 5) برنامه ای بنویسید که مقدار مالیات بر مصرف کننده (ارزش
افزوده ایرانی) را به برای کالای خریداری شده محاسبه نماید. (9%)

Слайд 29

2-16)فرایند توسعه نرم افزار

چرخه حیات توسعه نرم افزار یک فرایند چند مرحله

2-16)فرایند توسعه نرم افزار چرخه حیات توسعه نرم افزار یک فرایند چند
ای شامل تشریح نیازمندی ها، تجزیه و تحلیل، پیاده سازی، تست، استقرار و نگهداری است.
توسعه نرم افزار یک فرایند مهندسی است.

تشریح نیازمندی ها

تجزیه و تحلیل
سیستم

طراحی سیستم

پیاده سازی

تست

استقرار

نگهداری

Слайд 30

2-16)فرایند توسعه نرم افزار

Requirement Specification: بخشی از روند اصلی توسعه نرم افزار

2-16)فرایند توسعه نرم افزار Requirement Specification: بخشی از روند اصلی توسعه نرم
است و طی آن مساله ای که قرار است توسط نرم افزار حل شود به خوبی و با جزئیات شناسایی و توسط مستندات تشریح می شود. در این مرحله مشخص می شود که سیستم نرم افزاری چه نیازهایی دارد.
نیازمند ارتباط نزدیک تیم توسعه و کار بر است
System Analysis: در این مرحله جریان داده در سیستم نرم افزاری به خوبی شناسایی می شود و ورودی / خروجی های سیستم مشخص می شود
System Design: شامل طراحی فرایندی می شود که بتوان طی آن از ورودی ها به خروجی های تعیین شده دست یافت.
این مرحله شامل انتزاع (Abstraction)، خرد کردن مساله به اجزا (Components) قابل مدیریت و طراحی استراتژی برای پیاده سازی هر یک از اجزا می شود.
هر جز می تواند به عنوان یک زیر سیستم یا یک کارکرد (Function) در نظر رگفته شود.
Implementation: شامل ترجمه / تبدیل طراحی سیستم انجام شده به برنامه است.
تجزیه سیستم به اجزا پیاده سازی شده (نوشته شده) و سپس مجتمع سازی اجزا برای کار کردن با یک دیگر
این مرحله شامل کدنویسی، تست و خطایابی (Debug) می شود.
Testing: این مرحله شامل اطمینان پیدا کردن از در نظر گرفتن تمام نیازمندی های تشریح شده در سند نیازمندی ها و بدون عیب بودن کدها است.
معمولا یک تیم مستقل که قبلا در مراحل طراحی و پیاده سازی درگیر نبوده اند وظیفه تست را عهده می گیرند.

Слайд 31

2-16)فرایند توسعه نرم افزار

Deployment: شامل در دسترس قرار دادن نرم افزار برای

2-16)فرایند توسعه نرم افزار Deployment: شامل در دسترس قرار دادن نرم افزار
کاربر است.
بسته به نوع نرم افزار می تواند روی کامپیوتر کاربر و یا روی سرور استقرار صورت گیرد
Maintenance: ناظر بر بهبود و بروز رسانی محصول است.
فرایند بهبود و بروزرسانی به صورت دائمی باید انجام بشود.
به دلیل تغییر نیازمندی های کاربر و کشف خطاهای جدید در نرم افزار

Слайд 32

 

مثال 6) به منظور درک بهتر چرخه توسعه نرم افزار نرم افزار

مثال 6) به منظور درک بهتر چرخه توسعه نرم افزار نرم افزار
پرداخت وام را گام به گام پیاده سازی می کنیم. وام خودرو، وام دانشجویی و وام رهن منزل می تواند نمونه ای از انواع وام باشد.

Слайд 33

 

مثال 6) ادامه

مثال 6) ادامه

Слайд 34

مثال 6) ادامه

مرحله 5) Test: در این مرحله لازم است با دادن

مثال 6) ادامه مرحله 5) Test: در این مرحله لازم است با
ورودی های مختلف درستی خروجی رو مورد بررسی قرار دهید. در برنامه های پیشرفته لازم است طراحی تست برای نرم افزار و تک تک اجزا صورت بپزیرد.

Слайд 35

تمرین 4) برنامه ای بنویسید که مبلغ داده شده توسط کاربر (کمتر

تمرین 4) برنامه ای بنویسید که مبلغ داده شده توسط کاربر (کمتر
از 100 هزار تومان) را با مبالغ 50000 و 10000 و 5000 و 2000 و 1000 و 500 تومانی خرد کند.

Слайд 36

2-18)خطاها

خطاهای متداول 1) متغیرهای اعلان نشده، مقداردهی نشده و بلااستفاده
معمولا IDE

2-18)خطاها خطاهای متداول 1) متغیرهای اعلان نشده، مقداردهی نشده و بلااستفاده معمولا
ها به کاربر اخطار می دهند.
خطاهای متداول 2) integer overflow
جاوا هیچ اخطاری در این زمینه صادر نمی کند. (کاملا در خصوص overflow, underflow محتاط باشید)
خطاهای متداول 3) خطای گرد کردن
در مسائله گردن کردن اعداد اعشاری رخ می دهد.
خطاهای متداول 4) تقسیم های ناخواسته اعداد int
اگر دو طرف اپراتور تقسیم مقدار int باشد پاسخ مقدار int خواهد بود و قسم اعشاری احتمالی حذف خواهد شد.

*2-17 به عنوان تمرین داده شد.

Слайд 37

2-18) تله های متداول (PITFALLS)

تله 1) ایجاد اشیا اضافه
مانند ایجاد چندین شی

2-18) تله های متداول (PITFALLS) تله 1) ایجاد اشیا اضافه مانند ایجاد
از کلاس Scanner برای دریافت اطلاعات از کنسول

*2-17 به عنوان تمرین داده شد.

Имя файла: Introduction-to-Java-Programming-and-Data-Structures.pptx
Количество просмотров: 27
Количество скачиваний: 0