الساعة الآن 09:48 AM


قطرات من نبع الرواد
العودة   منتديات رفاعة اونلاين > منتديات رفاعة أونلاين > رفاعة > الأرشيف > ©§¤°^°¤§©¤ منتديات الكمبيوتر والإنترنت والاتصالات ¤©§¤°^°¤§© > منتدى علوم الكمبيوتر والإنترنت والاتصالات
منتدى علوم الكمبيوتر والإنترنت والاتصالات لعلوم الكمبيوتر وعرض آخر البرامج وللإنترنت والاتصالات

معلومات عن باسكال

منتدى علوم الكمبيوتر والإنترنت والاتصالات

إضافة رد
 
أدوات الموضوع انواع عرض الموضوع
قديم 09-04-2009, 04:12 PM   #1
Exll معلومات عن باسكال

THE BODY OF PASCAL Program

A Pascal program takes the following form.

program name (file-variables);

label lab, lab, ... ;

const

name = constant;

{ Other constant declarations }

type

name = type;

{ Other type declarations }

var

name : type;

{ Other variable declarations }

{ Procedure and function declarations }

begin

statements

end.

We have already discussed the first four declaration sections and the possible statements that can appear in the body of the program. We will now go on to describe the other parts of the Pascal program.

The program Statement

Traditionally, every working Pascal program begins with a program statement. With Alice, the program statement will always be present, but it has absolutely no effect on how the program behaves. Alice ignores everything on the program statement.

The program statement has the form

program name(file-variables);

The name is the name of the program. The file-variables that are enclosed in parentheses in the program template are input and output. These are just there for form -- their presence means nothing. More file variables may be added to this list, but this has no meaning to the program.

All declarations following the program statement (before any function or procedure declarations) are global to the entire program.

Procedure Declarations

The general form of a procedure declaration is

procedure name(parameter declarations);

label

Label-declarationsconst



constant-declarations

type

type-declarations

var

variable-declarations

procedure and function declarations

begin

Code for procedure

end;

This is almost exactly the same format as the program itself. The various declaration sections declare identifiers that are local to this particular procedure. This items will not be available to subprograms that are defined outside this procedure.

The names will also mask any names declared in subprograms that enclose the procedure. For example, suppose that procedure A contains the declaration of procedure B and both declare a variable i. Inside B, the identifier i will refer to B's version of this variable; outside B, the identifier i will refer to A's version of the variable. Operations performed on i in B will not affect the value of i in A.

The parameter declarations at the beginning of the procedure declaration give the names and the types for the parameters that the procedure accepts. The parameter names are local and mask any identical names declared outside the procedure. Simple parameter declarations can have any of the following forms.

name : type;

name, name, ... : type;

var name : type;

var name, name, ... : type;

For example, a typical procedure declaration might begin with

procedure example( k : integer;

x, y : real;

var c : char);



Parameter declarations without the word var are called value parameters. When the procedure is called, these value parameters will receive a copy of the argument value passed by the caller. This process is called call by value. The argument passed by the caller may be any expression of an assignment compatible type, because passing the argument is like assigning a value to the parameter.

Because the procedure only has a copy of these parameters, operations that the procedure performs on the parameters will not effect the corresponding arguments in the caller. For example, consider the following procedure.

procedure fakeswitch(a,b:integer);

var

temp : integer;

begin

temp := a;

a := b;

b := temp;

end;

This procedure switches the values of its parameters, but the switch has no effect on the values that the caller passes. Since fakeswitch is only working with copies of the caller's arguments, nothing can change in the caller.

Parameter declarations that start with the word var are called var parameters. When the procedure is called, the caller will pass the address of each argument instead of the value of the arguments. Through these addresses, the parameters are directly associated with the caller's arguments. This process is called call by reference. Any operations that the procedure performs on the parameters are actually performed on the arguments passed by the caller. For this reason, the arguments passed by the caller must be variables with exactly the same type as the parameter -- the parameter and the argument are exactly the same thing. As an example, consider the following procedure.

procedure trueswitch(var a,b:integer);

var

temp : integer;

begin

temp := a;

a := b;

b := temp;

end;

This procedure switches the values of its parameters, and thereby switches the values of the arguments that were passed to the procedure. The var parameters are identified with the arguments passed by the caller. The arguments must be integer variables. This avoids absurdities like

trueswitch(2,3);

which would attempt to switch the values of the constants 2 and 3.

When a parameter is declared as a var parameter, the argument passed by the caller may be an array element or a record field as well as a normal variable. Note that some versions of Pascal do not let you pass an element of a packed structure when the argument corresponds to a var parameter. For example,

var

str : packed array[1..100] of char;

...

proc(str[1]);

would be illegal if the parameter for proc was a var parameter.

Arguments to a procedure may have any type. If you are passing a record or array as a value argument, it is not necessary to initialize every field in the record or every element in the array. You will, however, receive an error if the called routine tries to use an uninitialized record field or array element.

Generic Type Parameters

Alice supports a special kind of parameter, of type generic. A generic parameter may be of any type, and is passed to the procedure as a record containing information about the size and type of the parameter (as well as a pointer to the actual parameter that was passed). The format for the generic type record is:

generic = record

Object : pointer; { pointer to the actual parameter }

Size : integer; { size of the variable in bytes }

TypeCode : integer; { the type of the parameter 9see below) }

end;

TypeCode is one of:

1
enum, boolean, char, byte or small subrange of integer

2
integer or subrange

3
pointer (in which case, size is the size of the object pointed to)

4
real number

5
set

6
string (i.e. packed array [1..n] of char); size is length of string + 2

10
array variable (other than a string)

11
file

12
record


Function Declarations

Function declarations are almost exactly like procedure declarations. The difference is that the first line has the form

function name(parameter declarations):type;

The type that comes after the colon at the end of the line is the type of value returned by the function.

To set a return value for the function, you should assign the return value to the function name, as in

function iabs(i:integer):integer;

begin

if i < 0 then

iabs := -i

else

iabs := i

end;


The Stack

Local variables (declared in the var section of a function or procedure) are stored in a block of memory called the stack. When the subprogram is called, space for these variables is allocated from the stack's memory. When the subprogram terminates, the space that its variables occupied is de-allocated, and freed for other subprograms to use. This means that local variables must be initialized every time the subprogram is called -- they do not retain their values from one invocation to the next, because other subprograms use the same space for their local variables. In fact, the local variables may not be stored in the same place from one invocation to the next. The variables are simply stored in the next available space on the stack, so where they are stored depends on what's already on the stack.

Because local storage is allocated in this dynamic way, subprograms may be called recursively. Each invocation of the function has its own copy of its local variables. Therefore, if a function has a variable v and calls itself recursively, each invocation will have its own separate v, and operations on one v will not affect any of the others.

In addition to local variables, the stack is used to store the information that is needed for a subprogram to return correctly to its caller. This is usually called the linkage information.

The amount of stack space provided by Alice Pascal is ample for most programs. However, you may run out of space if your subprograms use a great deal of local storage space, or if the level of recursion becomes too great. You can avoid this problem in several ways.

Rewrite your program so it doesn't use so many local variables.

Don't use local arrays. Large local arrays can take up a lot of stack space. If you need a local array, allocate it dynamically with the new function. This function is described in Chapter 8.

Increase the amount of stack space for your program. Do this with the s= option on the command line that invokes Alice.


starts off a declaration for a procedure named proc. The parameters for this procedure are a function and two integers. The function takes one real parameter and returns a real value.

When a subprogram is passed as an argument to another subprogram, the parameter lists must match exactly in both caller and callee. It is not enough for the parameters to be compatible.


غير مسجل يمكنك التعليق على هذا الموضوع باستخدام حسابك على الفيسبوك

صور لنجوم وكواكب رفاعية - اضغط هنا


رفاعةon

لا يمكنك الرد على هذا الموضوع ولايمكنك إضافة موضوع جديد في الأرشيف اضغط هنا وانتقل إلى القسم المفتوح للردود والمواضيع
أنا : الملك تنقا



الملك تنقا غير متصل  
رفاعة اونلاين في قلوبنا
توقيع : الملك تنقا
[SIGPIC][/SIGPIC]
قديم 10-04-2009, 09:35 AM   #3
الطيب عسيلات

مرحب بك صديق
الصورة الرمزية الطيب عسيلات
افتراضي رد: معلومات عن باسكال

مشكور على الموضوع وتسلم ها اليدين
صور لنجوم وكواكب رفاعية - اضغط هنا


رفاعةon

