نحوه راه اندازی گوشی های هوشمند و رایانه های شخصی. پرتال اطلاعاتی
  • خانه
  • جالب هست
  • انواع داده های عدد صحیح و واقعی در پاسکال رویه ها و توابع حسابی استاندارد پاسکال

انواع داده های عدد صحیح و واقعی در پاسکال رویه ها و توابع حسابی استاندارد پاسکال

یک نوع داده مجموعه ای از مقادیر معتبر و مجموعه ای از عملیات معتبر را تعریف می کند.

انواع ساده

انواع ساده به ORDINAL و REAL تقسیم می شوند.

1. انواع سفارشی , به نوبه خود وجود دارد:

الف) کل

پاسکال 5 نوع عدد صحیح را تعریف می کند که بسته به علامت و مقداری که متغیر می گیرد، تعریف می شود.

اسم را تایپ کن

طول (بر حسب بایت)

محدوده ارزش ها

32 768...+32 767

2 147 483 648...+2 147 483 647

ب) منطقی

نام این نوع BOOLEAN است. مقادیر بولی می تواند یکی از ثابت های بولی باشد: TRUE (درست) یا FALSE (نادرست).

ج) نمادین

نام این نوع CHAR است - 1 بایت را اشغال می کند. مقدار یک نوع کاراکتر مجموعه ای از تمام کاراکترهای رایانه شخصی است. به هر کاراکتر یک عدد صحیح در محدوده 0…255 اختصاص داده می شود. این عدد به عنوان کدی برای نمایش داخلی نماد عمل می کند.

2. انواع واقعی .

بر خلاف انواع ترتیبی که مقادیر آنها همیشه به یک سری اعداد صحیح نگاشت می شوند و بنابراین کاملاً دقیق در رایانه شخصی نشان داده می شوند، مقادیر انواع واقعی تعریف می کنند. شماره دلخواهفقط با مقداری دقت محدود بسته به قالب داخلی عدد واقعی.

طول نوع داده عددی، بایت

نام نوع داده عددی

تعداد ارقام قابل توجهنوع داده عددی

محدوده ترتیب اعشاری یک نوع داده عددی

2*1063 +1..+2*1063 -1

انواع ساختار یافته

انواع داده های ساختاریافته مجموعه مرتبی از متغیرهای اسکالر را تعریف می کنند و با نوع اجزای آنها مشخص می شوند.

انواع داده های ساختاریافته، بر خلاف انواع ساده، مجموعه ها را تعریف می کنند معانی پیچیدهبا یک نام مشترک می توان گفت که انواع ساختاری روش خاصی را برای تشکیل انواع جدید از انواع موجود تعیین می کند.

چندین روش ساختاری وجود دارد. با توجه به روش سازماندهی و نوع اجزاء در انواع داده های پیچیده، انواع زیر متمایز می شوند: نوع معمولی (آرایه ها). نوع ترکیبی (سوابق)؛ نوع فایل (فایل ها)؛ انواع چندگانه؛ نوع رشته (رشته ها); در زبان توربو پاسکال نسخه 6.0 و بالاتر، یک نوع شی (اشیاء) معرفی شد.

بر خلاف انواع داده های ساده، داده های نوع ساختار یافته با تعدد عناصری که این نوع را تشکیل می دهند، مشخص می شود. یک متغیر یا ثابت از نوع ساختاریافته همیشه دارای چندین مؤلفه است. هر جزء، به نوبه خود، می تواند متعلق به یک نوع ساختار یافته باشد، به عنوان مثال. تودرتو از انواع امکان پذیر است.

1. آرایه ها

آرایه ها در توربو پاسکال از بسیاری جهات شبیه به انواع داده های مشابه در سایر زبان های برنامه نویسی هستند. یک ویژگی متمایز آرایه ها این است که تمام اجزای آنها داده هایی از یک نوع (احتمالاً ساختار یافته) هستند. این اجزا را می توان به راحتی سازماندهی کرد و به سادگی با تعیین شماره سریال به هر یک از آنها دسترسی داشت.

شرح آرایه به صورت زیر مشخص می شود:

<имя типа>= آرایه[<сп.инд.типов>] از<тип>

اینجا<имя типа>- شناسه صحیح؛

آرایه، از – کلمات رزرو شده (آرایه، از);

<сп.инд.типов>- فهرستی از یک یا چند نوع شاخص که با کاما از هم جدا شده اند. پرانتزهای مربعی که لیست را قاب بندی می کند یک الزام دستوری است.

<тип>- هر نوع توربو پاسکال

هر نوع ترتیبی را می توان به عنوان انواع شاخص در توربو پاسکال استفاده کرد، به جز انواع LongInt و محدوده با نوع پایه LongInt.

عمق تودرتو انواع ساختار یافته به طور کلی و در نتیجه آرایه ها دلخواه است، بنابراین تعداد عناصر موجود در فهرست شاخص های نوع (اندازه آرایه) محدود نیست، با این حال، طول کل نمایش داخلی هر آرایه نمی تواند باشد. بیش از 65520 بایت باشد.

2. سوابق

رکورد یک ساختار داده ای است که از تعداد ثابتی اجزا تشکیل شده است که فیلدهای رکورد نامیده می شوند. برخلاف آرایه، اجزای (فیلدها) یک رکورد می توانند باشند انواع مختلف. برای اینکه امکان ارجاع به یکی از اجزای یک رکورد وجود داشته باشد، فیلدها نامگذاری می شوند.

ساختار یک اعلان نوع پست به صورت زیر است:

< نامنوع>= ضبط< سرمایه گذاری مشترک. زمینه های> پایان

اینجا<имя типа>- شناسه صحیح؛

RECORD، END - کلمات رزرو شده (رکورد، پایان)؛

<сп.полей>- لیست فیلدها؛ دنباله ای از بخش های یک رکورد است که با نقطه ویرگول از هم جدا شده اند.

3. مجموعه ها

مجموعه ها مجموعه ای از اشیاء از یک نوع هستند که به طور منطقی به یکدیگر متصل هستند. ماهیت اتصالات بین اشیا فقط توسط برنامه نویس ذکر شده است و به هیچ وجه توسط توربو پاسکال کنترل نمی شود. تعداد عناصر موجود در یک مجموعه می تواند از 0 تا 256 متغیر باشد (مجموعه ای که حاوی عناصر نباشد خالی نامیده می شود) این عدم ثبات تعداد عناصر آن است که مجموعه ها با آرایه ها و رکوردها متفاوت هستند.

دو مجموعه اگر و تنها در صورتی معادل در نظر گرفته می شوند که همه عناصر آنها یکسان باشند و ترتیب عناصر مجموعه بی تفاوت باشد. اگر تمام عناصر یک مجموعه نیز در مجموعه دیگری گنجانده شود، مجموعه اول در مجموعه دوم گنجانده شده است.

توضیحات نوع مجموعه عبارت است از:

< نامنوع>=مجموعه< پایه ها. نوع>

اینجا<имя типа>- شناسه صحیح؛

SET، OF - کلمات رزرو شده (مجموعه، از)؛

<баз.тип> - نوع پایهعناصر یک مجموعه که می تواند هر نوع ترتیبی باشد به جز WORD، Integer و LONGINT.

برای تعریف یک مجموعه، به اصطلاح سازنده مجموعه استفاده می شود: لیستی از مشخصات عناصر مجموعه، که با کاما از هم جدا شده اند. لیست با پرانتز احاطه شده است. مشخصات عنصر می تواند ثابت یا عبارتی از یک نوع پایه و همچنین یک نوع محدوده از همان نوع پایه باشد.

4. فایل ها

یک فایل به یکی از مناطق نامگذاری شده اشاره دارد حافظه خارجیرایانه شخصی یا دستگاه منطقی منبع یا گیرنده بالقوه اطلاعات است.

هر فایلی دارای سه ویژگی مشخصه است

    یک نام دارد که به برنامه اجازه می دهد با چندین فایل به طور همزمان کار کند.

    شامل اجزایی از همان نوع است. نوع کامپوننت می تواند هر نوع Turbo Pascal باشد، به جز فایل ها. به عبارت دیگر، شما نمی توانید یک "فایل فایل ها" ایجاد کنید.

    طول دوباره فایل ایجاد شدهدر هنگام اعلام به هیچ وجه مشخص نشده است و فقط با ظرفیت حافظه خارجی محدود می شود.

نوع یا متغیر فایل نوع فایلرا می توان به یکی از سه روش زیر تنظیم کرد:

< نام>= فایل از< نوع>;

< نام>=TEXT;

<имя>= فایل؛

اینجا<имя>- نام نوع فایل (شناسه صحیح)؛

FILE، OF – کلمات رزرو شده (فایل، از)؛

TEXT – نام نوع فایل متنی استاندارد؛

<тип>- هر نوع توربو پاسکال، به جز فایل ها.

بسته به روش اعلام، سه نوع فایل قابل تشخیص است:

· فایل های تایپ شده(تنظیم شده توسط بند FILE OF...);

· فایل های متنی(تعریف شده با نوع TEXT)؛

· فایل های تایپ نشده (تعریف شده توسط نوع FILE).

درباره تبدیل انواع داده های عددی پاسکال

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

Var X: عدد صحیح. Y: واقعی

سپس اپراتور

از نظر نحوی صحیح خواهد بود، اگرچه یک عبارت عدد صحیح در سمت راست علامت تخصیص و یک متغیر واقعی در سمت چپ وجود دارد، کامپایلر انواع داده های عددی را به طور خودکار تبدیل می کند. تبدیل معکوس خودکار از نوع واقعی به عدد صحیح در پاسکال غیرممکن است. بیایید به یاد بیاوریم که چند بایت برای متغیرهای نوع صحیح و واقعی تخصیص داده می شود: 2 بایت حافظه برای عدد صحیح نوع داده و 6 بایت برای واقعی اختصاص داده می شود. دو تابع داخلی برای تبدیل واقعی به عدد صحیح وجود دارد: round(x) x واقعی را به نزدیکترین عدد صحیح گرد می کند، trunc(x) یک واقعی را با دور انداختن قسمت کسری کوتاه می کند.

هر داده - ثابت، متغیر، مقادیر تابع - در پاسکال با یک نوع داده مشخص می شود.

بیایید مفهوم را تعریف کنیم نوع داده. همانطور که قبلاً مشخص است، تمام اشیاء برنامه (متغیرها، ثابت ها و غیره) باید توصیف شوند.

توضیحات، اولاً مترجم را از وجود متغیرها و سایر اشیاء مورد استفاده مطلع می کند و ثانیاً ویژگی های این اشیاء را نشان می دهد. به عنوان مثال، توصیف متغیری که مقدار آن عدد است، ویژگی های اعداد را نشان می دهد. به طور رسمی، اعداد می توانند عدد صحیح و واقعی (کسری) باشند. در پاسکال، مانند سایر زبان های برنامه نویسی، اعداد به دو نوع تقسیم می شوند: کل(کلمه رزرو شده عدد صحیح) و واقعی(کلمه رزرو شده واقعی).

انتخاب اعداد صحیح در نوع جداگانهبا این واقعیت توضیح داده می شود که در کامپیوتراعداد صحیح و اعداد واقعی متفاوت نشان داده می شوند: یک عدد صحیح را می توان کاملاً دقیق نشان داد، اما یک عدد واقعی را ناگزیر می توان با مقداری خطای متناهی نشان داد که توسط ویژگی های مترجم تعیین می شود.

برای مثال، اجازه دهید متغیر x از نوع real و مقدار آن برابر با یک باشد: x=1 . مقدار مربوطه در حافظه کامپیوتر می تواند 0.999999999، 1.000000001 یا 1.000000000 باشد. اما اگر متغیر x به عنوان یک متغیر از نوع عدد صحیح اعلام شود، واحد در رایانه کاملاً دقیق نشان داده می شود و متغیر x قادر به گرفتن مقادیر واقعی (کسری) نخواهد بود - پس از همه، به این صورت توصیف شد. یک متغیر از نوع عدد صحیح

بنابراین نوع داده تعریف می کند:

  • نمایش داخلی داده ها در حافظه کامپیوتر؛
  • مجموعه مقادیری که مقادیر از این نوع می توانند بگیرند؛
  • عملیاتی که می توان روی مقادیری از این نوع انجام داد.

معرفی انواع داده ها یکی از مفاهیم اساسی زبان پاسکال است که در هنگام انجام عملیات انتساب متغیر به مقدار یک عبارت، متغیر و عبارت باید از یک نوع باشند. این بررسی توسط کامپایلر انجام می شود که جستجوی خطاها را بسیار ساده می کند و منجر به افزایش قابلیت اطمینان برنامه می شود.

بسیاری از انواع داده های زبان توربو پاسکال را می توان به دو گروه تقسیم کرد:

  • انواع استاندارد (از پیش تعریف شده). ;
  • انواع تعریف شده توسط کاربر (انواع تعریف شده توسط کاربر) .

انواع استاندارد توربو پاسکال عبارتند از:

  • نوع عدد صحیح – عدد صحیح;
  • نوع واقعی – واقعی;
  • نوع شخصیت – char;
  • نوع بولی – بولی;
  • نوع رشته – رشته ;
  • نوع اشاره گر – اشاره گر;
  • نوع متن – متن

انواع داده های سفارشی هستند ترکیبات مختلفانواع استاندارد

انواع سفارشی عبارتند از:

اظهار نظر. دسته بندی دیگری از انواع داده ها امکان پذیر است که بر اساس آن انواع به ساده و پیچیده تقسیم می شوند.

انواع ساده عبارتند از: نوع عدد صحیح، نوع واقعی، نوع کاراکتر، نوع منطقی، نوع برشماری و نوع فاصله.

نوع پیچیده ترکیبی از انواع ساده (آرایه ها، رکوردها، مجموعه ها، فایل ها و غیره) است.

انواع استاندارد

نوع داده استاندارد توسط خود زبان پاسکال تعریف می شود. هنگام استفاده از انواع استاندارد در یک برنامه، کافی است زیرمجموعه های انواع مورد نیاز (const، var) را مشخص کنید و سپس ثابت ها و متغیرهای مورد استفاده در برنامه را توضیح دهید. نیازی به استفاده از زیربخش Type نیست.

به عنوان مثال، اگر برنامه فقط از متغیرها استفاده کند:

i,j - عدد صحیح (اعداد صحیح)؛

x,y - واقعی (واقعی)؛

t,s - کاراکتر (شخصیت)؛

a,b - بولی (منطقی)

سپس فقط یک زیربخش از متغیرها مورد نیاز است - Var. بنابراین در قسمت توصیفی برنامه اعلان های متغیر به صورت زیر نوشته می شود:

انواع عدد صحیح

داده های این نوع فقط می توانند مقادیر صحیح را بپذیرند. در یک کامپیوتر، مقادیر یک نوع عدد صحیح کاملاً دقیق نشان داده می شود. اگر متغیر منفی باشد، باید قبل از آن علامت «–» قرار گیرد و اگر متغیر مثبت باشد، علامت «+» را می توان حذف کرد. این نوعدر مواردی ضروری است که مقداری را نمی توان تقریباً به عنوان یک عدد واقعی نشان داد. مثلاً تعداد افراد، حیوانات و غیره.

نمونه هایی از نوشتن مقادیر صحیح: 17، 0، 44789، -4، -127.

محدوده تغییر داده های یک نوع عدد صحیح با پنج تعیین می شود انواع استاندارداعداد صحیح و در جدول ارائه شده است:

تایپ کنید دامنه اندازه بر حسب بایت
کوتاه -128...+128 1
عدد صحیح -32768...32767 2
Longint -2147483648...2147483647 4
بایت 0...255 1
کلمه 0...65535 2

دو نوع آخر فقط برای نشان دادن کار می کنند اعداد مثبتو سه عدد اول هر دو عدد مثبت و منفی هستند.

در متن برنامه یا هنگام وارد کردن داده از نوع عدد صحیح، مقادیر نوشته می شود بدون نقطه اعشار . مقادیر متغیر واقعی نباید تجاوز کند ارزش های قابل قبول نوع (Shortint، Integer، Longint، Byte، Word) که برای توصیف متغیر استفاده شده است. افراط های احتمالی در حین محاسبات به هیچ وجه کنترل نمی شود که منجر به کار نادرستبرنامه ها.

مثالی از استفاده از متغیر عدد صحیح

Var a:integer; ب: کلمه c:byte; شروع a:=300; (a روی 300 تنظیم شده است) b:=300; (b تنظیم شده روی 300) c:=200; (c روی 200 تنظیم شده است) a:=b+c; (a روی 500 تنظیم شده است) c:=b; (خطا! متغیر c فقط می تواند مقادیر 255 را بگیرد. در اینجا متغیر c روی 500 تنظیم می شود که باعث سرریز شدن نتیجه می شود.) پایان.

انواع واقعی

مقادیر انواع واقعی تقریباً در یک رایانه نشان داده می شوند. محدوده تغییر داده ها نوع واقعیبا پنج نوع استاندارد تعریف شده است: واقعی (Real)، تک دقیق (Single)، دقت دوگانه (Double)، دقت توسعه یافته (Extended)، پیچیده (Comp) و در جدول ارائه شده است:

تایپ کنید دامنه تعداد ارقام قابل توجه اندازه بر حسب بایت
واقعی 2.9E-39...1.7E+38 11-12 6
تنها 1.5E-45...3.4E+38 >7-8 4
دو برابر 5E-324...1.7E+308 15-16 8
تمدید شده 3.4E-4951...1.1E+4932 19-20 10
Comp -2E+63+1...+2E+63-1 19-20 8

اعداد واقعی را می توان در دو قالب نمایش داد: نقطه ثابت و ممیز شناور.

فرمت نوشتن یک عدد نقطه ثابت مانند نماد ریاضی معمول برای یک عدد اعشاری با قسمت کسری. به عنوان مثال، قسمت کسری با استفاده از یک نقطه از کل قسمت جدا می شود

34.5, -4.0, 77.001, 100.56

فرمت نشانه گذاری ممیز شناور هنگام نوشتن اعداد بسیار بزرگ یا بسیار کوچک استفاده می شود. در این قالب، عدد قبل از "E" در عدد 10 به توان بعد از "E" ضرب می شود.

1E-4 1*10-4
3.4574E+3 3.4574*10+3
4.51E+1 4.51*10+1

نمونه هایی از اعداد ممیز شناور:

عدد ضبط در پاسکال
0,0001 1E-4
3457,4 34574E-1
45,1 451E-1
40000 4E+4
124 0.124E+3
124 1.24E+2
124 12.4E+1
124 1240E-1
124 12400E-2

در جدول از 5 تا 9، ردیف ضبط همان عدد 124 را نشان می دهد. با تغییر موقعیت اعشار در مانتیس (نقطه شناور است، از این رو نام "نوشتن عدد ممیز شناور") و در همزمان با تغییر مقدار سفارش، می توانید بیشترین را انتخاب کنید ورودی مناسبشماره.

نمونه ای از توصیف متغیرهای نوع واقعی.

نوع کاراکتر

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

یک نوع کاراکتر با کلمه رزرو شده Char مشخص می شود و برای ذخیره یک کاراکتر طراحی شده است. داده های کاراکتر یک بایت در حافظه اشغال می کند.

قالب اعلان متغیر نمادین:

<имя переменной>: Char;

هنگام تعریف مقدار یک متغیر کاراکتر، کاراکتر به صورت آپستروف نوشته می شود. علاوه بر این، می توانید نماد مورد نیاز را با تعیین مستقیم آن تنظیم کنید مقدار عددیکد اسکی در این حالت باید قبل از عددی که کد اسکی کاراکتر مورد نیاز را نشان می دهد با علامت # قرار دهید.

مثالی از استفاده از متغیرهای نوع کاراکتر:

Var c:char; (c یک متغیر از نوع کاراکتر است) شروع c:=’A’; (متغیر c به کاراکتر 'A' اختصاص دارد) c:=#65; (متغیر c نیز به کاراکتر A اختصاص دارد. کد اسکی آن 65 است) c:=’5’; (به متغیر c نماد 5، پایان اختصاص داده شده است. در اینجا 5 دیگر یک عدد نیست)

نوع بولی

نوع داده منطقی به نام ریاضیدان انگلیسی جورج بول، خالق رشته ریاضیات - منطق ریاضی، Boolean نامیده می شود.

فرمت اعلان یک متغیر نوع Boolean:

<имя переменной>: بولی;

داده های این نوع فقط می توانند دو مقدار داشته باشند:

  • صحیح صحیح؛
  • دروغ یک دروغ است.

داده های منطقی به طور گسترده در بررسی اعتبار شرایط خاص و در مقایسه کمیت ها استفاده می شود. نتیجه ممکن است درست یا نادرست باشد.

برای مقایسه داده ها، عملیات رابطه ای زیر ارائه شده است:

مثالی از استفاده از عملیات رابطه ای:

رابطه 5>3، نتیجه درست است.

رابطه 5=3، نتیجه نادرست است.

نمونه ای از استفاده از متغیرهای نوع Boolean.

Var a,b:boolean; (a,b متغیرهایی از نوع منطقی هستند) شروع a:=True; (متغیر a به مقدار "true" اختصاص می یابد) b:=false; (متغیر b روی false تنظیم شده است) پایان.

ثابت ها

اعداد صحیح، اعداد واقعی، کاراکترها، رشته های کاراکتر و ثابت های منطقی می توانند به عنوان ثابت استفاده شوند.

یک ثابت باید در قسمت توصیفی آن با استفاده از کلمه رزرو شده const اعلام شود.

فرمت اعلامیه ثابت

Const<имя константы>= <значение>;

اگر یک برنامه از چندین ثابت استفاده کند، تنها یکی مجاز است. کلمه کلیدی Const، شرح هر ثابت با نقطه ویرگول به پایان می رسد. یک بلوک ثابت با اعلان یک بخش دیگر یا اعلان یک بلوک از دستورات اجرایی به پایان می رسد.

Const (اعلام بخش ثابت) year=2003; (ثابت از نوع عدد صحیح، چون هیچ نقطه اعشاری در رکورد وجود ندارد) time=14.05; (ثابت نوع واقعی) N=24; (ثابت از نوع عدد صحیح، زیرا هیچ نقطه اعشاری در نماد وجود ندارد) P=3.14; (ثابت نوع واقعی) A=true; (ثابت بولی) str1=’7’; (ثابت نوع کاراکتر) str2=’A’; (ثابت نوع کاراکتر) str3=’Turbo’; (ثابت نوع رشته) Var (اعلان بخش متغیر) X,y:integer; (متغیرهای نوع عدد صحیح)

انواع سفارشی

از کلیت انواع سفارشیفقط در نظر بگیرید

  • نوع برشمرده شده؛
  • نوع فاصله

هنگام مطالعه آرایه ها به این دو نوع نیاز خواهیم داشت.

نوع Enum

یک نوع داده شمارش شده انواع داده های جدیدی را توصیف می کند که مقادیر آنها توسط برنامه نویس تعریف می شود. یک نوع شمارش شده با شمارش مقادیری که می تواند دریافت کند مشخص می شود. هر مقدار توسط یک شناسه نامگذاری شده و در یک لیست قاب شده قرار دارد پرانتز. نوع شمارش شده یک نوع داده تعریف شده توسط کاربر است، بنابراین اعلام نوع آن با کلمه رزرو شده TYPE شروع می شود.

فرمت نوع Enum:

<имя типа>= (constant1,constant2,...,constantN);

جایی که
ثابت1، ثابت2،...، ثابتN - مجموعه منظمی از مقادیر شناسه که به عنوان ثابت رفتار می شوند.

نمونه ای از توصیف نوع برشماری شده:

توپ = (یک، دو، سه، چهار، پنج) را تایپ کنید. var t:ball;

در اینجا توپ نام نوع برشمرده شده است. یک، دو، سه، چهار، پنج - ثابت. t متغیری است که می تواند هر مقدار ثابتی را بگیرد.

در یک نوع شمارش شده، یک ثابت یک شناسه است، بنابراین نقل قول نمی شود و نمی تواند عدد باشد. بنابراین، در یک نوع برشماری، یک ثابت نوع خاصی از ثابت است که نمی تواند باشد:

  • ثابت های نوع عددی: 1، 2، 3، 4، و غیره.
  • ثابت های نوع کاراکتر: "a"، "s"، "1"، "3"، و غیره.
  • ثابت های نوع رشته: "اول"، "دوم" و غیره.

علاوه بر این، مقادیر این نوع اعمال نمی شود عملیات حسابیو رویه های ورودی و خروجی استاندارد Read, Write.

مثالی از استفاده از متغیرهای شمارش شده:

روزهای نوع = (دوشنبه، سه شنبه، چهارشنبه، پنجشنبه، جمعه، شنبه، یکشنبه)؛ روز وار: روز؛ begin if day = Sunday then writeln('Today is Sunday!'); پایان.

عناصری که در تعریف یک نوع شمارش شده گنجانده شده اند به ترتیبی که به ترتیب شمارش شده اند در نظر گرفته می شوند. شماره گذاری از صفر شروع می شود. بنابراین، در مثال ارائه شده، روزهای هفته دارای شماره سریال زیر هستند

برای تعریف نرم افزارتابع Ord() برای تعیین عدد ترتیبی استفاده می شود.

در مثال ما، اعداد دنباله ای برابر هستند:

مرتبه (دوشنبه) = 0;

سفارش (شنبه) = 5;

دستور (یکشنبه) = 6.

نوع فاصله

اگر متغیری همه مقادیر از نوع خود را نپذیرد، بلکه فقط مقادیر موجود در یک محدوده خاص را بپذیرد، این نوع داده را نوع بازه ای می نامند. نوع فاصله اغلب نوع محدود و نوع محدوده نامیده می شود. یک نوع فاصله با مرزهای مقادیر آن تعریف می شود:

<минимальное значение>..<максимальное значение>

  • دو کاراکتر ".." به عنوان یک کاراکتر در نظر گرفته می شوند، بنابراین فاصله بین آنها مجاز نیست.
  • مرز سمت چپ محدوده نباید از مرز راست آن تجاوز کند.

