Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Символьний тип




Begin

Begin

Begin

Begin

Repeat

Begin

Begin

write('Число учнів --> '); readln(n);

write(n,' учень');

case n of

2..4: write('а');

5..10: write('ов');

end;

readln;

end.

 

Можна також удосконалити програму для довільного натурального n:

 

write(n,' учень');

case n mod 100 of

11..19: write('ов');

else case n mod 10 of

2..4: write('а');

0,5..9: write('ов');

end;

end;

Оператори циклів у Паскалі

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

1. Цикл із післяумовою (Repeat)

На Паскалі записується так:

repeat <оператор> until <умова>.

(Українською: щось повторювати д оки_не_виконалася умова). Під позначенням <оператор> тут розуміється або одиночний, або послідовність операторів, розділених крапкою з комою. Цикл працює так: виконується оператор, потім перевіряється умова, якщо вона поки ще не виконалося, то оператор виконується знову, потім перевіряється умова, і т.д. Коли умова, нарешті, стане вірною виконання оператора, розташованого усередині циклу, припиниться, і далі буде виконуватися наступний за циклом оператор. Під умовою, узагалі говорячи, розуміється вираз логічного типу.

Приклад (підрахунок суми натуральних чисел від 1 до 100):

var i,sum: integer;

sum:=0; i:=0;

i:=i+1;

sum:=sum+i;

until i=100;

writeln('Сума дорівнює: ',sum);

readln;

end.

Важливо помітити, що оператори, які стоять усередині циклу repeat (інакше – у тілі циклу) виконуються хоча б один раз (тільки після цього перевіряється умова виходу).

2. Цикл із предумовою (While)

Цей цикл записується так:

while <умову> do <оператор>.

(Поки умова істинна, виконувати оператор). Суть у наступному: поки умова істинна, виконується оператор (у цьому випадку оператор може не виконатися жодного разу, тому що умова перевіряється до виконання). Під оператором тут розуміється або простий, або складений оператор (тобто декілька операторів, обмежених begin... end).

Розглянемо той же приклад, виконаний за допомогою while:

var i,sum: integer;

sum:=0; i:=0;

while i<100 do begin

i:=i+1;

sum:=sum+i;

end;

writeln('Сума дорівнює: ',sum);

readln;

end.

3. Цикл із лічильником або параметром (For)

Записується так:

for <змінна>:=<поч> to <кін> do <оператор>. Замість to можливе слово downto. Розглянемо такий приклад: потрібно вивести на екран таблицю квадратів натуральних чисел від 2 до 20.

var i: integer;

begin for i:=2 to 20 do writeln(i,' ',sqr(i)); end.

При виконанні циклу відбувається наступне: зміннй i привласнюється початкове значення (2), потім виконується оператор (простий чи складов), після цього до i додається 1, і перевіряється, чи не стало значення і рівним кінцевому (20). Якщо ні, то знову виконується оператор, додається 1, і т.д. У випадку, коли замість to використовується downto, усе відбувається навпаки: одиниця не додається, а віднімається. Наприклад, цикл, що виведе ту ж таблицю, але в зворотному порядку:

for i:=20 downto 2 do writeln(i,' ',sqr(i));

У завершення запишемо програму про підрахунок суми чисел від 1 до 100 за допомогою for:

var i, sum: integer;

sum:=0;

for i:=1 to 100 do sum:=sum+i;

writeln(sum);

end.


Концепція типів даних. Типи даних в мові Pascal

У мові Pascal будь-яка змінна характеризується своїм типом Під типом у даному випадку розуміється множину значень які може приймати змінна і, як наслідок, множину операцій, припустимих над даної змінною.

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

 
 

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

 

На основі стандартних скалярних типів мається можливість утворювати скалярні типи користувача. Є два способи створення нових скалярних типів - обмежені і перераховані типи.

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


Цілий тип.

Ця група типів позначає множину цілих чисел у різних діапазонах. Мається п'ять цілих типів, що розрізняються припустимим діапазоном значень і розміром займаної оперативної пам'яті. Цілі типи позначаються ідентифікаторами Integer, Byte, Shortint, Word, Longint; їх характеристики наведені в наступній таблиці.

Цілий тип Діапазон значень Розмір пам’яті
Shorting -128…127 1 байт
Integer -32768…32767 2 байта
Longint -2147483648…2147483647 4 байта
Byte 0…255 1 байт
Word 0…65535 2 байта

Значення цілих типів можуть зображуватися в програмі двома способами: у десятковому виді (традиційно, у виді послідовності цифр) і в шестнадцятовому виді. В останньому випадку цифри старше 9 позначаються латинськими буквами від А до F, а на початку ставиться символ '$' (знак долара). Максимально припустимий діапазон зображень десяткового числа є — -2147483648…2147483647

Над цілими значеннями припустимі наступні операції:

чотири арифметичних дії, що мають звичний зміст. Ці дії позначаються символами:

+ додавання

- віднімання

* множення

/ ділення

Та дві додаткові операції "типу ділення", які позначаються службовими словами:

Div — ділення на ціло

Mod — узяття залишку від цілочисельного ділення.

При застосуванні до цілих значень усі перераховані операції (крім ділення) дають цілий результат. Операція ділення завжди дає дійсний результат.

Для цілих визначені дві вбудовані функції abs і sqr.

Опис змінних цілого типу на Паскалі має такий вигляд:

Var a,b,c,:(integer)


Дійсні типи

