ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 22.11.2019

Просмотров: 786

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

3.5Програмна реалізація функцій користувача

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

3.6Програмна обробка одновимірних масивів

Одновимірний масив — це послідовність однотипних даних.
Уважно проаналізувавши це означення, можна зробити висновок, що масив фактично поєднує в собі дві структури: множину елементів і заданий на цій множині порядок. Усі елементи масиву мають один і той самий тип, що називається базовим. З іншого боку, порядок теж визначається набором значень одного й того самого типу, що називається індексним, а самі ці значення називаються індексами. Кожному елементу масиву відповідає певний індекс. Індексний тип має бути простим порядковим типом даних. Кількість елементів в одновимір-ному масиві називається його розмірністю, або довжиною.З точки зору математики одновимірний масив — це вектор. Наприклад, масив або вектор А, що має п'ять елементів, які записують у математиці у вигляді індексованих змінних а1 и а2, а3, а4, а5, можна зобразити значеннями цих змінних у сусідніх ділянках оперативної пам'яті.

а1

а2

а3

а4

а5

Ідентифікатор типу масиву можна оголосити в розділі type з використанням такого синтаксису:

<ім'я типу масиву> = array[<нижній індекс>..<верхній індекс>] of <тип елементів>;

У цьому оголошенні array, of — зарезервовані слова, що перекладаються як «масив», «з»; <ім'я типу масиву> — деякий ідентифікатор; <тип елементів> — будь-який тип даних, окрім файлового типу; <нижній індекс> і <верхній індекс> — константи, що визначають межі діапазону допустимих значень індексу. Розмірність масиву дорівнює величині оrd(<верхній індeкс>)-оrd(<нижній індекс>)+1.

У розділі var оголошується змінна, що матиме раніше оголошений тип масиву:

<ім'я масиву> : <ім'я типу масиву>;

Синтаксис мови Pascal дає можливість поєднати у розділі var оголошення змінної-масиву із визначенням її типу. При цьому ідентифікатор типу масиву не оголошується:

<ім'я масиву> : array[<нижній індекс>..<верхній індекс>] of <тип елементів>;

Нагадаємо, що обсяг пам'яті, яка виділена для зберігання всіх оголошених у розділах var змінних, не повинен перевищувати 64 Кбайт. Тому є обмеження на максимальну кількість елементів у масиві. Так, максимальна кількість елементів типу integer не може перевищувати 32 767, а елементів типу real — 10 922.Оголосити змінну типу масиву можна і з використанням такого синтаксису:<ім'я масиву> : array[<тип індексів>] of <тип елементів>;


Тут <тип індексів> — цілі типи shortint або byte, для яких кількість допустимих значень становить 256, або оголошений в розділі type перелічуваний тип. Як типи індексів не дозволяється вказувати типи integer, word і longint, оскільки розмір оголошеного в такий спосіб масиву становив би не менш ніж 64 Кбайт.

Задача 3.6.1

#include <iostream>

using namespace std;

int main()

{

int point[5];

for(int i = 0; i < 5; i++)

{

cout << "Vvedite ocenku: ";

cin >> point[i];

}

cout << endl << "Byli vvedeny sleduyuschie ocenki" << endl;

for(int i = 0; i < 5; i++)

cout << point[i] << "\t";

return 0;

}

3.7Програмна обробка двовимірних масивів

Двовимірний масив - це масив, де кожному елементу ставиться у відповідність два індекси. Для початку роботи з масивом готуємо місце в пам'яті у вигляді прямокутника, що має задану кількість рядків і стовпчиків. Для цього описуємо його в розділі оголошень, використовуючи зарезервоване слово Аrray, після якого в квадратних дужках вказуємо розмірність масиву, причому враховуємо, що на першому місці вказуються індекси рядків, а на другому - стовпчиків, і обов'язково тип елементів.
Опис двовимірного масиву
<Ім'я_масиву> : array[<поч_інд_рядків>..<кін_інд_рядків>,
<поч_інд_стовп>. .<кін_інд_стовп>]
of <базовий_тип_елементів> ;

Приклад опису:

Var A:array[1..8,1..3] of real;

D:array[1..10,1.100] of integer;

Зверніть увагу на те, що значень у рядках або стовпчиках масиву не обов'язково буде стільки, скільки ми оголосили, але не більше.
Звертання до елементу двовимірного масиву:
Ім'я_масиву[<індекс_рядка>, <інд_стовпчика>]

Елементи двовимірного масиву (дані можуть бути подані у вигляді таблиці) визначаються іменем масиву та двома індексами: перший індекс означає номер рядка, а другий — номер стовпця, на перетині яких стоїть елемент, наприклад р[1,2], Розглянемо приклади оголошення масиву-константи bal, що має 2 рядки і 4 стовпці елементів, деякого масиву doba, який міститиме 24* 60 елементів цілого типу, двовимірного масиву р розміру 9 на 9 (тут буде 9* 9=81 елемент).

const bal: array [1..2,1..4] of integer=((4,3,5,3),(4,4,5,3));

var doba: array [0..23] of array [0..59] of integer;

p : array [l..9, l..9] of integer;

Тут bal[l,l]=4, bal[l,2]=3, .... bal[2,3]=5, bal[2,4]=3. Значення елементам масивів doba і р можна надати командою присвоєння двома способами,наприклад, так: doba[16,30]:=5.

Задача 3.7.1

#include <iostream>

#include <iomanip>

#include <stdlib.h>

#include <time.h>

using namespace std;

void initMatrix(int[][7], const int, const int);

void replaceColumn(int[][7], const int, int, int);

void printMatrix(int[][7], const int, const int);

int main()

{

const int column = 5, row = 7;

int matrix[column][row];

int counter, result, columnMin;

srand(time(NULL));

initMatrix(matrix, column, row);

cout << "\nNoSorted array" << endl << endl;

printMatrix(matrix, column, row);

for(int N = 0; N < column - 1; N++)

{ result = row * 30;

for(int i = N; i < column; i++)

{ counter = 0;

for(int j = 0; j < row; j++)

counter += matrix[i][j];

if(result > counter)

{ result = counter;

columnMin = i;

}

}

replaceColumn(matrix, row, N, columnMin);

}

cout << "\nSorted array" << endl << endl;

printMatrix(matrix, column, row);

return 0;

}

void initMatrix(int matrix[][7], const int column, const int row)

{ for(int i = 0; i < column; i++)

69. for(int j = 0; j < row; j++)

70. matrix[i][j] = rand() % 30;

}

void replaceColumn(int matrix[][7], const int row, int N, int columnMin)

{

int buffer[row];

for(int j = 0; j < row; j++)

{ buffer[j] = matrix[columnMin][j];

matrix[columnMin][j] = matrix[N][j];

matrix[N][j] = buffer[j];

}

}

void printMatrix(int matrix[][7], const int column, const int row)


{ for(int i = 0; i < column; i++)

{

for(int j = 0; j < row; j++)

cout << setw(3) << matrix[i][j];

cout << endl;

}

}





Список використаної літератури

  1. C/C++. Программирование на языке высокого уровня / Т. А. Павловская. — СПб. : Питер, 2003. —461 с: ил.

  1. Программирование и основы алгоритмизации: Учеб. пособие/В.Г. Давыдов. — М.: Высш. шк., 2003. — 447 е.: ил.

  1. Основы программирования: Учебник. — М.: Мастерство,2002. - 432 с.