نوع فاصله یک نوع داده تعریف شده توسط کاربر است، بنابراین اعلان نوع آن با کلمه تابع TYPE شروع می شود.

نمونه ای از توصیف نوع فاصله:

تایپ رقم = 1..10; ماه = 1..31; lat = 'A'..'Z';

انواع داده پاسکال

هر گونه داده (ثابت، متغیر، مقادیر تابع یا عبارت) در توربو پاسکال با انواع آنها مشخص می شود. یک نوع مجموعه ای از مقادیر معتبری را که یک شی می تواند داشته باشد و همچنین مجموعه ای از عملیات معتبری که می تواند روی آن اعمال شود را تعریف می کند. نوع همچنین فرمت نمایش داخلی داده ها در حافظه رایانه را تعیین می کند.

انواع داده های زیر در توربو پاسکال وجود دارد.

1) انواع ساده:

- واقعی؛

- نمادین

- بولی (منطقی)؛

- برشمرده شده؛

- رنج محدود شده).

2) انواع ترکیبی (ساخت یافته):

- منظم (آرایه ها)؛

- ترکیبی (سوابق)؛

- فایل؛

- چندگانه؛

- رشته؛

- اشیاء.

3) انواع مرجع (نشانگرهای تایپ شده و تایپ نشده).

4) انواع رویه ای.

توربو پاسکال مکانیزمی برای ایجاد انواع داده های جدید فراهم می کند که به لطف آن تعداد کل انواع استفاده شده در برنامه می تواند به اندازه دلخواه باشد.

نوع عدد صحیح . مقادیر صحیح عناصر زیرمجموعه ای از اعداد صحیح هستند. در توربو پاسکال پنج نوع عدد صحیح وجود دارد. نام آنها، محدوده مقادیر، طول نمایش بر حسب بایت در جدول آورده شده است. 6.

جدول 6

انواع داده های عدد صحیح

متغیرهای عدد صحیح با استفاده از کلمات رزرو شده در بالا توضیح داده می شوند:

i, j, k: عدد صحیح;

داده های نوع صحیح دقیقاً در حافظه ذخیره می شوند. به عنوان مثال، متغیرهای نوع عدد صحیح 2 بایت (16 بیت) در حافظه اشغال می کنند که به صورت زیر تخصیص داده می شود: 1 بیت برای ذخیره علامت عدد اختصاص داده می شود (اگر عدد مثبت باشد 0 و اگر عدد منفی باشد 1) و 15 بیت برای ذخیره شماره در آن سیستم دودوییحساب کردن. بیشترین عدد اعشاریکه می توان آن را به صورت باینری 15 بیتی نوشت 32767.

هنگام استفاده از رویه ها و توابع با پارامترهای اعداد صحیح، باید با "تودرتو" انواع هدایت شوید، به عنوان مثال. هر جا از کلمه استفاده می شود، بایت مجاز است (اما نه برعکس)، لانگنت یک عدد صحیح را "شامل" می کند، که به نوبه خود شامل کوتاه می شود.

برای نوع عدد صحیح، پنج عملیات اساسی تعریف شده است که نتیجه آن نیز یک عدد صحیح است: +، -، *، div، mod (جمع، تفریق، ضرب، تقسیم اعداد صحیح و باقیمانده تقسیم عدد صحیح). در عبارات حسابی، عملیات *، div، mod اولویت بیشتری نسبت به عملیات +، - دارند. نمونه هایی از عبارات نوشتاری:

فهرست رویه ها و توابع قابل اعمال برای انواع عدد صحیح در جدول آورده شده است. 7. حروف b، s، w، i، l به ترتیب بیانگر عباراتی از نوع byte، shortint، word، integer و longint هستند. x بیانی از هر یک از این انواع است. شناسه‌های vb، vs، vw، vi، vl، vx متغیرهایی از انواع مربوطه را نشان می‌دهند. که در براکت های مربعیک پارامتر اختیاری مشخص شده است.

جدول 7

رویه های استانداردو توابع قابل اجرا برای تمام انواع

درخواست نوع نتیجه عمل
شکم (x) ایکس ماژول x را برمی گرداند
Chr(b) Char یک کاراکتر را با کد آن برمی گرداند
دسامبر (vx[,i]) - مقدار vx را به مقدار i و در صورت عدم وجود i – 1 کاهش می دهد
Inc(vx[,i]) - مقدار vx را i و در غیاب i - 1 افزایش می دهد
سلام (من) بایت بایت بالای آرگومان را برمی گرداند
سلام (من) بایت یکسان
Lo(i) بایت بایت کم آرگومان را برمی گرداند
کم) بایت یکسان
فرد (l) بایت اگر آرگومان یک عدد فرد باشد، true را برمی‌گرداند
تصادفی (w) همانند پارامتر برمی گرداند عدد شبه تصادفی، به طور یکنواخت در محدوده 0 ... (w-1) توزیع شده است
مربع (x) ایکس مربع استدلال را برمی گرداند
تعویض (i) عدد صحیح
تعویض (w) کلمه بایت ها را در یک کلمه جابجا می کند
موفق (x) همانند پارامتر مقدار صحیح بعدی را برمی گرداند، یعنی. x+1
Pred(x) همانند پارامتر مقدار صحیح قبلی را برمی‌گرداند، یعنی. x-1

هنگام کار با اعداد صحیح، نوع نتیجه با نوع عملوند مطابقت دارد و اگر عملوندها از انواع مختلف عدد صحیح باشند، نوع عملوندی که حداکثر دامنه مقادیر را دارد. سرریز احتمالی نتیجه کنترل نمی شود، که می تواند منجر به خطا در برنامه شود.

نوع واقعی.مقادیر انواع واقعی یک عدد دلخواه را با دقت محدودی بسته به قالب داخلی عدد واقعی تعریف می‌کنند. پنج نوع واقعی در توربو پاسکال وجود دارد (جدول 8).

جدول 8

انواع داده های واقعی

متغیرهای واقعی با استفاده از کلمات رزرو شده در بالا توضیح داده می شوند:

یک عدد واقعی در حافظه کامپیوتر از 3 قسمت تشکیل شده است:

رقم علامت یک عدد؛

بخش نمایی؛

مانتیس شماره.

مانتیس دارای طولی از 23 (تک) تا 63 (Extended) رقم باینری است که دقت 7-8 را برای ارقام اعشاری منفرد و 19-20 را برای ارقام اعشاری Extended ارائه می دهد. نقطه اعشار (کاما) قبل از رقم چپ (مهمترین) آخوندک نشان داده می شود، اما هنگام کار بر روی یک عدد، موقعیت آن مطابق با ترتیب باینری عدد ذخیره شده در قسمت نمایی به چپ یا راست منتقل می شود. بنابراین عملیات روی اعداد حقیقی را محاسبات ممیز شناور (کاما) می نامند.

انواع Single، Double و Extended فقط زمانی قابل دسترسی هستند که رژیم های خاصتلفیقی. برای فعال کردن این حالت ها، آیتم منو را انتخاب کنید گزینه ها, کامپایلر…و گزینه را فعال کنید 8087/80287 در گروه پردازش عددی.

موقعیت خاصی در توربو پاسکال توسط نوع Comp اشغال شده است که به عنوان یک عدد واقعی بدون قطعات نمایی و کسری در نظر گرفته می شود. در واقع Comp یک عدد صحیح امضا شده بزرگ است که 19...20 رقم اعشاری قابل توجه را ذخیره می کند. در عین حال، در عبارات Comp کاملاً با انواع واقعی دیگر سازگار است: تمام عملیات واقعی بر روی آن تعریف شده است، می توان از آن به عنوان یک آرگومان استفاده کرد. عملیات ریاضیو غیره.



اعداد واقعی آورده شده است سیستم اعشاریمحاسبات در یکی از دو شکل.

که در فرم نقطه ثابترکورد شامل یک عدد صحیح و یک قسمت کسری است که با یک نقطه از یکدیگر جدا شده اند، به عنوان مثال:

0.087 4.0 23.5 0.6

که در فرم ممیز شناورورودی حاوی حرف E است که به معنی ضرب در ده در توان است و توان یک عدد صحیح است، برای مثال:

7E3 6.9E-8 0.98E-02 45E+04

عملیات زیر بر روی اشیاء از نوع واقعی تعریف شده است: +، -، *، /.

عملیات "*" و "/" اولویت بیشتری نسبت به عملیات "+" و "-" دارند.

اگر حداقل یک عملوند واقعی باشد، عملیات +، -، *، / منجر به یک نتیجه واقعی می شود. عمل تقسیم / حتی در مورد دو عملوند عدد صحیح به یک نتیجه واقعی منجر می شود، به عنوان مثال: 9/3 = 3.0.

برای کار با داده های واقعی، می توان از توابع ریاضی استاندارد ارائه شده در جدول استفاده کرد. 9. نتیجه این توابع نیز واقعی است.

جدول 9

توابع ریاضی، کار با داده های واقعی

استفاده از متغیرها و ثابت های نوع REAL ممنوع است:

– در توابع pred(x)، succ(x)، ord(x)؛

- به عنوان شاخص های آرایه؛

- به عنوان برچسب در بیانیه های انتقال کنترل؛

- به عنوان متغیرهای کنترل (پارامترهای چرخه).

برای تبدیل یک عدد واقعی به عدد صحیح می توانید از توابع زیر استفاده کنید:

trunc(x) – قسمت صحیح x (x – real);

round(x) - گرد کردن به نزدیکترین عدد صحیح (x واقعی است).

نوع کاراکتر.متغیرهای کاراکتر با استفاده از کلمه رزرو شده char توصیف می شوند:

مقادیر این نوع از مجموعه کاراکترهای مرتب شده (مجموعه ASCII) متشکل از 256 کاراکتر انتخاب می شوند. به هر کاراکتر یک عدد صحیح از محدوده 0..255 اختصاص داده می شود. مثلا، حروف بزرگ الفبای لاتین A..Z دارای کدهای 65..90 و حروف کوچک– کدهای 97..122.

مقدار متغیر نوع کاراکتر یک کاراکتر منفرد است که توسط آپاستروف احاطه شده است، به عنوان مثال:

'F' '8' '*'

متغیرهای کاراکتر را می توان با یکدیگر مقایسه کرد و کدهای کاراکتر را مقایسه کرد.

توابعی وجود دارند که بین یک نماد و کد آن مطابقت دارند:

ord(c) - عدد نماد c را می دهد.

chr(i) – عدد کاراکتر i را برمی گرداند.

این توابع معکوس یکدیگر هستند.

نوع بولی. متغیرهای Boolean با استفاده از کلمه رزرو شده boolean توصیف می شوند:

p1, p2: boolean;

متغیرهای نوع بولی دو مقدار دارند: درست است، واقعی(درست است، واقعی)، نادرست(دروغ).

این مقادیر به صورت زیر مرتب می شوند: false< true. false имеет شماره سریال 0، true دارای شاخص شماره 1 است.

به متغیرهای بولی می توان مستقیماً یک مقدار اختصاص داد یا می توان از آنها استفاده کرد بیان منطقی. مثلا،

a, d, g, b: boolean;

عملیات رابطه (<, <=, >, >=, =, <>) که برای متغیرهای عدد صحیح، واقعی و نمادین اعمال می شود، یک نتیجه منطقی ایجاد می کند.

عملیات منطقیبیش از عملوندهای نوع منطقی نیز یک نتیجه منطقی به دست می دهند (عملیات به ترتیب اولویت نزولی ارائه می شوند) (برای جزئیات بیشتر به جداول 3 و 5 مراجعه کنید):

نه - نفی (عملیات NO)؛

و - ضرب منطقی (عملیات AND)؛

یا – اضافه منطقی (عملیات OR)؛

xor – OR انحصاری.

عبارت (نه الف) به معنای مخالف الف است.

اگر فقط a و b هر دو درست باشند، عبارت (a و b) به درستی ارزیابی می شود، در غیر این صورت، مقدار این عبارت نادرست است.

عبارت (a یا b) به نادرست ارزیابی می شود اگر فقط هر دو a و b نادرست ارزیابی شوند، در غیر این صورت، نتیجه درست است.

نوع Enum. یک نوع شمارش غیر استاندارد با شمارشی به شکل نام مقادیری که یک متغیر می تواند بگیرد مشخص می شود. هر مقدار با یک شناسه نامگذاری می شود و در لیستی قرار دارد که با پرانتز احاطه شده است. فرم کلیتوضیحات نوع enum:

x = (w1، w2، ...، wn)؛

که در آن x نام نوع است، w1، w2،…، wn مقادیری هستند که می توانند دریافت کنند. متغیر نوعایکس.

این مقادیر به ترتیب w1 هستند

توابع استاندارد زیر برای آرگومان w از نوع شمارش شده اعمال می شوند:

succ(w)، pred(w)، ord(w).

رنگ = (قرمز، سیاه، زرد، سبز)

ww=(چپ، بالا، راست، پایین);

f: آرایه ww;

succ(d) = زرد؛

متغیرهای a و b از نوع w هستند. آنها می توانند یکی از سه مقدار را با on بگیرند

عملیات رابطه ای برای مقادیر از نوع شمارش شده قابل اعمال است: =،<>, <=, >=, <, >.

مجاز است که ثابت های نوع شمارش شده را مستقیماً در بخش مشخص کنید varبدون استفاده از پارتیشن نوع، مثلا

ج، د: (قرمز، سیاه، زرد، سبز)؛

محدوده (محدود) نوع. هنگام تعریف یک نوع محدود، مقادیر اولیه و نهایی را که یک متغیر نوع محدوده می تواند بگیرد، مشخص می کنید. مقادیر با دو نقطه از هم جدا می شوند.

شرح نوع محدود از این شکل است

در اینجا a نام نوع است، min، max ثابت هستند.

هنگام تعیین یک نوع محدود، قوانین زیر باید رعایت شود:

- هر دو ثابت مرزی min و max باید از یک نوع باشند.

- یک نوع محدود از داده های یک نوع پایه ایجاد می شود که می تواند یک عدد صحیح، کاراکتر یا نوع برشماری باشد. مثلا:

col = قرمز.. زرد;

حرف = 'a'..'f';

– متغیرهای نوع محدود شده را می توان در بخش var بدون مراجعه به بخش type اعلام کرد:

- یک نوع محدود تمام ویژگی های نوع پایه ای را که از آن ایجاد شده است به ارث می برد.

- حد حداقل باید همیشه کمتر از حد حداکثر باشد.

آرایه ها. آرایه یک نوع پیچیده است که ساختاری متشکل از تعداد ثابتی از اجزای یک نوع است. نوع جزء را نوع پایه می نامند. تمامی اجزای آرایه را می توان به راحتی سفارش داد و به سادگی با نشان دادن شماره سریال آن دسترسی به هر یک از آنها را فراهم کرد. شرح آرایه در بخش varدارای فرم:

آ: آرایه از t2;

جایی که a نام آرایه است، آرایه, از- کلمات خدمات (به معنی "آرایه ...")، t1 - نوع شاخص. t2 – نوع جزء (نوع پایه).

تعداد ایندکس ها اندازه آرایه را تعیین می کند. ایندکس ها می توانند عدد صحیح (به جز longint)، کاراکتر، منطقی، شمارش و محدوده باشند. زیرمجموعه ها با کاما از هم جدا شده و در پرانتز قرار می گیرند. اجزای آرایه می توانند از هر نوع باشند به جز فایل.

مثال 1.یک آرایه یک بعدی C را در نظر بگیرید که مقادیر آن پنج عدد واقعی است:

4.6 6.23 12 -4.8 0.7

توضیحات این آرایه به شرح زیر است:

ج: آرایه واقعی;

بر اساس یک مقدار شاخص خاص، می توانید یک جزء آرایه خاص را انتخاب کنید (به عنوان مثال، C به معنای سومین عنصر آرایه C، یعنی عدد 12 است).

مثال 2.یک آرایه دو بعدی B (ماتریس B) را در نظر بگیرید که مقدار آن جدولی از اعداد صحیح است:

توضیحات این آرایه به شرح زیر است:

b عدد صحیح؛

در اینجا b نام آرایه است، شاخص اول شماره ردیف است و مقادیر 1 تا 2 را می گیرد، دومی شماره ستون است و مقادیر از 1 تا 4 را می گیرد. بر اساس مقادیر شاخص خاص، می توانید یک جزء آرایه خاص را انتخاب کنید (به عنوان مثال، b به معنای یک عنصر جدول است که در ردیف اول و ستون سوم قرار دارد، یعنی عدد -4).

ایندکس ها می توانند عبارات دلخواه مطابق با نوع شاخص از توضیحات آرایه باشند:

الف: آرایه واقعی؛

a[(i+1)*2] := 24;

مجموعه عملیات روی عناصر آرایه کاملاً بر اساس نوع این عناصر تعیین می شود.

نوع رشته. نوع رشته مجموعه ای از رشته های کاراکتر با طول دلخواه (از صفر تا یک عدد معین) است. متغیرهای نوع رشته با استفاده از کلمه تابع توصیف می شوند رشته:

ب: رشته ;

ویژگی ها:

- مقدار یک متغیر رشته را می توان با استفاده از صفحه کلید وارد کرد، در یک عملگر انتساب تخصیص داد، یا از یک فایل خواند. در این مورد، طول رشته وارد شده می تواند هر باشد (کمتر از اندازه مشخص شده، برابر با اندازه یا بزرگتر، در مورد دوم، کاراکترهای اضافی دور ریخته می شوند). a:= 'نتایج';

