Nombor bulat dalam Pascal. Jenis data dalam Pascal (pembolehubah, pemalar), jenis dan perihalannya

Pelajaran merangkumi jenis data standard utama dalam Pascal, konsep pembolehubah dan pemalar; menerangkan cara bekerja dengan operasi aritmetik

Pascal ialah bahasa pengaturcaraan yang ditaip. Ini bermakna pembolehubah yang menyimpan data adalah daripada jenis data tertentu. Itu. Program mesti menunjukkan secara langsung data yang boleh disimpan dalam pembolehubah tertentu: data teks, data berangka, jika berangka, kemudian integer atau pecahan, dsb. Ini adalah perlu terutamanya supaya komputer "tahu" operasi yang boleh dilakukan dengan pembolehubah ini dan cara melaksanakannya dengan betul.

Sebagai contoh, penambahan data teks, atau seperti yang dipanggil dengan betul dalam pengaturcaraan - penggabungan - adalah penggabungan rentetan biasa, manakala penambahan data berangka berlaku secara bitwise, selain itu, nombor pecahan dan integer juga ditambah secara berbeza. Perkara yang sama berlaku untuk operasi lain.

Mari lihat jenis data yang paling biasa dalam Pascal.

Jenis data integer dalam Pascal

taip Julat Memori yang diperlukan (bait)
bait 0..255 1
pendek -128..127 1
integer -32768.. 32767 2
perkataan 0..65535 2
longint -2147483648..2147483647 4

Anda perlu ingat bahawa semasa menulis program dalam Pascal integer(diterjemahkan daripada bahasa Inggeris secara keseluruhan) adalah yang paling kerap digunakan, memandangkan julat nilai paling banyak diminati. Jika julat yang lebih luas diperlukan, gunakan longint(integer panjang, diterjemahkan daripada bahasa Inggeris sebagai integer panjang). taip bait dalam Pascal ia digunakan apabila tidak perlu bekerja dengan nilai negatif, perkara yang sama berlaku untuk jenis perkataan(hanya julat nilai di sini adalah lebih besar).

Contoh cara pembolehubah diterangkan (diisytiharkan) dalam Pascal:

program a1; var x,y:integer; (jenis integer) myname:string; (jenis rentetan) mulakan x:=1; y:=x+16; nama saya:="Peter"; writeln("nama: ",nama saya, ", umur: ", y) tamat.

Keputusan:
nama: Peter, umur: 17

Komen dalam Pascal

Perhatikan bagaimana ulasan digunakan dalam Pascal. Dalam ulasan contoh, i.e. teks perkhidmatan yang "tidak kelihatan" kepada pengkompil disertakan dalam pendakap kerinting. Biasanya, komen dibuat oleh pengaturcara untuk menerangkan kepingan kod.

Tugasan 3. Penduduk Moscow ialah = 9,000,000 penduduk. Populasi Vasyuki Baru ialah b=1000 penduduk. Tulis program yang menentukan perbezaan bilangan penduduk antara dua bandar. Gunakan Pembolehubah

Jenis data sebenar dalam Pascal

Nombor nyata dalam Pascal dan dalam pengaturcaraan secara umum adalah nama untuk nombor pecahan.

taip Julat Memori yang diperlukan (bait)
sebenar 2.9 * 10E-39 .. 1.7 * 10E38 6
bujang 1.5 * 10 E-45 .. 3.4 * 10E38 4
berganda 5 * 10E-324 .. 1.7 * 10E308 8
dipanjangkan 1.9 * 10E-4951 .. 1.1 * 10E4932 10

Jenis sebenar dalam Pascal ialah jenis sebenar yang paling biasa digunakan.

Perkara di atas telah dibentangkan jenis data ringkas dalam Pascal, yang termasuk:

  • Ordinal
  • Keseluruhan
  • pengusik otak
  • Perwatakan
  • Boleh disenaraikan
  • Selang waktu
  • Nyata