Ця група типів позначає множину дійсних значень у різних діапазонах. Turbo Pascal підтримує чотири різних дійсних типи. Вони іменуються ідентифікаторами Real, Single, Double, Extended і Соmр і мають наступні характеристики:

Дійсний тип Діапазон значень Число цифр мантиси Розмір пам’яті
Real 2.9е-39..1.7e38 11-12 6 байт
Single 1.5e-45.. 3.4e38 7-8 4 байт
Double 5.0e-324.. 1.7e308 15-16 8 байт
Extende 3.4e-4932..1.1e493 19-20 10 байт
Comp -2e+63..+2e+63-1   8 байт

ЗАУВАЖЕННЯ:

1. Хоча тип Comp вважається дійсним типом, він містить тільки цілі числа з дуже значного діапазону, що представляються в обчисленнях як дійсні (з нульовою мантисою).

2. Усі дійсні типи, крім real, можуть використовуватися в програмі, узагалі говорячи, тільки якщо в конфігурації персонального комп'ютера мається математичний співпроцесор Intel 8087/80287. Для коректної компіляції програми, що використовує ці типи, необхідно установити директиву компілятора {$N+}. Крім того, можна залучити кошти програмної емуляції апаратних операцій з дісними типами, установивши директиву {$E+}. Якщо ця остання директива встановлена, то програма буде виконуватися правильно незалежно від наявності математичного співпроцесора, хоча її об'єктний код буде трохи великим по розміру.

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

17.384

0.5

Наступні приклади демонструють неправильні форми запису чисел:

.3 (правильно 0.3)

10. (правильно 10.0)

Речовинне число у формі з крапкою, що плаває, записується як пара виду

<мантиса> E <порядок>

Таке позначення розуміється як "мантиса, помножена на 10 у степені, рівному порядку". Наприклад, 7E-2 означає 7 ´ l0-2,- 12.25E+6 чи 12.25E6 позначають 12.25 ´ l06. Мантиса представляється у виді цілого числа або як дійсне з фіксованою точкою; порядок позначається цілим числом; допускаються як додатні, так і від’ємні значення порядку.


Бульовий (логічний) тип

Мається два значення бульового типу, що представляють логічні значення (істина/хиба). Ці значення позначаються за допомогою стандартних ідентифікаторів

true (істина)

false (неправда)

Над значеннями бульового типу припустимі операції порівняння, причому вважається, що

false < true

Описуються в програмі так:

var v1,v2, … vn: boolean;

Крім того, маються чотири стандартні логічні операції, що позначаються службовими словами:

and логічне множення

or логічне додавання

xor додавання по модулі 2 (виключаюче або)

not логічне заперечення (унарная операція)

Ці операції мають звичайний в логійі зміст.

Значення булевского типу займають один байт пам'яті.

Приклад: написати програму виведення на екран таблиі істинності для операції and.

program logik;

uses crt;

var a,b,c: boolean;

clrscr;

for a:=false to true do

for b:=false to true do

c:=a and b;

writeln (a,' and ',b,'=',c)

end;

end.


Символьні і рядкові змінні

У математиці під змінної звичайно розуміють деяку величину, значення якої можуть бути тільки числами. У мовах програмування майже всі дані, з якими працюють програми, зберігаються у виді змінних. Зокрема, бувають змінні для збереження текстових даних: пропозицій, слів і окремих символів.

Тип даних, змінні якого зберігають рівно один символ (букву, цифру, розділовий знак і т.п.) називається символьним, а в Паскалі — char. Оголосити змінну такого типу можна так: var ch: char;. Для того щоб записати в цю змінну символ, потрібно використовувати оператор присвоювання, а символ записувати в апострофах, наприклад: ch:='R';. Для символьних змінних можливо також використання процедури readln, наприклад:

write(‘Вийти з гри? (Так / Ні)’); readln(ch);

if ch=’Т’ then...{виходити}...

else...{продовжувати}...;

 

Символьні змінні в пам'яті комп'ютера зберігаються у виді числових кодів, інакше кажучи, у кожного символу є порядковий номер. Наприклад, код пробілу дорівнює 32, код ‘A’ — 65, ‘B’ — 66, ‘C’ — 67, код символу ‘1’ — 48, ‘2’ — 49, ‘.’ — 46 і т.п. Деякі символи (з кодами, меншими 32) є керуючими, при виведенні таких символів на екран відбувається якась дія, наприклад, символ з кодом 10 переносить курсор на новий рядок, з кодом 7 — викликає звуковий сигнал, з кодом 8 — зміщує курсор на одну позицію вліво. Під збереження символу виділяється 1 байт (байт складається з 8 біт, а біт може приймати значення 0 чи 1), тому усього можна закодувати 28=256 різних символів. Кодування символів, що використовується Турбо-Паскалі, називається ASCII (American Standard Code for Information Interchange — американський стандартний код для обміну інформацією).

Для того щоб одержати в програмі код символу потрібно використовувати функцію chr, наприклад:

var i: byte; {число, що займає 1 байт, значення — від 0 до 255}

ch: char;

...

readln(i); writeln('символ з кодом ',i,' — це ',chr(i));

Якщо як код використовується конкретне число, а не вираз і не змінну, то можна використовувати символ «#», скажемо так: ch:=#7;. Для переходу від коду до символу використовується функція ord (від слова ordinal — порядковий). Наявні знання дозволяють нам написати програму, що видає на екран таблицю з кодами символів:

program ASCII;

var ch: char;




Поделиться с друзьями:


Дата добавления: 2014-12-16; Просмотров: 540; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.045 сек.