Главная

Популярная публикация

Научная публикация

Случайная публикация

Обратная связь

ТОР 5 статей:

Методические подходы к анализу финансового состояния предприятия

Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века

Ценовые и неценовые факторы

Характеристика шлифовальных кругов и ее маркировка

Служебные части речи. Предлог. Союз. Частицы

КАТЕГОРИИ:






Б_4_2. Мова програмування Turbo Pascal 7.0: процедури вводу і виводу інформації. Скласти програму обчислення функції, аргументи якої вводяться з клавіатури.

Загальний вигляд процедури вводу даних з клавіатури:

Read (список); Readln (список);

В списку перелічуються через кому імена змінних, значення яких вводиться з клавіатури.

Після кожного введення значення змінної натискається клавіша Enter, до тих пір, поки не буде введено значення всіх змінних.

Можна ще записати всі значення змінних в одному рядку, виділивши їх одне від одного проміжками (але не комами) і потім натиснути клавішу Enter.

Між процедурами Read і Readln є різниця. Після виконання процедури Read курсор залишається в цьому ж рядку. Після виконання процедури Readln буде зроблено перехід у наступний рядок.

Вивід даних виконується процедурами Write і Writeln. Загальний вигляд цих процедур:

Write (список); Writeln (список);

У списку перелічується через кому імена змінних, вирази та текстові константи. Якщо в списку є вираз, то він попередньо обчислюється, а вже потім результат виводиться на екран.

При використанні процедури Write значення змінних X,Y,Z будуть виводиться в одному рядку почергово, так як вони записані.

При виконанні процедури Writeln значення кожної змінної X,Y,Z будуть виводитися в окремих рядках. Тобто, після виведення значення змінної Х буде зроблено перехід у наступний рядок і т. п.

Для зручності виведення даних користуються своєрідними підказками користувача (текстовими константами). Наприклад, Writeln (‘X=’,X); На екран буде виведено результат: Х=23. Текстові константи, або підказки користувача, повинні з двох боків братися в лапки і відділяться від змінної комою.

Для зручності введення даних користуються поєднанням процедур Read і Write.

Наприклад. Write(‘Введіть значення Х:’);

Readln(X);

Загальний вигляд виконання даних процедур:

Введіть значення Х: 23

Існує ще один спосіб керування виведення інформації. Можна вказати ширину поля для кожного елемента виведення, форму запису числових значень. Здійснюється це з допомогою двох цілочисельних величин, які записуються у процедурі Write після відповідного елементу виведення і відділяються від нього і між собою двокрапкою – «:».

Write(Х1:3:2,Х2:4:1)

Перша величина вказує мінімальну ширину поля, яка відводиться для даного елемента виведення (для Х1 – відводиться 3 позиції, для Х2 – 4 позиції). Якщо елементу виведення необхідна менша кількість позицій, то перші незайняті заповнюються проміжками. Якщо елемент виведення не поміщається у відведене для нього пол., то для нього буде добавлено стільки позицій, скільки необхідно. Перед дійсними числами записується щонайменше один проміжок. Друга величина, яка записується після ширини поля, використовується для запису дійсних чисел (real) і вказує кількість десяткових знаків, які будуть записувати після десяткової крапки(Х1 – записується з точністю 2 цифр після коми, Х2 – 1 цифри). При цьому число виводиться у формі з фіксованою крапкою. Якщо ж точність не вказана, то число виводиться у формі з плаваючою крапкою.

Приведемо приклад, обчислення функції, аргументи якої вводяться з клавіатури.

Program S4;

uses crt;

Var

x,y,z,a:real;

Begin

clrscr;

writeln('vvedite chisla');

write('x=');

readln(x);

write('y=');

readln(y);

writeln('z=');

readln(z);

a:=(sqr(z)+x*y-cos(x))/(abs(x-y))+ln(z);

write('a=',a:5:3);

readkey;

End.

Б_5_2. Мова програмування Turbo Pascal 7.0: рядковий тип даних, обробка рядків. Навести приклад програмного коду, який демонстрував би можливості Turbo Pascal 7.0 з обробки рядків.
Рядки (string). Дане типу рядок — це послідовність довільних символів (тобто елементів типу char). Сталі типу рядок записують за допомогою двох штрих-символів, які охоплюють текст. Рядок може містити від 0 до 255 символів. Наприклад, 'Україна', 'Львівська політехніка', '' – порожній рядок нульової довжини, ' ' – рядок, що містить один символ-пропуск.
Змінну типу рядок оголошують за допомогою слова string так:
var <змінна>: string[n];
де n –довжина рядка, n<256. Довжину рядка можна не зазначати.
Приклад.
const slovo=’University’;
var fraza1: string[45]; fraza2: string;

