سؤال حول الجملة if
#1
السلام عليكم

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

يعني للتوضيح 
                if x>0 then
هنا يتم التحقق  هل ماتم ادخاله هو أكبر من الصفر .
كيف يمكني ان اجعل مايتم التحقق من ادخاله هو حروف وليس أرقام ؟

وشكرا
الرد
#2
يمكنك من التاكد من المدخلات بعدة طرق و كمثال

PHP كود :
procedure TForm1.Button1Click(Sender: TObject);
var
 
i:string;
begin
 repeat
   i
:='';
 
  if InputQuery('Progress', 'Enter the desired number:', i) then
     begin
       
try
 
        if (StrToInt(i) < 0) or (StrToInt(i) > 100) then
           showmessage
('Please enter an Integer value between 0 and 100');
 
      except
         showmessage
('Please enter numbers only (an Integer value between 0 and 100)');
 
        i:='-1';
 
      end;
 
    end
   
else
 
    break;
 
until (StrToInt(i) >= 0) and ((StrToInt(i) <= 100));
end; 
[-] كل من 1 user says قال شكرا ل bouh25 على المشاركة المفيدة
  • bi4ani
الرد
#3
لم أفهم أي شيئ أخي الكريم .....انالسا بادي في تعلم البرمجة
أنا أريد برنامج بسيط  في بئة الدوس او الكوماندلاين  يتحقق من عمر واسم المستخدم .....التحقق من العمر بسيط
علي سبيل المثال

PHP كود :
var
s:string;
x:integer;
begin
      writeln
('what is your name' );
        readln(s);
           writeln(how old are you );
             readln(x);
if 
x>0 then          هنا ..... اريد ان يتحقق من الاسم هل هو حروف ام ارقام 
            begin
if (x>0)and(x<10) then
      writeln
(s,' you are child');
if (
x>=10)and(x<20)then
      writeln
(s,' you are teenager') 
الرد
#4
مثال (FreePascal )

كود :
program Test; {$mode objfpc} Uses sysutils; var   s : string; // الاسم   x : string; // العمر   i : integer;// العمر كرقم begin   writeln('what is your name' ); // إدخال الاسم   readln(s);                     // قراءة الاسم   writeln('how old are you' );   // إدخال العمر   readln(x);                    // قراءة العمر   Try     i := StrToInt(x);      // تحويل العمر المعطى إلى رقم   except     On E : EConvertError do //في حالة وجود خطأ خلال عملية التحويل       begin         Writeln ('Not a number !'); // كتابة أن العمر المعطى ليس رقم         exit;                // الخرورج  -- في هذه الحالة من البرنامج     end;   end;   // إذا كان كل سطر صحيح   if (i>0) and (i<10) then     writeln(s,' you are child')   else if (i>=10) and (i<20) then     writeln(s,' you are teenager'); end.


في دلفي (Community Edition)


كود :
program Project1; {$APPTYPE CONSOLE} {$R *.res} uses   System.SysUtils; var   s : string; // الاسم   x : string; // العمر   i : integer;// العمر كرقم begin   writeln('what is your name' ); // إدخال الاسم   readln(s);                     // قراءة الاسم   writeln('how old are you' );   // إدخال العمر   readln(x);                    // قراءة العمر   Try     i := StrToInt(x);      // تحويل العمر المعطى إلى رقم   except     On E : EConvertError do //في حالة وجود خطأ خلال عملية التحويل       begin         Writeln ('Not a number'); // كتابة أن العمر المعطى ليس رقم         exit;                // الخرورج  -- في هذه الحالة من البرنامج     end;   end;   // إذا كان كل سطر صحيح   if (i>0) and (i<10) then     writeln(s,' you are child')   else if (i>=10) and (i<20) then     writeln(s,' you are teenager'); end.
[-] كل من 1 user says قال شكرا ل merouane على المشاركة المفيدة
  • bi4ani