- استفاده از عملیات الحاق در عملگر انتساب مجاز است، زیرا رشته ها می توانند به صورت پویا طول خود را تغییر دهند: a:= a + 'calculations';

- حداکثر طول یک متغیر رشته 255 کاراکتر است، این علامت طول را می توان حذف کرد:

آ: رشته;

a1: رشته ;

متغیرهای a و a1 یکسان هستند (توضیحات معادل).

- حافظه برای متغیرهای نوع رشته به حداکثر اختصاص داده می شود، اما تنها بخشی از حافظه که در حال حاضر توسط کاراکترهای رشته اشغال شده است استفاده می شود. برای توصیف یک متغیر رشته ای به طول n، از n+1 بایت حافظه استفاده می شود: n بایت برای ذخیره کاراکترهای رشته، n+1 بایت برای ذخیره طول فعلی.

- عملیات مقایسه بر روی مقادیر انواع رشته ها تعریف می شود:< <= > >= = <>. یک رشته کوتاه همیشه کوچکتر از یک رشته بلند است. اگر طول رشته ها یکسان باشد، کدهای کاراکتر با هم مقایسه می شوند.

- دسترسی به عناصر منفرد یک رشته مانند دسترسی به عناصر آرایه امکان پذیر است: a, a. تعداد عنصر خط در پرانتز نشان داده شده است.

رویه ها و توابع جهت کار با رشته ها.

concat (s1, s2,…)- تابع ادغام رشته ها، s1، s2،... - خطوط، تعداد خطوط می تواند دلخواه باشد. نتیجه تابع یک رشته است. اگر رشته به دست آمده بیشتر از 255 کاراکتر باشد، رشته به 255 کاراکتر کوتاه می شود.

کپی (ها، فهرست، شمارش)- تابع استخراج یک رشته از یک رشته منبع سطول شمردنکاراکترها، با شماره کاراکتر شروع می شوند فهرست مطالب.

حذف (ها، فهرست، شمارش)- روش حذف یک رشته فرعی از رشته شمردنکاراکترها، با شماره کاراکتر شروع می شوند فهرست مطالب.

درج (s1, s2, index)- روش درج ردیف s1به خط کشیدن s2، با کاراکتر با عدد شروع می شود فهرست مطالب.

طول(ها)– تابع برای تعیین طول رشته فعلی، عددی برابر با طول رشته فعلی برمی گرداند.

pos(s1, s2)- تابع جستجو در یک رشته s2رشته های فرعی s1. شماره موقعیت اولین کاراکتر یک زیررشته را برمی گرداند s1در صف s2(یا 0 اگر این خط وجود نداشته باشد).

val (st، x، کد)– روش تبدیل رشته s به یک عدد صحیح یا متغیر واقعی ایکس. پارامتر کددر صورت موفقیت آمیز بودن تبدیل، حاوی 0 است (و در ایکسنتیجه تبدیل قرار می گیرد)، یا شماره موقعیت خط که در آن کاراکتر اشتباه شناسایی می شود (در این مورد، مقدار ایکستغییر نمی کند).

سازگاری و تبدیل نوع. توربو پاسکال یک زبان تایپ شده است. این بر اساس پایبندی دقیق به مفهوم نوع ساخته شده است، که طبق آن تمام عملیات استفاده شده در زبان فقط بر روی عملوندهای انواع سازگار تعریف می شوند.

دو نوع سازگار در نظر گرفته می شوند اگر:

- هر دو از یک نوع هستند.

- هر دو واقعی هستند؛

- هر دو دست نخورده هستند.

- یک نوع یک نوع محدوده از نوع دوم است.

- هر دو نوع محدوده از یک نوع پایه هستند.

- هر دو مجموعه ای هستند که از عناصر یک نوع اصلی تشکیل شده اند.

- هر دو رشته های بسته بندی شده (تعریف شده با کلمه قبلی packed) با حداکثر طول یکسان هستند.

– یکی از نوع رشته ای و دیگری از نوع رشته ای یا کاراکتری است.

– یک نوع هر اشاره گر است و دیگری اشاره گر به شی مرتبط با آن است.

- هر دو نوع رویه ای با نوع نتیجه یکسان (برای یک نوع تابع)، تعداد پارامترها و نوع پارامترهای متناظر متقابل هستند.

سازگاری نوع به ویژه در عملگرهای انتساب مهم است. بگذارید t1 نوع متغیر و t2 نوع عبارت باشد، یعنی تخصیص t1:=t2 انجام شود. این واگذاری در موارد زیر امکان پذیر است:

– t1 و t2 یک نوع هستند و این نوع به فایل‌ها، آرایه‌های فایل‌ها، رکوردهای حاوی فیلدهای فایل یا آرایه‌هایی از این قبیل رکوردها اشاره نمی‌کند.

– t1 و t2 انواع ترتیبی سازگار هستند و مقدار t2 در محدوده است مقادیر ممکن t1;

- t1 و t2 انواع واقعی هستند و مقدار t2 در محدوده مقادیر ممکن t1 قرار دارد.

– t1 – نوع واقعی و t2 – نوع عدد صحیح.

– t1 – خط و t2 – کاراکتر؛

– t1 – رشته و t2 – رشته بسته بندی شده؛

– t1 و t2 – رشته های بسته بندی شده سازگار؛

- t1 و t2 مجموعه های سازگار هستند و همه اعضای t2 به مجموعه مقادیر ممکن t1 تعلق دارند.

- t1 و t2 نشانگرهای سازگار هستند.

- t1 و t2 انواع رویه ای سازگار هستند.

– t1 یک شی و t2 از نسل آن است.

در یک برنامه، داده های یک نوع را می توان به داده های نوع دیگر تبدیل کرد. این تبدیل می تواند صریح یا ضمنی باشد.

تبدیل نوع صریح، توابع تبدیل خاصی را فراخوانی می‌کند که آرگومان‌های آن‌ها به یک نوع تعلق دارند و مقادیر آن‌ها به نوع دیگری تعلق دارند. به عنوان مثال، توابع ord، trunc، round، chr قبلاً مورد بحث قرار گرفته است.

تبدیل ضمنی تنها در دو مورد امکان پذیر است:

- در عبارات متشکل از متغیرهای واقعی و صحیح، دومی به طور خودکار به یک نوع واقعی تبدیل می شود و کل عبارت به عنوان یک کل یک نوع واقعی به دست می آورد.

- همان ناحیه حافظه به طور متناوب به عنوان حاوی داده های یک یا دیگر نوع (ترکیب داده های انواع مختلف در حافظه) در نظر گرفته می شود.

آژانس فدرال آموزش

انشا

"انواع داده در پاسکال"

1. انواع داده ها

هر گونه داده، به عنوان مثال ثابت ها، متغیرها، خواص، مقادیر تابع یا عبارات با انواع آنها مشخص می شوند. یک نوع مجموعه ای از مقادیر معتبری را که یک شی می تواند داشته باشد و همچنین مجموعه ای از عملیات معتبری که می تواند روی آن اعمال شود را تعریف می کند. علاوه بر این، نوع نیز فرمت نمایش داخلی داده ها در حافظه رایانه شخصی را تعیین می کند.

به طور کلی، زبان Object Pascal با ساختار شاخه ای از انواع داده مشخص می شود (شکل 1.1). این زبان مکانیسمی را برای ایجاد انواع جدید فراهم می کند که به لطف آن تعداد کل انواع مورد استفاده در یک برنامه می تواند به اندازه دلخواه باشد.

داده های پردازش شده در برنامه به متغیرها، ثابت ها و لفظ ها تقسیم می شوند:

ثابت ها نشان دهنده داده هایی است که مقادیر آنها در قسمت اعلان ثابت تنظیم شده است و در طول اجرای برنامه تغییر نمی کند.

متغیرها در قسمت اعلان متغیرها اعلان می شوند، اما برخلاف ثابت ها، مقادیر خود را در حین اجرای برنامه دریافت می کنند و این مقادیر قابل تغییر هستند. ثابت ها و متغیرها را می توان با نام اشاره کرد.

تحت اللفظی هیچ شناسه ای ندارد و مستقیماً با مقدار موجود در متن برنامه نشان داده می شود.

تایپ کنیدمجموعه مقادیری را که عناصر داده می توانند بگیرند و مجموعه عملیات مجاز روی آنها را تعریف می کند.

این و چهار فصل بعدی توضیحات مفصلی در مورد هر نوع ارائه می دهند.

1.1 انواع ساده

انواع ساده شامل انواع ترتیبی، واقعی و تاریخ است.

