Файл: Классификация языков программирования. Критерии выбора среды и языка разработки программ.pdf

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

Категория: Курсовая работа

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

Добавлен: 28.03.2023

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

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

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

Формат: Continue;

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

For i:= 1 to 3 do

begin

write('Введите ПАРОЛЬ:');

readln(S); //S и Parol – переменные одного типа

if S=Parol then break //прерывание цикла

else if i<>3 then continue;

//ограничение цикла

writeln( 'Доступ к программе ЗАПРЕЩЕН' );

writeln( 'Нажмите Enter' );

readln;

halt //прерывание программы

end;

3 Массивы данных

3.1 Одномерные массивы

Массив это структура данных, представленная в виде группы ячеек одного типа, объединенных под одним единым именем. Массивы применяются для обработки большого объема однотипных данных. Имя массива является указателем. Отдельная ячейка данных массива называется элементом массива. Элементами массива могут быть данные любого типа. Массивы могут иметь как одно, так и более одного измерений. В зависимости от размерности массивы делятся на одномерные массивы, двумерные массивы, трёхмерные массивы и так далее до n-мерного массива. Чаще всего в программировании используются одномерные и двумерные массивы.

Одномерный массив может быть числовой последовательностью с известным количеством членов. Так же, как и в последовательности, в массиве можно указать элемент с конкретным номером, например а5, или записать общий вид элемента, используя в качестве индекса переменную и указывая диапазон ее изменения: аi, i=1, 2, …, n.

Задачи на обработку массивов могут иметь различную формулировку. Например, начинаться со слов «Дано n чисел...», а далее говорится, что требуется сделать с этими числами. Чтобы решить такую задачу на компьютере с использованием языка программирования Паскаль, необходимо выполнить следующее:

  1. определить, какие числа даны: целые или вещественные;
  2. присвоить массиву имя, которое будет использоваться для каждого элемента, при этом к каждому элементу добавится номер (индекс);
  3. объявить массив в разделе переменных var, отведя место в памяти для массива;
  4. внести значения элементов в память.

В описании массива имеется специальное слово array (массив), после которого в квадратных скобках через две точки указывается диапазон изменения номеров элементов, затем слово of (из) и пишется тип данных массива. Встретив описание массива, транслятор отводит для него столько последовательных ячеек, сколько указано в квадратных скобках, и такого формата, каков тип данных массива. Эту память в программе можно использовать целиком или частично, вычисляя значения элементов массива или вводя их с клавиатуры (либо с диска). Чаще всего номера элементов меняются от 1 до заданного числа n. Поместив значение n в разделе констант (const), в описании можно указать в качестве переменной n последнее значение (верхнюю границу) номера элемента массива [3].


Пример описания:

Const n =10;

Var a: array [1..n] of real;

Это описание означает, что для массива а будет отведено десять ячеек оперативной памяти по шесть байтов каждая. Имена ячеек: а1, а2, …, а10. в Паскале эти имена будут записаны следующим образом: a[1], …, a[10].

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

Для ввода данных в память необходимо организовать цикл. Поскольку число повторений ввода данных известно, удобно использовать цикл пересчет. Ввод описанного массива а может иметь вид:

For i : = 1 to n do

Read (a[ i ]);

Вводимые значения вводятся с клавиатуры через пробел и подтверждаются нажатием Enter.

Можно ввод прокомментировать и вводить каждое данное на отдельной строке экрана:

For i : = 1 to n do

Begin

Write(‘a[‘,i,’]=’);

Readln (a[i]);

End;

При обработке массивов решения многих задач основываются на следующих, более простых, задачах: вычисления суммы (произведения) элементов массива; нахождение наибольшего (наименьшего) элемента; упорядочение элементов по возрастанию или убыванию.

Рассмотрим реализацию одномерных массивов.

Пример 1. Вычисление суммы элементов массива.

Вычисление суммы элементов массива ничем не отличается, в принципе, от суммирования значений простых переменных. Решение задачи состоит из трех этапов: 1) ввод данных; 2) вычисление суммы; 3) печать результатов.

Листинг программы имеет вид:

program summa_elementov;

uses crt;

const n = 7;

var a: array [1 .. n ] of real;

S : real;

i: integer;

begin

clrscr;

writeln ('Input ', n, ' real numbers through a gap');

for i:= 1 to n do

read (a [ i ]);

S:= 0;

for i:= 1 to n do

S:= S + a[ i ];

writeln;

write (' Sum of elements of the massif S = ', S:1:1);

readkey

end.

Рисунок 15 демонстрирует результат работы данной программы.

Рисунок 15 – Результат работы программы

Пример 2. Упорядочение массива по возрастанию

Упорядочения массивов по какому-либо признаку, называются также сортировками. Существуют различные методы сортировок, различающиеся, в основном, по скорости получения результата. Рассмотрим один из них – «метод пузырька».

Пусть имеется последовательность чисел аl, а2, … , аn, которую необходимо упорядочить по возрастанию. Зафиксируем первый элемент и будем последовательно сравнивать его со стоящими справа. Если какой-то из элементов справа окажется меньше первого, то мы поменяем местами этот элемент с первым и продолжим сравнение уже нового элемента, стоящего на первом месте, с оставшимися справа числами. Если снова выявится элемент, меньший зафиксированного, то повторим перестановку. В результате первого просмотра последо­вательности на первом месте окажется наименьший из всех элементов, т.е. он, как более «легкий», как бы всплывает наверх (отсюда и название метода – «метод пузырька»). Теперь зафиксируем второй элемент и повторим просмотр, выполняя при необходимости перестановки элементов [14].


Уяснив идею решения, остановимся на двух вопросах: каким образом фиксировать элементы и как осуществить перестановку двух элементов? Чтобы при переборе элементов, стоящих справа от проверяемого, не менялся индекс последнего, индексы фиксируемого и стоящих правее него элементов должны быть различными: i и j. Индекс i изменяется от 1 до (п – 1), индекс j всегда на 1 больше i и пробегает все значения от (i +1) до п. Для каждого значения i индексу должен последовательно принять все допустимые значения, следовательно, конструкция программы, отражающая полный перебор всех элементов и их упорядочение по возрастанию, представляет собой двойной цикл.

При перестановке двух элементов используется третья переменная. Перестановка местами (обмен значениями в памяти) двух переменных а и b выглядит следующим образом 1) с: = а; 2) а:= b; 3) b: = с.

Программа сортировки методом пузырька имеет вид:

program sort_vozr;

uses crt;

const n = 7;

var a : array [ 1.. n ] of real;

i, j: integer;

c: real;

begin

clrscr;

for i:= 1 to n do

begin

write ('a [', i , '] = ');

readln(a[i]);

end;

for i:= 1 to n-1 do

for j:= i+1 to n do

if a[i] > a[j] then begin

c:=a[i];

a[i]:= a[j];

a[j]:= c;

end;

writeln;

writeln (' Result ');

for i:= 1 to n do

write (a[i]:7:1);

readkey;

end.

Рисунок 16 демонстрирует результат работы данной программы.

Рисунок 16 – Результат работы программы

3.2 Двумерные массивы

Одномерными массивами не всегда можно ограничиться. Например, необходимо обработать некоторые данные из таблицы. Таблица состоит из строк и столбцов – их количество определяет размер таблицы. Также и в двумерном массиве, есть такие характеристики как, количество строк и количество столбцов двумерного массива.

То есть, визуально, двумерный массив – это обычная таблица, со строками и столбцами [17]. Структура двумерного массива, с именем a, размером m на n показана ниже (рисунок 17).

Рисунок 17 – Cтруктура двумерного массива

При объявлении двумерного массива указывается имя массива, затем в квадратных скобках указывается диапазон изменения индексов строк и столбцов соответственно. Рассмотрим пример объявления двумерного массива с количеством элементов, равным 15. При таком количестве элементов двумерный массив может иметь три строки и пять столбцов или пять строк и три столбца.


Если число строк таблицы равно числу столбцов, то такая таблица называется квадратной. Главная диагональ квадратной таблицы проходит из левого верхнего утла в правый нижний.

Рассмотрим задачи обработки таблиц и алгоритмы их решения [18].

Пример 1. Вычисление суммы элементов главной диагонали квадратной таблицы.

Для решения задачи надо выполнить следующие шаги: 1) ввести таблицу в память; 2) найти сумму элементов главной диагонали; 3) напечатать результат. Описание таблицы, как и описание одномерного массива, используется для резервирования памяти. В описании указываются диапазоны для двух номеров: строк и столбцов.

