انجمن تخصصی فناوری اطلاعات سلامت و انفورماتیک پزشکی ایران

نسخه‌ی کامل: 5سوال فوري پاسكال
شما در حال مشاهده نسخه آرشیو هستید. برای مشاهده نسخه کامل کلیک کنید.
با سلام و عرض ادب پنج سوال داشتم ممنونتان مي شوم مرا راهنمايي نماييد:
1- آيا عدد اعشاري را مي توان به صورت كاراكتري نوشت؟ به فرض در type cassting مي توان اعشار را تبديل به كاراكتر كرد؟
2- هر عدد جز صفر را به عنوان true مي گيريم آيا مثلا 3.3 ( عدد اعشاري) true است؟
3- تابع swap ، بايت بالا را در بايت پايين قرار مي دهد در عدد 3D5A$ از كجا مي دانيم 3Dبايت بالا و 5A بايت پايين است دقيقا؟؟
4- فرض كنيم X برابر 20000 و از نوعInteger است و y برابر 2 و از نوع integer حاصلضرب x, y برابر 40000 مي شود كه در بازه integer نيست و به صورت عددي منفي چاپ مي شود. چرا اعداد بزرگتر از رنج( يعني 32767) به صورت عدد منفي چاپ مي شود
5- چرا در type cassting ، خطاي كامپايلري مي دهد؟؟؟؟

فرض كنيم i=integer و r= real و r=3/3
c:=char( r );-------> khataie kampailer
b:= boolean ( r );--------> khataie kampileri
i:= integer( r );------->khataie kampileri
پيشاپيش ممنونم
(15-آذر-1391، 05:51 عصر)msh6080 نوشته: *شما قادر به دیدن لینک ها نیستید ثبت نام کنید یا وارد حساب خود شوید تا بتوانید لینک ها را ببینید*با سلام و عرض ادب پنج سوال داشتم ممنونتان مي شوم مرا راهنمايي نماييد:
1- آيا عدد اعشاري را مي توان به صورت كاراكتري نوشت؟ به فرض در type cassting مي توان اعشار را تبديل به كاراكتر كرد؟
2- هر عدد جز صفر را به عنوان true مي گيريم آيا مثلا 3.3 ( عدد اعشاري) true است؟
3- تابع swap ، بايت بالا را در بايت پايين قرار مي دهد در عدد 3D5A$ از كجا مي دانيم 3Dبايت بالا و 5A بايت پايين است دقيقا؟؟
4- فرض كنيم X برابر 20000 و از نوعInteger است و y برابر 2 و از نوع integer حاصلضرب x, y برابر 40000 مي شود كه در بازه integer نيست و به صورت عددي منفي چاپ مي شود. چرا اعداد بزرگتر از رنج( يعني 32767) به صورت عدد منفي چاپ مي شود
5- چرا در type cassting ، خطاي كامپايلري مي دهد؟؟؟؟

فرض كنيم i=integer و r= real و r=3/3
c:=char( r );-------> khataie kampailer
b:= boolean ( r );--------> khataie kampileri
i:= integer( r );------->khataie kampileri
پيشاپيش ممنونم

پاسکال اجازه انجام تمامی تبدیل نوع ها را نمیده و باید در هنگام تبدیل نوع متغیرها از لحاظ اندازه داده و نوع داده ای که ذخیره شده با هم هماهنگ باشند.
مثلا در یک متغیر char اعداد ascii ذخیره میشه پس میشه یک متغیر Byte یا int را با اون تبدیل نوع انجام داد در این صورت اگه بخواهیم عدد را به char تبدیل کنید کاراکتر ascii متناظر را نشون میده و اگر بخواهید char را به Int یا byte تبدیل کنید کد ascii متناظر با اون نشون داده میشه.
ولی اجازه تبدیل نوع اعشاری به کاراکتر و یا Int را نمیده.
در مورد boolean هم بدونید که true =بزرگتر از 0 و false=0 و در همین حد میتونه با Int یا byte تبدیل نوع داشته باشه. یعنی اگر int که داخل boolean میریزید از 0 بزرگتر باشه میشه true و اگر 0 باشه میشه false و برعکس
ولی اجازه تبدیل نوع اعشاری به boolean را نمیده ولی میشه boolean را در داده اعشاری ریخت در صورتی که قبلش اونا به integer تبدیل کنید.

در مورد اینکه چرا 40000 در int قرار نمی گیرد بخاطر اینه که Int از -32768 تا 32767 یعنی کلا دو بایت علامت دار را نگه میداره پس بیت با ارزش میشه بیت علامت و 15 بیت باقیمانده میشه محتوا.
حالا دیگه اگر نحوه متمم2 و اینا را بلد باشی میفهمی که چرا داده بزرگتر از 32767 را بصورت عددمنفی نشون میده.
بي نهايت ممنونم از پاسخ كاملتانRoseRoseRose