انواع ترتیبیاین تفاوت در این است که هر یک از آنها دارای تعداد محدودی از مقادیر ممکن است. این مقادیر را می توان به روش خاصی مرتب کرد (از این رو نام انواع) و بنابراین، هر یک از آنها را می توان با یک عدد صحیح - عدد ترتیبی مقدار مرتبط کرد.

انواع واقعیبه بیان دقیق، تعداد محدودی از مقادیر نیز دارند که با فرمت نمایش داخلی یک عدد واقعی تعیین می شود. با این حال، تعداد مقادیر ممکن انواع واقعی آنقدر زیاد است که نمی توان یک عدد صحیح (تعداد آن) را با هر یک از آنها مرتبط کرد.

نوع تاریخ و زمانبرای ذخیره تاریخ و زمان طراحی شده است. در واقع از قالب واقعی برای این اهداف استفاده می کند.

1.1.1 انواع ترتیبی

انواع ترتیبی شامل (نگاه کنید به شکل 1.1) انواع عدد صحیح، منطقی، کاراکتر، شمارش شده و محدوده می باشد. تابع Ord(x) را می توان برای هر یک از آنها اعمال کرد که عدد ترتیبی مقدار عبارت X را برمی گرداند.


برنج. 1.1 - ساختار نوع داده