الرد
#5
كود :
Try    i := StrToInt(x);      // تحويل العمر المعطى إلى رقم  except    On E : EConvertError do //في حالة وجود خطأ خلال عملية التحويل      begin        Writeln ('Not a number !'); // كتابة أن العمر المعطى ليس رقم        exit;                // الخرورج  -- في هذه الحالة من البرنامج
لكن أخي لم أفهم هذا الجزء من الكود
الرد
#6
StrToInt هي String to Integer: تقوم بتحويل نوع المتغير من String إلى Integer
أردت من خلالها أن أريك كيفية التحويل (بما أنك ذكرت أنك تتعلم: "ماتم ادخاله هو حروف وليست أرقام" )

Try.. Except
تفيد للتحكم بمجريات البرنامج عند حدوث خطأ محدد أو غير محدد: هنا سنراقب إذا حدث خطأ خلال عملية التحويل


exit تفيد الخروج من البرنامج (أو procedure, function) لأان عند إدخال العمر غير رقمي صحيح لا فائدة نت مواصلة مقارنة العمر المطلوب.



يمكن القيام بتعديل بسيط لنفس النتيجة ([size=small]حيث [/size][size=small]EInOutError[/size] تفيد مراقبة في حالة كان هناك خطأ في الإدخال - أي قمنا بتحديد X العمر كرقم intreger
وعند إدخال نص يحتوي على حروف أو رقم ذو فاصلة ..إلخ، سيتحول البرنامج إلى كتابة أن العمر المعطى ليس رقم integer، ثم يخرج من البرنامج.

PHP كود :
program test;
{
$mode objfpc}
Uses sysutils;

var
 s : string; // الاسم
 x : integer; // العمر

begin
 writeln
('what is your name' ); // إدخال الاسم
 readln(s);                     // قراءة الاسم
 writeln('how old are you' );   // إدخال العمر
 Try
   readln
(x);                    // قراءة العمر
 except
   On E 
: EInOutError do //في حالة وجود خطأ خلال عملية التحويل
     begin
       Writeln 
('Not a number !'); // كتابة أن العمر المعطى ليس رقم
       exit;                // الخروج  -- في هذه الحالة من البرنامج
   end;
 end;
 // إذا كان كل سطر صحيح
 if (x>0) and (x<10) then
   writeln
(s,' you are child')
 else if (x>=10) and (x<20) then
   writeln
(s,' you are teenager');
end. 
الرد
#7
جميل جدا  أخي الكريم ......وشكرا علي اهتمامك

ماذا لو أردت التحقق من أن الاسم الذي تم ادخاله لايحتوي ارقام  هل هناك دالة تقوم  بعكس ماتقوم به  strToint
وأرجو المعذرة علي الاسألة  اللتي ربما تجدها سخيفة لكنها مهمة جدا بالنسبة لي .......... Cool
الرد
#8
(22-09-2018, 03:03 PM)bi4ani كتب : جميل جدا  أخي الكريم ......وشكرا علي اهتمامك

ماذا لو أردت التحقق من أن الاسم الذي تم ادخاله لايحتوي ارقام  هل هناك دالة تقوم  بعكس ماتقوم به  strToint
وأرجو المعذرة علي الاسألة  اللتي ربما تجدها سخيفة لكنها مهمة جدا بالنسبة لي .......... Cool

لا أعلم عن دالة تقوم بهذا، لكن برمجتها بسيطة،
النص برمجيا هو سلسلة بحيث كل حلقة بها لها فهرس (index) أي النص 'S := 'Samir هو سلسلة بحيث 'S[1] = 'a
لمعرفة هل يوجد رقم في النص نقوم بحلقة ونقرأ كل حرف في السلسة ونقارنه بالأرقام من 0 حتى 9
إذا وجده سيقوم بما يريده المبرمج..

لن أكتب الحل هنا لأنك تتعلم، ولن أضرك بتقديم الجاهز، حاول.
بالتوفيق.
[-] كل من 1 user says قال شكرا ل merouane على المشاركة المفيدة
  • bi4ani
الرد
#9
أخي الفاضل كل الشكر و الامتنان علي فضلك و رحابت صدرك

انشاء الله سوف أحاول .......أنا لسا مبتدء في تعلم البرمجة
الرد


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


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم