Типи даних і змінні в perl - підручник з perl

Приступаючи до знайомства з будь-якою мовою програмування, ми перш за все з'ясовуємо, а які типи даних він дозволяє обробляти, чи надає мову механізм створення нових типів з уже існуючих. Адже мова програмування, як знакова система обробки інформації, якраз і призначений для обробки інформації, представленої даними і алгоритмами. Дані визначаються своїм типом - безліччю значень і набором допустимих операцій. Одні мови програмування пропонують велику кількість різноманітних типів даних, як, наприклад, універсальна мова С, в якому навіть тип даних, використовуваний для зберігання символів, може бути зі знаком або без знаку; інші можуть обходитися всього лише двома типами даних, як, наприклад, VBScript, в якому для зберігання і обробки будь-яких скалярних даних (числових, рядкових і булевих) використовується єдиний варіантний тип даних і існує можливість створення масивів скалярних даних. В кінцевому рахунку, мова повинна мати таке розмаїття типів даних, щоб програміст міг з їх допомогою вирішувати завдання, для яких призначений мову програмування.

Мова Perl для вирішення своїх завдань пропонує всього три типи даних: скаляри, масиви скалярів і асоціативні масиви скалярів, або хеш-кодування. Відповідно до допустимими типами даних існує і три типи змінних, в яких можна зберігати дані перерахованих типів. У цьому розділі визначаються всі допустимі в мові типи даних, вводяться числові і рядкові літерали, конструктори масивів і асоціативних масивів, а також обговорюються змінні і їх використання, але почнемо ми наше вивчення з питання, без якого неможливо входження в будь-яку мову програмування - набору допустимих символів, або алфавіту мови.

3.1. алфавіт мови

З чого починається вивчення будь-якої мови? Звичайно, з алфавіту. Пам'ятайте, як в першому класі ми старанно виводили в прописах все літери російського алфавіту, а в старших класах, приступаючи до вивчення іноземної мови, ми спочатку вчили літери його алфавіту і які звуки вони позначають, а потім з букв складали слова, які вже можна було використовувати для складання пропозицій, що несуть певну інформативність: "Мама мила раму".

Аналогічно відбувається і при вивченні мов програмування. Спочатку ми повинні з'ясувати, які можна використовувати символи для складання лексем (слів мови), з яких можна конструювати оператори (пропозиції мови).

У мові Perl можна використовувати всі літери латинського алфавіту (великі та малі), арабські цифри і знак підкреслення "_". Perl відноситься до мов, чутливим до регістру. Це означає, що символи прописної і малої літери вважаються різними. Тому, наприклад, два ідентифікатора one і one, використовувані для завдання імені змінної, - це два різних ідентифікатора і отже, обумовлені ними змінні одного і того ж типу також є різними.

Букви національних алфавітів, зокрема російського, можна використовувати тільки в строкових даних. Ідентифікатори змінних можуть містити літери тільки латинського алфавіту. Крім букв, цифр і символу підкреслення, які називаються алфавітно-цифровими символами, використовується набір спеціальних символів, представлений в табл. 3.1.

Таблиця 3.1.Спеціальние символи мови Perl

Аналіз спеціальних символів показує, що в мові Perl використовуються всі символи, які можна ввести з клавіатури. Якщо букви і цифри символи використовуються в складі ідентифікаторів, то спеціальні символи служать для визначення знаків операцій, уточнення синтаксису виразів, а також іменування спеціальних вбудованих змінних мови Perl. Якщо читачеві якийсь із перерахованих об'єктів зараз і не зовсім ясний, то при подальшому викладі все встане на свої місця. Алфавіт мови використовується для створення "правильних" (розпізнаються інтерпретатором мови) лексем. Серед усієї безлічі таких лексем існує підмножина зумовлених лексем, званих ключовими словами і використовуваних для створення правильних конструкцій мови. Набір ключових слів мови Perl не великий і представлений нижче: if, elseif, else, unless, while, until, foreach, for, next, continue, last, do, eval, goto, sub, my, return

Крім перерахованих ключових слів, що визначають синтаксичні мовні конструкції, в мові Perl склався набір стандартних функцій, який реалізований в будь-якому інтерпретатор perl. Імена цих функцій можна теж вважати зарезервованими словами мови і не використовувати в якості імен для користувача функцій або міток в програмі. Ми не будемо тут перераховувати імена всіх стандартних функцій, так як їх кількість досить велика, та й мало пуття буде від такого простого перерахування, а відішлемо читача до додатка А, де він може побачити імена всіх стандартних функцій.

3.2. Скалярний тип даних

Скалярний тип даних в Perl призначений для подання та обробки числових даних (чисел) і послідовності символів, званих рядками. Для завдання в програмі перерахованих даних використовуються буквальні константи, або літерали: числові і рядкові.

Числові літерали використовуються для представлення звичайних чисел, необхідних для реалізації будь-якого алгоритму в програмі Perl. Зазвичай використовуються числа з підставою десять, або десяткові числа, але мова дозволяє використовувати і восьмеричні (з підставою вісім), і шістнадцяткові (з підставою шістнадцять) числа, які корисні при роботі з вмістом пам'яті комп'ютера в процесі вирішення деяких системних задач.

Десяткові числа можуть бути цілими або речовими з дробовою частиною, які в програмуванні часто називають числами з плаваючою точкою через спосіб їх подання та зберігання в пам'яті комп'ютера. Відповідні їм літерали нічим не відрізняються від запису подібних чисел в математиці: послідовність цифр без пробілів для цілих чисел і послідовність цифр, в якій точка відділяє цілу частину від дробової, для дійсних чисел (приклад 3.1).

Приклад 3.1. числові літерали

123 # Ціле десяткове число.

234.89 # Дійсне число.

0.6780 # Речовий з нульовою цілою частиною

678 # незначущі нулі можна не ставити

1_000_000.67 # Для відділення розрядів в цілій частині числа

# Можна використовувати символ підкреслення.

Для дійсних чисел з плаваючою точкою можна використовувати і експонентну форму запису:

[Цифри]. [Цифри] [Е | е] [+1 -] [цифри]

Ця форма запису означає, що для отримання значення числа слід його мантиссу, задану у формі дійсного числа з крапкою ([цифри]. [Цифри]), помножити на десять в ступені числа зі знаком, заданого в його експоненційної частини після символу Е або е (приклад 3.2).

Приклад 3.2. Експоненціальна форма запису дійсних чисел

10.67Е56 # Знак "+" в експоненті можна опускати.

10.67е + 06 # Так експонента краще читається.

1е-203 # Число близько до машинного нулю.

1е + 308 # Число близько до нескінченно великого числа.

Esc-послідовності, що складаються з зворотної, косої риски (\), за якою слідує буква або комбінація цифр. У них символ зворотної косої межі розглядається як символ, що змінює значення букви. Вони разом є одним цілим і виконують певну дію при виводі на пристрій відображення, наприклад, перехід на новий рядок (\ п). Комбінація цифр трактується як ASCII-код відображуваного символу. Назва таких послідовностей походить від англійського слова "escape", що означає змінювати сенс. Їх ще називають керуючі послідовності.

Строковий літерал може розповсюджуватися на кілька рядків програми (див. Останній літерал табл. 3.2). Для цього при його введенні з клавіатури слід використовувати клавішу для переходу на новий рядок.

Багаторядкові літерали відображаються на стількох рядках, на скількох вони задані. Це означає, що символ переходу на новий рядок, введений з клавіатури, зберігається в символьному літералі, обмеженому одинарними лапками. Слід зауважити, що це справедливо і для строкових літералів, обмежених подвійними лапками.

Рядки в подвійних лапках дозволяють вставляти і інтерпретувати керуючі послідовності, а також здійснювати підстановку значень змінних, що містять скаляри або списки. Керуючі послідовності (табл. 3.3) при виведенні рядків можуть інтерпретуватися як символи нового рядка, табуляції і т. П. А можуть змінювати регістр наступних за ними букв.

Таблиця 3.3.Управляющіе послідовності