موضوع مميز ملتقى طلاب الاعلام الالي لحل تمارين Algorithmes et programmation en Pascal - الصفحة 17 - منتديات الجلفة لكل الجزائريين و العرب

العودة   منتديات الجلفة لكل الجزائريين و العرب > منتديات الجامعة و البحث العلمي > منتدى الهندسة > قسم الرياضيات و الاعلام الالي

في حال وجود أي مواضيع أو ردود مُخالفة من قبل الأعضاء، يُرجى الإبلاغ عنها فورًا باستخدام أيقونة تقرير عن مشاركة سيئة ( تقرير عن مشاركة سيئة )، و الموجودة أسفل كل مشاركة .

آخر المواضيع

ملتقى طلاب الاعلام الالي لحل تمارين Algorithmes et programmation en Pascal

إضافة رد
 
أدوات الموضوع انواع عرض الموضوع
قديم 2013-01-24, 12:37   رقم المشاركة : 241
معلومات العضو
عودة امل
عضو مميّز
 
الصورة الرمزية عودة امل
 

 

 
إحصائية العضو










افتراضي

ممكن تعطولنا السر لحل الألقوريثم........merciiiii









 


رد مع اقتباس
قديم 2013-01-24, 13:28   رقم المشاركة : 242
معلومات العضو
you92cef
عضو محترف
 
إحصائية العضو










افتراضي

عن اي الغوريتم ؟

ام بصفة عامة ؟

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

هناك متخصصين يكون لديهم ميول رياضية غالبا يقومون بكتابة الالغوريتمات *-*خاصة التي تتعلق بالرياضيات*-*

المبرمج يقوم بترجمة الالغوريتمات الى برنامج *-* لانه مثلا المبرمج يدرك الدوال التي يتعامل بها وادوات البرمجة

ex: if ,while,for,repeat,integer,array,length

بينما من يكتب الالغوريتم ليس لديه دراية كبيرة بهذه الاشياء

فالمشكل هنا يمكل في الحصول غلى الالغوريتم الصحيح والفعال بينما ترجمته تتعلمها مع الوقت والمحاولات

1- يجب احترام المجالات
integer,real ,string,char
لانه مثلا اذا كان المتغيران
x,y
من نوع
integer
بحيث
x:=2
y:=1
فان
x+y:=3
بينما
لو كانا من
string
بحيث
x:=2
y:=1
فان
x+y:=21
y+x:=12

فالفرق يمكن في النتيجة وفي الترتيب
البرنامج يوضح الفرق

كود:
program ex;
uses wincrt;
var x,y:char;
begin
readln(x);
readln(y);
writeln(x+y);
writeln(y+x);
end.
2-احترام البداية والنهاية
مثلا
begin
end;
يجب ان نضعها في اماكنها الصحيحة
كذلك استعمال بعض الدوال كحال
for,while,repeat,length,case,goto
يجب حسن استعمالها

3-اختصار البرنامج قدر الامكان والعمل على تطوير الممستوى دوريا

4-استعمال التعلقات
les commentaire*-*explicatif ou principale qui figure dans le program*-*

شكرا









رد مع اقتباس
قديم 2013-01-24, 13:41   رقم المشاركة : 243
معلومات العضو
عودة امل
عضو مميّز
 
الصورة الرمزية عودة امل
 

 

 
إحصائية العضو










افتراضي

مشكوووووور مشكلتي تكمن في اختيار البوكل و العلاقاث اللي لازم نسثعملهم










رد مع اقتباس
قديم 2013-01-24, 18:33   رقم المشاركة : 244
معلومات العضو
you92cef
عضو محترف
 
إحصائية العضو










افتراضي

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

1-هناك بوكل
for
هذه البوكل تقوم باعادة الامر الى غاية الحد الاقصى لها
مثلا
for i:=1 to 10 do
فهذا يعني انها تقوم بتكرار كل العمليات التي تلي ابدا
do
يمكن استعمال
begin-----end;
اذا كانت عدد العمليات التي نريد القيام بها يفوق 1
هذه الدالة تقوم اتوماتيكيا عند الانتهاء من كل العمليات باضافة 1 الى المتغير الذي هو في هذه الحالة
i*-* incrimentation de i*-*
فاذا كانت بعد كلمة ابدا 5 عمليات للقيام بها فمجرد الانتهاء من هته العمليات تصير قيمة المتغير القيمة السابقة +1

في هذه الدالة يجب ان يكون المتغير من مجموعة الاعداد الطبيعية
i appartian t a l'ensemble z

عيوب هذه الدالة
1-المتغير يجب ان يكون من مجموعة الاعداد الطبيعية
2-يجب ان نعلم مسبقا المجال الذي ياخذه المغتير في الاحالة السابقة فان
domain i = 1,2,3,4,5,6,7,8,9,10
3- الدالة تسمح بالقيام ببعض العمليات بدون اي فائدة منها
مثلا البرنامج التالي
نريد ان نعرف اول قاسم للعدد 2 من المجال 5-200
كود:
for i:=5 to 200 do 
if i mod 2 =0 then writeln (i);
نلاحظ في هذه الحالة انا الدالة سوف تقوم بالتالي
1-بالرغم من اننا نريد اظهار القاسم الاول في المجال السابق الى اننا سوف نحصل على كل قواسم العدد 2 التي تنتمي الى المجال السابق *-* والذي ليس المطلوب *-*
2-بالرغم من اننا نحصل على اول قاسم في العملية 2 الى ان الدالة سوف تستمر في العمل الى غاية القيمة200*-*تكرار العمليا من 6 الى 200 ليس له اي فائدة *-*
3-تاخر في الوقت *-* لان الدالة
for
تحتاج الى وقت كبير مقارنة بالدوال الاخرى *-*

اذن هنا المشكل يكمن في اختيار الدالة

ملاحظة:
for i:=1 to 1 do
يعني ان الدالة سوف تقوم بالقيام بعملية واحدة والتي يكون فيها قيمة المتغير تساوي 1

for i:=10 downto 1 do
نفس المبدا السابق ولكن هذه المرة تنازليا
في كل مرة يتم انقاص واحدة من القيمة السابقة للمتغير

for i:=-3 to 5 do
تعمل بشكل عادي بالرغم من القيمة السابقة لان
3appartient a z

في هذه الدالة ليس هناك
test avant ou apres chaque etape
----------------------------------------------









رد مع اقتباس
قديم 2013-01-24, 18:52   رقم المشاركة : 245
معلومات العضو
you92cef
عضو محترف
 
إحصائية العضو










افتراضي

الدالة
repeat
تقوم بتكرار العمليات حتى تحقق شرط التوقف

في هذه الحالة لا نستعمل
begin ..... end;
لان كل الامور والعمليات الموجودة بين
repeat ..... until
سوف نقوم بتفعليها في كل مرة

الدالة هذه مقارنة بالدالة السابقة فهي اسرع منها في العمل *-* اذا كان لدينا نفس البرنامج وقمنا بكتابته بالدالة السابقة وهذه الدالة فان البرنامج الثاني يكون اسرع من البرنامج الاول *-*

فهي هذه الدالة ليس هناك
incremantation*-* +1*-*
ou decrimentation *-* -1 *-*
واذا احتجنا الى هذه العمليات نكتبهمداخل الدالة
يمكن ان تكون القيمة الني نضيف اليها او ننقص منها تنتمي الى
R
I APPARTIENT A R

يعني
يمكن كتابة داخل هذه الدالة
i:=i+0.2;
وهذا مقبول ففي كل مرة تعمل هذه الدالة يتم اضافة 0.2 في قيمة المتغير

3-في هذه الدالة لدينا
test apres chaque iteration
هذا يعني انه حتى لو ادخلنا قيمة لا تحقق شرط التوقف فان الدالة سوف تعمل
يعني هذه الدالة تعمل على الاقل مرة واحدة ولا يمكن ابدا الا تعمل هذه الدالة *-* يعني اذا كانت لدينا هذه الدالة في برنامج فهي على الاقل سوف تعمل مرة واحدة فهنا يجب الحذر من استعمالها لانها قد تعمل حتى وان كان عملها لغير ما برمجة له

مثال

كود:
i:=0.5
repeat 
writeln(i);
i:= i+0.2
y:=sqr(i);
writeln(y);
until i<0.3
نقوم بفهم كيفية عمل البرنامج
في الحالة 1
i:=0.5
المفروض البرنامج لا يشتغل
يتم اظهار 0.5
i:=0.7
يتم اظهار0.7*0.7
نقوم بعمل
test
نتوقف

بالرغم من ان القيمة الاولية للمتغير حققت شرط التوقف الا ان البرنامج اشتغل *-* عيب الدالة *-*









رد مع اقتباس
قديم 2013-01-24, 19:07   رقم المشاركة : 246
معلومات العضو
you92cef
عضو محترف
 
إحصائية العضو










افتراضي

الدالة
while
هذه الدالة تشبة الدالة السابقة ولكن الفرق بينهما انها تقوم بعمل
test avant chaque iteration
هذه الدالة هي اسرع الدوال الثلاث
في حالة كانت لدينا اكثر من عملية نستعمل
begin ... end;

لتحويل دالة من نوع
repeat
الى دالة من نوع
while
نقوم باخذ الشرط الذي يوجد بعد
until
ونقوم بعمل
negation
العبارة التي نحصل عليها نضعها بعد
while

بخصوص
negation
فمثلما كنتم تدرسنوها في الجبر نفس الامر
اذا كانت لدينا اكبر تصير اصغر او تساوي
او تصير و
و تصير او
يساوي تصير لا يساوي
الخ ....
هذه الدالة يكن الا تشتغل اطلاقا
في هذه الدالة ليس هناك
incrementation ou decrimentation
اذا احتجنا اليهم نضعهم داخل الدالة
مثال

كود:
i:=0.5
while i<=0.3 do begin 
writeln(i);
i:=i+0.2
y:=sqr(i)
writeln(y);
end;
في الحالة الاولى لدينا 0.5=<0.3
خاطئة فالدالة لا تعمل اطلاق
اذا كانت
i:=0.2
الدالة تعمل مرة واحدة فقط
لانها عند انتهاء العملية الاولى تكون قيمة المتغير :=0.4 التي لا تحقق لشرط


لتحوبل دالة من نوع
while
الى دالة من نوع
repeat
نقوم باخذ الشرط الموجود بعد
while
نقوم بعمل
negation
والعبارة التي حصلنا عليها نقوم بوضعها بعد
until
بدون نسيان اننا لا نستعمل
begin .... end;
في الدالة
repeat
الى في الحالات التي نحتاجها
*-* لا نستعمل
begin .... end;
في الدالة
repeat
للقيام بكل العميلات لان هذه الدالة تقوم بعمل كل الاشياء الموجودة بين
repeat .... until
مهما كان عدد
بعكس الدالتين السابقتين التي اذا كان لدينا اكثر من امر علينا القيام به في كل مرة فيجب استخدام
begin .. end;

في حالة لم استعاب اي شيء اطرح*-*ي*-* الاسئلة
شكرا للجميع









رد مع اقتباس
قديم 2013-01-25, 18:03   رقم المشاركة : 247
معلومات العضو
عودة امل
عضو مميّز
 
الصورة الرمزية عودة امل
 

 

 
إحصائية العضو










افتراضي

ماشاءالله عليك شككككررررااا.............
لكن مفهمتش هذه:
for i:=-3 to 5 do
تعمل بشكل عادي بالرغم من القيمة السابقة لان
3appartient a z

في هذه الدالة ليس هناك
test avant ou apres chaque etape










رد مع اقتباس
قديم 2013-01-25, 18:55   رقم المشاركة : 248
معلومات العضو
you92cef
عضو محترف
 
إحصائية العضو










افتراضي

اقتباس:
المشاركة الأصلية كتبت بواسطة عودة امل مشاهدة المشاركة
ماشاءالله عليك شككككررررااا.............
لكن مفهمتش هذه:
for i:=-3 to 5 do
تعمل بشكل عادي بالرغم من القيمة السابقة لان
3appartient a z

في هذه الدالة ليس هناك
test avant ou apres chaque etape
هذا يعني حتى لو كانت القيم لتي تاخذها
i
سالبة فان الدالة
for
تعمل بشكل عادي
مثال
كود:
program ex;
uses wincrt;
var i: integer;
begin
for i:=-3  to 5 do
writeln(i);
end.
بخصوص هذه الدالة فهي لا تحتاج الى ان نعمل مقارنة
pas de test dans ce cas
لان ترجمتها الى اللغة العربية هي
من اجل س:=1 حتى 10 افعل

يعني لا توجد عبارة اذا او لطالما

بينا في الدالتين الاخرتين فترجمتها هي

كرر العمليات حتى

والدالة الثالثة
طالما*-* او بما ان*-* افعل

يعني في الدالتين الثانية والثالثة هناك شرط لعملهما بعكس الدالة الاولى









رد مع اقتباس
قديم 2013-01-26, 09:35   رقم المشاركة : 249
معلومات العضو
عودة امل
عضو مميّز
 
الصورة الرمزية عودة امل
 

 

 
إحصائية العضو










افتراضي

نعممم شكرااااا جزيلا .........درك نزيد نفهم مليح ونعاود نرجع انشاء الله هههه










رد مع اقتباس
قديم 2013-01-31, 23:59   رقم المشاركة : 250
معلومات العضو
ماجد93
عضو فعّال
 
الصورة الرمزية ماجد93
 

 

 
إحصائية العضو










افتراضي

يعطيكم الصحة
انا مفهمتش هادي لاه نكتبوها ؟
حنا منديروهاش خلاص
uses wincrt;










رد مع اقتباس
قديم 2013-02-01, 10:59   رقم المشاركة : 251
معلومات العضو
you92cef
عضو محترف
 
إحصائية العضو










افتراضي

اقتباس:
المشاركة الأصلية كتبت بواسطة ماجد93 مشاهدة المشاركة
يعطيكم الصحة
انا مفهمتش هادي لاه نكتبوها ؟
حنا منديروهاش خلاص
uses wincrt;
قد لا تكتبوها في التمارين ولكن في البرمجة يجب كتابتها حتى يعمل البرنامج