لا يمكنك الرد على هذا الموضوع ولايمكنك إضافة موضوع جديد في الأرشيف اضغط هنا وانتقل إلى القسم المفتوح للردود والمواضيع
أنا : الطيب عسيلات



الطيب عسيلات غير متصل  
رفاعة اونلاين في قلوبنا


حلات بلدى وحلات ناسا وحلات الطيبه والطيبين

للمبدع دوما القصاص يديه العافيه
قديم 10-04-2009, 03:37 PM   #4
فريق قدام



وقيع الله
الصورة الرمزية فريق قدام
افتراضي رد: معلومات عن باسكال

شرح جميل يفيد الطلاب والمبتدئين ، لكن اللغة نفسها انتهى استخداما من زمن .
صور لنجوم وكواكب رفاعية - اضغط هنا


رفاعةon

لا يمكنك الرد على هذا الموضوع ولايمكنك إضافة موضوع جديد في الأرشيف اضغط هنا وانتقل إلى القسم المفتوح للردود والمواضيع
أنا : فريق قدام



فريق قدام غير متصل  
رفاعة اونلاين في قلوبنا
توقيع : فريق قدام
و ما الناس إلا هالك وأبن هالك وذو نسب في الهالكين عريق ..
قديم 14-04-2009, 09:53 AM   #5
الطالبابي

:: MusiC MaN ::
الصورة الرمزية الطالبابي
Mnn طريقة البرمجة في لغة الباسكال

طريقة البرمجة في لغة الباسكال
الخطوة الاولي :
قبل أن نتمكن من كتابة برامج بلغة الباسكال أو أي لغة أخرى لا بد لنا أولا من فهم منطقي لجميع الخطوات الواجب

إتباعها لحل المسألة بواسطة الحاسب

هذه الخطوات هي ما تعرف باللوغاريتم The Algorithm بعد ذلك يمكن تحويل هذه الخطوات إلى إيعازات باسكال

والتي ستتحول بدورها إلى لغة الآلة المستعملة

بواسطة برنامج المصنف Compiler
وبرنامج الباسكال هو مجموعه من الإيعازات بعضها منفذ Executable وبعضها غير منفذ Non-Executable
وتتألف هذه الإيعازات من كلمات دليليه أو من كلمات تعريفية يجب على المبرمج تعريفها في بداية كل برنامج
ولتوضيح ذلك نرى مخطط لبرنامج باسكال
Program The Total (input, output);

{This program find sum of two integer number}
Var
A, B, Total: integer;

Begin

Write (‘Enter two integer numbers to be add: ‘);
Readln (a, b);
Total: = a+b;
Writeln (‘The sum of’, A,’and’, B,’is’, Total);
End.

