Оператори алгоритмічної мови Паскаль. Стандартні функції і оператори роботи з рядками
Правила оголошення та функціональне призначення простих і структурних операторів мови Паскаль. Принципи використання символьних масивів, процедур і функцій для обробки рядків. Особливості виконання операцій поєднання та порівняння над рядковими даними.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | реферат |
Язык | украинский |
Дата добавления | 13.11.2010 |
Размер файла | 45,8 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Житомирський Військовий Інститут
Національного Авіаційного Уніврситету
Реферат на тему:
Оператори алгоритмічної мови Паскаль. Стандартні функції і оператори роботи з рядками
Житомир 2010
План
1. Прості оператори
2. Структурні оператори
3. Символьні масиви
4. Визначення рядкового типу даних
5. Основні операції над рядковими даними
6. Стандартні засоби обробки рядків: процедури і функції
1. Прості оператори
Оператори мови Паскаль - це синтаксичні конструкції, які призначені для запису алгоритму (перетворення даних, порядок виконання операцій) в стилі структурного програмування.
Всі оператори повинні розділятись символом - ";".
Оператори мови Паскаль умовно поділяють на дві групи:
1) прості оператори;
2) структурні оператори, які містять один або декілька операторів, або структурних операторів.
Оператор присвоювання;
Оператори звертання до процедури (функції);
Оператор безумовного переходу.
Оператор присвоювання призначений для обчислення нового значення змінної, а також для визначення значення функції, що повертається.
Формат оператора:
Оператор виконується так: обчислюється вираз (права частина) і отримане значення надається (присвоюється) ідентифікатору (змінній).
При цьому тип виразу (тип даних та операції над ними) повинен бути сумісним з типом ідентифікатора (змінної), якому присвоюється результат обчислення.
Наприклад: якщо var a, b, x: integer, то оператор присвоювання виконувати не можна.
Треба так:
var a, b : integer;
x : real;
Тоді буде вірно:
.
Приклади:
var name: string;
. . .
name : = `Іванов`;
var x, y: real;
. . .
x: = 5;
y: = x + 2;
Оператори звертання до процедури (функції) - призначені для активізації процедури (функції) та передачі їй заданих параметрів.
Формат оператора:
Розглянемо процедури введення та виведення даних, які можна викликати за допомогою операторів: read, readln, write, writeln.
write (вираз), writeln (вираз) - оператори запису або виведення;
read (список змінних), readln (список змінних) - читання або введення.
Приклади виведення:
x : = 1;
writeln(1+x);
writeln(x <=1);
на екрані з'явиться:
2
true
x: = 2;
writeln(1, x, x*x, x*x >2);
на екрані :
1 2 4 true
Використання рядкових констант, наприклад: `x =', `12' і т.п.
x : = 2;
writeln(`x = `, x,'; y = `, x*x);
На екрані: x = 2; y = 4.
Можна указати розмір поля для виводу значень виразу.
Якщо кількість символів менше, то виводяться пробіли, а якщо більше - то виводяться усі символи.
x: =12;
writeln(`x =', x : 4,'; y = `, x*x : 1);
На екрані
x =_ _ 12; y = 144 .
Приклади введення.
Як правило, для зручності перед оператором введення ставиться оператор виведення на екран запрошення:
writeln (`Ввести два цілих числа:');
readln (x1, x2);
На екрані запрошення:
Ввести два цілих числа:
Приклад програми привітання.
Program Privit;
var name: string;
begin
write(`Введіть ваше ім`я');
readln(name);
writeln(`Привіт,', name);
end.
Оператор безумовного переходу.
Мітка описується на початку програми (label 1, 2, lb1) і використовується в програмі наступним чином:
Але використання цього оператора в програмі не бажане, бо порушується її структурна цілісність і читабельність.
2. Структурні оператори
Структурні оператори містять один або декілька операторів. Вони поділяються на три види:
1. складений оператор;
2. умовні оператори;
3. оператори циклу.
Складений оператор представляє собою послідовність операторів, які розділяються ";" і обмежуються службовими словами begin та end. Вони відіграють роль дужок обмеження - операторні дужки початку і кінця складеного оператора).
BEGIN
оператор 1;
……………
оператор N
END.
Складений оператор сприймається як єдине ціле.
Умовні оператори - організовують вибір між альтернативними варіантами обчислень (операцій)
Структура оператора:
if <умова (вираз)>
then <оператор1>
else <оператор2>
Семантика оператора:
1. обчислюється умова, тобто вираз після службового слова if (результат повинен мати логічний тип, булевий);
2. якщо результат умови - TRUE (істина) то виконується then <оператор1>; якщо результат умови FALSE - то виконується else <оператор2>.
Оператори 1, 2 можуть бути будь-якого типу: умовні, складені, прості.
Умова може бути операцією відношення або логічною.
Операції відношення:= , <>, >, <, >=, <=.
Логічні оператори:
Not - заперечення;
And - логічне "і";
Or - логічне "або";
Xor - "або", що виключає.
Приклад:
Вибір максимального із двох чисел:
if x>y
then max := x
else max := y
!Особливість:! При використанні вкладених умовних операторів може виникнути синтаксична неоднозначність. Тому необхідно пам'ятати: службове слово else зв'язане з найближчим до нього словом if.
Приклад:
var a, b, c: integer;
a:=1; b:=2; c:=3; d:=4;
if a>b then
if c<d then
if c<0 then c:=0
else a:=b;
На екрані виведеться {a = 1}.
if a>b then
if c<d then
if c<0 then c:=0
else
else
else a:=b;
На екрані виведеться {a = 2}.
Оператор вибору: CASE.
Він дозволяє вибрати одну з N можливих операцій.
Синтаксична діаграма:
Список альтернатив:
Приклад:
Program month(input, output);
var mon: integer;
begin
writeln (`Введіть N місяця');
readln (mon);
if mon < 1 or mon > 12 then
writeln (`Нема такого місяця')
else
case mon of
1: writeln (`січень`);
2: writeln (`лютий`);
. . .
12: writeln (`грудень`);
end
end.
!Особливість:! значення селектора не може мати тип: real; string; частину else можна опускати.
3. Оператори циклу.
Існують три різних оператора:
1. Оператор циклу з параметром
For , To , Do (для , до , виконати )
Семантика:
1. Обчислюється вираз < пз >
2. Присвоювання < пц > : = < пз >
3. Перевірка умови < пц > <= (=>) < кз > , якщо не виконується , то for закінчує роботу ;
4. Виконання < оператора >;
5. Змінна < пц > на + 1 (to) або - 1 (down to)
Приклад: програма введення вільного цілого числа N та обчислення суми цілих чисел від 1 до N.
Program summaInteger;
var i, n, s: integer;
begin
write ( ` n = ` );
readln ( n ); { ввести n }
S: = 0; { початкове значення суми }
for i: = 1 to n do s : = s + i;
writeln (`Сума дорівнює ', S)
end.
. . . . . .
S:=0
if n >=1 then
for:=1 to n do s:= s+i
else
for i:= -1 down to n do s:= s+i
2.Оператор циклу з передумовою.
{поки (виконується), робити }
< умова>- вираз логічного типу; якщо результат умови - TRUE, то виконується оператор, після чого знову перевірка умови. Якщо - FALSE , оператор WHILE закінчує свою роботу.
Приклад: обчислити суму перших 25 цілих чисел.
Program summa;
var sum, n: integer;
begin
sum:=0;
n:=1;
while n<26 do
begin
sum:= sum+ n;
n:=n+1;
end;
writeln (`Сума перших 25 цілих чисел', sum)
end.
3.Оператор циклу з постумовою.
Семантика:
1.Виконується оператор циклу;
2.Перевірка умови:
- якщо false => наступне виконання оператора;
- якщо true => оператор циклу не виконується.
Приклад (для попереднього прикладу):
repeat
sum:=sum+n;
n:=n+1 until n>=26
3. Символьні масиви
Символьний тип даних дозволяє працювати з окремими символами тексту. Для обробки більшої кількості текстових одиниць використовують символьні масиви або рядкові типи даних.
Розглянемо одномірні масиви, які складаються з елементів символьного типу (char). Наприклад:
var
S : array [ 1..12] of char;
Паскаль містить деякі додаткові засоби роботи з такими масивами:
Конкретні значення символьних масивів записують за допомогою зображення рядка та використання їх в присвоюванні та передачі параметрів:
S := `Приклад рядка';
Зображення рядка будується з символів масиву і обмежується апострофами.
Якщо необхідно задати апостроф, то його подвоюють {` " '}.
Допускають формування рядків з використанням десяткових кодів символів і спеціальних позначень: ( #7#17C^A^B…)
Для символьних масивів допускають операцію "+" - конкатенації (зчеплення, поєднання). Смисл операції полягає у формуванні нового символьного масиву, кількість елементів якого дорівнює сумі розмірів масивів - операндів, а значення елементів - елементи масивів, які розміщюються послідовно один за одним.
Приклад:
var S1 : array [1..8] of char;
S2 : array [1..5] of char;
begin
S1 := 'рядковий';
S2 := 'масив';
writeln (S1+' '+S2); {результат на екрані: Рядковий масив}
end.
!Особливість:!
1. в операторах присвоювання рядків символьним масивам необхідна точна відповідність довжини рядків і розмірів масивів;
2. операція конкатенації для символьних масивів не допускається у правій частині присвоювання. Наприклад:
S := S1+' '+S2; {помилка}
У таких випадках необхідно використовувати рядки, тобто рядкові типи даних.
4. Визначення рядкового типу даних
Рядкові типи даних є одним з розширень мови Паскаль, які найбільш використовуються. Рядковий тип узагальнює поняття символьних масивів, дозволяє динамічно змінювати довжину рядка.
При використанні у виразах рядок обмежується апострофами. Кількість символів в рядку (довжина рядка) може динамічно змінюватись від 0 до 255.
Для визначення рядкових даних використовується ідентифікатор STRING, за яким у квадратних дужках вказується максимальна довжина рядка. Якщо значення не вказане, то по замовченню довжина рядка встановлюється 255 байт.
Приклад:
Line : string [80];
Line1 : string ;
Line2 : string [255].
В приведеному прикладі змінна Line може мати будь-яку послідовність символів (кожен з яких має стандартний тип char) довільної довжини в межах від 0 до 80 символів; Line1 і Line2 - від 0 до 255 символів.
Таким чином, важливіша різниця між рядками і символьними масивами, що рядки можуть динамічно змінювати свою довжину.
Змінну рядкового типу визначають у розділі опису типів, або безпосередньо у розділі опису змінних.
Рядкові дані також можна використовувати у програмі як константу.
Формат:
1. type
<ім'я типа > = string [max довжина рядка];
var
< ідентифікатор > : <ім'я типа >;
Або
2. var
< ідентифікатор > : string [max довжина рядка];
Приклад:
const address = `пл. Соборна, 1';
type line = string [125];
var
S1 : Line;
S2 : string;
S3 : string [50];
Механізм динамічних рядків реалізований в мові Турбо-Паскаль достатньо просто.
Для рядкових змінних пам'ять виділяється відповідно максимального значення, а використовується лише частина, яка реально зайнята символами рядка у даний час, тобто для N символів виділяється N+1 байт пам'яті, із яких N байт призначено для зберігання символів рядка, а 1 байт - для значення поточної довжини цього рядка:
Елементи рядка нумеруються цілими числами, починаючи з 1. Це іноді використовують для визначення поточної довжини рядка, наприклад:
line := ` '; {пустий рядок}
writeln (ORD (line [0] )); {на екрані число 0}
line : =`ABCD';
writeln (ORD (line [0] )); {на екрані число 4}
Однак, для визначення поточної довжини рядка, як правило, використовують стандартну функцію length, яке повертає ціле значення поточної довжини рядка. Але це ми розглянемо далі.
У разі присвоювання рядковій змінній виразу з довжиною більше ніж максимально допустимо для даної змінної, то символи за межами максимальної довжини не використовуються (вилучаються). Ця ситуація не є помилковою, тому переривання виконання програми у даному випадку не відбувається. Наприклад:
var line : string [4];
begin
line := `дуже довгий рядок'; {на екрані: дуже}
writeln (line);
end.
Таким чином рядки можуть динамічно змінювати свою довжину.
5. Основні операції над рядковими даними
Над рядковими даними виконують такі операції:
1. присвоювання (:=);
2. введення (Read);
3. виведення (Write);
4. поєднання (зчеплення, конкатенації - „+");
5. порівняння (відношення).
Перші три операції виконуються стандартно, без особливостей. Тому розглянемо дві останні операції.
Операція конкатенації.
Використовується для зчеплення декількох рядків в один, причому довжина результуючого рядка не повинна перевищувати 255 символів (або вказану довжину N). Інакше останні символи будуть відкинуті.
Приклади:
st := `a'+'b';
st := st + `c';
writeln (`st = `, st) {результат st =abc}
var st : string [2];
begin
st :='1' + `2' + `3';
writeln (st) {на екрані 12}
end.
Операція порівняння (відношення).
Проводить порівняння двох рядкових операндів за допомогою стандартних операторів: = , <>, >, <, >=, <=.
Правила порівняння:
1. Порівняння проводиться зліва-направо з урахуванням внутрішнього кодування символів таблиці ASCII. Рядок буде більшим, якщо перший не співпадаючий символ має більший номер.
2. У менший по довжині рядок додаються символи значення CHR(0). Тому при однакових, символах короткий рядок завжди менше довгого рядка.
Результат виконання операції завжди має логічний тип і приймає значення TRUE або FALSE.
Приклади:
1) ` " ` < `.' TRUE
2) `A' > `1' TRUE
3) `AB' = `A' FALSE
4) `ABC' > `AB' TRUE
5) `12' <'2' TRUE
6. Стандартні засоби обробки рядків: процедури і функції
Функції:
1. CONCAT(S1,S2,…,SN) - функція типу STRING. Виконує послідовне поєднання рядків S1,S2,…,SN , кожен з яких є вираз рядкового типу (STRING). Результатом є рядок не більше 255 символів. Дана функція еквівалентна операції конкатенації: `S1' + `S2' + `S3'…
2. COPY(st : STRING; index : INTEGER; count : INTEGER): STRING або COPY (st, index, count).
Функція копіює (повертає) частину рядка, виділеного з рядка st, довжиною count символів, починаючи з символу під номером index.
3. LENGTH(st : STRING) функція типу INTEGER повертає довжину рядка.
4. POS(subst, st : STRING): BYTE. Функція шукає у рядку st рядок subst. Результатом є номер позиції, де рядок subst зустрічається перший раз. Якщо рядок subst не знайдено, то результатом буде 0 (нуль).
5. UPCASE(ch) - функція типу CHAR. Повертає для символьного виразу ch, яке повинно представляти собою рядкову (маленьку) латинську букву, відповідно їй велику букву. Якщо значенням функції ch є будь-який інший символ (в тому числі рядкова буква російського алфавіту), функція повертає його без змін.
Процедури:
1. DELETE(st : STRING; index, count : INTEGER) або DELETE(st, index, count) - процедура вилучає (знищує) count символів у рядку st починаючи з символу під номером index.
2. INSERT(subst: STRING; st: STRING; index: INTEGER) або INSERT(subst, st, index). - процедура вставляє рядок subst у рядок st, починаючи з символу під номером index.
3. STR(X [:width[:decimals]]; st: STRING) - процедура перетворює число Х (real або integer) в рядок символів st так, як це робить це робить процедура WRITELN перед виводом. Параметри width і decimals (якщо вони присутні, тобто дужки [ ] показують на необов'язковість цих параметрів) задають формат перетворення: загальну ширину поля для представлення числа Х (width) та кількість символів дрібної частини (decimals), якщо X : REAL.
4. VAL(st, x, code) - процедура перетворює рядок символів st в значення числової змінної X (визначеного типу). Параметр code = 0, якщо перетворення пройшло успішно, тоді X дорівнює результату перетворення. Якщо виявляється помилковий символ у рядку st, то значення Х не змінюється, а code дорівнює номеру позиції з помилковим символом.
!Особливість!: Недопустимими є пропуски (пробіли) праворуч числа у рядку st!
val (`123_ _', x, k) {помилка, x - не змінюється, k=4 };
val (`_ _123', x, k) {вірно, x=123, k=0 };
Приклади:
var x : real;
y : integer;
st, st1 : string;
begin
st := concat (`12', `345'); {рядок st містить 12345}
st1 := copy (st, 3, Length(st)-2); {st1 містить 345}
insert(`-' , st1, 2); {рядок st1 містить 3-45}
delete(st, pos(`2', st), 3); {рядок st містить 15}
str(pi : 6 : 2, st ); {рядок st містить 3,14}
val (`3.1415', x, y); {y містить 2, х без змін}
end.
Висновок: таким чином над рядками можна виконувати операції присвоювання, порівняння, з'єднання (конкатенації), введення та виведення. Для цього використовують широкий набір процедур та функцій.
Подобные документы
Структура (класифікація) типів даних мови T. Pascal: прості, структуровані; стандартні модулі, їх призначення, символьні масиви. Визначення рядкового типу даних, основні операції. Стандартні засоби обробки рядків: присвоювання, порівняння, з’єднання.
реферат [32,3 K], добавлен 13.11.2010Групи та призначення операторів мови Pascal. Характеристика операторів простих, структурних, складених, умовних. Особливості їх виконання. Обов’язкові вимоги до них. Відмінності й гарного стилю роботи з циклічними операторами while, repeat і for.
лекция [590,8 K], добавлен 24.07.2014Тип як множина допустимих значень і операцій над об’єктами, формат його внутрішнього представлення. Класифікація типів даних; масиви, записи, файли, стандартні модулі. Функції і оператори роботи з рядками, засоби їх обробки: процедури і функції.
реферат [32,3 K], добавлен 13.11.2010Математичний опис задачі виконання символьних операцій з многочленами, розробка алгоритмів її реалізації і сама реалізація на одній з версій алгоритмічної мови Pascal, контрольна перевірка правильності. Тестування програми на екстремальних вхідних даних.
контрольная работа [24,1 K], добавлен 20.09.2010Загальні відомості про мову програмування, історія створення та використовування. Програма мовою Паскаль складається з лексем і символів – розділювачів. Робота з масивами, створення алгортимів. Складання програм з використанням процедур та функцій.
реферат [18,3 K], добавлен 22.10.2010Етапи історичного розвитку алгоритмічної мови. Ознайомлення із основними символами, службовими словами, стандартними ідентифікаторами, функціями, виразами та процедурами мови програмування Паскаль. Розгляд графічних режимів дисплейних адаптерів.
реферат [59,2 K], добавлен 13.11.2010Характерні особливості мови Паскаль, її сутність. Характеристика процедур та операцій програми з пошуку книги або автора, їх видаленні, повідомленні про помилку. Автоматичне створення файлів по адресу "BookDataBase.txt". Програмний код і лістинг програми.
контрольная работа [169,0 K], добавлен 12.01.2012Базові типи змінних. Елементарний ввід-вивід. Умовні оператори та оператори множинного вибору. Основні функції вводу даних із клавіатури scanf, gets, getchar. Визначення основних (базових) типів даних. Вивід повідомлення при невірно заданому ключі.
контрольная работа [74,6 K], добавлен 03.10.2010Дії над елементами масиву. Структурні, умовні та складові оператори. Привласнення об'єктного типу. Засоби перенесення результатів із програми Паскаля в редактор Word. Програмні реалізації алгоритму. Ідентифікатори, підпрограми: процедури і функції.
курсовая работа [64,3 K], добавлен 20.10.2014Характеристика мови програмування VBA (Visual Basic for Application): можливості й засоби. Використання редактора Visual Basic. Створення та виконання VBA-програм. Типи даних, змінні й константи, операції й вирази. Керуючі оператори, процедури й функції.
реферат [29,9 K], добавлен 28.06.2011