Над змінними типу рядок визначені операції з’єднання (+) та порівняння (<, <=, >, >=, =, <>). Порівняння двох рядків здійснюється зліва направо до перших різних символів, причому 'A'<'B', 'B'<'C' тощо. “ Більшим ” вважається символ, який розташований в алфавіті далі.
Числовий код символу дає функція ord, наприклад, ord('B')=66, ord('A')=65. Зворотну дію виконує функція chr: chr(66) дає 'B'.
Приклад. Нехай t1='New', t2=' Year'. Тоді з'єднанням цих рядків буде s:=t1+t2 (s матиме значення 'New Year'). Тут s > t1.
Приклад. Вивести на екран малі літери латинського алфавіту та їхні коди можна так: for v:= 'a' to 'z' do writeln(v,ord(v):5).

Program S5;
var
f1,f2:string[45];
s:string;
begin
write('vvedite fraza1, f1= ');
readln(f1);
write('vvedite fraza2, f2= ');
readln(f2);
s:=f1+f2;
writeln('slovo= ',s);

Readln; end.

Б_6_2. Мова програмування Turbo Pascal 7.0: структуровані типи даних. Навести приклад програми з використанням структурованого типу даних. Структурированные типы данных Любой из структуированных типов данных характеризуется множественностью образующих этот тип элементов. Переменная или константа структуированного типа всегда имеет несколько компонент. Каждая из этих компонент, в свою очередь, может принадлежать структуированному типу, что позволяет говорить о возможной вложенности типов.   В Турбо Паскале пять структуированных типов: -массивы; -строки; -множества; -записи; -файлы;   Массивы - это совокупности однотипных элементов. Характеризуются они следующим: каждый компонент массива может быть явно обозначен и к нему имеется прямой доступ; число компонент массива определяется при его описании и в дальнейшем не меняется. Для обозначения компонент массива используется имя переменной-массива и так называемые индексы, которые обычно указывают желаемый элемент. Тип индекса может быть только порядковым (кроме longint). Чаще всего используется интервальный тип (диапазон). Описание типа массива задается следующим образом: type имя типа = array[ список индексов ] of тип Здесь имя типа - правильный идентификатор; список индексов - список одного или нескольких индексных типов, разделенных запятыми; тип - любой тип данных. Вводить и выводить массивы можно только поэлементно.   Понятие множества в языке Паскаль основывается на математическом представлении о конечных множествах: это ограниченная совокупность различных элементов. Для построения конкретного множественного типа используется перечисляемый или интервальный тип данных. Тип элементов, составляющих множество, называется базовым типом.   Множественный тип описывается с помощью служебных слов Set of, например: type M = Set of B; Здесь М - множественный тип, В - базовый тип.   Пример описания переменной множественного типа: type M = Set of 'A'..'D'; var MS: M;   Принадлежность переменных к множественному типу может быть определена прямо в разделе описания переменных: var C: Set of 0..7;   Константы множественного типа записываются в виде заключенной в квадратные скобки последовательности элементов или интервалов базового типа, разделенных запятыми, например: ['A', 'C'] [0, 2, 7] [3, 7, 11..14]   Константа вида [ ] означает пустое подмножество. Количество базовых элементов не должно превышать 256. Инициализация величин множественного типа может производиться с помощью типизированных констант: const seLit: Set of 'A'..'D'= [];   Порядок перечисления элементов базового типа в константах безразличен.   Запись представляет собой совокупность ограниченного числа логически связанных компонент, принадлежащих к разным типам. Компоненты записи называются полями, каждое из которых определяется именем. Поле записи содержит имя поля, вслед за которым через двоеточие указывается тип этого поля. Поля записи могут относиться к любому типу, допустимому в языке Паскаль, за исключением файлового типа.   Описание записи в языке Паскаль осуществляется с помощью служебного слова record, вслед за которым описываются компоненты записи. Завершается описание записи служебным словом end. Например, телефонный справочник содержит фамилии и номера телефонов, поэтому отдельную строку в таком справочнике удобно представить в виде следующей записи: type TRec = Record FIO: String[20]; TEL: String[7] end; var rec: TRec;   Описание записей возможно и без использования имени типа, например: var rec: Record FIO: String[20]; TEL: String[7] end;   Обращение к записи в целом допускается только в операторах присваивания, где слева и справа от знака присваивания используются имена записей одинакового типа. Во всех остальных случаях оперируют отдельными полями записей. Чтобы обратиться к отдельной компоненте записи, необходимо задать имя записи и через точку указать имя нужного поля, например: rec.FIO, rec.TEL Такое имя называется составным. Компонентой записи может быть также запись, в таком случае составное имя будет содержать не два, а большее количество имен.   Обращение к компонентам записей можно упростить, если воспользоваться оператором присоединения with.   Он позволяет заменить составные имена, характеризующие каждое поле, просто на имена полей, а имя записи определить в операторе присоединения: with rec do оператор;   Здесь rec - имя записи, оператор - оператор, простой или составной. Оператор представляет собой область действия оператора присоединения, в пределах которой можно не использовать составные имена. Например для нашего случая: with rec do begin FIO:='Иванов А.А.'; TEL:='2223322'; end; Задача. Подсчитать количество гласных и согласных букв в строке. Program S6; var glas,soglas: set of char; st: string; ii,len,glas1,soglas1: byte; begin glas:= ['a','e','i','o','u','y']; soglas:= ['b','c','d','f','g','h','j','k','l','m','n','p','q','r','s','t','v','w','x','z']; write('vvedite stroky --> '); readln(st); len:= length (st); glas1:=0; soglas1:=0; for ii:= 1 to len do begin if st[ii] in glas then inc(glas1); if st[ii] in soglas then inc(soglas1); end; writeln('Glasnye: ',glas1); writeln('Soglasnye: ',soglas1); readln; end. Б_7_ 2. Мова програмування Turbo Pascal 7.0: умовний оператор, використання кількох умов в одному умовному операторі. Навести приклад програмного коду з використанням складених умов. Алгоритм ветвлений в зависимости от выполнения определенных условий реализуется по одному из нескольких, заранее предусмотренных направлений. Каждое отдельное направление называется ветвью вычислений. Выбор той или иной ветви осуществляется уже при выполнении программы в результате проверки некоторых условий. Управляющая конструкция для программной реализации таких алгоритмов называется условным оператором. Условный оператор реализует алгоритмическую конструкцию «развилка» и изменяет порядок выполнения операторов в зависимости от истинности или ложности некоторого условия. Существует два варианта оператора. Полная форма: if <условие> then <оператор 1> else <оператор 2>; и краткая форма: if <условие> then <оператор 1>; В этих операторах: <условие> - некоторое логическое выражение, истинность которого проверяется; <оператор 1> - оператор, который выполняется, если логическое выражение <условие> истинно. <оператор 2> - оператор, который выполняется, если логическое выражение <условие> ложно. Полная форма условного оператора выполняется следующим образом: - если условие истинно, то выполняется оператор 1, а потом оператор, который находится в программе после всего условного оператора; - если условие ложно, то выполняется оператор 2, а потом оператор, который находится после условного оператора. Краткая форма выполняется следующим образом: - если условие истинно, то выполняется условие 1, а потом оператор, который находится после всего условного оператора; - если условие ложно, то выполняется оператор, который находится после условного оператор. В качестве условия после служебного слова if может применятся любое выражение, результатом которого является логическая величина. Это может быть простое логическое условие, составное логическое условие составленное из простых условий с помощью логических операций, таких как and - і, or - чи, not - не. При записі умови можна використовувати всі можливі операції відношення. Результатом умови завжди буде величина булевого типу. Наприклад, 1. Простое условие: а<5,c>=a,x=0,a<b 2. Составное условие(a>5) and (a<10),(a=2)or(b=3) Программа использования составного условия: Составить программу вычисления значения функции Program S7; Uses crt; var x,y:real; begin write ('x='); readln(x); if x<0 then y:=x else if (0<=x) and (x<5) then y:=5 else y:=5*x; writeln('x=',x,' y=',y); readln; end. Б_8_2. Мова програмування Turbo Pascal: стандартні функції та функції користувача. Навести приклад програми з обчислення виразу з використанням процедури або функції користувача. Стандартні функції та процедури у Turbo Pascal – це функції та процедури, що зберігаються у спеціальних бібліотеках та з якими може працювати програміст. В загальному вигляді виклик процедур та функцій має такий вигляд: <ім’я процедури (функції)> (список параметрів). У практиці програмування дуже часто зустрічаються ситуації, коли по ходу виконання програми необхідно робити одні й тіж самі дії або обчислення. Для того щоб уникнути повторення однакових записів та зробити програму простіше та зрозуміліше, виділяють ці фрагменти у самостійні програми, що може бути використана багаторазово. Така автономна частина програми, що реалізує який-небудь алгоритм та допускає звертання до неї з різних частин програми, називається підпрограмою. Підпрограми розподіляються на процедури та функції. Структура будь-якої процедури повторює структуру усієї Pascal-програми, та виглядає наступним чином: procedure <ім’я процедури>; uses <ім’я модулів>; label <ім’я меток>; const <ім’я констант>; type <ім’я типів користувача>; var <ім’я локальних змінних>; <розділ об’яви підпрограм>; begin <оператори>; end; Загальна структура опису функції співпадає зі структурою процедури, за виключенням заголовку, що має наступний вигляд: function ім’я функції (список формальних змінних): тип результату; Функції використовуються в тому випадку, якщо очікується результат її роботи. Якщо ж послідовність команд орієнтована тільки на виконання деякої послідовності дій (вивід на екран, малювання і т.д.), краще оформити підпрограму процедурою. Приклад: Program S8; uses crt; var a,x,y:integer; function f(a,x:integer):integer; begin {f} y:=sqr(x)*a; f:=y; end;{f} begin{main} clrscr; writeln('Vvedite x i a'); readln(x, a); y:=f(a,x); writeln(y); readkey; end.{main}   Б_9_2. Мова програмування Turbo Pascal. Оператор вибору (Case). Навести приклад програми вибору назви дня тижня за заданим номером з використанням даного оператору.   Оператор выбора   Часто возникают ситуации, когда приходится осуществлять выбор одного из нескольких альтернативных путей выполнения программы. Несмотря на то, что такой выбор можно организовать с помощью оператора if.. then, удобнее воспользоваться специальным оператором выбора. Его формат:   case выражение of вариант: оператор; ... вариант: оператор; end; или case выражение of вариант: оператор; ... вариант: оператор; else оператор end; выражение, которое записывается после ключевого слова case, называется селектором, оно может быть любого перечисляемого типа. вариант состоит из одной или большего количества констант или диапазонов, разделенных запятыми. Они должны принадлежать к тому же типу, что и селектор, причем недопустимо более одного упоминания вариантав записи инструкции case. Из перечисленного множества операторов будет выбран только тот, перед которым записан вариант, совпадающий со значением селектора. Если такого варианта нет, выполняется оператор, следующий за словом else (если он есть). Пример case ch of 'A'..'Z', 'a'..'z': WriteLn('Буква'); '0'..'9': WriteLn('Цифра'); '+', '-', '*', '/': WriteLn('Оператор'); else WriteLn('Специальный символ') end; Для удобного записи большого количества разветвлений используют оператор выбора, или, как еще говорят, оператор варианта. Общий вид полного оператора выбора: CASE <имя переменной> OF <Значення_зминнои_1>: P 1, <Значення_зминнои_2>: Р 2; <Значення_зминнои_N>: Р n; ELSE Р n +1 END; где <значення_переменной_1>... <Значення_переменной_N> - перечень значений указанной в операторе переменной, при которых соблюдаются соответствующие операторы P 1... P n В операторе выбора на использование типов переменных величин накладывается определенное ограничение Переменные величины, используемые в операторе case, могут быть лишь счисления типа! К типам исчисления относятся типы, для элементов которых существует понятие «следующего» и «предыдущего» элементов. Среди известных стандартных типов до счисления относятся все типы, характеризующие целые числа (integer, shortint, longint, byte, word), символьный (char) и логический (boolean) типы. К из многочисленных нельзя отнести переменные вещественного типа (real) и порядкового (string). Ведь, действительно, невозможно сказать, какое следующее число следующего за 1.012, или какое слово предшествует слову «алгоритм». Нам еще придется шире познакомиться с многочисленными типами в Паскале. Специфика выполнения оператора выбора заключается в том, что проверка значения переменной указанного ее значениями в операторе происходит до первого совпадения. Остальные значений уже не проверяются. Если же не произошло ни одного совпадения, то выполнится оператор, указанный после служебного слова else. Общий вид сокращенного оператора выбораотличается лишь отсутствием служебного слова else: case <имя переменной> of <Значення_зминнои_1>: P,; <Значення_зминнои_2>: Р 2; <Значення_зминнои_Н>: Рн end; Чтобы лучше понять использование оператора выбора и объяснить некоторые его особенности, рассмотрим такой пример. Пусть по заданным числовыми значениями дней недели необходимо вывести информацию о том, рабочий это день или выходной.. Program S9; Uses crt; var d: integer; { n: integer;} begin clrscr; write ('Vvedite poryadkovuy nomer dnya nedeli:'); readln (d); case d of 1: write('Ponedelnik '); 2: write('Vtornik '); 3: write('Sreda '); 4: write('Chetverg '); 5: write('Pyatnica '); 6: write('Sybbota '); 7: write('Voskresenie '); end; {readln (d);} case d of 1.. 5: write ('- Eto raboghiy den '); 6,7: write ('- Eto ne rabochiy den ') else write ('Eto ne den! ') end; writeln ('nedeli'); readln; end. Оказывается, что в операторе case можно через запятую указывать несколько значений или через две точки интервал значений, при которых выполняется данный оператор. I еще обратите внимание, как можно комбинировать тексты, выводимых на экран монитора - оператор writeln ('недели') находится после оператора case и поэтому исполнится в любом случае. Б_10_2. Мова програмування Turbo Pascal. Оператор вибору (Case). Навести приклад програмного коду, який демонструє техніку роботи із оператором вибору. У випадку, коли необхідно використовували декілька вказівок розгалуження, вкладених одна в одну, то краще замінити їх вказівкою варіанту. Вказівка варіанту записується у вигляді: Casе <селектор> оf мітка 1:<вказівка!>; мітка2:<вказівка2>; …………………… міткаN: <вказівкаN> end; Вираз, який записується між службовим словом саsе і оf, називається селектором. Селектор повинен належати до одного з ці­лого, булевого, символьного типів або типу користувача. Дійсні рядкові типи в селекторах використовувати не можна. Мітки варіантів — константи, типи яких повинні співпадати з типом селектора. Всі мітки варіантів повинні бути різними. Якщо одній вказівці у вказівці варіанту відповідає декілька міток, то вони перераховуються через кому. Виконується вказівка варіанту так. Спочатку обчислюється значення виразу селектора, а тоді ви­конується та вказівка варіанту, перед якою стоїть мітка, значенні якої співпадає зі значенням селектора. Якщо ні одна з міток не співпадає зі значенням селектора, то виконується вказівка, яка знаходиться після вказівки варіанту, тобто після службового слова end. Мітки варіанту не потрібно описувати в розділі міток Label і їх не можна використовувати у вказівці безумовного переходу Goto. Наприклад. Скласти програму, яка визначає пору року за порядковим номером місяця. Program S10; uses crt; Var month: integer; begin clrscr; Writeln('Vvedite poryadkovuy nomer mesyaca: '); readln(month); if (month<1) or (month>12) then writeln('Takogo mesyaca net!') else case month of 3,4,5:writeln('Vesna'); 6,7,8:writeln('Leto'); 9,10,11:writeln('Osen'); 12,1,2:writeln('Zima') end; readkey; end. Б_11_2. Обробка масивів засобами мови програмування Turbo Pascal 7.0. Навести приклад програми обчислення кількості від‘ємних і суми додатних елементів головної діагоналі матриці X[15;15]. Массив, в отличии от простой переменной, представляет собой не одно значение, а множество значений, объединенных одним именем. В языке Turbo Pascal’е все значения из этого множества должны иметь один и тот же тип. Каждое из значений массива называется элементом массива. Доступ к элементам массива производится посредством указания имени массива и номера элемента массива, заключенного в квадратные скобки. Номер элемента массива называется индексом элемента массива. Использование элемента массива не отличается от использования простой переменной, имеющей тот же тип, что и элемент массива. В Turbo Pascal’е массив объявляется при помощи ключевого слова array, после которого в квадратных скобках указываются границы индексов – верхняя, а после двух точек нижняя. После квадратных скобок после ключевого слова of указывается тип элементов массива.   Пример определения массивов: Var A: Array [1..10] of integer; {массив A, состоящий из 10 элементов целого типа с индексами от 1 до 10} B: Array [5..8] of real; {массив B, состоящий из 4 элементов вещественного типа с индексами от 5 до 8} Пример работы с массивами: Begin A[1]:=3; {в элемент массива A с индексом 1 записали число 3} A[4]:=A[1]+1; {в элемент массива A с индексом 4 записали число 3+1=4} B[5]:=0.111; {в элемент массива B с индексом 5 записали число 0.111} B[A[1]+A[4]]:=B[5]*2; {в элемент массива B с индексом= A[1]+A[4]=3+4= 7 записали число 0.222} End.   Индексы массива В качестве индекса массива можно использовать любой порядковый тип, кроме типа Longint. Напомним, что порядковый тип – это тип, все значения которого можно перечислить. К таким типам относятся все целые типы(integer, shortint, longint, byte, word), все логические (boolean, wordbool, longbool, bytebool), символьный тип (char), перечисляемые типы и типы- диапазоны. Примеры использования в качестве индексов порядковых типов: Var {примеры объявления массивов} A: Array [Byte] of integer; {массив A, состоящий из 256 элементов, нижняя граница индекса 0, верхняя 255} B: Array [Char] of real; {массив B, состоящий из 256 элементов, нижняя граница индекса #0(символ с кодом 0), верхняя граница индекса #255(символ с кодом 255)} i:Byte; {переменная, используемая как индекс массива A} c:Char; {переменная, используемая как индекс массива B}   Begin {примеры обращения к элементам массива} A[45]:=0; {В элемент массива A, имеющий индекс 45, записали 0 } B[‘t’]:=2.4; {В элемент массива B, имеющий индекс ‘t’, записали 2.4} i:=200; {i присвоили значение 200 } c:=’#’; {c присволили значение ‘#’ } A[i]:=23400; {В элемент массива A, имеющий индекс i=200, записали 23400} B[c]:=123.456; {В элемент массива B, имеющий индекс c=’#’, записали 123.456} End.   Обычно в качестве индекса используют диапазон значений какого-либо перечисляемого типа. Например: Var {примеры объявления массивов} C: Array [-10..5] of integer; {массив C, состоящий из 16 элементов, нижняя граница индекса -10, верхняя 5} D: Array [‘A’..’Z’] of char; {массив D, состоящий из 26 элементов, нижняя граница индекса ’A’, верхняя граница индекса ‘Z’} j: -10..5; {переменная, используемая как индекс массива C} c1: ‘A’..’Z’; {переменная, используемая как индекс массива D} k: integer; {эту переменную можно использовать в качестве индекса массива C, т.к. –10..5 – это диапазон значений целого типа} c2: char; {эту переменную можно использовать в качестве индекса массива D, т.к.’A’..’Z’ – это диапазон значений символьного типа} begin {примеры обращения к элементам массивов} C[-4]:=3; D[‘F’]:=’%’; j:=4; C[j]:=-10; c1:=’R’; D[c1]:=’q’; k:=-3; C[k]:=80; c2:=’G’; D[c2]:=’Й’; end. Чаще же всего используют диапазон значений целого типа, причем нижний индекс обычноберут равным 1. Например: Var E: Array [1..10] of integer; {массив E, состоящий из 10 элементов, нижняя граница индекса 1, верхняя 10}   Представление массива в памяти Элементы массива размещаются в памяти в последовательных ячейках. Массив занимает количество байт, равное произведению количества элементов массива на размер одного элемента: SizeOfArray = NumElement * SizeOfElement где SizeOfArray – размер массива NumElement – количество элементов в массиве SizeOfElement – размер одного элемента Адрес первого (по порядку) элемента массива является адресом массива (будем обозначать его AdrArray). Адрес i-го элемента массива (его будем обозначать AdrI) можно вычислить по формуле: AdrI = AdrArray + (i – нижняя_граница_индекса) * SizeOfElement Замечание: Один массив может занимать в памяти не более 65520 байт. Нельзя, например, определить такой массив C: Var C: array[1..50000] of integer; - каждый элемент этого массива занимает в памяти 2 байта, элементов 50000, значит весь массив занимает 100000 байт > 65520 байт.   Пользовательский тип - массив В программе можно определить тип массива, для того чтобы потом его использовать для определения переменных типа массива. Пример: Type Arr = array[1..20] of integer; {определили тип массива целых чисел содержащего 20 элементов}   Var A,B: Arr; {A и B – массивы целых чисел, содержащие по 20 элементов} Дальше с массивами A и B можно работать как с обычными массивами: A[3]:=2; B[4]:=A[3]; и т.д.   Program S11; Uses crt; Const N=15; var Table: array [1..N, 1..N] of integer; S, K, L, p, i, j: integer; begin clrscr; randomize; for i:=1 to N do for j:=1 to N do Table[i, j]:=-10+random(20); writeln; for i:=1 to N do begin for j:=1 to N do begin write(Table[i, j]:3); end; writeln; end; begin K:=0; for i:=1 to N do for j:=1 to N do if (i=j) and (Table[i,j]<0) then K:=K+1; writeln; writeln('Kolichestvo otricatelnux = ', K); end; begin S:=0; p:=0; for i:=1 to N do for j:=1 to N do if (i=j) and (Table[i,j]>0) then S:=S+Table[i,j]; writeln('Summa polojutelnux elementov = ',S); readln; end; end.   Б_12_2. Обробка масивів засобами мови програмування Turbo Pascal 7.0. Навести приклад програмного коду опрацювання двовимірного масиву.   Масиви найбільш часто вживані структуровані типи в системі програмування Turbo Pascal. Вони володіють рядом властивостей, які дозволяють використовувати їх для зберігання і обробки значних об'ємів різної інформації. Особливий інтерес представляють двовимірні масиви, які називаються квадратними і прямокутними таблицями, або матрицями. В системі програмування Turbo Pascal існує декілька способів оголошення двовимірних масивів.   1 –ий спосіб type імя типу=array[тип індексу] of array [тип індексу] of тип компонент; var ідентифікатор масиву:імя типу; Наприклад: type MAS=array[1..5] of array [1..4] of integer; var MATR:MAS;   2-ий спосіб var імя масиву:array[m..n,k..h] of тип елементів масиву; Наприклад: var MATR:array[1..10,1..4] of integer;   Звернення до елементів масиву, здійснюється так: MATR[i, j] – це елемент масиву MATR, який знаходиться на перетині i-рядка і j- стовпця. Матриця, що має m рядків і n стовпців має розмір mxn, якщо m=n, то матриця називається квадратною Для квадратної матриці елементи з однаковими індексами для рядків та стовпців складають головну діагональ матриці а11, а22, а33,…Протилежна діагональ називається бічною, її елементи а13, а22, а31,… Для обробки матриць застосовують вкладені цикли з параметром. В Турбо Паскаль для однакових матриць допустима операція присвоювання масиву масивові. При обробці двовимірних масивів в Паскаль можливо знаходити суму та добуток елементів масиву, або елементів двох масивів, пошук елементів з деякою властивістю та впорядкування елементів масиву. Основні методи впорядкування «метод бульбашки» та метод вибору мінімального елемента.   Для прикладу опрацювання двовимірних масивів засобами мови ТПасаль ми приведемо таку задачу: Дана матриця розміром 4х4, елементи якої вводяться з клавіатури. Замінити всі елементи головної діагоналі на нулі. Вивести на екран монітора матрицю до обробки і після.   Program S12; uses crt; var matr:array[1..4,1..4] of integer; i,j:integer; begin clrscr; for i:=1 to 4 do for j:=1 to 4 do begin write('Vvedite element',' ',i,j,'='); readln(matr[i,j]); end; writeln('Massiv do obrabotki'); for i:=1 to 4 do begin for j:=1 to 4 do write(matr[i,j]:4); writeln; end; for i:=1 to 4 do matr[i,i]:=0; writeln('Massiv posle obrabotki'); for i:=1 to 4 do begin for j:=1 to 4 do write(matr[i,j]:4); writeln; end; readkey; end.   Б_13_2. Основні типи даних у мові програмування Turbo Pascal. Навести приклад програми з оголошенням 7-10 змінних, що належать до різних типів даних. К стандартным относятся целые, действительные, логические, символьный и адресный типы. ЦЕЛЫЕ типы определяют константы, переменные и функции, значения которых реализуются множеством целых чисел, допустимых в данной ЭВМ.   Тип диапазон значений требуемая память Shortint -128.. 127 1 байт Integer -32768.. 32767 2 байта Longint -2147483648.. 2147483647 4 байта Byte 0.. 255 1 байт Word 0.. 65535 2 байта   Над целыми операндами можно выполнять следующие арифметические операции: сложение, вычитание, умножение, деление, получение остатка от деления. Знаки этих операций: + - * / div mod Результат арифметической операции над целыми операндами есть вели- чина целого типа. Результат выполнения операции деления целых величин есть целая часть частного. Результат выполнения операции получения остатка от деления - остаток от деления целых. Например: 17 div 2 = 8, 3 div 5 = 0. 17 mod 2 = 1, 3 mod 5 = 3. Oперации отношения, примененные к целым операндам, дают результат логического типа TRUE или FALSE (истина или ложь). В языке ПАСКАЛЬ имеются следующие операции отношения: равенство =, неравенство < >, больше или равно >=, меньше или равно <=, больше >, меньше <. К аргументам целого типа применимы следующие стандартные (встроенные) функции, результат выполнения которых имеет целый тип: Abs(X), Sqr(X), Succ(X), Pred(X), и которые определяют соответственно абсолютное значение Х, Х в квадрате, Х+1, Х-1. Следующая группа стандартных функций для аргумента целого типа дает действительный результат: Sin(X), Cos(X), ArcTan(X), Ln(X), Exp(X), Sqrt(X). Эти функции вычисляют синус, косинус и арктангенс угла, заданного в радианах, логарифм натуральный, экспоненту и корень квадратный соответственно. Результат выполнения функции проверки целой величины на нечетность Odd(X) имеет значение истина, если аргумент нечетный, и значение ложь, если аргумент четный: X=5 Odd(X)=TRUE, X=4 Odd(X)=FALSE. Для быстрой работы с целыми числами определены процедуры: Inc(X) X:=X+1 Inc(X,N) X:=X+N Dec(X) X:=X-1 Dec(X,N) X:=X-N ДЕЙСТВИТЕЛЬНЫЕ типы определяет те данные, которые реализуются подмножеством действительных чисел, допустимых в данной ЭВМ. Тип Диапазон значений Кол.во цифр мантиссы Требуемая память (байт) Real 2.9e-39..1.7e+3 8 11 6 Single 1.5e-45..3.4e+38 7 4 Double 5.0e-324.. 1.7e+308 15 8 Extended 3.4e-4932.. 1.1e+4932 19 10 Comp -9.2e+18.. 9.2e+18 19 8 Тип Real определен в стандартном ПАСКАЛЕ и математическим сопроцессором не поддерживается. Остальные действительные типы определены стандартом IEEE 457 и реализованы на всех современных компьютерах. Для их использования при наличии сопроцессора или при работе на ЭВМ типа 80486 необходимо компилировать программу с ключом {$ N+}, а при отсутствии сопроцессора - с ключами {$N-,E+}. Тип Comp хотя и относится к действительным типам, хранит только длинные целые значения. Над действительными операндами можно выполнять следующие арифметические операции, дающие действительный результат: сложение +, вычитание -, умножение *, деление /. К величинам действительного типа применимы все операции отношения, дающие булевский результат. Один из операндов, участвующих в этих операциях, может быть целым. К действительным аргументам применимы функции, дающие действительный результат: Abs(X), Sqr(X), Sin(X), Cos(X), ArcTan(X), Ln(X), Exp(X), Sqrt(X),Frac(X), Int(X),Pi. Функция Frac(X) возвращает дробную часть X, функция Int(X) - целую часть X. Безаргументная функция Pi возвращает значение числа Пи действительного типа. К аргументам действительного типа применимы также функции Trunc(X) и Round(X), дающие целый результат. Первая из них выделяет целую часть действительного аргумента путем отсечения дробной части, вторая округляет аргумент до ближайшего целого. ЛОГИЧЕСКИЙ тип (Boolean) определяет те данные, которые могут принимать логические значения TRUE и FALSE. К булевским операндам применимы следующие логические операции: not and or xor. Логический тип определен таким образом, что FALSE < TRUE. Это позволяет применять к булевским операндам все операции отношения. В ТУРБО ПАСКАЛЬ введены еще разновидности логического типа: ByteBool, WordBool и LongBool, которые занимают в памяти ЭВМ один, два и четыре байта соответственно. СИМВОЛЬНЫЙ тип (Char) определяет упорядоченную совокупность символов, допустимых в данной ЭВМ. Значение символьной переменной или константы - это один символ из допустимого набора. Символьная константа может записываться в тексте программы тремя способами: как один символ, заключенный в апострофы, например: 'A' 'a' 'Ю' 'ю'; с помощью конструкции вида #K, где K - код соответствующего символа, при этом значение K должно находиться в пределах 0..255; с помощью конструкции вида ^C, где C - код соответствующего управляющего символа, при этом значение C должно быть на 64 больше кода управляющего символа. К величинам символьного типа применимы все операции отношения. Для величин символьного типа определены две функции преобразования Ord(C) Chr(K). Первая функция определяет порядковый номер символа С в наборе символов, вторая определяет по порядковому номеру К символ, стоящий на К-ом месте в наборе символов. Порядковый номер имеет целый тип. К аргументам символьного типа применяются функции, которые определяют предыдущий и последующий символы: Pred(C) Succ(C). Pred('F') = 'E'; Succ('Y') = 'Z'. При отсутствии предыдущего или последующего символов значение соответствующих функций не определено. Для букв из интервала 'a'..'z' применима функция UpCase(C), которая переводит эти букв в верхний регистр 'A'..'Z'. АДРЕСНЫЙ тип (Pointer) определяет переменные, которые могут содержать значения адресов данных или фрагментов программы. Для хранения адреса требуются два слова (4 байта), одно из них определяет сегмент, второе - смещение. Работа с адресными переменными (указателями) будет рассмотрена позже, сейчас отметим, что для получения значения адреса какой-либо переменной введена унарная операция @.   Program S13; Uses crt; Var a,b:array[1..10] of integer; i,j,k,s,l:byte; begin clrscr; for i:=1 to 10 do a[i]:=2+random(20); for i:=1 to 10 do begin k:=0; s:=0; for j:=1 to 10 do begin if a[i]>a[j] then k:=k+1; if a[i]=a[j] then s:=s+1; end; for l:=1 to s do b[k+1]:=a[i]; end; writeln('','',' i=',i,' j=',j,' k=',k,' s=',s,' l=',l); readln; end.  

 

<== предыдущая лекция | следующая лекция ==>
Циклические программы. Использование массивов в программах | Язык Паскаль. История создания.Алфавит языка.


Не нашли, что искали? Воспользуйтесь поиском:

vikidalka.ru - 2015-2024 год. Все права принадлежат их авторам! Нарушение авторских прав | Нарушение персональных данных