حيث نلاحظ
- السطر الأول هو للتعريف باسم البرنامج ووسيله الإدخال والإخراج
- أن الجزء الملون بالأزرق هو عباره عن كلمات محجوزه سنتعرف عليها بالتفصيل بالدروس القادمه
- الجزء الملون بالأخضر هو عباره عن إيعاز غير منفذ وهي ملاحظات خاصه بقاريء البرنامج
- الكلمه الدليليه Var للتصريح عن المتغيرات وسيتم دراستها بالتفصيل
- الجزء الممتد من Begin إلى End هو عباره عن جسم البرنامج والأوامر بينها
- السطر الأخير يحتوي على End متبوعه بنقطه وذلك للدلاله على نهايه البرنامج وسنلاحظ أن
1- بعد كل سطر هنالك نقطه فاصلة ( للدلالة على سطر آخر يلية

2- بعد كلمه End هنالك نقطة (.) للدلاله على أنه لا يوجد سطر بعد ذلك

أنواع البيانات في الباسكال


في هذا الدرس سوف نتعرف على أنواع البيانات في لغة الباسكال والقواعد الخاصه لكل منها

للتمكن من جمع هذه البيانات في تعابير تشكل إيعازات البرامج في هذه اللغة

يمكننا تمييز نوعين من أنواع البيانات :


الأول
وهو ما تشترك فيه كل لغات البرمجه لذلك سنطلق عليه إسم البيانات القياسيه وهي:

1- الكميات الصحيحه Integer
وهي الأعداد الصحيحه الكامله التي لا تحوي على كسور

مثل 11

2- الكميات الحقيقيه Real

وهي الأعداد الحقيقيه التي تحوي كسور فيها

مثل 2.3434

3- الكميات المميزه Char

وهي الحروف والأشكال المميزة

مثل A,@,H,^,&

4- الكميات المنطقيه Boolean

ويمكن أن تأخد قيمتين هما إما صحيح True أو خطأ False


الثاني
وهو البيانات التي يصرح بها عن طريق المبرمج وذلك بتعريف أنواع جديده من البيانات ليست من الأنواع الأربعة التي تكلمنا عنها.

المتغيرات في برنامج الباسكال

التصريح Var
ويتم في هذا القسم من البرنامج التصريح عن نوع البيانات بالبرنامج قبل إستخدامها
ويتم التصريح حسب نوع البيانات إما الأنواع الأربعه Integer , Real , Boolean , Chr أو نوع قام المستخدم بتعريفه وسيتم دراسته بفصل آخر
ويخضع إسم المتغير إلى شروط وهي
1- أن يبدأ بحرف ( ولا تقبل الأسماء التي تبدأ بأرقام )
2- يحوي الإسم حروفا وأرقاما فقط
3- لا يكون الإسم من ضمن الكلمات المحجوزه بالذاكرة
4- يفضل دائما أن يكون إسم له معنى للتسهيل

أمــــثــلة

A: integer; تم تعريف مكان بالذاكره إسمه A وهو يقبل البيانات فقط من نوع الأعداد الصحيحه
B: Real; تم تعريف مكان بالذاكره إسمه B وهو يقبل البيانات من النوع الصحيح وأيضا النوع الذي الحقيقي الذي يحوي كسور
Grade: Chr; تم تعريف مكان بالذاكره إسمه Grade وهو يقبل البيانات من النوع Chr
F: Boolean; تم تعريف مكان بالذاكره إسمه F وهو يقبل بيانات من النوع Boolean أي قيم منطقيه (يقبل إما قيمه True – False )

والآن لنأخذ مثال تطبيقي على إستخدام التصريح Var

A:=5; (صحيح)

A:=3.5; (خطأ) – لإنه تم إسناد عدد حقيقي كسري إلى متغير صحيح


B:=5; (صحيح)

B:=3.5; (صحيح)

Grade:=`r`; (صحيح)

Grade:=d; (خطأ) – لعدم وضع الأقواس

F:=True; (صحيح)

F:=False; (صحيح)

F:=10; (خطأ) – لإن المتغير F لايقبل إلا قيم منطقيه إما True أو False

ونلاحظ مما سبق

القيمه Real اعم من Integer فهي تقبل القيم الصحيحه والحقيقيه ولكنها تأخد حيز من الذاكرة أكبر.
الدرس الرابع : الثوابت في البرنامج

لقد تعرفنا على طريقة تعريف متغيرات بالبرنامج لحفظ البيانات فيها حسب نوعها وذلك داخل التعريف Var

ولكن ماذا لو أردنا تعريف بيانات تكون قيمتها ثابته طوال عمل البرنامج فإننا نستخدم لتعريفها

نوع جديد داخل الأمر Const وتكون على الشكل التالي

Const

A = 30 ;

B = 9.6 ;

C = “Name”;

- طوال عمل البرنامج سيسند للثابت A القيمة 30 ولا يمكن تغيير هذه القيمة خلال البرنامج أبدا

- نلاحظ أن هناك علامة مساواة = بين إسم الثابت وقيمته بينما في تعريف Var المتغيرات هناك علامة : بين إسم المتغير ونوعه

- الثابت المعرف يعامل في البرنامج على أنه كلمة محجوزة Reserved Word

Program Circle(input,output);

Const
Pi=3.14;

Var

Radius : integer ;
Circum , area : real ;

Begin

Writeln ( ‘Enter Radius’);

Read ( radius);

Circum := 2*pi* radius ;

Area := pi * radius * radius ;

Writeln (‘The value of circum is’,circum);

Writeln (‘The value of area is’,area);

End.

في البرنامج السابق قمنا بتعريف ثابت في البرنامج بالإسم pi وهو يتخذ دائما القيمة 3.14

إستخدام الثوابت في البرنامج يسهل عمل البرنامج ويسهل تعديل القيم بسهولة بخاصة في البرامج الكبيرة

لو أردنا تنفيذ البرنامج السابق ولكن بدون الإعتماد على الثوابت فسيكون البرنامج على الشكل

Program Circle(input,output);

Var

Pi : real ;

Radius : integer ;

Circum , area : real ;

Begin

Write (‘Enter Value of pi :’);

Readln (pi);

Writeln ( ‘Enter Radius’);

Read ( radius);

Circum := 2*pi* radius ;

Area := pi * radius * radius ;

Writeln (‘The value of circum is’,circum);

Writeln (‘The value of area is’,area);

End;

سنتعرف في هذا القسم على نوع جديد من الأوامر في الباسكال وهذا النوع من الأنواع الشائعة الإستخدام في البرنامج وهو الأمر Writeln ويستخدم هذا الأمر للطباعة وإخراج البيانات على الشاشة وله نوعان

الأول : Writeln

وهو يقوم بطباعة الجملة والإنتقال بعدها إلى السطر الذي يليه مثل

Writeln (‘This is First Line’);

Writeln (‘This is the second Line’);

Writeln (‘This is the first line’,’This is complete of the first line’);

نلاحظ في هذا المثال أنه سيقوم بطباعة الجملة الأولى وفي نفس السطر سيقوم بطباعة الجملة الثانية وسينتقل بعدها للسطر الذي بعده

الثاني : Write

وهو مشابه للأمر Writeln ولكن الفرق الوحيد أنه لا ينتقل سطر للأسفل بعد طباعة الجملة بل يكمل بنفس السطر

Write (‘This is the first line ‘);

Writeln (‘This is the complete of the first line’);

Write (‘This is the Second line’);

Write (‘This is complete of line 2’);

Writeln (‘This is the End’);

في هذا المثال توضيح كامل لعمل دالة الإخراج بحالتيها
الدرس الخامس : أمر Write والأمر Writeln

يقرأ البرنامج السطر الأول ويطبعه وبما أنه Write فإن المؤشر لن ينتق للسطر الذي يليه بل سيقرأ السطر الآخر ويطبعه بنفس السطر

وبما أن السطر الثاني من النوع Writeln فإن المؤشر بعد الإنتهاء من طباعة السطر ينتقل للسطر التالي لطباعة البيانات الأخرى

لذلك سيكون ناتج السطور السابقة بعد التنفيذ

This is the first line This is the complete of the first line

This is the Second line This is complete of line 2 This is the End
Iبعد الإنتهاء من نتفيذ الأوامر ينتقل المؤشر I إلى السطر الذي يلي آخر جمله لإنها من النوع Writeln .

صور لنجوم وكواكب رفاعية - اضغط هنا


رفاعةon

لا يمكنك الرد على هذا الموضوع ولايمكنك إضافة موضوع جديد في الأرشيف اضغط هنا وانتقل إلى القسم المفتوح للردود والمواضيع
أنا : الطالبابي



الطالبابي غير متصل  
رفاعة اونلاين في قلوبنا
قديم 14-04-2009, 10:24 AM   #6
ودالحاج

منتدى الأدب والخواطر
فيجــــــــــــــــــــو
الصورة الرمزية ودالحاج
افتراضي رد: طريقة البرمجة في لغة الباسكال

يديك العافية والله اللغة دي عذبتنا عذاب في الجامعة ,,,
صور لنجوم وكواكب رفاعية - اضغط هنا


رفاعةon

لا يمكنك الرد على هذا الموضوع ولايمكنك إضافة موضوع جديد في الأرشيف اضغط هنا وانتقل إلى القسم المفتوح للردود والمواضيع
أنا : ودالحاج



ودالحاج غير متصل  
رفاعة اونلاين في قلوبنا
توقيع : ودالحاج
إضافة رد

مواقع النشر (المفضلة)

أدوات الموضوع
انواع عرض الموضوع

تعليمات المشاركة
لا تستطيع إضافة مواضيع جديدة
لا تستطيع الرد على المواضيع
لا تستطيع إرفاق ملفات
لا تستطيع تعديل مشاركاتك

BB code is متاحة
كود [IMG] متاحة
كود HTML معطلة



Powered by vBulletin® Version
Copyright ©2000 - 2014, Jelsoft Enterprises Ltd
::×:: جميع الحقوق محفوظة لمنتديات رفاعة أونلاين ::×::
الشهادة السودانية 2011
تصميم: صبري طه