لا ادري لماذا الاساتذة لا يقدمون برنامج كامل في الحصص

بخصوص
uses wincrt

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

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

فمثلا عند اظهار النتائج على شاشة الحاسوب نحتاج الى دالة تقوم باخذ النتائج وما نريد اظهاره من
ram
تقوم بعرضها

هنا نحتاج الى استدعاء هذه الدالة

فعوض ما نقوم بكل مرة باستدعاء الدوال التي نحتاجها نقوم باستدعاء دالة شاملة تقوم هي بدورها باستدعاء الدوال التي تحتاجها في البرنامج
فهذه الدالة هي
wincrt

فمثلا ناخذ البرنامجين التاليين
كود:
 
program ex;
uses wincrt;
var i:integer;
begin
writeln('lire i');
readln(i);
writeln(sqr(i));
end.
البرنامج الثاني

كود:
 
program ex;
var i:integer;
begin
writeln('lire i');
readln(i);
writeln(sqr(i));
end.
قارن بينهما

لمزيد من الفهم استعمل خاصية المساعدة في الباسكال









رد مع اقتباس
قديم 2013-02-01, 11:12   رقم المشاركة : 252
معلومات العضو
ghost_4d
عضو مميّز
 
إحصائية العضو










افتراضي

الرجاء المساعدة في ايجاد هذه الخوارزمية

كود:
cosx=1-(x^2/2!)+(x^4/4!)-(x^6/6!)+...
عدد الحدود يكون معرفا من المستخدم واكبر من 5 ,









رد مع اقتباس
قديم 2013-02-01, 11:26   رقم المشاركة : 253
معلومات العضو
ghost_4d
عضو مميّز
 
إحصائية العضو










افتراضي

علما ان محاولتي كالتالي
لا اعلم كيف نجعل الحلقة for تقوم كل باظهار الاعداد كالتالي 2,,4,,6,,يعني كل مرة تضيف الرقم 2 لذا كتبت تنبيه في الخوارزمي

كود:
 readln(n)
readln(x)
while n>=5 do
p,fact,s:=1
for i:=1 to n -1do
for j:=2 to n-1(هذه تقوم كل مرة بإضافة 2)
fact:=fact*j 
s:=x*x*s
cos:=1-p*s/fact+cos;;
p:=-p
write(cos)
end.









رد مع اقتباس
قديم 2013-02-01, 12:10   رقم المشاركة : 254
معلومات العضو
you92cef
عضو محترف
 
إحصائية العضو










افتراضي

اقتباس:
المشاركة الأصلية كتبت بواسطة ghost_4d مشاهدة المشاركة
الرجاء المساعدة في ايجاد هذه الخوارزمية
كود:
cosx=1-(x^2/2!)+(x^4/4!)-(x^6/6!)+...
عدد الحدود يكون معرفا من المستخدم واكبر من 5 ,

بما ان هذه الدالة تتعامل فقط مع الاعداد الزوجية
فنقوم بعمل فحص
test si le nombre pair ou inpair avec la fonction mod

لخوارزمية

si n=0 ou n=1 alors fact:=1
si n=2 alors fact(2):=fact*(n-1)*n
=1*1*2
=2
si n=3 alors on a 3 mod 2=1 alors on fait rien

si n=4 alors on a 4 mod 2=0 alors fact:=fact*(n-1)*n
=2*3*4
=24
c'est vrai est ca marche bien

on continu

fair le meme choose pour la puissance

ensuite on fait p/fact

le resulat sera sommer avec la somme s

on verifier la condition est on choisi si on continu le meme travail ou on affiche le resultat

merci









رد مع اقتباس
قديم 2013-02-01, 12:33   رقم المشاركة : 255
معلومات العضو
عودة امل
عضو مميّز
 
الصورة الرمزية عودة امل
 

 

 
إحصائية العضو










افتراضي

هل الدالة tant queتكون دائما عكس الشرط










رد مع اقتباس
إضافة رد

الكلمات الدلالية (Tags)
ملتقى, الالي, الاعلام, طلاب


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

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

الانتقال السريع

الساعة الآن 11:34

المشاركات المنشورة تعبر عن وجهة نظر صاحبها فقط، ولا تُعبّر بأي شكل من الأشكال عن وجهة نظر إدارة المنتدى
المنتدى غير مسؤول عن أي إتفاق تجاري بين الأعضاء... فعلى الجميع تحمّل المسؤولية


2006-2024 © www.djelfa.info جميع الحقوق محفوظة - الجلفة إنفو (خ. ب. س)

Powered by vBulletin .Copyright آ© 2018 vBulletin Solutions, Inc