Ma'lumotlarning tuzilgan turlari. Teepee, scho rerahuvannya

Qaysi shaxssiz qiymat identifikatorlar ro'yxati bilan o'ralgan.

Entsiklopedik YouTube

  • 1 / 5

    Qayta nomlash turi identifikatorlar to'plami sifatida tayinlanadi, mov ko'rinishi bo'yicha u doimiyning standart nomlanishi bilan bir xil rol o'ynaydi, balki turga nisbatan ham. Paskal filmidagi tip-perehuvannyaning klassik tavsifi quyidagicha ko'rinadi:

    turi Cardsuit = (klublar, olmoslar, yuraklar, belkuraklar);

    Bu yerda, ma'lumotlar turi bo'yicha goloshennya amalga oshiriladi Cardsuit (karta kostyumi), ba'zi bir ortiqcha konstantalar bilan buti be-yakning qandaydir ma'nolari bilan. Cardsuit turini o'zgartirish klublar, olmoslar, yuraklar, belaklar qiymatlaridan birini olishi mumkin, tur qiymatini teng yoki notekisga o'zgartirishga imkon beradi va tanlangan operatorlarda o'zgarishlarni (Paskal uchun - case) kiritishi mumkin. qiymat, variantlarni aniqlash.

    Qayta yozish dasturni ko'proq o'qish imkonini beradi, shuning uchun qo'shiq qiymatlarini kodlaydigan "sehrli raqamlar" ni o'qilishi mumkin bo'lgan nomlarga almashtirish imkonini beradi.

    Deyakih movdagi pererahuvan asosida tipi-ko'paytirgichlar yaratilishi mumkin. Ba'zida shaxsiyatsiz bu enum tipidagi noyob qiymatlarni tartibsiz yozish sifatida tushuniladi (va tavsiflanadi).

    Rebuffed qilinmoqda turi o'zgarishlar va ovozlarda g'olib bo'lishi mumkin rasmiy parametrlar funktsiyalari (protseduralar, usullar). Qayta belgilangan turdagi qiymatlar boshqa turdagi funksiyaga o'tkazilishi va boshqa turdagi funksiya parametrlari orqali o'tkazilishi mumkin. Bundan tashqari, haddan tashqari himoyalangan turning qiymati har doim tenglik va notekislik uchun tan olinadi. Deyakí movi pídrimuyut ínshí opíríí pívnyannya znacheni rehashirovaníh ínív. Vaqti-vaqti bilan bir-biriga o'xshash ikkita qiymatni tenglashtirish natijasi ovozli turlarda qiymatlar ketma-ketligi bo'yicha ko'rsatiladi - ovozsiz turda avvalroq aniqlangan qiymat, "kamroq" qiymat qabul qilinadi. hisobga, bu keyinroq keskinlashtiriladi. Boshqa tirilgan turlar yoki tiriltirilgan turdagi qiymatlarning ma'lum bir diapazoni ham massiv uchun indeks turi sifatida ishlatilishi mumkin. Shu tarzda, massivda tanlangan diapazonning teri qiymati uchun bitta element va ovozli tipdagi qiymatning o'tish tartibida elementlarning o'tishning haqiqiy tartibi mavjud.

    Amalga oshirish

    Butun sonlar yordamida taqdim etiladigan pererahuvan ma'nosini tuzish jarayonini boshlang. Muayyan harakat dasturlashiga qarab, u namoyon bo'lishi mumkin yoki dasturchiga ko'proq bog'langan yoki boshqa "aylanib o'tish manevralari" dan yordam olish uchun sizga qulayroq bo'lishi mumkin (masalan, remapping turi qiymatini birinchi darajali konvertatsiya qilish). “raqam raqami” turining qiymati) yoki dasturchini dasturlash uchun. Barcha variantlar o'zlarining ijobiy va salbiy tomonlariga ega. Bir tomondan, tur-perehuvannyaga aylanishi mumkin bo'lgan doimiylarning raqamli qiymatlarini o'zgartirish imkoniyati, ayniqsa yomon bo'lsa, bu turlarning o'zgaruvchanligini his qilish imkonini beradi va kechirimlarning paydo bo'lishi uchun muammo yaratadi (agar mavjud bo'lsa). raqamli qiymatlar bo'lib, ular uchun turdagi boshqa konstantalar mavjud emas). Boshqa tomondan, amallarning ma'nolarini aniq boshqarish qo'shimcha qobiliyat. Misol uchun, u boshqa tillarda yozilgan modullar bilan interfeysni tashkil qilishda yozishni tiklash imkonini beradi, masalan, tayinlangan to'plam qiymatining kodlangan raqamlarini kiritish yoki aylantirish uchun stink.

    Yana bir imkoniyat, kinoni teng ravishda amalga oshirish uchun tipini qanday berish kerak - xotira tejamkorligi. Ushbu turdagi qiymatni tejash uchun turi-perehuvannya uchun kichik majburiyat bilan, shuncha ko'p janglarni o'tkazing (karta kostyumining induksiyalari har bir qiymat uchun faqat ikkita jangni o'tkazishi mumkin, o'sha soatda, standart raqam sifatida, ko'proq sondagi raqam. g'alaba qozongan arxitekturalar 32 ta jangni oladi - 16 baravar ko'p), kompyuterchilar esa bu fakt xotiradan ma'lumotlarni saqlashni kuchaytirish uchundir. Bu, ayniqsa, muhim bo'lishi mumkin, chunki tip-perehuvan qiymati bir yozuvda saqlanadi - bu katta raqamlarni qayta ishlash jarayonida yozuvlarni yaxshilash boy xotiraga olib kelishi mumkin. To'g'ri, shuni ta'kidlash kerakki, kompilyatorlar bunday imkoniyatni amalga oshirmaydi, qabul qiladi, Dam olish vaqti, agar kompyuter xotirasi arzonlashgan bo'lsa

    Tanqid

    Qayta ishlash turi dasturlash tillari uchun an'anaviy bo'lib, u keng ko'lamda amalga oshirilishi mumkin va ko'pincha tushunarli sifatida qabul qilinadi. Proteo turi dasturlash nazariyotchilari va amaliyotchilari tomonidan ham tanqiddan holi emas. Shunday qilib, qachon rozrobtsí movi dasturlash Oberon pererahovani typei imkoniyatlar ro'yxatiga isrof, vidalaneh z movi. Niklaus Virt, kino sotuvchisi, quyidagi sabablarni keltirib:

    Boshqa tomondan, masalan, Java-da, siz bekor qilingan tur uchun qasos ololmaysiz, bu tur nafaqat aniqlik belgisi, balki isrofgarchilikdir: doimiylarning qiymati va o'zgaruvchini tayinlash imkoniyati uchun. qiymatning o'zgarishi, go'yo ular ushbu doimiylarning bir xiliga mos keladi.

    Turli tillarda perexuvanning tavsifi

    Enum karta kostyumi (CLUBS, DIAMONDS, HEARTS, SPADES);

    Zaif matn terish va C-ga o'xshash sintaksisli dinamik filmlar (masalan, Perl yoki JavaScript) haddan oshib ketmaydi.

    Mening Paskalim o‘zgarishlari bilan tavsiflanadi turi. Tur - o'zgarishlarning kuchi, chunki o'zgarish ushbu tur tomonidan ruxsat etilgan shaxsiy bo'lmagan qiymatlarni olishi va ushbu tur bo'yicha ruxsat etilgan shaxssiz operatsiyalarda ishtirok etishi mumkin.

    Tur o'zgartirishni qabul qiladigan shaxssiz ruxsat etilgan qiymatlarni belgilaydi bu tur. Bu ushbu turni o'zgartirish uchun ruxsat etilgan operatsiyalarning shaxssizligini anglatadi va ma'lumotlarni taqdim etishni anglatadi. operativ xotira kompyuter.

    Misol uchun:

    n:integer;

    Paskal statik til bo'lib, u o'zgarish turi tavsif bilan aniqlanishi va o'zgartirilishi mumkinligini aniq ko'rsatadi. Mova Paskal maê razvinenu tizimi vidív - barcha da ní víní ma'lumotlar turidan oldinda yotardi (yoki standart turi, movni ishlab chiqish jarayonida yaratilgan yoki dasturchi bo'lgan koristuvach turi). Dasturchi standart turlar yoki hatto allaqachon tayinlangan qisqa turlar asosida katlamaning o'ziga xos turi va tuzilishini yaratishi mumkin. Yaratilgan turlarning soni panjara bilan o'ralgan emas. Dasturdagi tipi koristuvach format uchun TYPE bo'limida aytiladi:

    [im'ya] = [turi]

    Standart turlar tizimi ishlab chiqilishi mumkin, ierarxik tuzilish.

    Ierarxiyada birinchi oddiy tip. Dasturlashning bunday turlari ko'pchilik tillarda oddiy deb ataladi, ammo Paskalda badbo'y hid buklanadigan tuzilishga ega bo'lishi mumkin.

    Strukturaviy tip budyuyuyutsya eng oddiy turlaridan qo'shiq kuylash uchun.

    Vkazivniki dan shakllangan oddiy turlar deb zavdannya manzili uchun dasturlar da vikoristovuyutsya.

    Davolash bo'yicha maslahatlarê novvedennyam mov Turbo Pascal, va hidlar zminnyh kabi pastki dasturlarga kirishga imkon beradi.

    Ob'ektlar Bu ham yangilik bo'lib, asl film uchun badbo'y hid ob'ektga yo'naltirilgan film sifatida tan olingan.

    Paskal tipidagi filmning 5 turi mavjud. Kozhen í̈x qabul qilingan qiymatlar diapazoni va ularning xotira vaqtini tavsiflaydi.

    Raqamlar soni ro'yxatidan biz turlarning hissasini hisobga olishimiz kerak, tobto. kichikroq diapazonli maslahatlar kengroq diapazonli maslahatlarga kiritilishi mumkin. Bayt turi 2 va 4 baytni egallagan barcha turlarga qo'shimchalarga ega bo'lishi mumkin. Shu bilan birga, 1 baytni egallagan Short Int tipida Word turiga qo'shimchalar bo'lishi mumkin emas, ballar salbiy qiymatlarga ega bo'lishi mumkin emas.

    Siz 5 ta nutq turini ko'rishingiz mumkin:

    Kompyuter tipisni aniq ko'radi. vídmínu víd tílih typív znachennya tílíhnyh typív vyznaê bo'yicha deakoy kíntsevoyu chíchníê bilan raqam etarli, scho raqam formatida yotadi. Nutq raqamlari qattiq yoki suzuvchi nuqtali kompyuterda taqdim etiladi.

    2358.8395

    0.23588395*10 4

    0,23588395*E 4

    Ayniqsa, Paskal lageri Comp turini oladi, aslida, kattaroq raqam belgisi hisoblanadi. Bu turdagi summísny z usíma nutq turlari va katta butun son uchun ovozli bo'lishi mumkin. Haqiqiy raqamlarni o'nlab suzuvchi koma bilan topshirganda, nuqta har doim chapda yoki katta mantisda bo'ladi, lekin raqam chapga yoki o'ngga zsuvaetsya bo'lganda.

    Buyurtma turi

    Oddiy turdagi o'zingizning spratingiz bilan ovqatlanish uchun oddiy turlar. Ulardan oldin ko'rish mumkin:

    • barcha tsili tipi;
    • belgilar turi;
    • mantiqiy turi;
    • turdagi diapazon;
    • turi, scho pererahovuêtsya.

    Tartibiy turlar uchun bosh belgilari ê: turdagi teri mumkin bo'lgan qiymatlar sonini davom ettirishi mumkin; bu turlarning ma'nosini daraja bo'yicha va teri raqami bilan tartiblash mumkin, tartib raqami kabi bir xil raqamni qo'ying; Tartib turlarining susidni qiymatlari bittaga o'rnatiladi.

    Tartib tipidagi qiymatga ODD(x) funksiyasi uzatilishi mumkin, shunda x argumentining tartib raqami aylantiriladi.

    PRED(x) funksiyasi - ordinal tipdagi qiymatni oldinga burish. PRED(A) = 5.

    Funktsiya SUCC (x) - tartib turining keyingi qiymatini o'zgartiradi. SUCC(A) = 5.

    belgilar turi

    Ramziy turning qiymati 256 ta belgidan iborat bo'lib, buzilgan kompyuterning kod jadvalida ruxsat etilgan belgilarsiz. Popatkov maydoni ko'paytiriladi, shuning uchun diapazon 0 dan 127 gacha, u anonim ASCII kodlarini belgilaydi, bu erda alifbo, arab raqamlari va maxsus belgilar tanlanadi. Kob maydonining belgilari kompyuter klaviaturasida o'rnatiladi. Qadimgi hudud muqobil deb ataladi, u milliy alifbolarning belgilarini va ASCII kodiga mos kelmaydigan turli xil maxsus belgilar va psevdografik belgilarning o'rnini bosadi.

    Ramziy qiymat bir bayt operativ xotirani egallaydi. Dasturda ma'nolar apostrofga o'xshaydi. Xuddi shu qiymat bir xil ASCII kodida o'rnatilishi mumkin. Har qanday holatda, raqam oldiga # belgisini qo'yish kerak, bu belgi uchun koddir.

    C:= 'A'

    Mantiqiy (mantiqiy) turi

    Ikkita mantiqiy qiymat mavjud: True (True) va Nonsense (False). Ushbu turdagi o'zgarishlar BOOLEAN xizmat so'zi bilan beriladi. Mantiqiy turdagi qiymatlar operativ xotiradan bir baytni egallaydi. Haqiqat va Yolg'on qiymatlariga 1 va 0 raqamli qiymatlar berilgan.

    Tur oralig'i

    Ê tartibli tur bo'lishi mumkin bo'lgan asosiy turdagi submultiplikator. Tur oralig'i asosiy turning o'rtasida joylashgan chegaralar bilan belgilanadi.

    [minimal qiymat]…[maksimal qiymat]

    Type-diapazonini qo'shiq turi sifatida Type bo'limida o'rnatish mumkin yoki u to'g'ridan-to'g'ri Var bo'limida o'rnatilishi mumkin.

    Tur diapazoni tayinlanganda, quyidagilarni hisobga olish kerak:

    • chap chegara o'ng kordonni qayta ko'rib chiqishda aybdor emas;
    • Turi-diapazoni asosiy turdagi barcha kuch pasayishiga, lekin obezhennyami bilan, pov'yazanimi z yogo kamroq zulm.

    Qayta tiklash turi

    Daniya turi ordinal turlarga ko'tariladi va qayta tirilgan qadriyatlarga tayinlanadi, qaysi vinolarni tiriltirish mumkin. Teri qiymati sing identifikatori deb ataladi va dumaloq ibodatxonalar bilan tuzilgan ro'yxatga yaqin joylashgan. Qabul qilinadigan tur Turda o'rnatiladi:

    xalqlar = (erkaklar, ayollar);

    Birinchi qiymat 0, boshqa qiymat 1 va hokazo.

    Maksimal kuchlanish 65 535 qiymatni tashkil qiladi.

    string turi

    Qator turi tuzilgan turlar guruhiga qo'shiladi va asosiy Char tipiga qo'shiladi. Tartib tur turlardan oldin kelmaydi. Vín vyznaê shaxssiz ramziy lantsyuzhkív dovílnoí̈ dovzhini 255 tagacha belgi.

    Dasturda satr turiga String so'zi qo'shiladi. Oskylki String - asosiy turi turini o'zgartirish String Varga tayinlangan. Kvadrat qo'llardagi String uchun qator turini yalang'och o'zgartirganda, qatorning to'liq uzunligini qo'shish mumkin. Qo'shish uchun 0 dan 255 gacha butun son kiritiladi.

    Fam: String;

    Qator uzunligini ko'rsatish kompilyatorga operativ xotirada ko'rsatilgan baytlar sonini kiritish imkonini beradi. Agar qatorning yuqori qismi ko'rsatilmagan bo'lsa, u holda kompilyator maksimal mumkin bo'lgan bayt sonini (255) hisoblab chiqadi.

    C++ standartida haqiqiy belgi sifatida ishlatilishi mumkin bo'lgan ma'lumotlar turi mavjud emas. Ramziy ma'lumotni ifodalash uchun ma'lumotlarning ikki turi mavjud, tasodifiy qiymatlar - tse turlari char va wchar_t .

    Belgilar turiga o'zgartirish faqat bitta belgini saqlash uchun ajratilgan (masalan, harflar yoki men sinab ko'rdim). Kompyuter xotirasida belgilar butun sonlar sifatida saqlanadi. Belgilar va kodlar o'rtasidagi haqiqiylik aniqlanadi kodlash jadvali, kompyuter shaklida yolg'on qanday operatsion tizim. Mayzhe umuman kodlash jadvallariê lotin alifbosining katta va kichik harflari, 0, ..., 9 raqamlari va deyakí maxsus belgilar. Eng keng kodlash jadvaliє belgilar jadvali ASCII ( Axborot almashish uchun Amerika standart kodeksi- Amerika standart kod ma'lumot almashish uchun).

    Kompyuter xotirasidagi parchalar butun sonlar sifatida saqlanadi, shuning uchun char turi aslida int tipining kichik to'plamidir.

    Belgilar turi qiymati uchun 1 bayt kiriting.

    Belgi turini o'zgartirish mumkin spetsifikatsiyalar imzolanganі imzosiz. Ma'lumotlar turini bajaring imzolangan belgi-128 dan 127 gacha bo'lgan qiymatni tanlashingiz mumkin. imzosiz belgi qiymatlar 0 dan 255 gacha bo'lishi mumkin. Kodlash uchun ASCII kodi ishlatiladi. 0 dan 31 gacha kodli belgilar xizmat belgilaridan oldin ko'rinadi va faqat kiritish-chiqarish operatorlarida mustaqil ma'noga ega bo'lishi mumkin.

    Char tipidagi qiymatlar belgilangan diapazonlardan raqamlarni tanlash uchun ham ajratilgan.

    Wchar_t turi kodlash uchun 1 baytga ega bo'lmagan belgilar to'plami bilan ishlash uchun mo'ljallangan, masalan, Unicode kodlash. wchar_t turiga kengaytirish 2 baytni tashkil qiladi. Dastur sifatida wchar_t tipidagi satr konstantalarini tanlash kerak, ular L prefiksi bilan yoziladi, masalan, L "Word".

    Misol uchun:

    char c="c"; char a, b; char r=("A", "B", "C", "D", "E", "F", "0"); char s = "ABCDEF";

    Mantiqiy (mantiqiy) ma'lumotlar turi (bool turi)

    Film C++ ikki mantiqqa ega (to'g'ri, bema'nilik). Yolg'on nol qiymatga ega, haqiqat bitta. Ushbu turdagi qiymatlar haqiqiy va noto'g'ri qiymatlarni qabul qilishi mumkin.

    Qiymatni noto'g'ri ko'rsatishning ichki shakli, qiymat rost deb talqin qilinadimi yoki yo'qmi, 0 ga baholanadi. Ba'zi C++ film kompilyatorlarida bunday tur mavjud emas, qaysi turdagi int turi mavjud, bu to'g'ri qiymatlar uchun 1 va paritet qiymatlari uchun 0. mantiqiy turi 1 bayt kiriting.

    To'lanishi kerak bo'lgan tur (enum turi)

    Ushbu tur identifikatorlar to'plami sifatida aniqlanadi, ular identifikatsiya qilish uchun noyob va qulay bo'lgan doimiylar sonining eng muhim nomlari hisoblanadi. Bu o'rinda, pererakhuvannya ê butun qadriyatlar silsilasini buyurtma. Xushbo'y hid o'z sintaksisiga ega bo'lishi mumkin va uni wiki-ning ma'lum bir qismida qilish mumkin.

    O'zgartirish, chunki siz qo'shiq konstantalari ro'yxatidan qiymatni nomlashingiz mumkin, u chaqiriladi o'zgaruvchan tur, tiriltiriladi yoki qayta ishlab chiqish. Qia o'zgarishi faqat qiymat qo'shishi mumkin konstantalarni nomlash ro'yxati. Doimiy nomlar ro'yxat int yozilishi mumkin. Otzhe, xotira, vodpovidna zminnoi pererahuvannya, - tse xotirasi, int turiga qiymat ajratishni talab qildi.

    Misol uchun:

    enum yili (qish, bahor, yoz, kuz); enum haftasi (yakshanba, dushanba, seshanba, chorshanba, payshanba, juma, shanba);

    bo'sh turi

    Shaxssiz ma'nosi bo'sh. Void turi uchta qo'llanishga ega:

    1. qiymatning noto'g'ri funktsiyasi haqida bayonot;
    2. neotrimannya haqida vkazivka funksiya parametrlari;
    3. katlama tiplanmagan ko'rsatkichlar.

    Void turi asosan uchun ishlatiladi funktsiyalarni belgilash, qiymatni aylantirmaslik uchun indikatorning asosiy turi sifatida funktsiyaga bo'sh argumentlar ro'yxatini kiritish va kamaytirish operatsiyalari turlari

    Ma'lumotlarning asosiy turlari
    Turi Uchrashuv Ism Xotirani kengaytirish, bayt (bit) Qiymat diapazoni
    Men turi Boshqa ismlar
    siliy int imzolangan siliy 4 (32)
    imzolangan int
    imzosiz int imzosiz imzosiz kirpik 4 (32) 0 dan 4 294 967 295 gacha
    qisqa qisqa int qisqa siliy 2 (16) -32 768 dan 32 767 gacha
    qisqa int imzolangan
    imzosiz qisqa imzosiz qisqa int belgisiz kalta siliy 2 (16) 0 dan 65 535 gacha
    uzoq long int eski seliyum 4 (32) -2,147,483,648 dan 2,147,483,647 gacha
    long int imzolangan
    imzosiz uzoq unsigned long int imzosiz eski silium 4 (32) 0 dan 4 294 967 295 gacha
    uzoq uzun long long int dovgy-dovjina tsiliy 8 (64) -9 223 372 036 854 775 808 dan 9 223 372 036 854 775 807
    imzolangan long long int
    imzosiz uzoq uzoq imzosiz uzoq belgilanmagan temirdan oldingi siliy 8 (64) 0 dan 18 446 744 073 709 551 615 gacha
    long int
    ramziy char imzolangan belgi bayt 1 (8) -128 dan 127 gacha
    imzosiz belgi - imzosiz bayt 1 (8) 0 dan 255 gacha
    wchar_t - belgilar kengaytmalari 2 (16) 0 dan 65 535 gacha
    nutq suzmoq - nutqning yagona aniqligi 4 (32) 3.4E-38 dan 3.4E+38 gacha (7 ta muhim raqam)
    ikki barobar - nutqning aniqligi 8 (64)
    uzun dubl - nutqning maksimal aniqligi 8 (64) 1.7E-308 dan 1.7E+308 gacha (15 ta muhim raqam)
    bool - mantiqiy 1 (8) rost (1) yoki noto'g'ri (0)
    enum - qayta sug'urtalash 4 (32) -2,147,483,648 dan 2,147,483,647 gacha

    Konvertatsiya turi

    Da viruslar soni ba'zi operatsiyalar operandlarning boshqa turdagi ekanligini bildiradi, aks holda uni kompilyatsiya bosqichida ko'rish mumkin. kechirish haqida eslatma. Masalan, bo'linmadan (%) ortiqcha olish operatsiyasi butun operandlarga bog'liq. Shuning uchun, C filmida bir turning qiymatini boshqasiga kamaytirish mumkin.

    Konvertatsiya turi- bir turdagi o'zgarish qiymatini boshqa turdagi qiymatga kamaytirish.

    qarang aniqі bilvosita berilgan turlar. Aniq ko'rsatma bilan o'zgartirishni o'zgartirish uchun zarur bo'lgan o'zgarish turi ko'rsatiladi. Yashirin yo'l-yo'riq bo'lsa, o'zgartirish avtomatik ravishda, qoidalarga muvofiq, Z ++ dasturlashimni qo'yamiz.

    Operatsion formati aniq transformatsiya turlari:

    im'ya_type (operand)

    Misol uchun, int (x), float (2/5), uzun (x+y/0,5).

    dumba 1.

    //Kasr sonning yuzinchi tartib raqamlarini oling #include "stdafx.h" #include std nom maydonidan foydalanish; int _tmain(int argc, _TCHAR* argv)( float s,t; long int a,b; printf("Haqiqiy raqamni kiriting\n"); scanf("%f", &s); t=s*100; a =(int)t;// ab=a%10 ni o'zgartirish uchun t ni int turiga o'zgartiring; 0 ni qaytaring;

    Qayta ishlash turlari quyidagi zastosovuvat z oberezhnistyu, oskolki berilgan operatsiya qadar ishlab chiqarish mumkin. ma'lumotlardan foydalaning. Masalan, eski turni qisqa turga keltirgandan so'ng, eski janglardan olingan ma'lumotlar qisqartiriladi.

    Misol 2. Vaqt oralig'i

    Unga bir soatning oxirgi oraliqlarining boshi va yillar, daqiqalar va soniyalarda (bir dobi chegarasida) berilgan. Sokinlarning o'zlari orasida bu aloqaning arzimasligini bilish.

    Ushbu topshiriq uchun kirish ma'lumotlari oltita butun qiymat bo'lib, ular kob momentlarini va intervalning oxirini belgilaydi, natijalar uchta butun qiymatdir (int tipi).

    Intervallar oralig'ini sezilarli darajada o'zgartiring: soat1, min1 va sek1, intervalning oxiri oralig'i soat2, min2 va sek2 va natijada olingan qiymatlar soat, min va sek.

    Bu vazifani bajarish uchun soatning og'riqli daqiqalarini soniyalarga aylantirish, birinchisini ikkinchisidan ko'rish va natijani soatiga, o'sha soniyaning oxirgi daqiqasiga qaytarish kerak. Keyinchalik, agar siz sum_sec ni o'zgartirishingiz kerak bo'lsa, bu holda oraliqning soniyalardagi qiymati saqlanadi. Turdan tashqariga chiqish uchun 86400 soniya kerak bo'lsa ham, von yanada muhimroq bo'lishi mumkin qisqa int. Bundan tashqari, tsíêí̈ zminnoí̈ uchun biz ikkinchi siliy turini tanlaymiz (uzun int, qisqartirilgan uzun).

    Natijani tarjima qilish uchun 3 soniya oldin, yil oxirida, o'sha hviline nishondagi butun raqam ostida soat davomida otish ma'lumotlari bilan kaltaklanadi.

    //soat oralig'i. #include "stdafx.h" #include std nom maydonidan foydalanish; int _tmain(int argc, _TCHAR* argv)( int soat1, min1, sek1, soat2, min2, sek2, soat, min, sek; long int sum_sec; printf("Intervalning tepasiga soatni kiriting (yil min sek)\n ") ; scanf("%d%d%d", &soat1,&min1,&sec1); printf("Intervalning oxirgi soatini kiriting (yil min sek)\n"); ,&sec2);sum_sec=(soat2- soat1)*3600+ (min2-daqiqa1)*60+sek2-sek1;soat=sum_son/3600;min=(sum_sek-soat*3600)/60; 3600-min*60; %d:%d:%d\n",soat,daqiqa,sek); system("pauza"); qaytish 0; )

    Vikonny matematik operatsiyalar bilvosita amalga oshirilganda ( avtomatik) konvertatsiya qilish typív, schob virus operandini global turga qisqartirish yoki qisqa qiymatlarni mashina buyruqlarida g'olib bo'lgan butun qadriyatlarni kengaytirish uchun kengaytirish. O'zgartirish operatsiyalarning o'ziga xos xususiyatlariga va operandlarning operand turiga qarab o'zgartirilishi kerak.

    1. Ikki turni belgi bilan konvertatsiya qilish.

    • Belgili yaxlit belgili kattaroq qisqa butunlikka aylanadi, Ikkinchi ma'lumot bilan: o'zgarishlarning maksimal hajmini ko'rsatadigan yuqori (aks holda, aniqroq - pastroq) bo'lgan barcha turdagi raqamlar mavjud.
    • Belgili maqsad belgi bilan kattaroq kaptarga aylanadi. Belgini ko'paytirish usuli. Shunday qilib, qo'sh sonning barcha qo'shimchalari ishora bitidagi kabi bir xil raqam bilan band bo'ladi: agar raqam ijobiy bo'lsa, u 0, salbiy bo'lsa, u holda 1 bo'ladi.
    • Ishorali butun sondan belgisiz butun songa. 3-raqam belgisining birinchi zarbasi raqam turiga mos keladigan 3-raqamli belgiga aylantiriladi, chunki bu turdagi ma'lumotlar kattaroqdir. Qiymatda belgining bitlari ko'rinmaydi, lekin keyingi bitlarga nisbati bo'yicha teng deb hisoblanadi, shuning uchun endi barcha bitlar raqamli qiymatni qondiradi.
    • O'zgaruvchan nuqta qiymatlarini butun son turlariga o'tkazishda keyinchalik u long turiga aylantiriladi (suzuvchi qiymatning bir qismi o'z o'zgaruvchisidir), long tipidagi bu qiymat kerakli butun son turiga aylantiriladi. Agar qiymat uzoq vaqt davomida juda katta bo'lsa, konvertatsiya natijasi qiymat emas. Zzvichay tse degani, kompilyatorning hukmiga scho, siz "smíttya" bo'ladimi, kelishingiz mumkin. Haqiqiy amaliyotda bunday o'zgarishlar, qoida tariqasida, tiqilib qolmaydi.

    Darsda Paskal (Tip) koristuvachining ma’lumotlar turlarini yaratish algoritmi tushuntiriladi. Rahmatli bo'l.

    Paskal tilidan ma'lumotlar turlari oddiy va yig'iladiganlarga bo'linadi.

    Oddiy turlarga qadar standart, yangilangan va jihozlangan.

    Qatlamli turlarga qadar- massivlar, multiplikatorlar, yozuvlar, fayllar. Katlama turlarining elementlari oddiy va katlamali turlar bo'lishi mumkin. Biz kelajakda ma'lumotlarning katlama turlari bilan tanishmiz.

    Eng keng turlardan biri ordinaldir standart turi.
    Tartib standart turi yakuniy chiziqli shaxssiz ma’noni bildiradi. Yangisiga qadar ovoz bering butun son turlari, baytlar, belgilar va mantiq.

    Ma'lumotlarning yangi (koristuvatskiy) turlari Aniqlik va ravshanlik uchun fors qorasi kerak:

    Dumba: Matritsaning o'lchami 10 x 50 ko'rsatilgan.

    protsedura p(a: Integer massivi);

    Zate keyingi ma'lumotlar turini yarating va shunday yozing:

    1 2 vektor turi = butun sonli massiv [1..10]; var procedure p(a: vektor);

    vektor turi = butun sonlar massivi; var procedure p(a: vektor);

    Yangi turdagi yordam uchun massivlarning tavsifini ilova qiling

    vektor turi = butun sonlar massivi; matritsa = vektor massivi;

  • 1 tip matritsa = massiv [1..8] massiv [1..10] butun son;

    matritsa turi = butun sonlar massivi;

  • 1 matritsa turi = butun sonli massiv [1..8, 1..10];

    matritsa turi = butun sonlar massivi;

  • Hujumkor dumba o'zgarishida cі d ammo tasvirlangan:

    1 2 3 4 5 6 vektor turi = butun sonli massiv [1..10]; matritsa = vektorning [1..8] massivi; var a, b: vektor; c: matritsa; d: massiv[1..8] vektor;

    vektor turi = butun sonlar massivi; matritsa = vektor massivi; var a, b: vektor; c:matritsa; d:vektor massivi;

    turi 1: Berilgan a, b va c massivlari. Massivning minimal elementlarining o‘rtacha arifmetik qiymatini biling (massivni o‘z navbatida hosil qiling).
    vikoristovuvat turi va ma'lumotlar koristuvach uchun tartiblarini tasvirlab qachon

    Paskalda i interval turini yozing

    Qayta tiklash turi

    Dastur ushbu turdagi o'zgarishlarni sozlashi mumkin, bu standart turlarning hech biriga mos kelmaydi.

    Shunday qilib, turga hayratda qolganda qayta qiymat berilishi mumkin; zminna bu tur mozhe nabuvati be-yak z tsikh znachen.

    qi qiymati qatorlarda bo'lishi mumkin emas, ularni boshqasiga o'tkazib bo'lmaydi va kompyuterga kiritilmaydi O'qish va yozish yordam operatorlari uchun.

    Keling, Paskalda katlama turini ko'rib chiqaylik:

    turi pt = (word1, word2, ... wordN); varw: pt;

    turi pt = (word1, word2, ... wordN); varw: pt;

  • pt - turdagi identifikator (ko'proq),
  • word1 , word2 ... - maxsus qiymatlar, w ni pt turiga tegishli qilib qanday o'zgartirish mumkin
  • Qaysi turdagi qiymatlar tartibda hurmat qilinadi, ya'ni. tavsif turi bir soat tartibini kiriting so'z 1.
  • interval turi

    interval turi vyznaê maxsus pídnízhina znachen, yaki mozhe nabuvati berilgan zmínna. Tartib tipidagi eng kichik va eng katta qiymatdagi topshiriq yo`li bilan tuzilgan. Yak konstantalari (minimal maksimal qiymat) Qrimdagi har qanday oddiy turdagi nutq turlarining ma'nosini qozonishi mumkin.

    Ovozsiz interval turini ko'rib chiqaylik:

    a:min..maks;
  • a- interval o'zgarishi
  • min- Pastki chegara
  • maks- pastki ko'paytmaning yuqori chegarasi
  • diapazon o'rtasidagi ikki nuqtaga bo'linadi
  • kordon min zavzhdi maê buti kamroq maks
  • konstantalar minі maks aynan shu turga tegishli bo'lishimiz shart. Hidi ilonning asosiy turini aniqlaydi a.
  • Spylne vikoristannya pererahovannogo va _intervalny turlari

    Interval turini o'zgartirish tiriltiriladigan tayanch turi asosida o'rnatilishi mumkin. Keling, misolni ko'rib chiqaylik:

    Dumba: Yakshcho o'zgarishi b qiymatlardan birini qabul qilishingiz mumkin qizil, sariq, yashil, o'zgarishini quyidagicha ta'riflash mumkin: b: qizil..yashil; uchun tayanch turi bê turi rang:

    turi rangi = (qizil, sariq, yashil, ko'k); var b: qizil.. yashil; bosh b :=qizil; writeln(b); b:=sariq; writeln(b); b:=yashil; writeln(b); readln end.

    turi rang=(qizil, sariq, yashil, ko'k); var b:red..green; boshlanadi b:=qizil; writeln(b); b:=sariq; writeln(b); b:=yashil; writeln(b); readln end.

    IN bu dumba rang turi asosiy hisoblanadi. Interval turini almashtirish sotiladigan asosiy turdagi yordam uchun tayinlanadi.

    Dumba: Ko'rinib turibdiki, bir necha kun teri oyi bor. Salyangoz uchun necha kun?
    31,28,31,30,31,30,31,31,30,31,30,31

    Ushbu vazifani bajarish variantlaridan biri quyidagicha ko'rinadi:

      Yechimni ko'rsatish:

      1 2 3 4 5 6 7 8 const dni: baytning [1..12] massivi = (31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31); vars, i: butun son; start s:=0; i uchun := 6 dan 8 gacha do s := s + dni[i]; (yoz oylari - 6, 7, 8) writeln (lar) end .

      const dni: bayt massivi = (31,28,31,30,31,30,31,31,30,31,30,31); vars, i: butun son; start s:=0; i uchun:=6 dan 8 gacha:=s+dni[i]; (yoz oylari - 6, 7, 8) yozish (lar) tugaydi.

      Kod qanday qaror Men aniqlikni aniqlay olmayman, shu vaqtgacha men oylar sonini va yil oxirini hisoblashim kerak (6 va 8).
      Bunday dasturlarning ko'p qirrali va zukkoligi quyidagicha targ'ib qilinishi mumkin:

      Yechimni ko'rsatish:

      1 2 3 4 5 6 7 8 9 TYPE mes = (síchen, gullash, qayin, gullash, o't, ohak, ohak, o'roq, sentyabr, Zhovten, barglar tushishi, ko'krak); CONST kunlar: massiv [yanvar. VAR: butun son; men: mes; (I sikl uchun oʻzgartirish kvalifikatori Integer emas, mes turi boʻyicha berilgan) BEGIN s:=0; for i := iyundan avgustgacha do s := s + dni[i]; WriteLn(s) END .

      TYPE mes = (síchen, gullash, qayin, gullash, o't, ohak, ohak, o'roq, o'roq, sariq, barg tushishi, ko'krak); CONST dni:bayt massivi = (31,28,31,30,31,30,31,31,30,31,30,31); VAR s: Butun son; i:mes; (I sikl uchun o‘zgartirish kvalifikatsiyasi Integer emas, mes turi bo‘yicha berilgan) BEGIN s:=0; i uchun:=iyundan avgustgacha s:=s+dni[i]; WriteLn(lar) END.

    2-tur: Tyzhnya chi dam olish kuni yoki ish kunining nomini almashtiring.

  • Yil kunlarining qiymatlari bilan to'lov turlarining ahamiyati ( dus, shanba, to'y, pays, juma, o'tirdi, quyosh).
  • Dasturda o'zgartirish qiymatini bering (turning qiymatidan, masalan, dus).
  • O'zgartirishni o'zgartiring: shanba va haftaning ma'nosi nima - eslatmaga qarang "Vixidniy!", aks holda "Mashq qiling!".
  • 3-tur: Taqdir oyiga tushing, zikrni ko'ring "sovuq"- qish oyi kabi, ya'ni "issiq"- Bir yil kabi.

  • Yil oylari nomlarining ma'nolari bilan to'lanadigan turni belgilang.
  • Ushbu turga keltirilishi mumkin bo'lgan o'zgartirishga ovoz bering.
  • Dasturda o'zgartirish qiymatini kiriting (turning qiymatidan).
  • O'zgarishlarni qayta ko'rib chiqing: ma'no qish oyi oldidan keltirilishi kerakligi sababli, eslatmaga qarang "sovuq" aks holda, - "issiq".
  • Kílkom usullarini amalga oshirish.
  • Yozma (pribitie) oxiri .

    var sendpravlenie,pribitie:bayt; jo'natishni boshlash:=22; pribitie:=sendpravlenie+10; writeln(pribitie) end.

    dastur zam_st vídpovídí "8" overrukuê vídpovíd "32".
    Cheklangan diapazon turini kiritish noto'g'ri natijani e'tiborsiz qoldirishga imkon beradi, ammo kompilyator baribir kechirim beradi:

    1 2 3 4 5 6 var qayta yo'naltirish, mixlash: 0 .. 24 ; kiyganda: = 22; pribitie:= sendpravlenie+10; writeln(pribitiedeva); var a: belgi; start a:=lev; agar a<= strelets then writeln ("огонь" ) ; if (a>= vesi) va (a<= bliznetsi) then writeln ("воздух" ) ; if (a>= rak) va (a<= ribi) then writeln ("вода" ) ; if (a>= kozerog) va (a<= deva) then writeln ("земля" ) ; end .

    type znak=(oven,lev,strelets,vesi,vodoley, bliznetsi,rak,skorpion,ribi,kozerog,telets,deva); var a: belgi; start a:=left; agar a<=strelets then writeln("огонь"); if (a>=vesi) va (a<=bliznetsi) then writeln ("воздух"); if (a>=rak) va (a<=ribi) then writeln ("вода"); if (a>=kozerog) va (a<=deva) then writeln ("земля"); end.

    5-turi: Zalejno chiptasi nomi bilan taqdirni qaysi mavsumgacha ko'rishini ko'rishingiz mumkin:

  • Bahor: nihol, iris, za'faron
  • Yoz: romashka, kulbaba, ko'knori
  • Kuz: aster, xrizantema, flox
  • Qayta nomlash turi identifikatorlar to'plami sifatida tayinlanadi, mov ko'rinishi bo'yicha u doimiyning standart nomlanishi bilan bir xil rol o'ynaydi, balki turga nisbatan ham. Paskal filmidagi tip-perehuvannyaning klassik tavsifi quyidagicha ko'rinadi:

    turi Cardsuit = (klublar, olmoslar, yuraklar, belkuraklar);

    Bu yerda, ma'lumotlar turi bo'yicha goloshennya amalga oshiriladi Cardsuit (karta kostyumi), ba'zi bir ortiqcha konstantalar bilan buti be-yakning qandaydir ma'nolari bilan. Cardsuit turini o'zgartirish klublar, olmoslar, yuraklar, belaklar qiymatlaridan birini olishi mumkin, tur qiymatini teng yoki notekisga o'zgartirishga imkon beradi va tanlangan operatorlarda o'zgarishlarni (Paskal uchun - case) kiritishi mumkin. qiymat, variantlarni aniqlash.

    Vocabulary pererahuvany sizga dasturlarni o'qilishi mumkin bo'lgan kodlash imkonini beradi, parchalar qo'shiq ma'nolarini kodlaydigan "sehrli raqamlar" ni o'qilishi mumkin bo'lgan nomlarga o'zgartirishga imkon beradi.

    Deyakih movdagi pererahuvan asosida tipi-ko'paytirgichlar yaratilishi mumkin. Ba'zida shaxsiyatsiz bu enum tipidagi noyob qiymatlarni tartibsiz yozish sifatida tushuniladi (va tavsiflanadi).

    Qayta tiklanadigan turni funktsiyalarning o'zgaruvchan va rasmiy parametrlari (protseduralari, usullari) tovushlarida ajratish mumkin. Qayta belgilangan turdagi qiymatlar boshqa turdagi funksiyaga o'tkazilishi va boshqa turdagi funksiya parametrlari orqali o'tkazilishi mumkin. Bundan tashqari, haddan tashqari himoyalangan turning qiymati har doim tenglik va notekislik uchun tan olinadi. Deyakí movi pídrimuyut ínshí opíríí pívnyannya znacheni rehashirovaníh ínív. Vaqti-vaqti bilan bir-biriga o'xshash ikkita qiymatni tenglashtirish natijasi ovozli turlarda qiymatlar ketma-ketligi bo'yicha ko'rsatiladi - ovozsiz turda avvalroq aniqlangan qiymat, "kamroq" qiymat qabul qilinadi. hisobga, bu keyinroq keskinlashtiriladi. Boshqa tirilgan turlar yoki tiriltirilgan turdagi qiymatlarning ma'lum bir diapazoni ham massiv uchun indeks turi sifatida ishlatilishi mumkin. Shu tarzda, massivda tanlangan diapazonning teri qiymati uchun bitta element va ovozli tipdagi qiymatning o'tish tartibida elementlarning o'tishning haqiqiy tartibi mavjud.

    Amalga oshirish

    Butun sonlar yordamida taqdim etiladigan pererahuvan ma'nosini tuzish jarayonini boshlang. Muayyan harakat dasturlashiga qarab, u namoyon bo'lishi mumkin yoki dasturchiga ko'proq bog'langan yoki boshqa "aylanib o'tish manevralari" dan yordam olish uchun sizga qulayroq bo'lishi mumkin (masalan, remapping turi qiymatini birinchi darajali konvertatsiya qilish). “raqam raqami” turining qiymati) yoki dasturchini dasturlash uchun. Barcha variantlar o'zlarining ijobiy va salbiy tomonlariga ega. Bir tomondan, tur-perehuvannyaga aylanishi mumkin bo'lgan doimiylarning raqamli qiymatlarini o'zgartirish imkoniyati, ayniqsa yomon bo'lsa, bu turlarning o'zgaruvchanligini his qilish imkonini beradi va kechirimlarning paydo bo'lishi uchun muammo yaratadi (agar mavjud bo'lsa). raqamli qiymatlar bo'lib, ular uchun turdagi boshqa konstantalar mavjud emas). Boshqa tomondan, ma'nolarni charxlash, qo'shimcha qobiliyatli ishlarni beradi. Misol uchun, u boshqa tillarda yozilgan modullar bilan interfeysni tashkil qilishda yozishni tiklash imkonini beradi, masalan, tayinlangan to'plam qiymatining kodlangan raqamlarini kiritish yoki aylantirish uchun stink.

    Yana bir imkoniyat, kinoni teng ravishda amalga oshirish uchun tipini qanday berish kerak - xotira tejamkorligi. Ushbu turdagi qiymatni tejash uchun turi-perehuvannya uchun kichik majburiyat bilan, shuncha ko'p janglarni o'tkazing (karta kostyumining induksiyalari har bir qiymat uchun faqat ikkita jangni o'tkazishi mumkin, o'sha soatda, standart raqam sifatida, ko'proq sondagi raqam. g'alaba qozongan arxitekturalar 32 ta jangni oladi - 16 baravar ko'p), kompyuterchilar esa bu fakt xotiradan ma'lumotlarni saqlashni kuchaytirish uchundir. Bu, ayniqsa, muhim bo'lishi mumkin, chunki tip-perehuvan qiymati bir yozuvda saqlanadi - bu katta raqamlarni qayta ishlash jarayonida yozuvlarni yaxshilash boy xotiraga olib kelishi mumkin. To'g'ri, shuni ta'kidlash kerakki, kompilyatorlar bu imkoniyatni anglamaydilar, agar kompyuter xotirasi narxi tushib ketgan bo'lsa, ular qolgan soatni oladi.

    Tanqid

    Qayta ishlash turi dasturlash tillari uchun an'anaviy bo'lib, u keng ko'lamda amalga oshirilishi mumkin va ko'pincha tushunarli sifatida qabul qilinadi. Proteo turi dasturlash nazariyotchilari va amaliyotchilari tomonidan ham tanqiddan holi emas. Shunday qilib, qachon rozrobtsí movi dasturlash Oberon pererahovani typei imkoniyatlar ro'yxatiga isrof, vidalaneh z movi. Niklaus Wirth, kino sotuvchisi, quyidagi sabablarni keltirib:

    Boshqa tomondan, masalan, Java-da, siz bekor qilingan tur uchun qasos ololmaysiz, bu tur nafaqat aniqlik belgisi, balki isrofgarchilikdir: doimiylarning qiymati va o'zgaruvchini tayinlash imkoniyati uchun. qiymatning o'zgarishi, go'yo ular ushbu doimiylarning bir xiliga mos keladi.

    Turli tillarda perexuvanning tavsifi

    Enum karta kostyumi (CLUBS, DIAMONDS, HEARTS, SPADES);

    Zaif matn terish va C-ga o'xshash sintaksisli dinamik filmlar (masalan, Perl yoki JavaScript) haddan oshib ketmaydi.

    C++

    C++ da bekor qilish Move to'g'ridan-to'g'ri C++ da bekor qilish xatti-harakatini rad etadi, chunki C++ da bekor qilinadigan tur to'g'ri tur va enum kalit so'zi faqat bunday tur ovozli bo'lganda bajarilmaydi. Agar bekor qilish parametrining qiymati qayta ishlansa, agar bekor qilish qiymati qayta ishlanmasa (masalan, bekor qilish elementlaridan biri kalit konstruktsiyasini qayta ishlamasa), kompilyator qiymat unutilganligini ko'rishi mumkin.

    enum Cardsuit (klublar, olmoslar, belkuraklar, yuraklar)

    Java

    Java kobida ularni statik konstantalar bilan almashtirish kerak edi. 5 (1.5) versiyasidan boshlab yangilanish tilga kirdi, hid to'liq huquqli sinf sifatida, unda siz sug'orish va usullarni adolatli miqdorda qo'shishingiz mumkin. Pereliki xavfsizlik nazoratini kamaytirish uchun kiritilgan.

    Saqlash