تبلیغات :
ماهان سرور
آکوستیک ، فوم شانه تخم مرغی ، پنل صداگیر ، یونولیت
دستگاه جوجه کشی حرفه ای
فروش آنلاین لباس کودک
خرید فالوور ایرانی
خرید فالوور اینستاگرام
خرید ممبر تلگرام

[ + افزودن آگهی متنی جدید ]




صفحه 4 از 5 اولاول 12345 آخرآخر
نمايش نتايج 31 به 40 از 50

نام تاپيک: آموزش جامع و كامل برنامه هاي كاربردي

  1. #31
    آخر فروم باز WooKMaN's Avatar
    تاريخ عضويت
    Oct 2005
    محل سكونت
    Ķêŗmάņšĥąħ
    پست ها
    10,533

    پيش فرض

    مقدمه اي بر سي شارپ : قسمت نوزدهم


    سربارگذاري عملگر ها (Operator OverLoading)

    به تعريف مجدد راه و روش اجراي عملگر ها توسط ما ، سربارگذاري عملگرها گفته مي شود. فرض كنيد مي خواهيد عدد 2 را به يك مقدار datetime اضافه كنيد. خطاي زير حاصل خواهد شد:


    CS0019: Operator '+' cannot be applied to operands of type 'System.DateTime' and 'int'



    جالب بود اگر مي توانستيم عدد 2 را به datetime اضافه كنيم و نتيجه ي آن تعداد روزهاي مشخص بعلاوه ي دو مي بود. اينگونه توانايي ها را مي توان بوسيله ي operator overloading ايجاد كرد.

    تنها عملگر هاي زير را مي توان overload كرد:


    Unary Operators
    + - ! ~ ++ -- true false

    Binary Operators
    + - * / % & | ^ << >> == != > < >= <=



    نحوه ي انجام اينكار نيز در حالت كلي به صورت زير است:


    return_datatype operator operator_to_be_overloaded (agruments)
    {
    }



    به مثال زير توجه كنيد:


    using System;
    class MyDate
    {
    public DateTime tempDate;
    public MyDate(int year,int month,int day)
    {
    tempDate=new DateTime(year,month,day);
    }
    public static DateTime operator + (MyDate D,int noOfDays)
    {
    return D.tempDate.AddDays(noOfDays);
    }
    public static DateTime operator + (int noOfDays,MyDate D)
    {
    return D.tempDate.AddDays(noOfDays);
    }
    }

    class Test
    {
    static void Main()
    {
    MyDate MD=new MyDate(2001,7,16);
    Console.WriteLine(MD + 10 );
    }
    }

    output:
    2001-07-26



    در مثال فوق عملگر + دوبار overload شده است. يكبار توسط آن مي توان يك عدد صحيح را به يك تاريخ اضافه كرد و بار ديگر يك يك تاريخ را مي توان به عدد صحيح افزود.


    موارد زير را هنگام سربارگذاري عملگرها به خاطر داشته باشيد:

    1- تنها اپراتورهاي ذكر شده را مي توان overload كرد. اپراتورهايي مانند new,typeof, sizeof و غيره را نمي توان سربارگذاري نمود.
    2- خروجي متدهاي بكار گرفته شده در سربارگذاري عملگر ها نمي تواند void باشد.
    3- حداقل يكي از آرگومانهاي بكار گرفته شده در متدي كه براي overloading عملگرها بكار مي رود بايد از نوع كلاس حاوي متد باشد.
    4- متدهاي مربوطه بايد به صورت public و static تعريف شوند.
    5- هنگامي كه اپراتور < را سربارگذاري مي كنيد بايد جفت متناظر آن يعني > را هم سربارگذاري نماييد.
    6- هنگاميكه براي مثال + را overload مي كنيد خودبخود =+ نيز overload شده است و نيازي به كدنويسي براي آن نيست.


    يكي از موارد جالب بكار گيري سربارگذاري عملگرها در برنامه نويسي سه بعدي و ساختن كلاسي براي انجام عمليات ماتريسي و برداري مي باشد.

  2. #32
    آخر فروم باز WooKMaN's Avatar
    تاريخ عضويت
    Oct 2005
    محل سكونت
    Ķêŗmάņšĥąħ
    پست ها
    10,533

    پيش فرض

    مقدمه اي بر سي شارپ : قسمت بيستم


    Delegates

    Delegates در سي شارپ روشي مطمئن و typesafe را براي بكار گيري مفهوم function pointer ارائه مي دهند. يكي از ابتدايي ترين استفاده هاي function pointers پياده سازي callback مي باشد. اما در ابتدا لازم است تا با اصول اوليه ي كاري آن آشنا شويم.

    مثال يك :
    يك delegate چگونه تعريف و استفاده مي شود؟
    Delegate يك شيء است كه بيانگر يك تابع مي باشد بنابراين مي تواند بعنوان آرگومان ورودي يك تابع ديگر و يا عضوي از يك كلاس بكار رود.
    در زبان "function-pointer" ، Func1() اشاره گري به Func2() را بعنوان پارامتر دريافت كرده و نهايتا آنرا فراخواني مي كند.
    در زبان "delegate" ، Func1() يك شيء delegate از Func2() را دريافت كرده و سپس آنرا فراخواني مي كند.
    در مثال زير از دو تابع براي شرح اين مطلب سود جسته شده است:
    Func1() از delegate استفاده مي كند.
    Func2() يك delegate است.

    ( شماره گذاري خطوط ، در كد زير ، صرفا براي راحت تر شدن توضيحات در مورد آنها است و لزومي به تايپ آنها در برنامه ي اصلي نيست. )


    01 using System;
    02 delegate void Delg(string sTry);
    03 public class Example1{

    // function which uses the delegate object
    04 private static void Func1(Delg d){
    05 d("Passed from Func1");
    06 }

    // function which is passed as an object
    07 private static void Func2(string sToPrint){
    08 Console.WriteLine("{0}",sToPrint);
    09 }

    // Main execution starts here
    10 public static void Main(){
    11 Delg d = new Delg(Func2);
    12 Func1(d);
    13 }
    14 }


    LINE 02
    يك شيء delegate را براي Func2 تعريف مي كند.

    LINE 04-06
    تابعي را تعريف كرده است كه آرگومان ورودي آن از نوع Delg است.

    LINE 07-09
    تابعي را تعريف مي كند كه بايد به صورت delegate به تابع ديگر فرستاده شود.

    LINE 10-14
    تابع Main اجراي برنامه را با ايجاد يك شيء delegate براي Func2 آغاز كرده و سپس تابع Func1 را فراخواني مي كند.

    مثال 2:
    چگونه مي توان از delegates در كارهاي عملي استفاده كرد؟

    طرح يك مساله:
    شخصي تقاضاي ثبت نام در يك مؤسسه ي آموزشي و همچنين تقاضاي كاريابي در يك شركت را داده است. هر كدام از اين نهادها روشي خاص خود را براي ارزيابي شخص دارند.

    راه حل (با روشي شيء گرا):
    شخص مشخصاتي همچون سن / جنس / ميزان تحصيلات قبلي / تجربيات كاري و مدارك مرتبط دارد.
    مؤسسه ي آموزشي تعدادي از اين مشخصات را براي ارزيابي شخص استفاده مي كند و اين امر در مورد شركت ياد شده نيز صادق است.
    شيء شركت و شيء آموزشگاه هر كدام توابع ارزيابي خاص خودشان را پياده سازي مي كنند.
    شخص ، اينترفيسي واحدي را در اختيار شركت / آموزشگاه براي ارزيابي خود قرار مي دهد.

    پياده سازي (با استفاده از سي شارپ):
    ما delegate‌ايي را تعريف مي كنيم كه بيانگر اينترفيسي است كه به شركت و آموزشگاه اجازه ي چك كردن شخص را مي دهد.
    سه كلاس school و company و person را تعريف مي نماييم.
    كلاس test را براي آزمودن اين موارد ايجاد مي كنيم.


    01 using System;
    02 using System.Collections;

    03 public delegate bool GetChecker(Person p);

    // Person has his information with him as he
    // applies for School and Company
    04 public class Person
    05 {
    06 public string Name;
    07 public int Age;
    08 public bool Graduate;
    09 public int YearsOfExp;
    10 public bool Certified;

    11 public Person(string name,
    int age,
    bool graduate,
    int yearsOfExp,
    bool certified)
    12 {
    13 Name=name;
    14 Age=age;
    15 Graduate=graduate;
    16 YearsOfExp=yearsOfExp;
    17 Certified=certified;
    18 }
    19 public bool CheckMe(GetChecker checker)
    20 {
    21 return(checker(this));
    22 }
    23 }

    // A school, the person applied for higher studies
    24 public class School
    25 {
    26 public static bool SchoolCheck(Person p)
    27 {
    28 return (p.Age>10 && p.Graduate);
    29 }
    30 }

    // A Company, the person wants to work for
    31 public class Company
    32 {
    33 public static bool CompanyCheck(Person p)
    34 {
    35 return (p.YearsOfExp>5 && p.Certified);
    36 }
    37 }

    // A Test class, displays delegation in action
    38 public class Test
    39 {
    40 public static void Main()
    41 {
    42 Person p1 = new Person("Jack",20,true,6,false);
    43 Console.WriteLine("{0} School Check : {1}",
    p1.Name,
    p1.CheckMe(new GetChecker(School.SchoolCheck)));
    44 Console.WriteLine("{0} Company Check : {1}",
    p1.Name,
    p1.CheckMe(new GetChecker(Company.CompanyCheck)));
    45 }
    46 }


    LINE 03
    Delegate مورد نياز را تعريف مي كند.

    LINE 04-23
    كلاس person را تعريف مي كند. اين كلاس تابعي پابليك را ارائه مي دهد كه آرگومان ورودي آن از نوع GetChecker مي باشد.

    LINE 24-30
    كلاس school را تعريف مي كند و سپس تابعي را كه delegate است ارائه مي دهد.

    LINE 31-37
    كلاس company را تعريف مي كند و سپس تابعي را كه delegate است ارائه مي دهد.

    LINE 38-36
    كلاس test را پياده سازي مي نمايد. سپس يك شيء شخص ساخته مي شود. در ادامه new GetChecker(School.SchoolCheck) و new GetChecker(Company.CompanyCheck) شيء ايي را ايجاد مي كند از نوع delegate مورد نياز و آنرا به تابع CheckMe مي فرستد. خروجي نتيجه ي ارزيابي اين شخص مي باشد.

    اگر چك كردن اشخاص بيشتري نياز باشد به اين صورت عمل مي شود:


    Person p1 = new Person("Jack",20,true,6,false);
    Person p2 = new Person("Daniel",25,true,10,true);
    GetChecker checker1= new GetChecker(School.SchoolCheck);
    GetChecker checker2= new GetChecker(School.CompanyCheck);

    Console.WriteLine("{0} School Check : {1}",
    p1.Name,p1.CheckMe(checker1));
    Console.WriteLine("{0} Company Check : {1}",
    p1.Name,p1.CheckMe(checker2));
    Console.WriteLine("{0} School Check : {1}",
    p2.Name,p2.CheckMe(checker1));
    Console.WriteLine("{0} Company Check : {1}",
    p2.Name,p2.CheckMe(checker2));


    مثال 3 :
    Delegates در تعامل بين دات نت فريم ورك و سي شارپ چه نقشي دارد؟

    طرح يك مساله:
    نمايش دادن ميزان پيشرفت خواندن يك فايل هنگامي كه حجم فايل بسيار زياد است.

    راه حل ( با استفاده از سي شارپ):
    در مثال زير از كلاس FileReader براي خواندن يك فايل حجيم استفاده شده است. هنگاميكه برنامه مشغول خواندن فايل است 'Still reading.. را نمايش مي دهد و در پايان 'Finished reading..'. را عرضه مي كند.
    براي اينكار از فضاي نام System.IO استفاده شده است. اين فضاي نام حاوي delegate ايي مهيا شده براي ما مي باشد. بدين ترتيب مي توانيم به دات نت فريم ورك بگوييم كه ما تابعي را تعريف كرده ايم كه او مي تواند آنرا فراخواني كند.
    سؤال: چه نيازي وجود دارد تا دات نت فريم ورك تابع ما را فراخواني و اجرا كند؟ با استفاده از تابع ما كه دات نت فريم آنرا صدا خواهد زد در طول خواندن فايل به ما گفته مي شود كه بله! من هنوز مشغول خواندن هستم! به اين عمليات Callback نيز گفته مي شود. به اينكار پردازش asynchronous نيز مي گويند!


    01 using System;
    02 using System.IO;

    03 public class FileReader{
    04 private Stream sInput;
    05 private byte[] arrByte;
    06 private AsyncCallback callbackOnFinish;

    07 public FileReader(){
    08 arrByte=new byte[256];
    09 callbackOnFinish = new AsyncCallback(this.readFinished);
    10 }

    11 public void readFinished(IAsyncResult result){

    12 if(sInput.EndRead(result)>0){
    13 sInput.BeginRead(arrByte,
    0,
    arrByte.Length,
    callbackOnFinish,
    null);
    14 Console.WriteLine("Still reading..");
    15 }
    16 else Console.WriteLine("Finished reading..");
    17 }

    18 public void readFile(){
    19 sInput = File.OpenRead(@"C:\big.dat");
    20 sInput.BeginRead(arrByte,
    0,
    arrByte.Length,
    callbackOnFinish,
    null);
    21 for(long i=0;i<=1000000000;i++){
    // just to introduce some delay
    22 }
    23 }

    24 public static void Main(){
    25 FileReader asynctest=new FileReader();
    26 asynctest.readFile();
    27 }
    28 }


    LINE 02
    فضاي نام System.IO را به برنامه ملحق مي كند. اين فضاي نام به صورت خودكار حاوي تعريف delegate زير مي باشد:

    public delegate void AsyncCallback (IAsyncResult ar);

    LINE 03-10
    تعريف كلاس

    LINE 06
    شيء delegate را تعريف مي كند.

    LINE 07-10
    سازنده ي كلاس را پياده سازي مي كنند. در اينجا ما تصميم گرفته ايم كه بافري حاوي 256 بايت را در هر لحظه بخوانيم.

    LINE 09
    شيء delegate نمونه سازي شده است.

    LINE 18-23
    readFile را پياده سازي مي كند.

    LINE 12-16
    نحوه ي استفاده از شيء IAsyncResult را بيان مي كند.

    LINE 12
    sInput.EndRead(result) تعداد بايتهاي خوانده شده را بر مي گرداند. اين خواندن تاجايي كه تعداد بايتهاي خوانده شده صفر است ادامه پيدا مي كند و در اينجا 'Finished reading..' اعلام مي گردد.

  3. #33
    آخر فروم باز WooKMaN's Avatar
    تاريخ عضويت
    Oct 2005
    محل سكونت
    Ķêŗmάņšĥąħ
    پست ها
    10,533

    پيش فرض

    معرفي اوليه VB.NET

    يک برنامه کامپيوتري ، از مجموعه اي دستورالعمل که نوع و نحوه انجام يک فعاليت را براي کامپيوتر مشخص مي نمايند ، تشکيل مي گردد. دستورالعمل هاي نوشته شده بعنوان نمونه ممکن است به کامپيوتر اعلام نمايند که تعدادي از اعداد را با يکديگر جمع و يا دو عدد را بايکديگر مقايسه و بر اساس نتيجه بدست آمده ، اتخاذ تصميم نمايد. دستورالعمل هاي نوشته شده ، صرفا" براي کامپيوتر قابل فهم و اجراء خواهند بود.کامپيوتر دستورالعمل هاي نوشته شده را اجراء و ماحصل آن رسيدن به اهدافي خواهد بود که بر اساس آن برنامه طراحي و پياده سازي شده است . دستورالعمل ها ، مي بايست با استفاده از يکي از زبانها ي برنامه نويسي نوشته شده ( کد ينگ ) و در ادامه در اختيار کامپيوتر قرار داده شوند. زبانهاي برنامه نويسي متعددي نظير : فرترن ، بيسيک ، کوبال ، پاسکال، ،C ، جاوا ، ويژوال بيسيک و ... وجود دارد.
    برنامه نويسي کامپيوتر ، مشابه آموزش گره زدن کفش به کودکان است . براي نيل به هدف فوق ، مي بايست تمامي مراحل لازم بصورت شفاف به کودکان آموزش داده شود . کودکان با دنبال نمودن دستورالعمل هاي ارائه شده ، قادر به گره زدن کفش خود خواهند بود ( روش انجام اين کار براي آنان مشخص شده و بر اساس آن ، امکان نيل به هدف مورد نظر توسط کودکان فراهم مي گردد ) . VB.NET ، زباني است که مي توا ن نحوه نيل به يک خواسته را بکمک آن بصورت شفاف ( نظير آموزش گره زدن کفش به کودکان ) مشخص و کامپيوتر با دنبال نمودن مراحل مشخص شده ، خواسته مورد نظر را محقق نمايد. با استفاده از VB.NET ، مي توان محصولاتي راايجاد که زمينه استفاده از آنان در محيط ويندوز و اينترنت ، وجود خواهد داشت . فراموش نکنيم در زمان فراگيري يک تکنولوژي در ابتدا مي بايست شيوه راه رفتن را بياموزيم و در ادامه اقدام به دويدن نمود .
    VB.NET يکي از زبان هاي حمايت شده در دات نت مي باشد . با استفاده از زبان فوق علاوه بر اينکه مي توان برنامه هاي مبتني بر ويندوز را پياده سازي نمود ، امکان استفاده از آن بعنوان زبان مورد نظر در زمان ايجاد برنامه هاي مبتني بر وب که از تکنولوژي ASP.NET استفاده مي نمايند ، نيز وجود خواهد داشت . با توجه به اهميت و جايگاه خاص اين زبان در دات نت ، مجموعه مقالاتي در رابطه با آموزش اصولي اين زبان آماده شده که بتدريج بر روي سايت قرار خواهند گرفت . در اولين مقاله از اين مجموعه به معرفي اوليه VB.NET خواهيم پرداخت . در ابتدا لازم است با ويژگي هاي منحصر بفرد برنامه هاي مبتني بر ويندوز در قياس با برنامه هاي مبتني بر DOS ، آشنا شده و پس از مروري مختصر به روند شکل گيري نسخه هاي متعدد ويژوال بيسيک ، با نحوه نصب آن نيز آشنا شويم .

    برنامه نويسي مبتني بر DOS در مقابل ويندوز
    برنامه نويسي مبتني بر ويندوز داراي تفاوت هاي عمده اي نسبت به برنامه نويسي سنتي در محيط DOS است.برنامه هاي DOS ، مسيري دقيق و مشخص را ازابتدا تا پايان دنبال مي نمايند . رويکرد فوق ، باعث بروز محدوديت هائي در رابطه با عملکرد برنامه ها از يکطرف و تحميل محدوديت هائي به کاربران در طي نمودن مسير مشخص شده ، مي گردد. از زاويه اي خاص مي توان عملکرد يک برنامه مبتني بر DOS را مشابه قدم زدن در يک راهرو ( سالن )، در نظر گرفت . بمنظور رسيدن به نقطه انتهائي سالن ، مي بايست طول سالن طي تا به انتهاي آن رسيد . در اين راستا از موانع متعدد موجود در مسير ، مي بايست عبور تا سرانجام به مقصد مورد نظر رسيد . در زمان پيمودن مسير ، صرفا" امکان بازنمودن درب هاي خاصي ، وجود خواهد داشت . ويندوز ، دنياي جديدي از برنامه نويسي مبتني بر "رويداد" را ايجاد نموده است . کليک نمودن موس ، تغيير اندازه پنجره ، تغيير محتويات يک Textbox ، نمونه هائي از يک "رويداد" مي باشند. کدهاي نوشته شده ، نحوه برخورد با يک رويداد را مشخص مي نمايد. براي رسيدن به انتهاي يک سالن کافي است بر روي "انتهاي سالن " ، کليک نمود و ديگر ضرورتي به پيمودن تمامي مسير تا رسيدن به انتهاي سالن نخواهد بود . درصورتيکه به انتهاي سالن رسيده باشيم و متوجه گرديم که اين مکان ، محلي نيست که انتظار آن را داشته ايم ، بسادگي مي توان مقصد جديدي را براي خود انتخاب ، بدون اينکه ضرورتي به برگشت در نقطه آغازين مسير وجود داشته باشد. برنامه نوشته شده عکس العمل هاي لازم در ارتباط با حرکت شما را بهمراه عمليات مربوطه بمنظور تکميل فعاليت ها ي مورد نظر انجام خواهد داد . با استفاده از VB.NET ، مي توان کدهاي لازم بمنظور ارائه عکس العمل لازم در زمان تحقق يک رويداد را نوشت .در اين راستا ، برنامه نويسان مي توانند کدهاي لازم در رابطه با رويدادهائي که امکان تحقق آنها وجود دارد را نوشته تا در زمان بروز رويداد مورد نظر ، عکس العمل لازم از طرف برنامه صورت پذيرد.در اين زمينه مي توان از نوشتن کدهاي ديگر بمنظور برخورد با رويدادهاي غيرضروري ، صرفنظر کرد. مثلا" ويندوز قادر به تشخيص رويداد"کليک " از "کليک مضاعف " است . اين بدان معني است که اگر مي خواهيد برنامه مورد نظر شما ،عکس العمل لازم در ارتباط با رويداد "کليک" را داشته باشد ، مي بايست صرفا" کد مربوط به رويداد " کليک"، نوشته گردد و الزامي به نوشتن کدهاي لازم بمنظور برخورد با رويداد "کليک مضاعف" ، وجود نخواهد داشت . در دنياي برنامه نويسي DOS ، کاربر عکس العمل لازم را نسبت به برنامه انجام مي دهد در صورتيکه در ويندوز ، برنامه ها عکس العمل لازم را با توجه به رفتار کاربران ، انجام خواهند داد .
    يکي ديگر از مزاياي مهم برنامه هاي ويندوز ، عدم وابستگي برنامه ها به يک سخت افزار خاص است . ويندوز تمهيدات لازم در خصوص ارتباط با سخت افزار را پيش بيني و برنامه نويسان نياز به آگاهي از نحوه عملکرد يک دستگاه سخت افزاري خاص بمنظور استفاده از آن ، نخواهند داشت . مثلا" برنامه نويسان ضرورتي به آگاهي از نحوه عملکرد هر نوع چاپگر ليزري، بمنظور ايجاد خروجي مورد نظر خود در برنامه ها ، نخواهند داشت. ويندوز، امکانات لازم در اين خصوص را از طريق ارائه روتين هاي عمومي که با درايورهاي مورد نظر مرتبط مي گردند ، فراهم مي نمايد. شايد همين موضوع دليل موفقيت ويندوز باشد .
    روتين هاي عمومي اصطلاحا" Windows (API ) Application Programming Interface ناميده مي شوند .

    تاريخچه ويژوال بيسيک
    قبل از معرفي ويژوال بيسيک در سال 1991 ، پياده کنندگان نرم افزار مجبور به تسلط و مهارت در زمينه استفاده از ++C بهمراه موارد پيچيده اي در اين خصوص بودند . بدين ترتيب ، صرفا" افراد خاص آموزش ديده، قادر به خلق نرم افزارهاي قدرتمند بمنظور اجراء در محيط ويندوز بودند. ويژوال بيسيک ، محدوديت فوق را تغيير و مي توان اين ادعا را داشت که امروزه خطوط زيادي از برنامه هاي نوشته شده با استفاده از ويژوال بيسيک کد شده است . ويژوال بيسيک ، ظاهر برنامه نويسي تحت ويندوز را با حذف عمليات اضافي براي نوشتن کدهاي لازم جهت طراحي بخش رابط کاربر (UI) ، تغيير داده است . در اين راستا ، زمانيکه بخش رابط کاربر ، ترسيم مي گردد ، برنامه نويس مي تواند کدهاي لازم بمنظور انجام عکس العمل مناسب در رابطه با رويداد ها را به آن اضافه نمايد . زمانيکه ماکروسافت نسخه شماره سه ويژوال بيسيک را ارائه نمود ، مجددا" دنياي برنامه نويسي با تغيير مهمي مواجه گرديد. در اين راستا امکانات مناسبي براي نوشتن برنامه هاي مبتني بر بانک هاي اطلاعاتي ، در اختيار برنامه نويسان قرار گرفت. ماکروسافت بدين منظور محصول جديدي با نام DAO)Data Access Objects) را ارائه نمود . برنامه نويسان با استفاده از DAO ، امکان انجام عمليات متفاوت در رابطه با داده ها را ، بدست آوردند . نسخه هاي شماره چهار و پنج ، قابليت هاي نسخه سه را افزايش و اين امکان را براي پياده کنندگان نرم افزار فراهم نمود تا برنامه هاي خود را جهت اجراء در محيط ويندوز 95 ، طراحي و پياده سازي نمايند . در اين زمينه ، برنامه نويسان قادر به نوشتن کدهائي گرديدند که امکان استفاده از آنان توسط ساير پياده کنندگان نرم افزار که از زباني ديگر استفاده مي کردند، فراهم گرديد. نسخه شماره شش ويژوال بيسيک ، روش جديدي بمنظور دستيابي به بانک هاي اطلاعاتي را ارائه نمود: ADO)ActiveX Data Objects ) . يکي از اهداف اوليه طراحي ADO ، امکان دستيابي به بانک هاي اطلاعاتي براي پياده کنندگان برنامه هاي مبتني بر وب است که از تکنولوژي ASP ، استفاده مي نمايند.
    همزمان با ارائه جديدترين نسخه ويژوال بيسيک که VB.NET ناميده مي شود ، بسياري از محدوديت هاي مرتبط با ويژوال بيسيک برطرف گرديد . در گذشته ويژوال بيسيک با انتفادات فراوان مواجه ( عدم وجود امکانات مناسب در مقايسه با جاوا و يا ++C ) و بسياري آن را نظير يک اسباب بازي در دنياي وسيع زبان هاي برنامه نويسي مي پنداشتند. VB.NET با غلبه بر مشکلات نسخه هاي پيشين ، توانسته است در مدت زمان کوتاهي ، بعنوان يک ابزار پياده سازي بسيار قدرتمند مطرح و گزينه اي مناسب براي برنامه نويسان در تمامي سطوح باشد .

    نصب VB.NET
    براي نصب VB.NET ، از دو رويکرد متفاوت مي توان استفاده کرد :

    نصب بهمراه ويژوال استوديو دات نت

    نصب نسخه استاندارد

    هر يک از گزينه هاي فوق ، امکان ايجاد برنامه هاي مبتني بر ويندوز را فراهم مي نمايند . مراحلي که در ادامه ذکر مي گردد ، نحوه نصب ويژوال استوديو را تشريح مي نمايد .

    مرحله اول : برنامه Setup.exe را از روي CD مربوطه فعال نمائيد.

    مرحله دوم : جعبه محاوره اي ، مراحل و اولويت هاي عمليات نصب را نشان خواهد داد. بمنظور صحت عملکرد VB.NET ، چندين Component نصب و يا بهنگام خواهند شد . اولين مرحله نصب، بهنگام سازي عناصر (Components) است . بر روي گزينه Windows Component Update ، کليک نمائيد.

    مرحله سوم : برنامه نصب در ادامه سيستم را بررسي تا نوع عناصري را که مي بايست بهنگام گردند، مشخص گردد. دامنه فرآيند بهنگام سازي به وضعيت ماشيني که بر روي آن ويژوال استوديو دات نت نصب مي گردد، بستگي خواهد داشت .

    مرحله چهارم : با توجه به اينکه ممکن است در زمان بهنگام سازي لازم باشد چندين مرتبه سيستم راه اندازي گردد ، از شما درخواست نام و رمز عبور شده تا ضرورتي به نشستن و نگاه کردن به کامپيوتر و واکنش لازم ( درج نام و رمز عبور به سيستم ) پس از هر مرتبه راه اندازي سيستم نباشد . بدين ترتيب در زمان راه انداري سيستم ، عمليات مربوطه بصورت اتوماتيک و بدون نياز به تايپ نام و رمز عبور ، انجام خواهد شد . عمليات فوق ، اختياري است و در صورتيکه گزينه فوق انتخاب نگردد ، با هر مرتبه راه اندازي سيستم، پيام مناسب ارائه و مي بايست واکنش لازم ( تايپ نام و رمز عبور) را انجام داد .

    مرحله پنجم : در اين مرحله با فشردن دکمه ! Install Now ، بهنگام سازي عناصر (Components) آغاز مي گردد . با اتمام هر يک از آيتم ها يک Check mark بمنزله اتمام مرحله مربوطه نشان داده مي شود . در مقابل عنصر جاري براي بهنگام سازي نيز يک فلش قرمز رنگ نسان داده مي شود.

    مرحله ششم : پس از بهنگام سازي عناصر ، مجددا" به صفحه اصلي Setup مراجعت و امکان نصب ويژوال استوديو دات نت فراهم مي گردد.( کليک نمودن برروي گزينه Visiual Studio.NET )
    نکته : در صورتيکه قصد داريد که از طريق ماشين فوق ، يک برنامه تحت وب پياده سازي نمائيد ، لازم است IIS و FrontPage Extensions قبلا" نصب شده باشد( بصورت پيش فرض در زمان نصب ويندوز 2000 نصب خواهد شد ) در صورتيکه ويژوال استوديو دات نت ، بر روي کامپيوتري نصب مي گردد که داراي سيستم عامل ويندوز 2000 نسخه Professional است ، با يک پيام خطاء مواجه خواهيم شد( عدم وجود عناصر لازم ) با فشردن دکمه Install Component ، عمليات نصب IIS و Frontpage Extensions انجام خواهد شد . در صورتيکه دکمه Continue ، انتخاب گردد ، در آينده نمي توانيد برنامه هاي تحت وب را بصورت محلي بر روي کامپيوتر خود پياده سازي نمائيد .

    مرحله هفتم : نظير اکثر برنامه هاي نصب ، ليستي از گزينه هاي موجود ( شامل عناصر ) براي نصب در اختيار شما قرار مي گيرد . شما مي توانيد ، صرفا" آنچيزي را که بدان نياز داريد ، نصب نمائيد . مثلا" در صورتيکه ظرفيت درايو شما پايين و يا ضرورتي به استفاده از ويژوال ++C دات نت را نداريد ، مي توان در اين مرحله از نصب آن صرفنظر کرد. هر گزينه اي که در اين مرحله انتخاب نمي گردد ، مي توان در صورت ضرورت آن را در آينده نصب کرد. براي هر يک از امکاناتي که قرار است نصب گردند ، سه بخش اطلاعاتي متفاوت نمايش داده مي شود :
    بخش Feature Properties . فايل ها ي مورد نظر براي نصب و ميزان فضاي مورد نياز را نشان مي دهد .
    بخش Feature description . هر Feature چيست و چه عملياتي را انجام مي دهد .
    بخش Space Allocation ، وضعيت فضاي ذخيره سازي هارد را با توجه به گزينه هاي انتخاب شده ، نشان خواهد داد .
    نکته : زمانيکه ويژوال استوديو دات نت ، اجراء مي گردد مجموعه اي از اطلاعات بين ديسک و حافظه مبادله مي گردد . بنابراين لازم است به ميزان کافي ظرفيت آزاد بر روي هارد ديسک وجود داشته باشد ، در اين راستا نمي توان دقيقا" مشخص نمود که به چه ميزان فضاي آزاد نياز خواهد بود ولي حداقل يکصد مگابايت توصيه مي گردد .

    مرحله هشتم : ويژوال استوديو دات نت ، شامل مجموعه اي گسترده از فايل هاي مستندات ( راهنما ) است . در اين مرحله مي توان تنظيمات لازم در خصوص اجراي مستندات از طريق CD و يا دايرکتوري نصب شده بر روي هارد را انجام داد . در اين زمينه مي توان يک مسير بر روي هارد را مشخص تا مستندات نصب و يا گزينه Run From Source را انتخاب تا بر اساس آن مستندات همچنان بر روي CD باقي بمانند .

    مرحله نهم : پس از انتخاب عناصر مورد نظر براي نصب ، با فشردن دکمه ! Install Now ، عمليات نصب آغاز مي گردد . مدت زمان نصب ، بستگي به موارد انتخابي و نوع سيستم دارد . مثلا" نصب تمام ويژوال استوديو دات نت بهمراه تمامي مستندات بر روي يک ماشين با دارا بودن 256 مگابايت حافظه اصلي، سرعت 650 مگاهرتز و دوازده گيگابايـت هارد ديسک ، حدود يک ساعت طول خواهد کشيد .

    مرحله دهم : پس از اتمام مرحله قبل ، با انتخاب گزينه Service Release ، بررسي لازم در خصوص بهنگام سازي انجام مي گيرد . اين عمليات از طريق اينترنت انجام خواهد شد . در اين زمينه به يک خط پرسرعت و مطمئن نياز خواهد بود .

    پس از انجام مراحل فوق ، ويزوال استوديو دات نت بر روي سيستم نصب و محيط لازم براي نوشتن برنامه هاي VB.NET فراهم شده است .

  4. #34
    آخر فروم باز WooKMaN's Avatar
    تاريخ عضويت
    Oct 2005
    محل سكونت
    Ķêŗmάņšĥąħ
    پست ها
    10,533

    پيش فرض

    مقايسه ADO و ADO.NET


    شركت مايكروسافت در ويژوال بيسيك ورژن 3 كه در سال 1993 ارائه داد از Jet كه هسته اصلي MS Access بود براي ايجاد ارتباط با بانكهاي اطلاعاتي استفاده نمود البته براي استفاده بهتر برنامه نويسان ، Jet را در غالب مجموعه Object هائي تحت عنوان (Data Access Object ) آورد. در نسخه 4 و 5 ويژوال بيسك ، ماكروسافت روشي ديگر براي ارتباط با بانكهاي اطلاعاتي تحت عنوان (Remote Data Object ) RDO را مطرح ساخت اين روش براي برنامه نويسي Client / Server روش مناسبي بود.

    در دوم سپتامبر سال 1998 وقتي ماكروسافت ويژوال بيسيك ورژن 6 را ارائه داد روش جديدي تحت عنوان ( Activex Data Object ) ADO را مطرح ساخت در اين روش كه پايه و اساس آن OLEDB بود ماكروسافت بر خلاف DAO و RDO كه ساختاري پيچيده و سلسله مراتبي داشتند، از ساختاري ساده و مجزا ( غير سلسله مراتبي ) استفاده كرد و در واقع ADO هم شامل Object هائي است كه برنامه نويس بتواند از آنها براي ايجاد ارتباط با بانكهاي اطلاعاتي و انجام عمليات روي آنها استفاده كند و در تاريخ 13 February سال 2002 كه ماكروسافت نسخه نهائي Visual Basic.Net را ارائه داده روشي جديد براي كار با بانكهاي اطلاعاتي تحت عنوان ADO.Net را آورده است. اين نسخه از ويژوال بيسيك برخلاف نسخه‎هاي قبل بطور كامل مباحث OOP را پشتيباني مي‎كند ( FULL OOP ) در واقع ADO.Net هم مانند ADO و RDO و ADO شامل ساختاري براي ارتباط و انجام عمليات روي بانكهاي اطلاعاتي است. ADO.net همانند RDO و DAO و برخلاف ADO داراي ساختار سلسله مراتبي مي‎باشد. در اين مقاله مي‎خواهيم به مقايسه ADO و ADO.net بپردازيم. ADO در ورژنهاي مختلفي در اين چند سال اخير به بازار آمده است با آمدن SQL Server 2000 ورژن جديد ADO يعني ورژن 2.6 از اين محصول ارائه شد و اكنون هم ADO 2.6 در سايت ماكروسافت قابل Download مي‎باشد.

    آخرين ورژن ADO شامل 9 تا Object است كه عبارتند از :

    Connection
    Command
    Recordset
    Parameter
    Field
    Error
    Property
    Record
    Stream

    آبجكت Connection امكان ارتباط با Data Source كه شامل بانك اطلاعاتي است را فراهم مي‎سازد. بعنوان مثال اگر بخواهيم از آبجكت Recordset براي اضافه و يا حذف و يا تغيير در محتواي ركوردي استفاده كنيم اين آبجكت از Connection براي ايجاد ارتباط با بانك اطلاعاتي مثلاً SQL Server استفاده مي‎كند اما همانطور كه گفته شد و در شكل ملاحظه مي‎شود ساختار آبجكتهاي ADO بصورت سلسله مراتبي نيست و مي‎‎توان مثلا Recordset اي ايجاد نمود كه مستقل از آبجكت Connection بتواند با بانك اطلاعاتي ارتباط برقرار نمايد.




    در ADO علاوه بر آبجكتها، چهار Collection هم ديده مي‎شود كه عبارتند از :

    Parameters
    Fields
    Properties
    Errors

    كه هركدام از آنها شامل آبجكتهائي از همان نوع هستند بعنوان مثال ساختاري كه براي Recordset كشيده شده بيان كننده آن است كه اين آبجكت شامل Collection هاي Fields و Properties بوده و مثلاً Collection مربوط به Fields شامل آبجكتهاي فيلد است.

    آبجكت فيلد اطلاعاتي را راجع به يك ستون از Recordset در خود نگه داشته است.


    در ADO آبجكت Command هم وجود دارد كه از آن مي‎توان براي اجراي يك فرمان SQL استفاده نمود البته بهترين روش براي اجراي Stored Procedure نيز استفاده از متد Execute مربوط به همين آبجكت است .

    بعنوان مثال :

    Dim cn As New ADODB.Connection
    Dim cmd As New ADODB.Command
    Dim rs As New ADODB.Recordset

    cn.Open " Provider = sqloledb ; Data Source=serverName ; Initial Catalog = northwind ", "sa" , "password"
    cmd.ActiveConnection = cn
    cmd.CommandText = "sp_who"
    cmd.CommandType = adCmdStoredProc

    Set rs = cmd.Execute
    Debug.Print rs(0)
    rs.Close

    از آبجكت Parameter هم براي مشخص كردن مقادير پارامترهاي ورودي يك ‌ Stored Procedure استفاده مي‎كنيم.

    آبجكت Property براي استفاده از Dynamic Property استفاده مي‎شود كه Property هايي هستند كه وابسته به Provider بوده و استاندارد نيستند .

    از Record براي دسترسي به يك سطر از Recordset و ويژگيهاي مربوط به آن سطر استفاده مي‎كنيم .و آبجكت Stream هم به منظور ذخيره و بازيابي اطلاعات بصورت باينري در يك فيلد از Record در نظر گرفته شده است.

    تا اينجا باساختار ADO آشنا شديم حال به تشريح ADO.net مي‎پردازيم .

    ADO.Net مجموعه‎اي از Class هاي Interface ها و دستوراتي جهت مديريت و كار با بانكهاي اطلاعاتي است. در بحث Net . مجموعه‎اي از Class هاي مربوط به هم در يك غالب تحت عنوان ‌ Name Space ارائه شده است Net. شامل تعدادي Name Space است كه در غالب .Net Framework قرار دارد. تمام ساختار ‌ ADO.net در چهار NameSpace قرار دارد كه عبارتند از :

    System.Data.SqlClient.
    System.Data.OleDb.
    System.Data.Odbc.
    System.Data.

    اگر بخواهيم از بانكهاي SQL Server استفاده كنيم System.Data.SqlClient بهترين انتخاب است در اين NameSpace امكاناتي فراهم شده تا بتوانيم Application هاي بنوسيم و در آنها با SQL Server ارتباط برقرار نمائيم بطوريكه برنامه‎ها از Performance بالائي برخوردار باشند.

    در صورتي كه كاربر بخواهد از بانكهاي رابطه ‎اي ديگر نظير Oracle استفاده كند ميتواند از System.Data.OleDb بهره گيرد.

    System.Data.Odbc براي ارتباط با بانكهاي اطلاعاتي از طريق ODBC ميباشد System.Data هم شامل Provider هاي خاص نظير DataSet و DataTable است. ADO.net نيز شامل Object ها و Collection هائي است كه از مهمترين آنها مي‎توان موارد ذيل را شمرد:

    OleDBConnection
    OleDBCommand
    OledbDataReader
    OleDBDataAdapter
    SelectCommand
    InsertCommand
    UpdateCommand
    DeleteCommand
    DataTable
    DataRelation



    OleDBConnection آبجكتي است شبيه به آبجكت Connection در ‌ ADO ، كه امكان ايجاد ارتباط با بانك را فراهم مي‎سازد اين آبجكت متدهايي براي اجراي فرامين SQL نيز داراست .OleDBCommand هم مشابه آبجكت Command در ‌ ADO مي‎باشد.

    از اين آبجكت نيز براي اجراي Stored Procedure و اجراي فرامين SQL استفاده مي‎شود. آبجكت بعد OledbDataReader است كه براي گرفتن اطلاعات از ‌Database استفاده مي‎شود. البته لازم به ذكر است Resultset اي كه با اين روش ساخته مي‎شود بصورت ReadOnly و Forwardonly مي‎باشد. OleDBDataAdapter آبجكت جديدي در Ado.net است كه خود شامل چهار آبجكت براي انجام فرامين SQL مي‎باشد كه عبارتند از :

    SelectCommand
    InsertCommand
    UpdateCommand
    DeleteCommand

    كه به ترتيب براي واكشي اطلاعات، اضافه نمودن اطلاعات جديد به داخل بانك ، به هنگام سازي اطلاعات و حذف اطلاعات استفاده مي‎شود. اين آبجكت به همراه آبجكت Dataset استفاده مي‎شود و براي پركردن Recordset موجود در Dataset بكار مي‎رود.



    آبجكت بعدي Dataset است كه مهمترين آبجكت در Ado.net مي‎باشد اين آبجكت شامل دو Collection به نام هاي ‌ DataTables و DataRelations است. همانطور كه مي‎دانيد در ADO هم آبجكت Recordset داشتيم اينجا مجموعه‎اي از Recordset ها در داخل يك DataTables نگه داشته مي‎شود و مي‎توان بين DataTable هاي مختلف رابطه نيز ايجاد نمود كه اين روابط هم داخل يك مجموعه‎اي با نام DataRelations نگه داشته مي‎شود. در واقع DataTable در ADO.net معادل همان RecordSet در ADO مي‎باشد.

    مراجع :

    1. VB.NET for Developers , Keith Franklin , SAMS Visual
    2. Basic Developer's Guide to SQL Server , Dianne Siebold , SYBEX
    3. MSDN

  5. #35
    آخر فروم باز WooKMaN's Avatar
    تاريخ عضويت
    Oct 2005
    محل سكونت
    Ķêŗmάņšĥąħ
    پست ها
    10,533

    پيش فرض

    آموزش پاسکال قسمت اول

    زبان پاسكال يكي از زبانهاي برنامه سازي است كه ويژگيهاي آموزشي آن بسيار بالاست يعني زبان خوبي براي آموزش برنامه نويسي منظم و دقيق است.قابليت خوانايي و درك برنامه هاي اين زبان بالاست وميتوان برنامه هايي نوشت كه احتمال خطاهاي آنها بسيار اندك باشد علتش اين است كه يك زبان ساختار يافته (structed) است .

    ساختار كلي برنامه چيست؟
    1-تعريف
    2-به وسيله procedure و functionقسمتهاي تكراري را از بين ببريم
    3-بدنه
    فرم كلي پاسكال:

    ;اسم Program
    ; تعريف ثابت const
    ; تعريف نوع type
    ; تعريف متغيرها var
    ( پارامترها ) نام procedure
    begin
    ____
    ____
    ____
    end ;
    ;نوع تابع ( پارامترها ) نام function
    begin
    ____
    ____
    ____
    end ;
    begin
    ____
    ____
    ____
    end .

    متغير : محلي است كه داراي يك اسم مي باشد و مي توان مقداري را در آن ذخيره كرد

    انواع متغيرها در پاسكال:
    Integer :انواع عددي صحيح شامل اعداد بدون نقطه مميز است
    نوع مقاديري كه مي پذيرند طول(بايت)
    byte 0 تا 255 1
    Shortint 128- تا 127 1
    integer 32768- تا 32767 2
    Word 0 تا 65535 2
    Longint 2147483648- تا 2147483647 4



    اعداد اعشاري:
    انواع عددي اعشاري شامل اعدادي با نقطه مميز است

    نوع مقاديري كه ميپذيرند ارقام با معني طول(بايت)

    single 1.5e-45 تا3.4e38 7 تا 8 4
    real 2.9e-39 تا 1.7e38 11 تا 12 6
    Double 5.0e-324تا 1.7e308 15 تا 16 8
    extended 1.9e-4951تا 1.1e493 19 تا 20 10

    انواع داده هاي اعشاري

    -Char :
    نوع داده كاراكتري كه با كلمه char مشخص مي شود ميتواند يك كاراكتر را در خود نگهداري كند بنابراين كاراكترها در يك بايت از حافظه كامپيوتر ذخيره مي شوند

    String - :
    اين نوع داده ها براي ذخيره رشته ها مثل اسامي افراد به كار مي رود و با كلمه كليدي string مشخص ي گردد
    براي هر رشته بايد طول معلوم كنيم اگر طولي تعريف نشود به طور پيش فرض 80 در نظر گرفته ميشود(مقدار طول حداكثر 255 است)
    - Boolean :
    نوع ديگري از داده ها در پاسكال وجود دارند كه داده هاي بولي خوانده مي شوند مقادير بولي داراي دو ارزش درستي يا نادرستي اند كه در پاسكال با صفر و يك نمايش داده مي شوند صفر به معني نادرستي و يك به معني درستي به كار ميرود اين نوع داده ها با كلمه Boolean تعريف ميشوند.
    دستورات ورودي در پاسكال:
    دستور Readlnبراي خواندن اطلاعات از ورودي به كار ميرود.
    فرمت آن به صورت مقابل است:
    (اسامي متغيرها)read/ln
    اسامي متغيرها بايد با كاما از يكديگر جدا شوند..
    براي چاپ اطلاعات در خروجي از دستور write/ln استفاده ميكنيم.
    فرمت آن به صورت مقابل است:
    ' يك پيام '
    ( متغير ) write/ln
    عبارت محاسباتي
    انتساب متغيرها:
    مقدار ثابت
    ( متغير )=: متغير
    عبارت محاسباتي

    مثال : برنامه اي بنويسيد كه دو عدد را از ورودي دريافت و حاصلجمع آن دو را چاپ كند .

    Program add;
    Var
    a,b:integer;
    begin
    writeln('enter 2 num');
    readln(a,b);
    c:=a+b;
    writeln('result is =',c);
    end.


    تكليف : چرا برنامه بايد ادب داشته باشد ؟
    مثال : برنامه اي بنويسيد كه حقوق پايه وتعداد فرزندان يك كارگر را از ورودي دريافت و مبلغ حقوق وي را بر اساس فرمول زير حساب كنيد.
    10*تعداد فرزندان + حقوق پايه =حقوق كل

    Program test;
    Var
    Salary:longint;
    Child:byte;
    kole:integer
    Begin
    Writeln('enter salary and number of child);
    Readln(salary,child);
    Kole := salary + child *10
    Writeln('kole is ',kole);
    END.

    اولويت عملگرها:

    / *
    - +
    شرط:
    then شرط if
    Begin
    ____
    ____
    ____
    end
    else
    begin
    ____
    ____
    ____
    end;

    نكته : دستورالعمل قبل از IF سمي كالن نمي گيرد
    عناصر شرط:
    < > <= >= = <>
    اپراتورها :

    AND OR NOT XOR
    NOT A
    1 0
    0 1

    XOR OR AND B A
    0 1 1 1 1
    1 1 0 0 1
    1 1 0 1 0
    0 0 0 0 0


    مثال : برنامه اي بنويسيد كه با دريافت دو عدد بزرگترين آنها را چاپ كند.

    Program test;
    Var
    a,b:integer;
    if a>b then
    begin
    writeln(a);
    end
    else
    writeln(b);
    end.


    مثال : برنامه اي بنويسيد كه با دريافت سه عدد به عنوان ضرايب y=ax2+bx+c معادله درجه دو را حل كند(اين برنامه را با يك If بنويسيد).

    Var
    A,b,c:integer;
    D,x1,x2:real;
    Begin
    Writeln('enter a,b,c');
    Readln(a,b,c);
    D:=b*b-4*a*c;
    If (d >=0 ) then
    Begin
    X1:=(-b+sqrt(d))/2*a);
    X1:=(-b-sqrt(d))/2*a);


    مثال : برنامه اي بنويسيد كه تعداد فرزندان وحقوق پايه و رتبه يك كارگر را از ورودي دريافت و حقوق كل وي را بر اساس فرمول زير حساب كند.
    كسريها - مزايا +بيمه = حقوق كل
    5*رتبه +1000* تعداد فرزند = مزايا
    ماليات + بيمه = كسريها

    بيشتر كمتر يا مساوي 2 تعداد فرزند
    تعداد فرزندان 1000 بيمه
    هر چيزي ديگر 20 تا 0 رتبه
    حقوق پايه حقوق پايه*100/10 ماليات


    begin
    writeln('enter salary and grade and number of child');
    readln(salary ,num,grade);
    if num<=2 then
    bimeh:=100
    else
    bimeh :=num*500;
    if (grade>=0) and (grade<=20)then
    net := 10/100*salary
    else
    if grade >20 then
    begin
    net:=20/100*salary;
    mazaya:=num*1000+grade*50;
    kasry:=bimeh+net;
    kol :=salary + mazaya-kasry;
    end;
    writeln(kol);
    end.


    تكليف : در يك تركيب شيميايي 4 عنصر شركت دارند مقدار مجاز براي تهيه ماده اي به نام asxd به اين صورت است.
    A 0 ~ 50
    S 0.5 ~ 0.83
    X 81 ~ 92 or 824 ~ 901
    D -100 ~ 100
    با دريافت مقادير a,s,x,d از ورودي به ما بگويد كه آيا مي توان اين ماده را توليد كرد يا نه ؟

    Begin
    Num:=0;
    Writeln('please enter a s x d');
    Readln(a,s,x,d);
    If (a>0) and(a<50) then
    Num:=num+1;
    If (s>0.5)and (s<0.83) then
    Num:=num+1;
    If ((x>81)and(x<92))or ((x>824)and(x<901))then
    Num:=num+1;
    If (d>-100) and (d<100) then
    Num:=num+1;
    If num=4 then
    Writeln('yes can')
    Else
    Writeln('you can not');
    End.

    تكليف : برنامه اي بنويسيد كه با دريافت سه عدد و با فرض اينكه عدد دوم وتر ميباشد به ما بگوييد كه آيا اين سه عدد تشكيل يك مثلث قايم الزاويه مي دهد يا خير؟

    -CASE:
    CASE ميتواند تعداداي شرط را بگيرد و انتخاب كند.
    مقاديري كه دستور CASE ميپذيرد ORDINAL است مقاديري كهORDINAL هستند داراي تركيب نيستند و همچنين قابل شمارش هم هستند مثل INTEGER,CHARACTER,BYTE,BOOLEAN,LONGINT,…
    پسREAL,STRING ORDINAL<---- نيستند
    CASE تنها دستوري است كه BEGIN ندارد ولي END دارد
    مقدارها ميتوانند شامل يك مقدار يا چند مقدار كه از يكديگر با كاما جدا شده اند باشند و يا يگ سري شمارشي باشند مثل:

    1:------
    1,10,28:------
    1..100,150..243:---------
    'A'..'Z':---------

    Of متغير Case
    Begin : مقدار1
    -------
    -------
    End;
    Begin : مقدار2
    -------
    -------
    End;
    Begin :Else
    -------
    -------
    End;
    End.

    مثال : برنامه اي بنويسيد كه يك عدد را از ورودي دريافت ( (0<=x<3وتلفظ آنها را چاپ كند.

    BEGIN
    READLN(X);
    CASE X OF
    0:WRITELN('ZERO');
    1:WRITELN('ONE');
    2:WRITELN('TWO')
    ELSE
    WRITELN('ERROR');
    END;
    END.

  6. #36
    آخر فروم باز WooKMaN's Avatar
    تاريخ عضويت
    Oct 2005
    محل سكونت
    Ķêŗmάņšĥąħ
    پست ها
    10,533

    پيش فرض

    آموزش پاسکال قسمت دوم


    مثال : برنامه اي بنويسيد كه دو عدد را از ورودي دريافت و چنانچه عدد اول در بازه 0 تا 5 بود توان دوم عدد دوم را چاپ كند چنانچه 68 بود حاصلضرب دو عدد را چاپ كند و در غير اينصورت مقادير مجاز را چاپ كند.

    BEGIN
    WRITELN('ENTER TWO NUMBER');
    READLN(A,B);
    CASE A OF
    0..5 :WRITELN(B*B);
    68:WRITELN(A*B)
    ELSE
    WRITELN('ENTER 0..5 OR 68');
    END;
    END.

    - معادل برنامه بالا با دستور If :


    Begin
    Writeln('enter 2 number');
    Readln(a,b);
    If (a>=0)and(a<=5) then
    Writeln(b*b)
    Else
    If a=68 then
    Writeln(a*b)
    Else
    Writeln('enter 0..5 or68');
    End.

    تكليف : روشي براي تلفظ اعداد پيدا كنيد.

    حلقه تكرار :
    1- تعداد معين
    2- تعداد معين
    Do مقدار نهايي to { مقدار شروع=: متغير for
    downto
    begin
    ___
    ___
    ___
    end;
    توجه مهم : در برخي از حلقه ها دستورات داخل حلقه به متغير حلقه مرتبط مي باشند و در برخي موارد هيچگونه ارتباطي وجود ندارد.
    حلقه for براي تعداد تكرار معين به كار ميرود
    Downto : در مواردي به كار ميرود كه مقدار اوليه از مقدار نهايي بيشتر باشد

    مثال : برنامه اي بنويسيد كه توان دوم اعداد 100 تا 200 را چاپ كند.

    Begin
    For i:=100 to 200 do
    Begin
    Writeln(i*i);
    End;
    End.

    نكته : اجازه نداريد مقدار متغير حلقه را در داخل بدنه عوض كنيد .
    مثال : برنامه اي بنويسيد كه حاصلجمع اعداد 100..1 را چاپ كند.

    Begin
    Sum:=0;
    For i:=1 to 10 do
    Begin
    Sum:=sum+i
    End;
    Write(sum);
    End.



    مثال : برنامه اي بنويسيد كه حاصلجمع مضارب 5 بين 0 تا 100را به دست آورد.

    Begin
    Sum:=0;
    For I:=1 to 20 do
    Begin
    Sum:=sum+i*5;
    End;
    Writeln(sum);
    End.

    مثال : برنامه اي بنويسيد كه دو عدد را از ورودي دريافت و اعداد ما بين اين دو عدد را چاپ كند (a
    Begin
    Writeln('enter a,b');
    Readln(a,b);
    For I:= a to b do
    Writeln(i);
    End.


    مثال : برنامه اي بنويسيد كه با يك حلقه for اعداد بين100..1 و738..353و 950..940 را چاپ كند

    Begin
    For i:=1 to 950 do
    Begin
    If ( i>=1) and (i<=100) then
    Writeln(i);
    If (i>353) and (i<=738) then
    Writeln(i);
    If (i>=940) and (i<=950) then
    Writeln(i);
    End;
    End.

    معادل برنامه بالا با استفاده از دستور case :

    Begin
    For i:=1 to 950 do
    Case I of
    1..100,353..738,940..950: writeln(i);
    end;
    end.


    )باقيمانده)mod?
    مثال :
    X mod y
    مثال : برنامه اي بنويسيد كه مضارب 7 بين 1 تا 100 را چاپ كند

    Begin
    For i:= 1 to 100 do
    Begin
    If I mod 7 = 0 then
    Writeln(i);
    End;
    End.

    مثال : برنامه اي بنويسيد كه تعداد مضارب 5و7 را در بازه 231~846 چاپ كند.

    Begin
    K:=0;
    C:=0;
    For i:=846 downto 231 do
    Begin
    If I mod 5 = 0 then
    C:=c+1;
    If I mod 7 = 0 then
    K:=k+1;
    End;
    Writeln('5=',c,'7=',k);
    End;
    End.

    مثال : برنامه اي بنويسيد كه حقوق پايه وتعداد فرزندان 100 كارگر را از ورودي دريافت و مبلغ حقوق آنها را بر اساس فرمول زير حساب كند0
    1000*تعداد فرزند + حقوق پايه = حقوق كل


    Begin
    For i:=1 to 100 do
    Begin
    Writeln('enter salary and number of children');
    readln(salary,num);
    kol := salary + num * 1000;
    writeln(kol);
    end;
    end.


    مثال : برنامه اي بنويسيد كه 100 عدد را از ورودي دريافت و ميانگين و حاصلجمع آنها را به ما بدهد.

    Begin
    Sum:=0;
    For i:= 1 to 100 do
    Begin
    Writeln('enter num');
    Readln(num);
    Sum:=sum+num;
    End;
    Ave:=ave/100;
    Writeln(sum,ave);
    End.




    تعداد تكرار نامعين :
    Do شرط while
    begin
    ___
    ___
    ___
    end;
    مثال : برنامه اي بنويسيد كه اعداد 100..1 را چاپ كند

    Begin
    I:=1;
    While i<=100 do
    Begin
    Write(i);
    I:=i+1;
    End;

    مثال : برنامه اي بنويسيد كه تعدادي اسم را از ورودي دريافت و به ما بگويد چند بار اسم ali تكرار شده است(آخرين اسم end است).

    Var
    S:integer;
    St:string;
    Begin
    Read(st);
    While st<> 'end' do
    Begin
    If st='ali' then
    S:=s+1;
    Read(st);
    End;write(s);
    End.


    مثال : برنامه اي بنويسيد كه تعدادي عدد كه آخرين آنها صفر است را از ورودي دريافت و حاصلجمع آنها را چاپ كند.

    Begin
    Readln(num);
    T:=1;
    While num<>0 do
    Begin
    Sum:=sum+num;
    Readln(num);
    T:=t+1;
    End;
    Writeln('s=',s,'average',s/t);
    End;

    تكليف : براي دانش آموزان يك كلاس برنامه اي بنويسيد كه نام آنها به همراه تعداد نمرات و سپس نمرات آنها را به فرم زير از ورودي دريافت كند.تعداد دانش آموزان كلاس نامعين است ولي آخرين نفر نامش end است .برنامه ميبايستي پس از دريافت هر يك از اطلاعات پيامي به شكل زير چاپ كند.

    Average: Sum: Ali Name:
    3
    18
    20
    13.5


    program test;
    var
    name:string[10];
    ave,sum,nomreh:real;
    num,i:integer;
    begin
    writeln('enter name ' );
    readln(name);
    while name <> 'end' do
    begin
    writeln('enter num:');
    readln(num);
    for i:=1 to num do
    begin
    writeln('enter nomreh: ');
    readln(nomreh);
    sum:=sum+nomreh;
    end;
    ave:=sum/num;
    writeln('name:',name,'sum:',sum,'ave:',ave);
    writeln('enter name ');
    readln(name);
    end;
    end.


    تكليف : ميخواهيم براي برنامه هاي خود يك منو تهيه كنيم اين منو شامل موارد زير است
    1) load
    2) save
    3) edit
    4) exit
    please select a number :


    program test;
    var
    num:integer;
    begin
    writeln(' 1) load');
    writeln(' 2) save');
    writeln(' 3) edit');
    writeln(' 4) exit');
    writeln(please select a number : ');
    readln(num);
    while num<>4 do
    begin
    case num of
    1:writeln('loading');
    2:writeln('saving');
    3:writeln('editing');
    end;
    end;
    end.

  7. #37
    آخر فروم باز WooKMaN's Avatar
    تاريخ عضويت
    Oct 2005
    محل سكونت
    Ķêŗmάņšĥąħ
    پست ها
    10,533

    پيش فرض

    آموزش پاسکال قسمت سوم


    مثال : برنامه اي بنويسيد كه دو عدد را از ورودي دريافت و طبق جدول زير نسبت به مقدار آن واكنش نشان دهد

    3 2 1 a
    B+...+3+2+1 1..b b..1 واكنش


    Begin
    Writeln (' enter a,b :');
    Readln(a,b);
    Case a of
    1:begin
    for i:=1 to b do
    write(i);
    end;
    2:begin
    or I;=b downto 1 do
    write(i);
    end;
    3:begin
    sum:=0;
    for i:=1 to b do
    sum:=sum+I;
    write(sum);
    end;
    end.

    آرايه ها :
    آرايه ها به عناصري اتلاق ميشود كه با يك نام تعدادي محل از حافظه را كنترل كند براي تشخيص محلها از انديس استفاده ميشود
    انواع آرايه ها :
    1- آرايه هاي يك بعدي
    2- عناصر دو بعدي
    3- آرايه هاي سه بعدي

    تعريف آرايه ها :
    var
    نوع of ]انديس پايان..انديس شروع: array [ نام آرايه
    نوع متغير آرايه : متغير آرايه
    خواندن آرايه :
    مثال : برنامه اي بنويسيد كه نمرات 100 دانش آموز را از ورودي دريافت و در يك آرايه بريزد.

    Var
    A:array[1..100] of real;
    Begin
    For i:=1 to 100 do
    Readln(a[i]);


    مثال : برنامه اي بنويسيد كه نمرات 100 دانش آموز را از ورودي دريافت و 50 تاي اول را چاپ كند سپس تعداد نمرات 20 را مشخص كند.

    Var
    A:array[1..100] of real;
    Begin
    For I;=1 to 100 do
    Writeln('enter no(',I,')');
    Readln(a[i]);
    For i:=1 to 50 do
    Writeln(a[i]);
    S:=0;
    For i:=1 to 100 do
    If i:=1 to 100 do
    If a[i]=20 then
    S:=s+1;
    Writeln(s);
    End.

    پيدا كردن max,min
    عنصر اول =min
    حلقه براي گردش در آرايه
    Min < عنصر فعلي if
    عنصر فعلي min :=
    Write(min);
    مثال : برنامه اي بنويسيد كه با دريافت نمرات 100 دانش آموز بالاترين و پايين ترين نمره را در بين اين 100 نفر پيدا كند.

    Var
    A:array[1..100] of real;
    I:integer;
    Begin
    For i:=1 to 100 do
    Readln(a[i]);
    Min:=a[1];
    Max:=a[1];
    For i:=2 to 100 do
    Begin
    If a[1]< min then
    Min:=a[i];
    If a[i]>max then
    Max := a[i];
    End;
    Writeln('max is :',max,'min is :',min);
    End.

    مثال : برنامه اي بنويسيد كه با دريافت 100 اسم به ما بگويد تعداد تكرار اسم ali چند بار است وآيا اسم hassan بيشتر ذكر شده يا اسم reza ؟

    Var
    A:array [1..100] of string;
    Begin
    For i:=1 to 100 do
    Readln(a[i]);
    Ali:=0;
    Reza:=0;
    Hassan:=0;
    For i:=1 to 100 do
    Begin
    If a[i]='ali' then
    Ali:=ali+1;
    If a[i]='reza' then
    Reza:=reza+1;
    If a[i]='hassan' then
    Hassan:=hassan+1;
    Endd
    Writeln(ali is :',ali);
    If reza>hassan then
    Writeln('reza')
    Else
    Writeln('hassan');
    End.

    مثال : برنامه اي بنويسيد كه با دريافت نام و نمره 100 دانش آموز تنبل ترين فرد كلاس را مشخص كند.

    Var
    Name:array[1..100] of string;
    No:array[1..100] of real;
    Begin
    For i:=1 to 100 do
    Begin
    Readln(name[i]);
    Readln(no[i]);
    End;
    Min:=no[1];
    Namemin:=name[1];
    For i:=2 to 100 do begin
    If no[i] Begin
    Min:=no[i];
    Namemin:=name[i];
    Writeln(namemin);
    End.

    آرايه هاي دو بعدي:
    وقتي از آرايه دوبعدي استفاده ميكنيم بايد از دو حقه for استفاده كنيم.
    مثال : برنامه اي بنويسيد كه نمرات 4 كلاس كه هر يك 20 دانش آموز دارد را از ورودي دريافت وتنبل ترين فرد را در اين 4 كلاس مشخص كند.

    Var
    A:array[1..20,1..4] of real;
    Begin
    For i:=1 to 4 do
    Begin
    For j:=1 to 20 do
    Readln(a[j,i]);
    End;
    Min:=a[1,1];
    For i:=1 to 4 do
    For j:=1 to 20 do
    If a[j,i]< min then
    Min:=a[j,i];
    Writeln(min);
    End.

    مثال : در يك آرايه 100*20دوهزار كاراكتر نگهداري ميشود برنامه اي بنويسيد كه تعداد تكرار حرف A را با a مقايسه كند و همچنين به ما بگويد آيا كاراكتر z در اين ماتريس وجود دارد ؟

    Var
    A:array[1..20,1..100] of character;
    Bool:Boolean;
    B,b1:integer;
    Begin
    For i:=1 to 100 do
    For j:=1 to 20 do
    If a[I,j]='A' then
    B:=b+1;
    If a[I,j]='a' then
    B1:=b1+1;
    If a[I,j]='z' then
    Bool:=true;
    End;
    If b>b1 then writeln('A>a');
    If b If b=b1 then writeln('A=a');
    If true then writeln('''z''exist');
    End.


    تكليف : ميخواهيم نام و نمره تعدادي دانش آموز يك كلاس را از ورودي دريافت كنيم و مشخص كنيم كه تنبل ترين و زرنگ ترين فرد كلاس كيست.چند نفر نمره زير 10 گرفتند؟نام كساني كه نمره آنها در بازه 17 تا 15 مي باشد ب همراه نمره آنها چاپ شود آخرين نفر نامش end است حداكثر تعداد دانش آموزان 100 نفر است.

    Var

    a:array [1..100] of string ;
    b:array[1..100] of real;
    begin
    i:=1;
    read(a[i]);
    while a[i]<>'end' do begin
    readln(b[i]);
    i:=i+1;
    readln(a[i]);
    end;
    j:=i-1;
    min:=a[1];
    max:=a[1];
    for i:= 2 to j do
    begin
    if b[i] >max then
    begin
    max:=b[i];
    name:a[i];
    end;
    end
    writeln(name);
    count:=0;
    for i:=1 to j do
    if b[i]<=10 then
    count:=count+1;
    writeln(count);
    for i:=1 to j do
    if (b[i]<17) and (b[i]>15) then
    write(b[i],a[i]);
    end.

    تكليف : برنامه اي بنويسيد كه حاصل اين عبارت را حساب كند.
    i/i!=1/1!+2/2!+3/3!+4/4!+5/5!
    N!= 1*2*3*4*…*n

    Begin
    Sum:=0;
    For n:=1 to 5 do
    Begin
    For m:=1 to n do
    F:=f*m;
    Sum:=sum+n/f;
    End;
    Writeln(sum);
    End.

    تكليف : برنامه اي بنويسيد كه نمرات 80 دانش آموز را كه در چهار كلاس دسته بنده شده اند را از ورودي دريافت كند سپس به سوالات زير جواب دهد.
    1- معدل هر يك از كلاسها
    2- نمره تنبل ترين و زرنگترين شخص در هر كلاس به طور جداگانه

    Var
    A:array [1..4,1..20] of real;
    Begin
    For i:=1 to 4 do
    For j:=1 to 20 do
    Begin
    Writeln('please enter nomreh');
    Readln(a[I,j]);
    End;
    For i:=1 to 4 do
    Begin
    Sum:=0 ;
    For j:=1 to 20 do
    Begin
    Sum:=a[I,j]+sum;
    End;
    Writeln(sum/20,'average of this class');
    End;
    For i:=1 to 4 do
    Begin
    Max :=a[1,1];
    Min:=a[1,1];
    For j:=2 to 20 do
    Begin
    If a[I,j]>max then
    Max :=a[I,j];
    End;
    Writeln(I,min,max);
    End;
    End.

    - String :
    String آرايه اي از كاراكترهاست .اغلب لازم است كاراكترهايي در رشته موجود درج شوندو يا كاراكترهايي به جاي بخشي از رشته نوشته شوند , زيررشته اي در رشته جستجو گردد و يا دو رشته با هم الحاق شوند.
    رشته تهي : طول رشته ثابت نيست و با داداه هايي كه در آن ذخيره شده است مشخص مي گردد.كاراكترهايي كه در رشته قرار مي گيرد از حداكثر طولي كه براي آن تعيين ميشود بيشتر نخواهد بود. اگر name رشته كاراكتري باشد دستور زير name را به رشته تهي تبديل ميكند:

    Name:='';

    تبديل رشته به اعداد :
    در پاسكال زير برنامه هايي وجود دارند كه به آساني ميتوانند رشته ها را پردازش كنند. زيربرنامه val رشته عددي را گرفته به مقدار عددي تبديل ميكند.
    رشته عددي رشته اي است كه حاوي كاراترهاي '0' تا '9' و نقطه مميز باشد مثل '12.5' و'13.5' زيربرنامه val به صورت زير به كار ميرود.

    Val (st,number,error)

    St رشته اي است كه بايد به عدد تبديل شود و number متغيري است كه رشته تبديل شده به عدد در آن قرار ميگيرد. چنانچه در رشته st كاراكتر نا معتبري (كاراكترهاي غير از( '0' تا '9' و'.' ) , محل وجود آن كاراكتر در پارامتر error قرار ميگيرد. اگر error برابر با صفر باشد معنايش اينست كه كاراكتر نا معتبري وجود ندارد. اگر number از نوع صحيح باشد st به مقدار صحيح و اگر number از نوع اعشاري باشد st به مقدار اعشاري تبديل ميشود .
    مثال زير را در نظر بگيريد:

    Var st :string;
    Num,e:integer;
    St:='352';
    Val (st,num,e);

    مقدار 352 در متغير num ومقدار صفر در متغير e قرار ميگيرد اكنون دستورات زير را در نظر بگيريد :

    St:='35#'2;
    Val (st,num,e);

    با اجراي دستور val به دليل وجود كاراكتر' # ' كه كاراكتر نامعتبري در اعداد است عدد 2 در متغير e قرار ميگيرد و معنايش اينست كه كاراكتر شماره 2 ( شماره گذاري از صفر شروع ميشود) نامعتبر است و عمل تبديل صورت نميگيرد و مقدار num تعريف نشده است.
    تبديل عدد به رشته :
    براي تبديل مقدار عددي به رشته عددي از زيربرنامهstr استفادهميشود و به صورت زير به كار ميرود:

    Str (number : format,numstring)

    با اين دستور مقداري كه در number قرار دارد به رشته اي به طول format تبديل ميشود و در رشته numstring قرار ميگيرد . دستورات زير را در نظر بگيريد:

    Var x:integer;
    St:string;
    X=352;
    Str(x:5,st);

    با اجراي اين دستور مقدار 352 به رشته '352' تبديل شده در st قرار ميگيرد

  8. #38
    آخر فروم باز WooKMaN's Avatar
    تاريخ عضويت
    Oct 2005
    محل سكونت
    Ķêŗmάņšĥąħ
    پست ها
    10,533

    پيش فرض

    آموزش پاسکال قسمت چهارم


    دستورات زير را در نظر بگيريد:


    Var y1,y2:real;
    St1,st2 : string;
    Y1:=352.768
    Y2:=476.395
    Str(y12,st1);
    Str(y21,st2);

    با اجراي دستور str اول مقدار 352.768 به رشته '352.768' تبديل ميشود و در st1 قرار ميگيرد و با اجراي دستورstr دوم مقدار 476.395 به رشته '476.395'تبديل ميشود و در st2 قرار ميگيرد.
    جدا كردن زيررشته اي از رشته:
    زيررشته بخشي از رشته است و براي جدا كردن زيررشته از رشته از تابع copy استفاده ميشودتابع copy به صورت زير به كار ميرود.

    Copy (source,index,size)
    S:='I am learning pascal ';
    S1:=copy(s,15,6);

    دستور copy باعث ميگردد تا با شروع از محل 15 تعداد 6 كاراكتر از رشته s استخراج شود و در s1 قرار گيرد. بنابراين محتويات رشته s1 برابر است با 'pascal'.
    الحاق رشته ها :
    منظور از الحاق رشته ها اتصال رشته ها به يكديگر است به عنوان مثال اگرs1:='ab' و s2:='cde' الحاق دو رشته (s1,s2) به صورت 'abcde' خواهد بود براي الحاق رشته ها از تابع concat استفاده ميشود:
    (اسامي رشته ها)concat
    دستورات زير را در نظر بگيريد:

    S1:='pascal';
    S2:='is a ;
    S3:='language';
    S4:=concat(s1,s2,s3);

    با اجراي اين دستور s3 به انتهاي s2 متصل ميشود و رشته نتيجه به انتهاي s1 متصل ميگردد و در نتيجه رشته s4 عبارت است از'pascal is a language': . اگر طول رشته حاصل بيش از 255 باشد بقيه كاراكترها حذف ميشوند.
    جستجوي رشته اي در رشته ديگر:
    براي اين كار از تابع pos استفاده ميشود كاربرذ اين تابع به صورت زير است:

    Pos(s1,s2)

    S1 رشته اي است كه بايد در s2 وجود داشته باشد محل اولين وقوع آن برگردانده ميشود و گر نه مقدار صفر برگردانده ميشود دستورات زير را در نظر بگيريد:

    S1:='learning'
    S2:='I am learning pascal';
    S3:='english'
    X:=pos(s1,s2)
    y:=pos(s3,s2)

    چون رشته s1 در s2 وجود دارد دستور pos اول مقدار 6 را در x قرار ميدهد و معنايش اين است كه رشته 'learning' در محل 6 رشته s2 وجود ندارد مقدار صفر در y قرار ميگيرد.
    محاسبه طول رشته :
    براي محاسبه طول رشته از تابع length به صورت زير استفاده ميشود:
    (رشته)length
    دستورات زير را در نظر بگيريد:

    S1:='xymn'
    X:=length(s1)

    چون طول رشته s1 برابر 4 است مقدار x برابر 4 خواهد بود.
    حذف و درج زيررشته:
    زير رشته اي را ميتوان از رشته اي حذف كرد و يا زيررشته اي را ميتوان در رشته اي درج كرد براي حذف زير رشته از زيربرنامه ها به صورت زير به كار ميروند:

    Delete(source,index,size)
    Insert(pattern,destination,index)

    در زيربرنامه delete زيررشته اي به طول size با شروع از محل index از رشته source حذف ميشود و در زيربرنامه insert زيررشته pattern با شروع از محل index در رشته destination درج ميشوددستورات زير را در نظر بگيريد:

    S1:=pas***cal
    Delete(s1,4,3)
    S2:='paal';
    S3:='sc';
    Insert(s3,s2,);

    دستور delete باعث ميشود تا با شروع از محل 4 رشته s1 حذف شده و رشته s1 به pascalتبديل شود دستور insert موجب ميشود تا رشته s3 در s2 درج شود و در نتيجه رشته s2 به 'pascal' تبديل شود.
    مثال : برنامه اي بنويسيد كه يك اسم را از ورودي دريافت و آنرا بر عكس چاپ كند

    Readln(name);
    For i:=length(name) downto 1 do
    Write (name[i])

    مثال : برنامه اي بنويسيد كه كه يك نام را از ورودي دريافت و به ما بگويد كه آيا اين نام با حرف a شروع ميشود يا خير؟

    Readln(name);
    If name[1]='a' then
    Writeln('ok')
    Else
    Writeln('not ok');

    مثال : برنامه اي بنويسيد كه يك نام را از ورودي دريافت و حروف آنرا يك در ميان چاپ كند.

    Readln(name);
    For i:=1 to length(name) do
    If I mod 2 = 0 then
    Writeln(name[i]);


    روش ديگر:"
    For i:=1 to int(length(name)/2) do
    Writeln(name[i*2]);

    مثال : برنامه اي بنويسيد كه يك رشته را از ورودي دريافت و متقارن بودن آنرا چك كند.
    1 2 3 4 5 5 4 3 2 1

    var
    N:string;
    Begin
    Readln(n);
    For i:=1 to int(length(n)/2) do
    Begin
    If n[i] <> n[length(n)-i+1] then
    K:=0;
    End;
    If k=1 then
    Writeln ('ok')
    Else
    Writeln('no');
    End.

    مثال : برنامه اي بنويسيد كه تعداد حروف a موجود در يك رشته ورودي را بشمارد.

    Var st:string;
    Begin
    Readln(st);
    C:=0;
    For i:=1 to length(st) do
    If st[i]='a' then ?if st[i] in ['a','A'] then
    C:=c+1;
    Writeln(c)

    مثال : برنامه اي بنويسيد كه تعداد اسامي alireza موجود در رشته را بشمارد.

    Begin
    Readln(st);
    C:=0;
    While pos('alireza',st) <> 0 do
    Begin
    C:=c+1;
    J:=pos('alireza',st);
    Delete(st,pos('ali',st),3);
    End;
    Write ( c );
    End.

    مثال : برنامه اي بنويسيد كه دو رشته را از ورودي دريافت و بعد از كاراكترمساوي كه در رشته اول وجود دارد رشته دوم را چاپ كند.

    Readln(st,st1);
    J:=pos('=',st);
    Writeln(copy ((st,1 j) , st1, copy (st,j+1,100));


    تكليف : برنامه اي بنويسيد كه با دريافت سه حرف و قرار دادن آنها در يك آرايه سه تايي كليه تركيبات ممكن را كه سه حرف تركيباتشان به هم نخورد چاپ كند.
    W a x
    A x w
    W a x
    مثال : برنامه اي بنويسيد كه يك رشته را از ورودي دريافت و كليه كلمات موجود در آن را بشمارد.

    Readln(st);
    S:=0;
    St:=st+' '
    While pos(' ',st) <> 0 do
    Begin
    S;=s+1;
    Delete(st,1,pos(' ',st));
    While st[1]=' 'do
    Delet (st,1,1);
    End;
    End.

    تكليف : برنامه اي بنويسيد كه 100 رسته را از ورودي دريافت و در يك آرايه به طول 100 از نوع string بريزيد و به سؤالات زير جواب دهد.
    1- تعداد كل كلمات
    1- تعداد كل حروف
    2- تعداد حروف صدا دار

    ذخيره اطلاعات :
    Log file : فايلي است كه تمام تغييرات مربوط به يك محيط را ثبت ميكند
    فايلها :
    1- متني text
    2- ركوردي typed
    3-بدون نوع
    4-untyped

    معرفي فايلهاي متني :
    Var

    Text : نام فايل

    نسبت دادن فايل :

    ; ('نام خارجي ,'نام فايل ) assign

    مثال :

    Assign(f,'c:\a1.dat.ddd');

    باز كردن جهت خواندن

    ;( نام فايل)reset

    باز كردن جهت نوشتن

    ; ( نام فايل)rewrite
    ) ___,نام فايل)readln
    ) ___,نام فايل)writeln
    ) نام فايل)close

    تا close انجام نشود data ذخيره نميشود .
    نكته بسيار مهم : در هر يك از مسائلي كه در مورد فايلها مطرح ميشود مي بايستي به نحوي از يكي از تكنيكهاي نگهداري اطلاعات در حافظه اصلي استفاده نمود اين تكنيكها ممكن است استفاده از متغيرها و آرايه ها و ماتريسها و ودرختهاو...استفاده نمود ولي تنها با دو عمل خواندن و نوشتن به روي فايل كار انجام ميشود
    Update : ميخوانيم ولي دوباره ميريزيم سر جاش
    Append : بهش يك چيزي اضافه ميكنيم
    نكته : عمل rewrite باعث ميگردد چنانچه فايل وجود نداشته باشد ايجاد و چنانچه وجود دارد اطلاعاتش به طور كامل پاك شود.
    مثال : برنامه اي بنويسيد كه100 اسم را از ورودي دريافت و آنها را در يك فايل به نام a1.dat))بنويسد.

    Var
    F:text;a:string;
    Begin
    Assign(f,'a1.dat');
    Rewrite(f);
    For i:=1 to 100 do
    Readln(a);
    Writeln(f,a);
    End;
    Close(f);
    End.

    مثال : برنامه اي بنويسيد كه فايل a1.dat را خوانده و به ما بگويد چند بار اسم ali تكرار شده است؟

    Var
    A:text;
    B:string;
    Begin
    Assign(a,'a1.dat');
    Reset(a);
    Sum:=0;
    For i:=1 to 00 do
    Begin
    Readln(a,b);
    If b='ali' then
    Sum:=sum+1;
    End;
    Close(a,b);
    End;

    مثال : برنامه اي بنويسيد كه تعدادي اسم را كه آخرين آنها end است از ورودي دريافت و در يك فايل به نام aa.dat بريزد آنگاه فايل را بسته و قسمتهاي زير را به طور جداگانه انجام دهد.
    1- تعداد حسنها بيستر است يا علي ها
    2- چند اسم وجود دارد كه با حرف z شروع ميشود.


    Var
    f:text;
    Name:string;
    Begin
    Assign(f,'aa.dat');
    Rewrite(f);
    Readln(name);
    While name<> 'end' do
    Begin
    Writeln(f,name);
    Readln(name);
    End;
    Close(f);
    H:=1;
    A:=1;
    Z:=1;
    Reset(f);
    While not eof (f) do
    Begin
    Readln(f,name);
    If name='ali' then
    A:=a+1;
    If name ='hassan' then
    H:=h+1;
    End;
    Close(a);
    If h>a then writeln('h>a');
    If h If h=a then writeln('h=a');
    End;
    Close(f);
    Reset(f);
    While not eof (f) do
    Begin
    Readln(f,name);
    If name[i]='z' then
    Z;=z+1;
    End;
    Close(f);
    Writeln('sum of z is :'z);
    End.

    تكليف : برنامه اي بنويسيد كه تعدادي نام را از ورودي دريافت و در يك فايل بريزد سپس فايل تشكيل شده را باز كرده و از روي اين فايل دو فايل ديگر تشكيل دهيد كه در يكي از آنها اسامي كه بين a تا z قرار گرفته اند ريخته و در فايل دوم كليه اسامي كه از v تا z هستند را بريزد.

    Program test;
    Var
    Name : string;
    F,f1,f2:text;
    Begin
    Assign(f,'a.dat');
    Rewrite(f);
    Writeln('enter a name ');
    Readln(name);
    While length(name)>0 do
    Begin
    Writeln(f,name);
    Writeln('enter a name');
    Readln(name);
    End;
    Close(f);
    Reset(f);
    Assign(f1,'a1.dat');
    Assign(f2,'a2.dat');
    Rewrite(f1);
    Rewrite(f2);
    While not eof (f) do
    begin
    Readln(f,name);
    Case name[1] of
    'a'..'u':writeln(f1,name);
    'v'..'z':writeln(f2,name);
    end;
    end;
    close(f2);
    close(f1);
    close(f);
    end.

    تكليف : برنامه اي بنويسيد كه نام دو فايل را از ورودي دريافت و از اطلاعات داخل اين دو فايل فايل سومي تشكيل دهد كه حاصل تركيب دو فايل قبل باشد.

    var
    h,f,g:text;
    a:string;
    begin

    writeln('enter first filename') ;
    readln(a);
    assign(h,a);
    writeln('enter second filename') ;
    readln(a);
    assign(f,a);
    reset(h);
    reset(f);
    assign(g,'out.dat');
    rewrite(g);
    while not eof(h) do
    begin
    readln(h,a);
    writeln(g,a);
    end;
    while not eof(f) do
    begin
    readln(f,a);
    writeln(g,a);
    end;
    close(f);
    close(h);
    close(g);
    End.

    تكليف :برنامه اي بنويسيد كه در ضمن عمل merge دو فايل مرتب شده را با يكديگر تركيب و يك فايل مرتب شده به دست آوريم.

  9. #39
    آخر فروم باز WooKMaN's Avatar
    تاريخ عضويت
    Oct 2005
    محل سكونت
    Ķêŗmάņšĥąħ
    پست ها
    10,533

    پيش فرض

    سلام دوستان بگيد آموزش چي مي خوايد تا منم واستون اينجا بذارم

  10. #40
    آخر فروم باز WooKMaN's Avatar
    تاريخ عضويت
    Oct 2005
    محل سكونت
    Ķêŗmάņšĥąħ
    پست ها
    10,533

    پيش فرض

    سلام دوستان بگيد آموزش چي ميخوايد تا من واستون پيدا كنم !

Thread Information

Users Browsing this Thread

هم اکنون 1 کاربر در حال مشاهده این تاپیک میباشد. (0 کاربر عضو شده و 1 مهمان)

User Tag List

قوانين ايجاد تاپيک در انجمن

  • شما نمی توانید تاپیک ایحاد کنید
  • شما نمی توانید پاسخی ارسال کنید
  • شما نمی توانید فایل پیوست کنید
  • شما نمی توانید پاسخ خود را ویرایش کنید
  •