برای کلنوع، تابع ord(x) مقدار خود x را برمی گرداند، یعنی Ord(X) = x برای x متعلق به هر کلنوع اعمال دستور (x) به منطقی , نمادین و قابل شمارشانواع یک عدد صحیح مثبت در محدوده 0 تا 1 می دهد ( نوع بولی، از 0 تا 255 ( نمادین، از 0 تا 65535 ( قابل شمارش). محدوده نوعتمام خصوصیات نوع ترتیبی پایه را حفظ می کند، بنابراین نتیجه اعمال تابع ord(x) به آن به ویژگی های این نوع بستگی دارد.

همچنین می توانید توابع را برای انواع ترتیبی اعمال کنید:

pred(x)- مقدار قبلی نوع ترتیبی را برمی گرداند (مقداری که مربوط به عدد ترتیبی ord(x) -1 است، یعنی ord(pred(x)) = ord(x) - 1؛

succ(x)- مقدار بعدی نوع ترتیبی را که مربوط به عدد ترتیبی ord(x) +1 است، یعنی ord(Succ(x)) = ord(x) + 1 برمی گرداند.

به عنوان مثال، اگر یک برنامه یک متغیر را تعریف کند

سپس تابع PRED(c) کاراکتر "4" و تابع SUCC(c) کاراکتر "6" را برمی گرداند.

اگر هر نوع ترتیبی را به عنوان مجموعه‌ای مرتب از مقادیر تصور کنیم که از چپ به راست افزایش می‌یابد و بخش خاصی را در محور عدد اشغال می‌کند، تابع pred(x) برای انتهای چپ تعریف نمی‌شود و succ (x) است. برای انتهای سمت راست این بخش تعریف نشده است.

انواع عدد صحیح . محدوده مقادیر ممکن انواع عدد صحیح به نمایش داخلی آنها بستگی دارد که می تواند یک، دو، چهار یا هشت بایت باشد. روی میز 1.1 نام انواع اعداد صحیح، طول نمایش داخلی آنها در بایت و محدوده مقادیر ممکن را نشان می دهد.

جدول 1.1 - انواع عدد صحیح

نام طول، بایت محدوده ارزش ها
اصلی 4 0. .. 2 147 483 647
بایت 1 0...255
کوتاه 1 -128...+127
اسمالینت 2 -32 768...+32 767
کلمه 2 0...65 535
عدد صحیح 4
Longint 4 -2 147 483 648...+2 147 483 647
Int64 8 -9*1018...+9*1018
LongWord 4 0. . .4 294 967 295

انواع LongWordو Int64اولین بار در نسخه 4 معرفی شدند و انواع اسمالینتو اصلیدر دلفی 1 موجود نیست. تایپ کنید عدد صحیحبرای این نسخه 2 بایت طول می کشد و محدوده ارزشی از -32768 تا +32767 دارد، یعنی همان اسمالینت .

هنگام استفاده از رویه ها و توابع با پارامترهای اعداد صحیح، باید با "تودرتو" انواع هدایت شوید، به عنوان مثال. هر جا که بتوان از آن استفاده کرد کلمه، مجاز به استفاده است بایت(اما نه برعکس)، در Longint"وارد می شود" اسمالینت، که به نوبه خود شامل می شود کوتاه .

فهرست رویه ها و توابع قابل اعمال برای انواع عدد صحیح در جدول آورده شده است. 1.2. حروف b، s، w، i، l بیانگر عباراتی از نوع زیر هستند: بایت , Shortint، Word، Integer و Longint ,

x بیانی از هر یک از این انواع است. حروف vb، vs، vw، vi، vl، vx متغیرهایی از انواع مربوطه را نشان می دهند. یک پارامتر اختیاری در پرانتز نشان داده شده است.

جدول 1.2 - رویه ها و عملکردهای استاندارد قابل اجرا برای تمام انواع

درخواست نوع نتیجه عمل
شکم (x) ایکس ماژول x را برمی گرداند
chr(b) Char یک کاراکتر را با کد آن برمی گرداند
dec(vx[,i]) - مقدار vx را با i و در صورت عدم وجود i - 1 کاهش می دهد
inc(vx[,i]) - مقدار vx را i و در غیاب i - 1 افزایش می دهد
سلام بایت بالاترین کمان استدلال را برمی‌گرداند
سلام (من) یکسان بایت سوم را برمی گرداند
Lo(i) بایت کم آرگومان را برمی گرداند
کم) یکسان
فرد (ل) بولی اگر آرگومان یک عدد فرد باشد، True را برمی‌گرداند
تصادفی (w) همانند پارامتر یک عدد شبه تصادفی را برمی‌گرداند که به طور یکنواخت در محدوده 0...(w-l) توزیع شده است.
sqr(x) ایکس مربع استدلال را برمی گرداند
مبادله (i) عدد صحیح بایت ها را در یک کلمه جابجا می کند
مبادله (w) کلمه یکسان

هنگام کار با اعداد صحیح، نوع نتیجه با نوع عملوندها مطابقت دارد و اگر عملوندها از انواع مختلف عدد صحیح باشند، نوع عمومی که شامل هر دو عملوند است. به عنوان مثال، هنگام کار با کوتاهو کلمهنوع رایج خواهد بود عدد صحیح. در تنظیمات پیش فرض، کامپایلر دلفی کدی را برای بررسی اینکه آیا یک مقدار خارج از محدوده است تولید نمی کند، که می تواند منجر به سوء تفاهم شود.

انواع بولی . انواع منطقی شامل Boolean، ByteBool، Bool، wordBoolو LongBool. در پاسکال استاندارد فقط نوع تعریف می شود بولی، انواع دیگر منطقی برای سازگاری با ویندوز به Object Pascal معرفی شده اند: انواع بولیو ByteBoolهر کدام یک بایت می گیرد، بولو WordBool- هر کدام 2 بایت، LongBool- 4 بایت مقادیر بولی می تواند یکی از ثابت های از پیش اعلام شده False یا True باشد.

از آنجایی که نوع Boolean یک نوع ترتیبی است، می توان از آن در یک دستور حلقه از نوع قابل شمارش استفاده کرد. در دلفی 32 برای بولیمعنی

ترتیب (درست) = 1+، در حالی که برای انواع دیگر ( Bool، WordBoolو غیره.)

Ord(True) = -1، بنابراین این نوع عملگرها باید با احتیاط استفاده شوند! به عنوان مثال، برای نسخه دلفی 6، دستور اجرایی showMessage(" --- ") در حلقه زیر برایهرگز اجرا نخواهد شد:

برای L: = False to True انجام دهید

ShowMessage("--);

اگر پارامتر حلقه نوع L در مثال قبل را با بولی، حلقه اجرا می شود و پیام دو بار روی صفحه ظاهر می شود. [برای نسخه های دلفی 1 و 2 ord (True) =+1 برای هر نوع بولی.]

نوع کاراکتر . مقدار یک نوع کاراکتر مجموعه ای از تمام کاراکترهای رایانه شخصی است. به هر کاراکتر یک عدد صحیح در محدوده 0...255 اختصاص داده می شود. این عدد به عنوان کد برای نمایش داخلی نماد عمل می کند؛ این عدد توسط تابع ord برگردانده می شود.

برای رمزگذاری در ویندوز، از کد ANSI استفاده می شود (نام موسسه استاندارد ملی آمریکا، موسسه استانداردسازی آمریکایی که این کد را ارائه کرده است). نیمه اول کاراکترهای PC با کد 0... 127 مطابق با جدول 1.3 است. نیمه دوم کاراکترها با کدهای 128...255 برای فونت های مختلف متفاوت است. فونت های استاندارد ویندوز Arial Cyr، Courier New Cyr و Times New Roman از 64 کد آخر (از 192 تا 256) برای نمایش کاراکترهای سیریلیک (بدون حروف "ё" و "Ё"): "A" ... "Z" استفاده می کنند. مقادیر کدگذاری شده 192..223، "a"... "i" - 224...255. نمادهای "Ё" و "е" به ترتیب دارای کدهای 168 و 184 هستند.

جدول 1.3 - رمزگذاری کاراکتر مطابق با استاندارد ANSI

کد سمبل کد. سمبل کد. سمبل کد سمبل
0 NUL 32 B.L. 64 @ 96 "
1 ZON 33 ! 65 آ 97 آ
2 STX 34 66 که در 98 ب
3 ETX 35 # 67 با 99 با
4 EOT 36 $ 68 دی 100 د
5 ENQ 37 % 69 E 101 ه
6 ACK 38 & 70 اف 102 f
7 BEL 39 " 71 جی 103 د
8" لیسانس. 40 ( 72 ن 104 ساعت
9 HT 41 ) 73 من 105 من
10 LF 42 * 74 جی 106 j
11 VT 43 + 75 به 107 ک
12 FF 44 اف 76 L 108 1
13 CR 45 - 77 م 109 متر
14 بنابراین 46 78 ن 110 n
15 S.I. 47 / 79 0 111 O
16 DEL 48 0 80 آر 112 پ
17 DC1 49 1 81 س 113 q
18 DC2 50 2 82 آر 114 r
19 DC3 51 3 83 اس 115 س
20 DC 4 52 4 84 تی 116 تی
21 N.A.K. 53 5 85 U 117 تو
22 SYN 54 6 86 V 118 v
23 ETB 55 7 87 دبلیو 119 دبلیو
24 می توان 56 8 88 ایکس 120 ایکس
25 E.M. 57 9 89 Y 121 U
26 زیر 58 : 90 ز .122 z
27 خروج 59 ; 91 تی 123 {
28 FS 60 < 92 \ 124 1
29 G.S. 61 = 93 ] 125 }
30 R.S. 62 > 94 L 126 ~
31 ایالات متحده 63 اف 95 127 r

به کاراکترهای با کد 0...31 مراجعه کنید کدهای خدمات. اگر این کدها در متن کاراکتر برنامه استفاده شوند، فضای خالی در نظر گرفته می شوند.

رایج ترین در ریاضیات انواع عددی- این کلاعدادی که تعداد نامتناهی از مقادیر گسسته را نشان می دهند و معتبراعدادی که نشان دهنده زنجیره نامحدودی از مقادیر هستند.

شرح انواع داده های عددی پاسکال (اعداد صحیح)

در یک زبان، زیر مجموعه های مختلفی از مجموعه اعداد صحیح را می توان پیاده سازی کرد. محدوده مقادیر ممکن انواع عددی عدد صحیح به نمایش داخلی آنها بستگی دارد که می تواند یک، دو یا چهار بایت باشد. بنابراین، در پاسکال 7.0 از انواع داده های عددی صحیح زیر استفاده می شود:

با کل انواع داده های عددیپاسکال می تواند عملیات زیر را انجام دهد:

  • حسابی:
    افزودن (+);
    منها کردن(-)؛
    ضرب(*)؛
    باقی مانده تقسیم (mod)؛
    توانمندی؛
    به علاوه unary (+)؛
    یکنواخت منهای (-).
  • عملیات رابطه:
    رابطه برابری (=);
    رابطه نابرابری (<>);
    نسبت کمتر است (<);
    نسبت بزرگتر از (>)؛
    رابطه نه کمتر از (>=)؛
    نگرش دیگر (<=).

هنگام بازیگری با انواع داده های عددی صحیحنوع نتیجه با نوع عملوندها مطابقت دارد و اگر عملوندها از انواع مختلف عدد صحیح باشند، با نوع عملوندی که حداکثر توان را دارد (حداکثر دامنه مقادیر) مطابقت دارد. سرریز احتمالی نتیجه به هیچ وجه کنترل نمی شود (مهم است!) ، که ممکن است منجر به خطا شود.

توجه ویژه باید به عملیات تقسیم انواع داده های عددی صحیح شود. پاسکال دو عملیات تقسیم را امکان پذیر می کند که بر این اساس مشخص می شوند "/" و بخش. باید بدانید که نتیجه تقسیم "/" یک عدد صحیح نیست، بلکه عدد واقعی(این درست است حتی اگر 8 را بر 2 تقسیم کنید، یعنی 8/2=4.0). تقسیم بندی است تقسیم عدد صحیح، یعنی نوع نتیجه عدد صحیح است.

شرح انواع داده های عددی پاسکال (واقعی)

نوع داده عددی واقعی به زیرمجموعه‌ای از اعداد واقعی اشاره دارد که می‌توانند در قالب به اصطلاح ممیز شناور با تعداد ثابتی از ارقام نمایش داده شوند. با ممیز شناور، هر نوع داده عددی به صورت دو گروه از ارقام نمایش داده می شود. گروه اول اعداد مانتیس نامیده می شود و دومی نما هستند. به طور کلی، یک نوع داده عددی به شکل ممیز شناور را می توان به صورت زیر نشان داد: X= (+|-)MP (+ | -) r، که در آن M مانتیس عدد است. r - ترتیب اعداد (r - عدد صحیح)؛ P - پایه سیستم اعداد. به عنوان مثال، برای پایه اعشاری، نمایش 2E-1 (در اینجا E پایه سیستم اعداد اعشاری است) به این صورت خواهد بود: 2*10 -1 =0.2، و نمایش 1.234E5 مطابق با: 1.234*10 5 خواهد بود. =123400.0.

پاسکال از انواع زیر از اعداد حقیقی استفاده می کند که بسته به فرمت داخلی اعداد حقیقی تنها با دقت محدودی یک عدد دلخواه را تعریف می کنند:

هنگام توصیف یک متغیر واقعی از نوع real، یک متغیر 4 بایتی در حافظه کامپیوتر ایجاد می شود. در این حالت 3 بایت برای مانتیس و یک بایت برای سفارش داده می شود.

عملیات زیر را می توان بر روی انواع داده های عددی واقعی انجام داد:

  • حسابی:
    اضافه (+)؛
    منها کردن(-)؛
    ضرب(*)؛
    تقسیم (/);
    توانمندی؛
    به علاوه unary (+)؛
    یکنواخت منهای (-).
  • عملیات رابطه:
    رابطه نابرابری (<>);
    نسبت کمتر است (<);
    نسبت بزرگتر از (>)؛
    رابطه نه کمتر از (>=)؛
    نگرش دیگر (<=).

همانطور که می بینید، پاسکال با طیف گسترده ای از انواع واقعی، اما دسترسی به انواع داده های عددی مشخص می شود تنها, دو برابرو تمدید شدهفقط در حالت های کامپایل ویژه امکان پذیر است. این نوع داده‌های عددی برای پشتیبانی سخت‌افزاری برای محاسبات ممیز شناور طراحی شده‌اند و برای استفاده مؤثر از آنها، رایانه شما باید دارای یک پردازشگر ریاضی باشد.

نوع داده عددی در پاسکال موقعیت خاصی را اشغال می کند. مقایسه، که به عنوان یک عدد واقعی بدون بخش های نمایی و کسری در نظر گرفته می شود. در حقیقت، مقایسهیک عدد صحیح امضا شده "بزرگ" است که 19..20 رقم اعشاری قابل توجه را حفظ می کند. در همان زمان، نوع داده های عددی مقایسهدر عبارات کاملاً با انواع واقعی دیگر سازگار است: تمام عملیات واقعی بر روی آن تعریف شده است، می توان از آن به عنوان آرگومان برای توابع ریاضی و غیره استفاده کرد.

درباره تبدیل انواع داده های عددی پاسکال

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

Var X: عدد صحیح. Y: واقعی

اون اپراتوره

از نظر نحوی صحیح خواهد بود، اگرچه یک عبارت عدد صحیح در سمت راست علامت تخصیص و یک متغیر واقعی در سمت چپ وجود دارد، کامپایلر انواع داده های عددی را به طور خودکار تبدیل می کند. تبدیل معکوس به صورت خودکار تایپ می شود واقعیدر نوع عدد صحیحغیر ممکن در پاسکال بیایید به یاد بیاوریم که چند بایت برای متغیرهای نوع اختصاص داده شده است عدد صحیحو واقعی: برای نوع داده عدد صحیح عدد صحیح 2 بایت حافظه اختصاص داده می شود و برای واقعی - 6 بایت. برای تبدیل واقعی V عدد صحیحدو عملکرد داخلی وجود دارد: گرد(x) x واقعی را به نزدیکترین عدد صحیح گرد می کند، تنه(x) یک عدد واقعی را با حذف قسمت کسری کوتاه می کند.

بهترین مقالات در این زمینه