Const n = 3;

Var b: array [ 1..n, 1..n ] of real;

i, j: integer;

При обработке массивов в разделе переменных программы появляются имена индексов элементов: для одномерного массива одной, для двумерного – двух целочисленных переменных.

При вычислении суммы элементов диагонали следует обратить внимание на имена суммируемых элементов: оба индекса одинаковые значение, т.е. в общем виде имя элемента диагонали – b[ i, i ]. Это означает, что можно рассматривать диагональ, как одномерный массив, и использовать один цикл для вычислений.

Листинг программы:

Program sum_diag;

Uses crt;

Const n = 3;

Var b: array [1..n, 1..n] of integer;

i, j: integer;

S: integer;

Begin

Clrscr;

writeln ('enter values of elements of the table in the lines');

writeln ('at the end of every line press <Enter> ');

for i:= 1 to n do

for j:= 1 to n do

read (b[i,j]);

S:= 0;

for i:= 1 to n do

S:= S + b[i,i];

write (' Sum elements of the main diagonal S = ' , S);

readkey

end.

Рисунок 18 демонстрирует результат работы данной программы.

Рисунок 18 – Результат работы программы

Пример 2. Перестановка строк таблицы.

В прямоугольной таблице В из n строк и m столбцов требуется поменять местами две строки. При решении этой задаче можно воспользоваться алгоритмом обмена значениями двух переменных из программы сортировки [8]. Для этого достаточно организовать цикл по переменной столбца и, используя промежуточную переменную, менять местами каждую пару элементов, стоящих в одном столбце. При заданных номерах строк К и L решение выглядит так:

program shift_mas;

uses crt;

const n = 3; m = 4;

var b: array [1..n, 1..m ] of integer;

c: integer;

i, j, K, L: integer;

begin

writeln ('Enter numbers of the lines of the table changed by places');

readln (K, L);

writeln;

writeln ('enter the table dimension ',n, ' on ',m);

//input of the table

for i:= 1 to n do

for j:= 1 to m do

read (b [ i, j ] );

//shift of lines

for j:= 1 to m do

begin

c:= b [ K, j ];

b [ K, j ]:= b [ L, j ];


b [L, j ]:= c

end;

//press of results

writeln;

writeln ('The table with the rearranged lines: ');

for i:= 1 to n do

begin

for j:= 1 to m do

write (b [i, j ]:4 );

writeln

end;

readkey

end.

Рисунок 19 демонстрирует результат работы данной программы.

Рисунок 19 – Результат работы программы

Данные примеры частично демонстрируют разнообразие обработки двумерных массивов. Практическая значимость массивов может подтвердиться при обработке не только числовых массивов, но и при использовании в качестве типа данных элементов массива более сложных структурированных типов данных или пользовательских типов.

Заключение

В первом разделе курсовой работы были изучены основные понятия языка программирования.

Язык программирования это искусственный язык. От естественных он отличается ограниченным количеством «слов», значение которых понятно транслятору, и очень строгими правилами записи операторов. Во время трансляции и компиляции программы подвергаются проверке синтаксис и семантика, основные критерии правильности написания программы.

Представлена классификация языков программирования и приведены примеры языков программирования для каждой категории.

Описаны этапы разработки программ с использованием электронно-вычислительных машин и представлены основные показатели для оценки качество программных средств.

На основе представленной классификации языков программирования высокого уровня для дальнейшей реализации циклических структур и массивов данных был определен язык программирования Pascal.

В процессе выполнения курсовой работы было выявлено, что использование циклов и массивов значительно ускоряют написание программ и существенно сокращают код необходимый для обработки больших объемов данных.

Второй раздел работы отражает информацию о циклических структурах и отмечено, что циклы служат не только для обработки массивов, но и просто для выполнения повторяющихся действий.

В рамках данной работы рассмотрены основные виды циклов, это:

– цикл с предусловием;

– цикл с постусловием;

– цикл с параметром.

Представлены схематические структуры и описаны методы реализации каждой из них. А также продемонстрирована практическая реализация каждого вида циклов. Рассмотрены специальные функции циклов – break и continue.

В третьем разделе работы введено понятие массива, и представлены основные виды массивов: одномерные и двумерные. Дан синтаксис описания ввода и вывода массивов.