Untuk memaparkan nilai pembolehubah jenis sebenar, output terformat biasanya digunakan:

  • format menggunakan sama ada satu nombor, menunjukkan bilangan jawatan yang diperuntukkan kepada nombor ini dalam bentuk eksponen;
  • p:=1234.6789; Writeln(hlm:6:2); (1234.68)

    Bersama-sama dengan jenis mudah, bahasa juga menggunakan jenis data berstruktur dan penunjuk, yang akan menjadi subjek pelajaran seterusnya tentang Pascal.

    Pemalar dalam Pascal

    Selalunya dalam program diketahui terlebih dahulu bahawa pembolehubah akan mengambil nilai tertentu dan tidak akan mengubahnya sepanjang pelaksanaan keseluruhan program. Dalam kes ini, anda mesti menggunakan pemalar.

    Pengisytiharan pemalar dalam Pascal berlaku sebelum pengisytiharan pembolehubah (sebelum perkataan perkhidmatan var) dan kelihatan seperti ini:

    Contoh penerangan berterusan dalam Pascal:

    1 2 3 4 5 6 const x= 17 ; var myname: string ; mulakan nama saya: = "Peter" ; writeln("nama: ", nama saya, ", umur: ", x) tamat.

    const x=17; var myname:string; mulakan nama saya:="Peter"; writeln("nama: ",nama saya, ", umur: ", x) tamat.

    Output "Cantik" bagi integer dan nombor nyata

    Untuk memastikan bahawa selepas memaparkan nilai pembolehubah terdapat inden, supaya nilai tidak "bercantum" antara satu sama lain, adalah kebiasaan untuk menunjukkan melalui titik bertindih berapa banyak aksara yang perlu disediakan untuk memaparkan nilai:


    Operasi aritmetik dalam Pascal

    Susunan operasi

    1. penilaian ungkapan dalam kurungan;
    2. pendaraban, pembahagian, div, mod dari kiri ke kanan;
    3. penambahan dan penolakan dari kiri ke kanan.

    Prosedur dan Fungsi Aritmetik Piawai Pascal

    Di sini adalah berfaedah untuk membincangkan dengan lebih terperinci mengenai beberapa operasi aritmetik.

    • Operasi inc dalam Pascal, yang disebut kenaikan, ialah prosedur Pascal standard yang bermaksud meningkat satu.
    • Contoh operasi inc:

      x:=1; inc(x); (Meningkatkan x sebanyak 1, iaitu x=2) writeln(x)

      Penggunaan prosedur inc yang lebih kompleks:
      Inc(x,n) dengan x ialah jenis ordinal, n ialah jenis integer; prosedur ink kenaikan x oleh n.

    • Prosedur Dis dalam Pascal berfungsi sama: Dis(x) - berkurang x sebanyak 1 (penurunan) atau Dis(x,n) - berkurang x sebanyak n.
    • Operator abs mewakili modulus nombor. Ia berfungsi seperti ini:
    • a: =- 9; b:=abs(a) ; (b=9)

      a:=-9; b:=abs(a); (b=9)

    • Operator div dalam Pascal sering digunakan, kerana beberapa tugas melibatkan operasi keseluruhan bahagian.
    • Baki bahagian atau pengendali mod dalam Pascal juga amat diperlukan untuk menyelesaikan beberapa masalah.
    • Perlu diberi perhatian ialah fungsi ganjil piawai Pascal, yang menentukan sama ada integer adalah ganjil. Iaitu, ia mengembalikan benar untuk nombor ganjil, palsu untuk nombor genap.
    • Contoh penggunaan fungsi ganjil:

      var x:integer; mulakan x:=3; writeln(sqr(x)); (jawapan 9) tamat.

    • Pengendalian eksponen dalam Pascal hilang seperti itu. Tetapi untuk menaikkan nombor kepada kuasa, anda boleh menggunakan fungsi exp.
    • Formulanya ialah: exp(ln(a)*n), dengan a ialah nombor, n ialah darjah (a>0).

      Walau bagaimanapun, dalam pengkompil Pascal abc, eksponensial adalah lebih mudah:

      var x:integer; mulakan x:=9; writeln(sqrt(x)); (jawapan 3) tamat.

    Tugasan 4. Dimensi kotak mancis diketahui: tinggi - 12.41 cm, lebar - 8 cm, ketebalan - 5 cm. Kira luas tapak kotak dan isipadunya
    (S=lebar*tebal, V=luas*tinggi)

    Tugasan 5. Zoo ini mempunyai tiga ekor gajah dan beberapa ekor arnab, dengan bilangan arnab sering berubah. Seekor gajah sepatutnya makan seratus lobak merah sehari, dan seekor arnab - dua. Setiap pagi, penjaga zoo memberitahu komputer bilangan arnab. Komputer, sebagai tindak balas kepada ini, mesti memberitahu atendan jumlah jumlah lobak merah yang perlu diberi makan kepada arnab dan gajah hari ini.

    Tugasan 6. Adalah diketahui bahawa x kg kos gula-gula a rubel Tentukan berapa kosnya y kg gula-gula ini, dan juga berapa kilogram gula-gula boleh dibeli pada k rubel Semua nilai dimasukkan oleh pengguna.

    Paling biasa dalam matematik jenis angka- Ini keseluruhan nombor yang mewakili bilangan tak terhingga nilai diskret, dan sah nombor yang mewakili kesinambungan nilai tanpa had.

    Perihalan jenis data berangka Pascal (integer)

    Dalam bahasa yang sama, subset yang berbeza bagi set integer boleh dilaksanakan. Julat nilai kemungkinan jenis angka integer bergantung pada perwakilan dalaman mereka, yang boleh menjadi satu, dua atau empat bait. Oleh itu, dalam Pascal 7.0 jenis data berangka integer berikut digunakan:

    Dengan keseluruhan jenis data berangka Pascal boleh melakukan operasi berikut:

    • Aritmetik:
      penambahan(+);
      penolakan(-);
      pendaraban(*);
      baki bahagian (mod);
      eksponenisasi;
      tambah unari (+);
      unari tolak (-).
    • Operasi perkaitan:
      hubungan kesamarataan (=);
      hubungan ketidaksamaan (<>);
      nisbah kurang (<);
      nisbah lebih besar daripada (>);
      hubungan tidak kurang daripada (>=);
      sikap tidak lagi (<=).

    Apabila berlakon dengan jenis data angka integer jenis hasil akan sepadan dengan jenis operan, dan jika operan adalah jenis integer yang berbeza, kepada jenis operan yang mempunyai kuasa maksimum (julat nilai maksimum). Kemungkinan limpahan hasil tidak dikawal dalam apa cara sekalipun (ia penting!) , yang boleh membawa kepada ralat.

    Perhatian khusus harus diberikan kepada operasi pembahagian jenis data berangka integer. Pascal membenarkan dua operasi bahagian, yang dilambangkan dengan sewajarnya "/" Dan div. Anda perlu tahu bahawa hasil pembahagian "/" bukan integer, tetapi nombor sebenar(ini adalah benar walaupun anda membahagi 8 dengan 2, iaitu 8/2=4.0). Div bahagian ialah pembahagian integer, iaitu jenis hasil ialah integer.

    Perihalan jenis data berangka Pascal (nyata)

    Jenis data berangka sebenar merujuk kepada subset nombor nyata yang boleh diwakili dalam apa yang dipanggil format titik terapung dengan bilangan digit tetap. Dengan titik terapung, setiap jenis data berangka diwakili sebagai dua kumpulan digit. Kumpulan nombor pertama dipanggil mantissa, yang kedua ialah eksponen. Secara umum, jenis data berangka dalam bentuk titik terapung boleh diwakili seperti berikut: X= (+|-)MP (+ | -) r, dengan M ialah mantissa nombor; r – susunan nombor (r – integer); P – asas sistem nombor. Sebagai contoh, untuk asas perpuluhan, perwakilan 2E-1 (di sini E ialah asas sistem nombor perpuluhan) akan kelihatan seperti: 2*10 -1 =0.2, dan perwakilan 1.234E5 akan sepadan dengan: 1.234*10 5 =123400.0.

    Pascal menggunakan jenis nombor nyata berikut, yang mentakrifkan nombor arbitrari hanya dengan beberapa ketepatan terhingga bergantung pada format dalaman nombor nyata:

    Apabila menerangkan pembolehubah sebenar jenis nyata, pembolehubah 4 bait akan dicipta dalam memori komputer. Dalam kes ini, 3 bait akan diberikan untuk mantissa, dan satu bait untuk pesanan.

    Operasi berikut boleh dilakukan pada jenis data angka sebenar:

    • Aritmetik:
      penambahan (+);
      penolakan(-);
      pendaraban(*);
      bahagian(/);
      eksponenisasi;
      tambah unari (+);
      unari tolak (-).
    • Operasi perkaitan:
      hubungan ketidaksamaan (<>);
      nisbah kurang (<);
      nisbah lebih besar daripada (>);
      hubungan tidak kurang daripada (>=);
      sikap tidak lagi (<=).

    Seperti yang anda lihat, Pascal dicirikan oleh pelbagai jenis sebenar, tetapi akses kepada jenis data berangka bujang, berganda Dan dipanjangkan hanya boleh dilakukan di bawah mod penyusunan khas. Jenis data berangka ini direka bentuk untuk sokongan perkakasan untuk aritmetik titik terapung, dan untuk menggunakannya dengan berkesan, PC anda mesti menyertakan pemproses bersama matematik.

    Jenis data berangka menduduki kedudukan istimewa dalam Pascal. kompaun, yang dianggap sebagai nombor nyata tanpa bahagian eksponen dan pecahan. Sebenarnya, kompaun ialah integer bertanda “besar” yang mengekalkan 19..20 digit perpuluhan bererti. Pada masa yang sama, jenis data berangka kompaun dalam ungkapan ia serasi sepenuhnya dengan jenis sebenar yang lain: semua operasi sebenar ditakrifkan padanya, ia boleh digunakan sebagai hujah kepada fungsi matematik, dsb.

    Perihal menukar jenis data angka Pascal

    Dalam Pascal, penukaran tersirat (automatik) bagi jenis data berangka hampir mustahil. Pengecualian dibuat hanya untuk jenis integer, yang dibenarkan untuk digunakan dalam ungkapan seperti sebenar. Sebagai contoh, jika pembolehubah diisytiharkan seperti ini:

    Var X: integer; Y: sebenar;

    Itulah operatornya

    akan betul dari segi sintaksis, walaupun terdapat ungkapan integer di sebelah kanan tanda tugasan dan pembolehubah sebenar di sebelah kiri, pengkompil akan menukar jenis data berangka secara automatik. Penukaran terbalik adalah jenis secara automatik sebenar dalam jenis integer mustahil dalam Pascal. Mari kita ingat berapa banyak bait yang diperuntukkan untuk pembolehubah jenis integer Dan sebenar: untuk jenis data integer integer 2 bait memori diperuntukkan, dan untuk sebenar - 6 bait. Untuk menukar sebenar V integer Terdapat dua fungsi terbina dalam: bulat(x) membundarkan x nyata kepada integer terdekat, trunc(x) memotong nombor nyata dengan membuang bahagian pecahan.

    Konsep data adalah salah satu yang penting dalam pengaturcaraan, dan dalam sains komputer secara amnya. Secara kasarnya, data dalam sains komputer ialah maklumat yang berada dalam keadaan penyimpanan, pemprosesan atau penghantaran dalam tempoh masa tertentu. Dalam mesin Turing, maklumat mempunyai jenis, dan ini bergantung pada jenis maklumat.

    Jenis data dalam Pascal mentakrifkan kemungkinan nilai pembolehubah, pemalar, ungkapan dan fungsi. Mereka terbina dalam dan tersuai. Jenis terbina dalam pada mulanya terdapat dalam bahasa pengaturcaraan, dan jenis tersuai dicipta oleh pengaturcara.

    Mengikut kaedah persembahan dan pemprosesan, jenis data ialah:

    • ringkas
    • tersusun
    • petunjuk
    • objek
    • prosedur

    Artikel ini akan mempertimbangkan hanya jenis data yang paling mudah, kerana pada peringkat awal latihan, program anda akan lebih mudah untuk melakukannya tanpa, contohnya, fail dan rekod daripada tanpa pembolehubah integer atau rentetan.

    Jenis integer

    Ini termasuk beberapa jenis integer, yang berbeza dalam julat nilai, bilangan bait yang diperuntukkan untuk menyimpannya dan perkataan yang jenis itu diisytiharkan.

    taip Julat Saiz dalam bait
    pendek -128…127 1
    integer -32 768…32 767 2
    longint -2 147 483 648…2 147 483 647 4
    bait 0…255 1
    perkataan 0…65 535 2

    Anda boleh mengisytiharkan pembolehubah integer dalam bahagian Var, sebagai contoh:

    Semua operasi aritmetik dan logik boleh dilakukan pada pembolehubah dalam kategori ini dengan pengecualian pembahagian (/), yang memerlukan jenis sebenar. Beberapa fungsi dan prosedur standard mungkin juga terpakai.

    Jenis sebenar

    Dalam Pascal terdapat jenis data sebenar berikut:

    taip Julat Memori, bait Bilangan digit
    Nyata 2.9e-39 … 1.7e38 6 11-12
    Bujang 1.5e-45 … 3.4e38 4 7-8
    berganda 5.0e-324…1.7e308 8 15-16
    Dipanjangkan 3.4e-4932 … 1.1e493 10 19-20
    Komp -9.2e63…(9.2e63)-1 8 19-20

    Lebih banyak operasi dan fungsi boleh dilakukan pada mereka daripada pada integer. Sebagai contoh, fungsi ini mengembalikan hasil sebenar:

    sin(x) – sinus;

    cos(x) – kosinus;

    arctan(x) – arctangent;

    ln(x) – logaritma asli;

    sqrt(x) – punca kuasa dua;

    exp(x) – eksponen;

    Jenis Boolean

    Pembolehubah jenis data Boolean hanya boleh mengambil dua nilai: benar dan salah. Di sini, benar sepadan dengan nilai 1, dan palsu sepadan dengan sifar. Anda boleh mengisytiharkan pembolehubah Boolean seperti ini:

    Perbandingan dan operasi logik boleh dilakukan pada data jenis ini: bukan, dan, atau, xor.

    Jenis watak

    Jenis data aksara ialah koleksi aksara yang digunakan dalam komputer tertentu. Pembolehubah jenis ini mengambil nilai salah satu daripada aksara ini dan menduduki 1 bait dalam memori komputer. Perkataan Char mentakrifkan nilai jenis ini. Terdapat beberapa cara untuk menulis pembolehubah aksara (atau pemalar):

    1. sebagai aksara tunggal yang disertakan dalam apostrof: 'W', 'V', 'p';
    2. dengan menyatakan kod aksara, yang nilainya mestilah dalam julat dari 0 hingga 255.
    3. menggunakan pembinaan ^K, dengan K ialah kod aksara kawalan. Nilai K mestilah 64 lebih besar daripada kod aksara kawalan yang sepadan.

    Operasi perhubungan dan fungsi berikut boleh digunakan untuk nilai jenis data aksara:

    Succ(x)- mengembalikan watak seterusnya;

    Prad(x)- mengembalikan watak sebelumnya;

    Ord(x)- mengembalikan nilai kod aksara;

    Chr(x)- mengembalikan nilai simbol dengan kodnya;

    UpCase(x)- menukarkan huruf daripada selang ‘a’..’z’ kepada huruf besar.

    Untuk berfungsi dengan berkesan dengan jenis watak, saya mengesyorkan menggunakan .

    Jenis rentetan

    Rentetan dalam Pascal ialah urutan aksara yang disertakan dalam apostrof, dan dilambangkan dengan perkataan Tali. Bilangan aksara (panjang baris) mestilah tidak melebihi 255. Jika panjang baris tidak dinyatakan, ia akan ditentukan secara automatik sebagai 255 aksara. Bentuk umum perisytiharan pembolehubah rentetan kelihatan seperti ini:

    Var<имя_переменной>:tali[<длина строки>];

    Setiap aksara dalam baris mempunyai indeks (nombor) sendiri. Indeks bait pertama ialah 0, tetapi ia tidak menyimpan aksara pertama, tetapi panjang keseluruhan rentetan, yang bermaksud bahawa pembolehubah jenis ini akan menduduki 1 bait lebih daripada bilangan pembolehubah di dalamnya. Nombor aksara pertama ialah 1, sebagai contoh, jika kita mempunyai rentetan S=‘stroka’, maka S=s;. Dalam salah satu pelajaran berikut, jenis data rentetan akan dibincangkan dengan lebih terperinci.

    Jenis data terhitung

    Jenis data terhitung mewakili bilangan pengecam yang terhad. Pengecam ini disertakan dalam kurungan dan dipisahkan dengan koma.

    Jenis Hari=(Isnin, Selasa, Rabu, Khamis, Jumaat, Sabtu, Ahad);

    Pembolehubah A hanya boleh mengambil nilai yang ditentukan dalam bahagian Jenis. Anda juga boleh mengisytiharkan pembolehubah jenis terhitung dalam bahagian Var:

    Var A: (Isnin, Selasa);

    Operasi perhubungan boleh digunakan untuk jenis ini, dan ia ditetapkan pada hari Isnin itu

    Jenis data selang

    Apabila perlu untuk menentukan julat nilai, maka dalam situasi sedemikian jenis data selang digunakan. Binaan yang digunakan untuk pengisytiharan tersebut ialah m..n, Di mana m ialah nilai minimum (awal), dan n– maksimum (akhir); di sini m dan n ialah pemalar, yang boleh terdiri daripada integer, aksara, penghitungan atau jenis boolean. Nilai jenis selang boleh diterangkan dalam kedua-dua bahagian jenis dan dalam bahagian perihalan berubah-ubah.

    Borang am:

    JENIS<имя_типа> = <мин. значение>..<макс. значение>;

    KULIAH 2

    Asas pengaturcaraan.

    Pengenalan kepada Pascal. Jenis data. operasi.

    Abjad bahasaPascal

    Mana-mana bahasa semula jadi terdiri daripada unsur-unsur seperti simbol, perkataan, frasa, dan ayat. Bahasa pengaturcaraan juga mempunyai unsur yang serupa: simbol, perkataan, ungkapan (frasa), operator (ayat).

    Perkataan terbentuk daripada himpunan simbol. Ungkapan - ini adalah kumpulan perkataan dan pengendali - Ini adalah gabungan perkataan dan ungkapan. Simbol bahasa ialah tanda asas (huruf) yang digunakan untuk menyusun beberapa teks. Jadi, set simbol ini membentuk abjad bahasa.

    Abjad Pascal terdiri daripada:

    1.huruf besar dan huruf kecil abjad Latin, yang merangkumi aksara berikut:

    A B C D E F G H I J K L M N O P Q R S T U V W X Y Z - huruf besar;

    A b c d e f g h i j k l m n o p q r s t u v w x y z - huruf kecil;

    2. perpuluhan angka Arab: 0 1 2 3 4 5 6 7 8 9;

    3. digit heksadesimal (dibina daripada digit perpuluhan dan huruf dari A hingga F);

    4. 32 huruf besar dan huruf kecil abjad Rusia;

    5. watak istimewa:

    Gabungan aksara khas boleh membentuk aksara gabungan:

    : = tugasan;

    < >tidak sama;

    >= lebih besar daripada atau sama dengan;

    <= меньше или равно;

    Julat nilai;

    (* *) atau ( ) - komen.

    Struktur program Pascal

    Agar pengkompil Passal memahami dengan tepat tindakan yang diharapkan daripadanya, atur cara anda mesti diformat mengikut sepenuhnya dengan sintaks (peraturan pembinaan program) bahasa ini.

    Mana-mana program Pascal boleh terdiri daripada blok berikut (bahagian pilihan ditandakan dengan kurungan segi empat sama selepas ini):

    program<имя_программы>;

    [menggunakan<имена_подключаемых_модулей>;]

    [ label<список_меток>;]

    [ const<имя_константы> = <значение_константы>;]

    [ jenis<имя_типа> = <определение_типа>;]

    [var<имя_переменной> : <тип_переменной>;]

    [ prosedur<имя_процедуры> <описание_процедуры>;]

    [fungsi<имя_функции> <описание_функции>;]

    bermula (permulaan badan utama program)

    <операторы>

    tamat. (* hujung badan utama program *)

    Versi terkemudian penyusun bahasa Pascal tidak lagi memerlukan penetapan nama atur cara, iaitu baris atur cara<имя_программы>; boleh diketepikan. Tetapi ini hanya mungkin jika keseluruhan program terkandung dalam satu fail modul. Jika program terdiri daripada beberapa bahagian bebas - modul, maka setiap daripada mereka mesti mempunyai pengepala (program atau unit).

    Mana-mana bahagian pilihan yang disenaraikan boleh muncul lebih daripada sekali dalam teks program, urutan umum mereka juga boleh berubah, tetapi peraturan utama bahasa Pascal mesti sentiasa diikuti: sebelum objek digunakan, ia mesti diisytiharkan dan diterangkan.

    Penyusun Pascal tidak membezakan antara huruf kecil dan huruf besar serta mengabaikan aksara ruang putih, jadi teks atur cara boleh distrukturkan sedemikian rupa untuk menjadikannya paling mudah dibaca dan nyahpepijat.

    Arahan penyusun

    Baris yang bermula dengan simbol ($ bukan ulasan, tetapi arahan pengkompil - arahan khas yang bergantung kepada proses penyusunan dan pelaksanaan program. Kami akan mempertimbangkan arahan dalam bahagian yang berkaitan dengannya "dengan makna".

    Sebagai contoh, baris ($I-,Q+) melumpuhkan pengesahan I/O tetapi membolehkan kawalan limpahan pengiraan.

    Pengecam

    Nama yang diberikan kepada objek program (pemalar, jenis, pembolehubah, fungsi dan prosedur, dan keseluruhan program) dipanggil pengecam. Ia hanya boleh terdiri daripada nombor, huruf Latin dan tanda "_" (garis bawah). Walau bagaimanapun, nombor tidak boleh memulakan nama. Pengecam boleh mempunyai sebarang panjang, tetapi jika dua nama mempunyai 63 aksara pertama yang sama, maka nama tersebut dianggap sama.

    Anda boleh memberikan objek program anda sebarang nama, tetapi anda mesti memastikan bahawa ia berbeza daripada perkataan simpanan yang digunakan oleh Pascal, kerana pengkompil masih tidak akan menerima pembolehubah dengan nama "asing".

    Berikut ialah senarai perkataan terpelihara yang paling biasa:

    pelaksanaan tatasusunan shl

    rentetan antara muka kes

    label const kemudian

    penuding fail menggunakan

    prosedur jauh var

    untuk program sementara

    rekod hadapan dengan

    fungsi ulang xor

    Pembolehubah dan jenis data

    Pembolehubah ialah objek atur cara yang nilainya boleh berubah semasa atur cara berjalan.

    Jenis data ialah ciri julat nilai yang boleh diambil oleh pembolehubah milik jenis data tersebut.

    Semua pembolehubah yang digunakan dalam program mesti diterangkan dalam bahagian var khas menggunakan templat berikut:

    var<имя_переменной_1> [, <имя_переменной_2, _>] : <имя_типа_1>;

    <имя_переменной_3> [, <имя_переменной_4, _>] : <имя_типа_2>;

    Bahasa Pascal mempunyai set besar jenis data yang berbeza, tetapi kini kami akan menunjukkan hanya beberapa daripadanya. Kami akan bercakap tentang semua jenis data dengan lebih lanjut.

    Pemalar

    Pemalar ialah objek yang nilainya diketahui sebelum atur cara mula berjalan.

    Pemalar diperlukan untuk reka bentuk program visual, sangat diperlukan apabila menggunakan nilai berulang berulang dalam teks program, dan mudah jika perlu menukar nilai ini sepanjang keseluruhan program sekaligus.

    Terdapat tiga jenis pemalar dalam Pascal:

    Pemalar tanpa nama (digit dan nombor, simbol dan rentetan, set);

    Dinamakan pemalar tidak bertaip;

    Pemalar bertaip dinamakan.

    Pemalar Tanpa Nama

    Pemalar tanpa nama tidak mempunyai nama dan oleh itu tidak perlu diisytiharkan.

    Jenis pemalar yang tidak dinamakan ditentukan secara automatik, secara lalai:

    Sebarang urutan nombor (mungkin didahului dengan tanda "-" atau "+", atau dipecahkan oleh satu titik) dianggap oleh pengkompil sebagai pemalar yang tidak dinamakan - nombor (integer atau nyata);

    Sebarang jujukan aksara yang disertakan dalam apostrof dianggap sebagai pemalar yang tidak dinamakan - rentetan;

    Sebarang jujukan integer atau simbol yang dipisahkan dengan koma, dibingkai dengan kurungan segi empat sama, dianggap sebagai pemalar tanpa nama - satu set.

    Di samping itu, terdapat dua pemalar khas benar dan salah yang berkaitan dengan jenis data Boolean.

    Contoh penggunaan pemalar tanpa nama termasuk operator berikut:

    nyata2:= 12.075 + x;

    string4: = "abc" + string44;

    set5:= * set55;

    boolean6: = benar;

    Pemalar yang tidak ditaip

    Pemalar bernama, seperti namanya, mesti mempunyai nama. Oleh itu, nama-nama ini mesti dilaporkan kepada pengkompil, iaitu, diterangkan dalam bahagian const khas.

    Jika anda tidak menentukan jenis pemalar, maka dengan penampilannya pengkompil itu sendiri akan menentukan jenis (asas) yang harus ditugaskan. Sebarang pemalar yang telah diterangkan boleh digunakan semasa mengisytiharkan pemalar, pembolehubah dan jenis data lain. Berikut ialah beberapa contoh untuk menerangkan pemalar bernama yang tidak ditaip:

    Pemalar ditaip

    Pemalar bernama yang ditaip ialah pembolehubah(!) dengan nilai awal yang sudah diketahui pada masa program bermula. Oleh itu, pertama, pemalar yang ditaip tidak boleh digunakan untuk menentukan pemalar lain, jenis data dan pembolehubah, dan kedua, nilai mereka boleh diubah semasa program sedang berjalan.

    Pemalar yang ditaip diterangkan menggunakan templat berikut:

    const<имя_константы> : <тип_константы> = <начальное_значение>;

    Contoh di bawah menunjukkan cara melakukannya:

    const n: integer = -10;

    b: boolean = benar;

    Kami akan memberikan contoh pemalar ditaip jenis lain semasa kami mengkaji jenis data yang sepadan.

    Jenis data Pascal

    Penyusun Pascal memerlukan maklumat tentang jumlah memori yang diperlukan untuk menjalankan program disediakan sebelum ia dijalankan. Untuk melakukan ini, dalam bahagian perihalan pembolehubah (var), anda perlu menyenaraikan semua pembolehubah yang digunakan dalam program. Di samping itu, anda juga perlu memberitahu pengkompil berapa banyak memori yang akan diduduki oleh setiap pembolehubah ini.

    Semua ini boleh disampaikan kepada program dengan hanya menunjukkan jenis pembolehubah masa depan. Mempunyai maklumat tentang jenis pembolehubah, pengkompil "memahami" berapa banyak bait yang perlu diperuntukkan untuknya, tindakan yang boleh dilakukan dengannya, dan dalam pembinaan apa yang boleh disertainya.

    Untuk kemudahan pengaturcara, Pascal mempunyai banyak jenis data standard dan, sebagai tambahan, keupayaan untuk mencipta jenis data baharu berdasarkan yang sedia ada (standard atau sekali lagi ditakrifkan oleh pengaturcara sendiri), yang dipanggil dibina.

    Pembahagian kepada jenis data asas dan terbina dalam Pascal ditunjukkan dalam jadual:

    Jenis data ordinal (diskrit).

    Jenis data alamat

    Jenis Data Berstruktur

    Jenis data aritmetik

    Jenis Data Asas

    Logik

    Simbolik

    Nyata

    Netipizi

    indeks terindeks

    Jenis yang dibina

    Boleh disenaraikan

    minggu = (su, mo, tu, kami, ke, fr,sa);

    Penunjuk ditaip

    Susunan

    Rentetan rentetan

    rekod rekod

    Prosedur

    Objek

    Selang (julat)

    Jenis Data Binaan Pengaturcara

    Jenis data ordinal

    Antara jenis data asas, jenis ordinal menonjol. Nama ini boleh dibenarkan dalam dua cara:

    1. Setiap elemen jenis ordinal boleh dikaitkan dengan nombor unik (ordinal). Penomboran nilai bermula dari sifar. Pengecualian ialah jenis data shortint, integer dan longint. Penomboran mereka bertepatan dengan nilai unsur.

    2. Di samping itu, pada unsur apa-apa jenis ordinal, susunan ditentukan (dalam erti kata matematik), yang secara langsung bergantung pada penomboran. Oleh itu, untuk mana-mana dua elemen jenis ordinal, seseorang boleh mengatakan dengan tepat yang mana lebih kecil dan yang mana lebih besar.

    Rutin standard yang mengendalikan jenis data ordinal

    Fungsi dan prosedur berikut ditakrifkan hanya untuk jenis ordinal:

    1.Fungsi ord(x) mengembalikan nombor ordinal nilai pembolehubah x (berbanding dengan jenis pembolehubah x milik).

    2.Fungsi pred(x) mengembalikan nilai sebelum x (tidak berkenaan dengan elemen pertama jenis).

    3.Fungsi succ(x) mengembalikan nilai berikut x (tidak berkenaan dengan elemen terakhir jenis).

    4. Prosedur inc(x) mengembalikan nilai berikut x (untuk jenis data aritmetik ini bersamaan dengan operator x:=x+1).

    5. Prosedur inc(x,k) mengembalikan nilai kth berikutan x (untuk jenis data aritmetik ini bersamaan dengan operator x:=x+k).

    6. Prosedur dec(x) mengembalikan nilai sebelum x (untuk jenis data aritmetik ini bersamaan dengan operator x:=x-1).

    7. Prosedur dec(x,k) mengembalikan nilai k-e sebelum x (untuk jenis data aritmetik ini bersamaan dengan operator x:=x-k).

    Pada pandangan pertama, nampaknya keputusan menggunakan prosedur inc(x) adalah sama dengan hasil penggunaan fungsi succ(x). Walau bagaimanapun, perbezaan antara mereka kelihatan pada sempadan julat yang dibenarkan. Fungsi succ(x) tidak boleh digunakan untuk elemen maksimum jenis, tetapi prosedur inc(x) tidak akan menghasilkan sebarang ralat, tetapi, bertindak mengikut peraturan penambahan mesin, akan menambah yang seterusnya pada nombor elemen . Nombor itu, sudah tentu, akan berada di luar julat dan, disebabkan pemotongan, akan bertukar menjadi nombor nilai minimum julat. Ternyata prosedur inc() dan dec() melihat sebarang jenis ordinal seolah-olah "ditutup dalam gelang": sejurus selepas nilai terakhir datang nilai pertama sekali lagi.

    Mari kita jelaskan semua yang telah dikatakan dengan contoh. Untuk jenis data

    jenis enam belas = 0..15;

    cuba menambah 1 kepada nombor 15 akan memberikan hasil berikut:

    Unit awal akan dipotong, dan oleh itu ternyata inc(15)=0.

    Situasi yang sama pada had bawah julat yang dibenarkan bagi jenis data ordinal arbitrari diperhatikan untuk prosedur dec(x) dan fungsi pred(x):

    dec(min_element)= max_element

    Jenis data yang berkaitan dengan ordinal

    1. Jenis boolean mempunyai dua nilai: palsu dan benar, dan kesamaan berikut berlaku untuknya:

    ord(false)=0, ord(true)=1, false

    pred(benar)=salah, succ(salah)=benar,

    inc(true)=false, inc(false)=true,

    dec(true)=false, dec(false)=true.

    2. Aksara jenis aksara mengandungi 256 aksara ASCII lanjutan (contohnya, "a", "b", "i", "7", "#"). Nombor aksara yang dikembalikan oleh fungsi ord() adalah sama dengan nombor aksara dalam jadual ASCII.

    3. Mari kita ringkaskan jenis data integer dalam jadual:

    Jenis data

    Bilangan bait

    Julat

    2147483648..2147483647

    4. Jenis data terhitung ditentukan dalam bahagian jenis dengan menyenaraikan elemennya secara eksplisit. Sebagai contoh:

    taip minggu =(ahad, isn, selasa, rabu, khamis, jumaat, sabtu)

    Ingat bahawa untuk jenis data ini:

    inc(sat) = matahari, dec(sun) = sat.

    5. Jenis data selang hanya ditentukan oleh sempadan julatnya. Sebagai contoh:

    jenis bulan = 1..12;

    budni = mon..fri;

    6. Jenis data yang dibina oleh pengaturcara diterangkan dalam bahagian jenis mengikut corak berikut:

    menaip<имя_типа> = <описание_типа>;

    Sebagai contoh:

    taip lat_bukvy = "a".."z","A".."Z";

    Jenis data asas adalah standard, jadi tidak perlu menerangkannya dalam bahagian jenis. Walau bagaimanapun, jika dikehendaki, ini juga boleh dilakukan, sebagai contoh, dengan memberikan definisi panjang nama pendek. Katakan dengan memperkenalkan jenis data baharu

    taip int = integer;

    Anda boleh memendekkan sedikit teks program.

    Jenis data sebenar

    Ingat bahawa jenis data ini adalah aritmetik, bukan ordinal.

    Jenis data

    Bilangan bait

    Julat (nilai mutlak)

    1.5*10-45..3.4*1038

    2.9*10-39..1.7*1038

    5.0*10-324..1.7*10308

    3.4*10-4932..1.1*104932

    Jenis data yang dibina

    Kami akan mempertimbangkan jenis data ini (bersama-sama dengan operasi yang ditakrifkan untuknya) lebih lanjut sepanjang beberapa kuliah.

    Operasi dan Ungkapan

    Operasi aritmetik

    Mari bercakap tentang operasi - tindakan standard yang dibenarkan untuk pembolehubah satu atau satu lagi jenis data asas. Asasnya ialah operasi aritmetik dan logik.

    Nota: Semua operator yang disenaraikan di bawah (kecuali untuk unary "-" dan tidak) memerlukan dua operan.

    1. Operasi logik (dan - logik DAN, atau - logik ATAU, bukan - logik NOT, xor - eksklusif ATAU) hanya terpakai kepada nilai jenis boolean. Mereka juga menghasilkan nilai boolean. Berikut ialah jadual nilai untuk operasi ini:

    benar palsu benar

    palsu palsu palsu

    benar palsu palsu

    2. Operasi perbandingan (=,<>, >, <, <=, >=) digunakan untuk semua jenis asas. Hasilnya juga merupakan nilai boolean.

    3. Operasi aritmetik integer hanya terpakai kepada jenis integer. Hasilnya ialah integer yang jenisnya bergantung pada jenis operan.

    a div b - pembahagian a dengan b sepenuhnya (mungkin tidak perlu mengingatkan anda bahawa pembahagian dengan 0 adalah dilarang, jadi dalam kes sedemikian, operasi menjana ralat). Hasilnya ialah jenis data yang biasa digunakan untuk jenis operan tersebut.

    Contohnya, (shortint div byte = integer). Ini boleh dijelaskan dengan cara ini: integer ialah jenis minimum yang kedua-dua bait dan shortint adalah subset.

    a mod b - mengambil baki apabila membahagi a dengan b. Jenis hasil, seperti dalam kes sebelumnya, ditentukan oleh jenis operan, dan 0 ialah nilai haram untuk b. Tidak seperti mod operasi matematik, yang hasilnya sentiasa nombor bukan negatif, tanda hasil mod operasi "pengaturcara" ditentukan oleh tanda operan pertamanya. Oleh itu, jika dalam matematik (-2 mod 5) = 3, maka kita mempunyai (-2 mod 5) = -2.

    a shl k - alihkan nilai a dengan k bit ke kiri (ini bersamaan dengan mendarab nilai pembolehubah a dengan 2k). Hasil operasi akan menjadi jenis yang sama seperti operan pertamanya.

    a shr k - mengalihkan nilai a dengan k bit ke kanan (ini bersamaan dengan membahagikan nilai pembolehubah a dengan 2k sepenuhnya). Hasil operasi akan menjadi jenis yang sama seperti operan pertamanya.

    dan, atau, bukan, xor - operasi aritmetik binari yang berfungsi dengan bit perwakilan binari integer, mengikut peraturan yang sama seperti operasi logik yang sepadan.

    4. Operasi aritmetik am (+, -, *, /) digunakan untuk semua jenis aritmetik. Hasilnya tergolong dalam jenis data yang biasa bagi kedua-dua operan (satu-satunya pengecualian ialah operasi pembahagian pecahan /, yang hasilnya sentiasa jenis data sebenar).

    Operasi lain

    Terdapat operasi lain yang khusus untuk nilai beberapa jenis data standard Pascal. Kami akan mempertimbangkan operasi ini dalam bahagian yang sesuai:

    #, in, +, *, : lihat syarahan 5 “Simbol. Garisan. beramai-ramai"

    @, ^: lihat kuliah 7 "Alamat dan petunjuk"

    Fungsi aritmetik piawai

    Operasi aritmetik juga termasuk fungsi aritmetik piawai. Kami menyediakan senarai mereka dengan penerangan ringkas dalam jadual.

    Fungsi

    Penerangan

    Jenis hujah

    Jenis hasil

    Nilai mutlak (modulus) nombor

    Aritmetik

    Sama seperti jenis hujah

    Artangen (dalam radian)

    Aritmetik

    Nyata

    Kosinus (dalam radian)

    Aritmetik

    Nyata

    Eksponen (cth)

    Aritmetik

    Nyata

    Mengambil bahagian pecahan nombor

    Aritmetik

    Nyata

    Mengambil keseluruhan bahagian nombor

    Aritmetik

    Nyata

    Logaritma semula jadi (asas e)

    Aritmetik

    Nyata

    Menyemak sama ada nombor itu ganjil

    Maksud nombor

    Nyata

    Bundarkan kepada integer terdekat

    Aritmetik

    Bundarkan ke bawah - kepada integer terkecil terdekat

    Aritmetik

    Sinus (dalam radian)

    Aritmetik

    Nyata

    Kuadrat

    Aritmetik

    Nyata

    Punca kuasa dua

    Aritmetik

    Nyata

    Ungkapan Aritmetik

    Semua operasi aritmetik boleh digabungkan antara satu sama lain - sudah tentu, dengan mengambil kira jenis data yang dibenarkan untuk operan mereka.

    Operan bagi sebarang operasi boleh menjadi pembolehubah, pemalar, panggilan fungsi atau ungkapan yang dibina berdasarkan operasi lain. Semua bersama dipanggil ungkapan.

    Contoh ungkapan aritmetik:

    (x<0) and (y>0) - ungkapan yang hasilnya adalah jenis boolean;

    z shl abs(k) - operan kedua ialah panggilan ke fungsi standard;

    (x mod k) + min(a,b) + trunc(z) - gabungan operasi aritmetik dan panggilan fungsi;

    ganjil(bulat(x/abs(x))) - ungkapan "berbilang cerita".

    Urutan pengiraan

    Jika ungkapan mengandungi kurungan, maka pengiraan dilakukan dalam susunan berikut: semakin kecil kedalaman bersarang kurungan, semakin lama operasi yang disertakan di dalamnya dikira. Jika tiada kurungan, maka nilai operasi dengan keutamaan yang lebih tinggi dikira terlebih dahulu, kemudian nilai operasi dengan keutamaan yang lebih rendah. Beberapa operasi berturut-turut dengan keutamaan yang sama dikira dalam urutan dari kiri ke kanan.

    Jadual 2.1. Keutamaan (untuk semua) operasi Pascal

    Agensi Pendidikan Persekutuan

    Esei

    "JENIS DATA DALAM PASCAL"

    1. Jenis data

    Sebarang data, i.e. pemalar, pembolehubah, sifat, nilai fungsi atau ungkapan dicirikan oleh jenisnya. Jenis mentakrifkan set nilai sah yang boleh dimiliki oleh objek, serta set operasi sah yang boleh digunakan padanya. Di samping itu, jenis juga menentukan format perwakilan dalaman data dalam memori PC.

    Secara umum, bahasa Pascal Objek dicirikan oleh struktur bercabang jenis data (Rajah 1.1). Bahasa ini menyediakan mekanisme untuk mencipta jenis baharu, yang mana jumlah jenis yang digunakan dalam program boleh menjadi sebesar yang dikehendaki.

    Data yang diproses dalam atur cara dibahagikan kepada pembolehubah, pemalar dan literal:

    Pemalar mewakili data yang nilainya ditetapkan dalam bahagian pengisytiharan malar dan tidak berubah semasa pelaksanaan program.

    Pembolehubah diisytiharkan dalam bahagian pengisytiharan berubah-ubah, tetapi tidak seperti pemalar, mereka menerima nilai mereka semasa pelaksanaan program, dan nilai ini boleh diubah. Pemalar dan pembolehubah boleh dirujuk dengan nama.

    literal tidak mempunyai pengecam dan diwakili secara langsung oleh nilai dalam teks program.

    taip mentakrifkan set nilai yang boleh diambil oleh elemen data dan set operasi yang dibenarkan padanya.

    Ini dan empat bab seterusnya memberikan penerangan terperinci bagi setiap jenis.

    1.1 Jenis mudah

    Jenis mudah termasuk jenis ordinal, nyata dan datetime.

    Jenis ordinal berbeza kerana setiap daripada mereka mempunyai bilangan terhingga nilai yang mungkin. Nilai ini boleh dipesan dengan cara tertentu (oleh itu nama jenis) dan, oleh itu, setiap daripada mereka boleh dikaitkan dengan beberapa integer - nombor ordinal nilai.

    Jenis sebenar, secara tegasnya, juga mempunyai bilangan nilai terhingga, yang ditentukan oleh format perwakilan dalaman nombor nyata. Walau bagaimanapun, bilangan kemungkinan nilai jenis sebenar adalah sangat besar sehingga tidak mungkin untuk mengaitkan integer (nombornya) dengan setiap daripada mereka.

    Jenis tarikh-masa direka untuk menyimpan tarikh dan masa. Malah, ia menggunakan format sebenar untuk tujuan ini.

    1.1.1 Jenis ordinal

    Jenis ordinal termasuk (lihat Rajah 1.1) jenis integer, logik, aksara, terbilang dan julat. Fungsi Ord(x) boleh digunakan pada mana-mana daripadanya, yang mengembalikan nombor ordinal nilai ungkapan X.


    nasi. 1.1 - Struktur jenis data

    Untuk keseluruhan jenis, fungsi ord(x) mengembalikan nilai x itu sendiri, iaitu Ord(X) = x untuk x kepunyaan mana-mana keseluruhan taip. Memohon Ord(x) kepada logik , simbolik dan terhitung jenis memberikan integer positif dalam julat 0 hingga 1 ( jenis boolean), dari 0 hingga 255 ( simbolik), dari 0 hingga 65535 ( terbilang). Julat jenis mengekalkan semua sifat jenis ordinal asas, jadi hasil penggunaan fungsi ord(x) padanya bergantung pada sifat jenis ini.

    Anda juga boleh menggunakan fungsi pada jenis ordinal:

    pred(x)- mengembalikan nilai sebelumnya jenis ordinal (nilai yang sepadan dengan nombor ordinal ord(x) -1, iaitu ord(pred(x)) = ord(x) - 1;

    succ(x)- mengembalikan nilai seterusnya jenis ordinal, yang sepadan dengan nombor ordinal ord(x) +1, iaitu ord(Succ(x)) = ord(x) + 1.

    Sebagai contoh, jika program mentakrifkan pembolehubah

    maka fungsi PRED(c) akan mengembalikan aksara "4", dan fungsi SUCC(c) akan mengembalikan aksara "6".

    Jika kita bayangkan mana-mana jenis ordinal sebagai set nilai tertib yang meningkat dari kiri ke kanan dan menduduki segmen tertentu pada paksi nombor, maka fungsi pred(x) tidak ditakrifkan untuk hujung kiri, dan succ (x) ialah tidak ditakrifkan untuk hujung kanan segmen ini.

    Jenis integer . Julat nilai kemungkinan jenis integer bergantung pada perwakilan dalaman mereka, yang boleh menjadi satu, dua, empat atau lapan bait. Dalam jadual 1.1 menunjukkan nama jenis integer, panjang perwakilan dalaman mereka dalam bait dan julat nilai yang mungkin.

    Jadual 1.1 - Jenis integer

    Nama Panjang, bait Julat nilai
    Kardinal 4 0. .. 2 147 483 647
    Bait 1 0...255
    Shortint 1 -128...+127
    Smallint 2 -32 768...+32 767
    Perkataan 2 0...65 535
    Integer 4
    Longint 4 -2 147 483 648...+2 147 483 647
    Int64 8 -9*1018...+9*1018
    Kata Panjang 4 0. . .4 294 967 295

    Jenis Kata Panjang Dan Int64 mula-mula diperkenalkan dalam versi 4, dan jenisnya Smallint Dan Kardinal tidak terdapat dalam Delphi 1. Jenis integer untuk versi ini ia mengambil masa 2 bait dan mempunyai julat nilai dari -32768 hingga +32767, iaitu sama seperti Smallint .

    Apabila menggunakan prosedur dan fungsi dengan parameter integer, anda harus dipandu oleh jenis "bersarang", i.e. di mana sahaja ia boleh digunakan perkataan, dibenarkan untuk digunakan Bait(tetapi bukan sebaliknya), dalam Longint“masuk” Smallint, yang seterusnya termasuk Shortint .

    Senarai prosedur dan fungsi yang digunakan untuk jenis integer diberikan dalam jadual. 1.2. Huruf b, s, w, i, l menandakan ungkapan jenis berikut: Bait , Shortint, Word, Integer dan Longint ,

    x ialah ungkapan mana-mana jenis ini; huruf vb, vs, vw, vi, vl, vx menandakan pembolehubah jenis yang sepadan. Parameter pilihan ditunjukkan dalam kurungan segi empat sama.

    Jadual 1.2 - Prosedur dan fungsi standard yang boleh digunakan untuk keseluruhan jenis

    Rayuan Jenis hasil Tindakan
    abs(x) x Mengembalikan modul x
    chr(b) Char Mengembalikan aksara mengikut kodnya
    dec(vx[,i]) - Mengurangkan nilai vx dengan i, dan jika tiada i - sebanyak 1
    inc(vx[,i]) - Meningkatkan nilai vx sebanyak i, dan jika tiada i - sebanyak 1
    Hai(w) Bait Mengembalikan haluan tertinggi hujah
    Hai(saya) Sama Mengembalikan bait ketiga
    Lo(i) Mengembalikan bait rendah hujah
    Rendah(w) Sama
    ganjil(l) Boolean Mengembalikan Benar jika hujah ialah nombor ganjil
    rawak(w) Sama seperti parameter Mengembalikan nombor pseudorandom yang diedarkan secara seragam dalam julat 0...(w-l)
    persegi(x) X Mengembalikan kuasa dua hujah
    tukar(i) Integer Menukar bait dalam satu perkataan
    tukar(w) Perkataan Sama

    Apabila beroperasi dengan integer, jenis hasil akan sepadan dengan jenis operan, dan jika operan adalah jenis integer yang berbeza, jenis umum yang merangkumi kedua-dua operan. Contohnya, apabila beroperasi dengan pendek Dan perkataan jenis biasa akan menjadi integer. Dalam tetapan lalai, pengkompil Delphi tidak menghasilkan kod untuk menyemak sama ada nilai berada di luar julat, yang boleh menyebabkan salah faham.

    Jenis Boolean . Jenis logik termasuk Boolean, ByteBool, Bool, wordBool Dan LongBool. Dalam Pascal standard, hanya jenis yang ditentukan Boolean, jenis logik lain diperkenalkan ke dalam Object Pascal untuk keserasian dengan Windows: types Boolean Dan ByteBool setiap satu mengambil satu bait, Bool Dan WordBool- 2 bait setiap satu, LongBool- 4 bait. Nilai Boolean boleh menjadi salah satu pemalar yang telah diisytiharkan sebagai False atau True.

    Memandangkan jenis Boolean ialah jenis ordinal, ia boleh digunakan dalam pernyataan gelung jenis boleh dikira. Dalam Delphi 32 untuk Boolean maksudnya

    Ord (Benar) = +1, manakala untuk jenis lain ( Bool, WordBool dan lain-lain.)

    Ord(True) = -1, jadi pengendali jenis ini harus digunakan dengan berhati-hati! Sebagai contoh, untuk versi Delphi 6, penyataan showMessage(" --- ") boleh laku dalam gelung berikut untuk tidak akan dilaksanakan:

    untuk L:= Salah kepada Benar lakukan

    ShowMessage("--);

    Jika kita menggantikan jenis parameter gelung L dalam contoh sebelumnya dengan Boolean, gelung akan berjalan dan mesej akan muncul pada skrin dua kali. [Untuk Delphi versi 1 dan 2 ord (Benar) =+1 untuk sebarang jenis boolean.]

    Jenis watak . Nilai jenis aksara ialah set semua aksara PC. Setiap aksara diberikan integer dalam julat 0...255. Nombor ini berfungsi sebagai kod untuk perwakilan dalaman simbol; ia dikembalikan oleh fungsi ord.

    Untuk pengekodan dalam Windows, kod ANSI digunakan (dinamakan sempena American National Standard Institute, institut penyeragaman Amerika yang mencadangkan kod ini). Separuh pertama aksara PC dengan kod 0... 127 sepadan dengan Jadual 1.3. Separuh kedua aksara dengan kod 128...255 berbeza untuk fon yang berbeza. Fon Windows standard Arial Cyr, Courier New Cyr dan Times New Roman menggunakan 64 kod terakhir (dari 192 hingga 256) untuk mewakili aksara Cyrillic (tanpa huruf “ё” dan “Ё”): “A”... “Z” adalah nilai yang dikodkan 192..223, “a”... “i” - 224...255. Simbol "Ё" dan "е" mempunyai kod 168 dan 184, masing-masing.

    Jadual 1.3 - Pengekodan aksara mengikut piawaian ANSI

    Kod Simbol Kod. Simbol Kod. Simbol Kod Simbol
    0 NUL 32 B.L. 64 @ 96 "
    1 ZON 33 ! 65 A 97 A
    2 STX 34 66 DALAM 98 b
    3 ETX 35 # 67 DENGAN 99 Dengan
    4 EOT 36 $ 68 D 100 d
    5 ENQ 37 % 69 E 101 e
    6 ACK 38 & 70 F 102 f
    7 BEL 39 " 71 G 103 d
    8" B.S. 40 ( 72 N 104 h
    9 HT 41 ) 73 saya 105 i
    10 LF 42 * 74 J 106 j
    11 VT 43 + 75 KEPADA 107 k
    12 FF 44 F 76 L 108 1
    13 CR 45 - 77 M 109 m
    14 JADI 46 78 N 110 n
    15 S.I. 47 / 79 0 111 O
    16 DEL 48 0 80 R 112 P
    17 DC1 49 1 81 Q 113 q
    18 DC2 50 2 82 R 114 r
    19 DC3 51 3 83 S 115 s
    20 DC 4 52 4 84 T 116 t
    21 N.A.K. 53 5 85 U 117 u
    22 SYN 54 6 86 V 118 v
    23 ETB 55 7 87 W 119 W
    24 BOLEH 56 8 88 X 120 x
    25 E.M. 57 9 89 Y 121 U
    26 SUB 58 : 90 Z .122 z
    27 ESC 59 ; 91 t 123 {
    28 FS 60 < 92 \ 124 1
    29 G.S. 61 = 93 ] 125 }
    30 R.S. 62 > 94 L 126 ~
    31 AS 63 F 95 127 r

    Aksara dengan kod 0...31 merujuk kepada kod perkhidmatan. Jika kod ini digunakan dalam teks aksara program, ia dianggap ruang kosong.

    Untuk menaip char operasi hubungan boleh digunakan, serta fungsi terbina dalam:

    Char (c)- fungsi jenis char; menukar ungkapan kepada menaip Bait ke dalam simbol dan mengembalikannya dengan nilainya;

    UpCase(CH)- fungsi jenis char; mengembalikan huruf besar jika сн ialah huruf Latin huruf kecil, sebaliknya mengembalikan simbol сн itu sendiri (untuk Cyrillic, mengembalikan aksara asal).

    Jenis enum . Jenis terhitung ditentukan oleh penghitungan nilai yang boleh diterimanya. Setiap nilai dinamakan oleh beberapa pengecam dan terletak dalam senarai yang dikelilingi oleh kurungan, contohnya:

    warna = (merah, putih, biru);

    Penggunaan jenis terbilang menjadikan program lebih visual.

    Surat-menyurat antara nilai-nilai jenis terbilang dan nombor ordinal nilai-nilai ini ditentukan oleh susunan penghitungan: nilai pertama dalam senarai menerima nombor ordinal 0, kedua - 1, dsb. Kapasiti maksimum bagi jenis terhitung ialah 65536 nilai, jadi sebenarnya jenis terhitung menentukan beberapa subset daripada keseluruhan jenis perkataan dan boleh dianggap sebagai pengisytiharan padat kumpulan pemalar integer dengan nilai 0, 1, dsb.

    Menggunakan jenis terbilang meningkatkan kebolehpercayaan program dengan membenarkan anda mengawal nilai yang diterima oleh pembolehubah sepadan. Objek Pascal membenarkan penukaran terbalik: sebarang ungkapan jenis Perkataan boleh ditukar kepada nilai jenis terhitung melainkan nilai ungkapan integer melebihi kardinaliti jenis tersebut. Penukaran ini dicapai dengan menggunakan fungsi yang diisytiharkan secara automatik dengan nama jenis terhitung.

    Julat jenis . Jenis julat ialah subset jenis asasnya, yang boleh menjadi mana-mana jenis ordinal kecuali jenis julat.

    Jenis julat ditakrifkan oleh sempadan nilainya dalam jenis asas:

    <мин.знач.>..<макс.знач.>

    Di sini<мин. знач. >- nilai minimum julat jenis;<макс. знач. >- nilai maksimumnya.

    Jenis julat tidak perlu diterangkan dalam bahagian jenis, tetapi boleh ditentukan secara langsung apabila mengisytiharkan pembolehubah.

    Apabila menentukan jenis julat, anda mesti mengikut peraturan berikut:

    dua aksara “..” dianggap sebagai satu aksara, jadi jarak antara mereka tidak dibenarkan; sempadan kiri julat tidak boleh melebihi sempadan kanannya.

    Jenis julat mewarisi semua sifat jenis asasnya, tetapi dengan had kuasa yang lebih rendah. Khususnya, jika pembolehubah ditakrifkan.

    Pustaka standard Object Pascal termasuk dua fungsi yang menyokong kerja dengan jenis julat:

    Tinggi(x)- mengembalikan nilai maksimum jenis julat yang dimiliki oleh pembolehubah x;

    Rendah(x)- mengembalikan nilai minimum jenis julat.

    1.1.2 Jenis sebenar

    Tidak seperti jenis ordinal, yang nilainya sentiasa dipetakan kepada siri integer dan oleh itu diwakili secara mutlak dalam PC, nilai jenis sebenar mentakrifkan nombor arbitrari hanya dengan beberapa ketepatan terhingga bergantung pada format dalaman nombor nyata. .

    Jadual 1.4 - Jenis sebenar

    Dalam versi sebelumnya Delphi 1...3 jenis Nyata menduduki 6 bait dan mempunyai julat nilai dari 2.9*10-39 hingga 1.7*1038. Dalam versi 4 dan 5 jenis ini bersamaan dengan jenis berganda. Jika perlu (atas sebab keserasian) gunakan 6-bait Nyata, anda perlu menentukan arahan pengkompil (SREALCOMPATIBILITY ON).

    Seperti yang dapat dilihat dari jadual. 1.4, nombor nyata dalam Objek Pascal menduduki dari 4 hingga 10 bait bersebelahan dan mempunyai struktur berikut dalam memori PC.

    Berikut s ialah digit tanda nombor; e - bahagian eksponen; mengandungi susunan binari; m ialah mantissa nombor itu.

    Mantissa m mempunyai panjang 23 (untuk bujang) sehingga 63 (untuk Dipanjangkan) bit binari, yang memastikan ketepatan 7...8 untuk bujang dan 19...20 untuk Dipanjangkan digit perpuluhan. Titik perpuluhan (koma) tersirat sebelum digit kiri (paling penting) mantissa, tetapi apabila beroperasi pada nombor, kedudukannya dialihkan ke kiri atau kanan mengikut susunan binari nombor yang disimpan dalam bahagian eksponen , oleh itu operasi pada nombor nyata dipanggil aritmetik titik terapung (koma).

    Ambil perhatian bahawa coprocessor aritmetik sentiasa memproses nombor dalam format Dipanjangkan, dan tiga jenis sebenar lain dalam kes ini diperolehi dengan hanya memotong keputusan kepada saiz yang diperlukan dan digunakan terutamanya untuk menjimatkan memori.

    Jenis menduduki kedudukan istimewa dalam Objek Pascal kompaun Dan mata wang, yang dianggap sebagai nombor nyata dengan bahagian pecahan dengan panjang tetap: in kompaun bahagian pecahan mempunyai panjang 0 digit, iaitu ia hanya tiada, dalam mata wang panjang bahagian pecahan ialah 4 tempat perpuluhan. Malah, kedua-dua jenis mentakrifkan integer bertanda besar yang menyimpan 19...20 digit perpuluhan bererti (secara dalaman mereka menduduki 8 bait bersebelahan). Pada masa yang sama, dalam ungkapan kompaun Dan mata wang serasi sepenuhnya dengan mana-mana jenis sebenar lain: semua operasi sebenar ditakrifkan padanya, ia boleh digunakan sebagai hujah kepada fungsi matematik, dsb. Bidang aplikasi yang paling sesuai untuk jenis ini ialah pengiraan perakaunan.

    1.1.3 Jenis tarikh-masa

    Jenis datetime ditakrifkan oleh pengecam standard TDateTime dan direka bentuk untuk menyimpan kedua-dua tarikh dan masa secara serentak. Dalam perwakilan dalaman ia memerlukan 8 bait dan serupa mata wang ialah nombor nyata dengan bahagian pecahan tetap: bahagian integer nombor menyimpan tarikh, dan bahagian pecahan menyimpan masa. Tarikh ditakrifkan sebagai bilangan hari yang telah berlalu sejak 30 Disember 1899, dan masa sebagai pecahan hari yang telah berlalu sejak 0 jam, jadi nilai 36444.837 sepadan dengan tarikh 10/11/1999 dan masa 20:05. Bilangan hari boleh menjadi negatif, tetapi nilai yang lebih kecil daripada -693594 (bersamaan dengan tarikh 00.00.0000 dari Nativity of Christ) diabaikan oleh fungsi untuk menukar tarikh kepada jenis rentetan.

    Di atas jenis data TDateTime operasi yang sama ditakrifkan seperti pada nombor nyata, dan ungkapan jenis ini boleh melibatkan pemalar dan pembolehubah jenis integer dan nyata.

    Kerana jenis TDateTime serasi dengan format nombor nyata, anda boleh dengan mudah menentukan tarikh yang beberapa hari ke hadapan atau kembali dari yang diberikan: untuk melakukan ini, sudah cukup untuk menambah atau menolak integer yang dikehendaki dari tarikh yang diberikan, masing-masing.

    1.2 Jenis berstruktur

    Mana-mana jenis berstruktur (dan dalam Objek Pascal terdapat empat daripadanya: tatasusunan, rekod, set dan fail) dicirikan oleh kepelbagaian elemen yang membentuk jenis ini. Setiap elemen, seterusnya, boleh tergolong dalam jenis berstruktur, yang membolehkan kita bercakap tentang kemungkinan jenis sarang. Objek Pascal membenarkan kedalaman jenis sarang sewenang-wenangnya, tetapi jumlah panjang mana-mana daripada mereka dalam perwakilan dalaman tidak boleh melebihi 2 GB.

    Untuk keserasian dengan Pascal standard, Objek Pascal membenarkan perkataan terpelihara untuk diletakkan sebelum pengisytiharan jenis berstruktur dibungkus, mengarahkan pengkompil untuk menyimpan apabila mungkin memori yang diperuntukkan untuk objek jenis berstruktur; tetapi pengkompil sebenarnya mengabaikan arahan ini: "membungkus" data ke dalam Objek Pascal dilakukan secara automatik di mana mungkin.

    1.2.1 Tatasusunan

    Tatasusunan dalam Objek Pascal dalam banyak cara serupa dengan jenis data yang serupa dalam bahasa pengaturcaraan lain. Ciri tersendiri tatasusunan ialah semua komponennya adalah data dari jenis yang sama (mungkin berstruktur). Komponen ini boleh diatur dengan mudah dan mana-mana satu daripadanya boleh diakses hanya dengan menyatakan nombor sirinya.

    Penerangan jenis tatasusunan ditentukan seperti berikut:

    <имя типа>= tatasusunan[<сп.инд.типов>] daripada<тип>;

    Di sini<имя типа>- pengecam yang betul; tatasusunan, daripada- perkataan terpelihara (susunan, daripada);<сп.инд.типов>- senarai satu atau lebih jenis indeks, dipisahkan dengan koma; kurungan persegi yang membingkai senarai adalah keperluan sintaks;<тип>- sebarang jenis Objek Pascal.

    Mana-mana jenis ordinal dengan kapasiti tidak lebih daripada 2 GB boleh digunakan sebagai jenis indeks dalam Objek Pascal (iaitu, kecuali Kata Panjang Dan Int64)

    Kedalaman sarang jenis berstruktur secara umum, dan, akibatnya, tatasusunan, adalah sewenang-wenangnya, jadi bilangan elemen dalam senarai jenis indeks (saiz tatasusunan) tidak terhad, bagaimanapun, jumlah panjang perwakilan dalaman mana-mana tatasusunan tidak boleh lebih daripada 2 GB. Dalam ingatan PC, elemen tatasusunan mengikut satu sama lain sedemikian rupa sehingga apabila beralih dari alamat rendah ke tinggi, indeks paling kanan tatasusunan berubah paling cepat.

    Dalam Objek Pascal, anda boleh menggunakan satu pengendali tugasan untuk memindahkan semua elemen satu tatasusunan kepada tatasusunan lain daripada jenis yang sama.

    1.2.2 Rekod

    Rekod ialah struktur data yang terdiri daripada bilangan komponen tetap yang dipanggil medan rekod. Tidak seperti tatasusunan, komponen (medan) rekod boleh terdiri daripada jenis yang berbeza. Untuk membolehkan anda merujuk kepada satu atau komponen rekod yang lain, medan tersebut dinamakan.

    Struktur pengisytiharan jenis jawatan ialah:

    <имятипа>=rekod<сп.полей>akhir;

    Di sini<имя типа>- pengecam yang betul; rekod/tamat- perkataan terpelihara (rekod, tamat);<сп.полей>- senarai medan; ialah urutan bahagian rekod yang dipisahkan oleh koma bertitik.

    Setiap bahagian rekod terdiri daripada satu atau lebih pengecam medan, dipisahkan dengan koma.

    Tawaran kes...daripada, yang membuka bahagian varian, secara cetek serupa dengan pengendali pemilihan yang sepadan, tetapi sebenarnya hanya memainkan peranan sejenis perkataan perkhidmatan yang menandakan permulaan bahagian varian. Itulah sebabnya pada akhir bahagian varian anda tidak boleh meletakkan tamat seperti pasangan ke kes...daripada. (Memandangkan bahagian varian sentiasa yang terakhir dalam rekod, ia masih diikuti oleh penghujung, tetapi hanya sebagai pasangan untuk dirakam). Kunci pemilihan ayat kes...daripada diabaikan secara berkesan oleh pengkompil: satu-satunya keperluan untuknya dalam Object Pascal ialah kunci mentakrifkan beberapa jenis ordinal standard atau yang diisytiharkan sebelumnya.

    Nama medan mestilah unik dalam rekod tempat ia diisytiharkan, namun, jika rekod mengandungi medan rekod, iaitu, ia bersarang antara satu sama lain, nama itu boleh diulang pada tahap sarang yang berbeza.

    1.2.3 Set

    set - ini adalah set jenis objek yang sama secara logik berkait antara satu sama lain. Sifat perhubungan antara objek hanya tersirat oleh pengaturcara dan tidak dikawal dalam apa jua cara oleh Objek Pascal. Bilangan elemen yang termasuk dalam set boleh berbeza dari 0 hingga 256 (set yang tidak mengandungi unsur dipanggil kosong). Ia adalah ketidaktekalan bilangan elemen mereka yang ditetapkan berbeza daripada tatasusunan dan rekod.

    Dua set dianggap setara jika dan hanya jika semua elemennya adalah sama, dan susunan unsur dalam set itu adalah acuh tak acuh. Jika semua elemen satu set turut dimasukkan ke dalam set yang lain, set pertama dikatakan termasuk dalam set kedua. Set kosong disertakan dalam mana-mana set lain.

    Penerangan jenis set ialah:

    <имя типа>= set daripada<базовый тип>;

    Di sini<имя типа>- pengecam yang betul; set- perkataan terpelihara (set, daripada);<базовый тип>- jenis asas elemen set, yang boleh menjadi sebarang jenis ordinal, kecuali Word, Integer, Longint, Int64 .

    Untuk menentukan set, pembina set yang dipanggil digunakan: senarai spesifikasi elemen set, dipisahkan dengan koma; senarai itu dikelilingi oleh kurungan segi empat sama. Spesifikasi elemen boleh menjadi pemalar atau ungkapan jenis asas, atau jenis julat jenis asas yang sama.

    Struktur dalaman set adalah sedemikian rupa sehingga setiap elemennya diberikan satu digit binari (satu bit); jika elemen dimasukkan dalam set, bit yang sepadan mempunyai nilai 1, sebaliknya - 0. Pada masa yang sama, unit minimum memori ialah satu bait yang mengandungi 8 bit, jadi pengkompil memperuntukkan satu bait kepada set, dan akibatnya kuasa setiap daripada mereka menjadi sama 8 unsur. Kapasiti maksimum set ialah 256 elemen. Untuk set sedemikian, pengkompil memperuntukkan 16 bait bersebelahan.

    Dan satu lagi percubaan: tukar julat jenis asas kepada 1..256. Walaupun kapasiti jenis ini ialah 256 elemen, apabila cuba menyusun atur cara pengkompil akan melaporkan ralat: Set mungkin mempunyai paling banyak 256 elemen kerana penomboran elemen set bermula dari sifar tanpa mengira sempadan bawah yang diisytiharkan dalam atur cara . Pengkompil membenarkan penggunaan sebagai jenis asas bagi jenis julat integer dengan sempadan minimum 0 dan maksimum 255, atau mana-mana jenis terhitung dengan tidak lebih daripada 256 elemen (kardinaliti maksimum jenis terhitung ialah 65536 elemen).

    1.3 Rentetan

    Jenis berikut digunakan untuk pemprosesan teks dalam Objek Pascal:

    rentetan pendek ShortString atau rentetan [n], di mana n<= 255;

    tali panjang tali ;

    garis lebar WideString ;

    rentetan terminal nol pchar .

    Persamaan jenis ini ialah setiap rentetan dianggap sebagai tatasusunan aksara satu dimensi, bilangan aksara yang boleh berubah dalam atur cara berjalan: untuk rentetan [n], panjang rentetan berubah daripada 0 kepada n, untuk tali Dan pchar- dari 0 hingga 2 GB.

    Standard Pascal hanya menggunakan rentetan pendek Rentetan [n]. Dalam ingatan, rentetan sedemikian diperuntukkan n+i bait, bait pertama mengandungi panjang semasa rentetan, dan aksara itu sendiri terletak bermula dari bait ke-2. Memandangkan panjang rentetan dalam kes ini ialah satu bait, panjang maksimum rentetan pendek tidak boleh melebihi 255 aksara. Jenis standard digunakan untuk mengisytiharkan rentetan pendek dengan panjang maksimum ShortString(bersamaan Tali).

    Windows secara meluas menggunakan rentetan terminal nol, yang merupakan rentetan aksara yang dihadkan oleh aksara #o. Panjang maksimum rentetan sedemikian dihadkan hanya oleh memori yang tersedia dan boleh menjadi sangat besar.

    Jenis baru telah diperkenalkan dalam versi 32-bit Delphi tali, menggabungkan kemudahan kedua-dua jenis. Apabila bekerja dengan jenis ini, memori diperuntukkan mengikut keperluan (secara dinamik) dan dihadkan oleh memori tersedia yang tersedia untuk program.

    1.4 Penunjuk dan ingatan dinamik

    1.4.1 Memori dinamik

    Memori dinamik- ini ialah RAM PC yang disediakan kepada program semasa operasinya. Peletakan data dinamik bermaksud penggunaan memori dinamik secara langsung semasa program sedang berjalan. Sebaliknya, peruntukan statik dilakukan oleh pengkompil Objek Pascal apabila program disusun. Dengan peletakan dinamik, jenis mahupun jumlah data yang akan diletakkan tidak diketahui terlebih dahulu.

    1.4.2 Papan tanda

    PC RAM ialah koleksi sel untuk menyimpan maklumat - bait, setiap satunya mempunyai nombor sendiri. Nombor-nombor ini dipanggil alamat, ia membolehkan anda mengakses mana-mana bait memori. Objek Pascal menyediakan pengaturcara dengan cara yang fleksibel untuk menguruskan memori dinamik - yang dipanggil penunjuk. Penunjuk ialah pembolehubah yang mengandungi alamat bait memori sebagai nilainya. Menggunakan penunjuk, anda boleh meletakkan mana-mana jenis data yang diketahui dalam Objek Pascal dalam memori dinamik. Hanya sebahagian daripada mereka ( Byte, Char, ShortInt, Boolean) menduduki satu bait dalam perwakilan dalaman, selebihnya - beberapa bait yang bersebelahan. Oleh itu, penunjuk sebenarnya hanya menangani bait pertama data.

    Biasanya, penunjuk dikaitkan dengan beberapa jenis data. Kami akan memanggil penunjuk sedemikian ditaip. Untuk mengisytiharkan penunjuk yang ditaip, gunakan ikon ^, yang diletakkan di hadapan jenis yang sepadan.

    Dalam Objek Pascal, anda boleh mengisytiharkan penunjuk tanpa perlu mengaitkannya dengan mana-mana jenis data tertentu. Jenis standard digunakan untuk ini penunjuk, Sebagai contoh:

    Penunjuk jenis ini akan dipanggil tidak ditaip. Memandangkan penunjuk yang tidak ditaip tidak dikaitkan dengan jenis tertentu, ia boleh digunakan untuk memperuntukkan data secara dinamik yang struktur dan jenisnya berubah semasa program berjalan.

    Seperti yang telah disebutkan, nilai penunjuk ialah alamat pembolehubah dalam ingatan, jadi anda menjangkakan bahawa nilai satu penunjuk boleh dihantar ke yang lain. Sebenarnya ini tidak benar. Dalam Object Pascal, anda hanya boleh menghantar nilai antara penunjuk yang dikaitkan dengan jenis data yang sama.

    1.4.3 Memperuntukkan dan membebaskan memori dinamik

    Semua memori dinamik dalam Objek Pascal dianggap sebagai tatasusunan bait berterusan, yang dipanggil timbunan.

    Memori untuk sebarang pembolehubah yang diperuntukkan secara dinamik diperuntukkan oleh prosedur Baharu. Parameter untuk memanggil prosedur ini ialah penunjuk ditaip. Hasil daripada akses, penunjuk memperoleh nilai yang sepadan dengan alamat dari mana data boleh diletakkan. Nilai yang ditunjuk oleh penuding, iaitu, data sebenar yang diperuntukkan kepada timbunan, ditunjukkan oleh tanda ^, yang diletakkan sejurus selepas penuding. Jika tiada tanda ^ selepas penunjuk, maka ini bermakna alamat tempat data berada. Adalah masuk akal untuk memikirkan semula apa yang baru dikatakan: nilai mana-mana penunjuk ialah alamat, dan untuk menunjukkan bahawa kita tidak bercakap tentang alamat, tetapi mengenai data yang terletak di alamat ini, a ^ diletakkan selepas penunjuk (kadangkala ini dirujuk sebagai penuding penyahrujukan).

    Data yang diperuntukkan secara dinamik boleh digunakan di mana-mana dalam atur cara yang sah untuk pemalar dan pembolehubah jenis yang sesuai

    Memori dinamik bukan sahaja boleh diambil dari timbunan, tetapi juga dikembalikan semula. Untuk melakukan ini, gunakan prosedur Buang. Sebagai contoh, pengendali

    Buang(pJ);

    Buang(pR);

    akan kembali ke timbunan memori yang sebelum ini diberikan kepada penunjuk pJ dan pR (lihat di atas).

    Ambil perhatian bahawa prosedur Buang (pPtr) tidak mengubah nilai penuding pPtr, tetapi hanya mengembalikan memori yang dikaitkan sebelum ini dengan penuding ini ke timbunan. Walau bagaimanapun, menggunakan semula prosedur kepada penunjuk percuma akan mengakibatkan ralat masa jalan. Pengaturcara boleh menandakan penunjuk yang dibebaskan dengan perkataan terpelihara nil.

    1.5 Jenis alias

    Untuk sebarang jenis anda boleh mengisytiharkan seberapa banyak alias yang anda suka. Sebagai contoh:

    TMyInteger = Integer;

    Pada masa hadapan, alias boleh digunakan dengan cara yang sama seperti jenis asas:

    Mylnt: TMyInteger;

    Mylnt:= 2*Bulat(pi);

    Alias ​​jenis ini biasanya digunakan untuk meningkatkan keterlihatan kod program. Walau bagaimanapun, dalam Object Pascal anda boleh mengisytiharkan alias yang ditaip kuat dengan menambah jenis perkataan terpelihara sebelum nama jenis asas:

    TMyIntegerType = jenis Integer;

    MylntVar: TMyIntegerType;

    Dari sudut pandangan pengkompil, alias yang ditaip adalah serasi dengan jenis asas dalam pelbagai jenis ungkapan, tetapi ia sebenarnya mengisytiharkan jenis data baharu, jadi ia tidak boleh digunakan sebagai parameter formal untuk memanggil subrutin dan bukannya jenis asas. Jika, sebagai contoh, prosedur diisytiharkan

    fungsi MylntFunc(APar: integer): Integer;

    maka rayuan sedemikian kepadanya

    MylntFunc(MylntVar)

    akan dianggap salah oleh penyusun.

    Alias ​​yang ditaip kuat memaksa pengkompil untuk menjana maklumat jenis masa jalan (RTTI). Maklumat ini biasanya digunakan oleh persekitaran Delphi untuk menyokong fungsi pelbagai jenis editor.