Файл: Обзор языков программирования высокого уровня (Реализация цикла с предусловием).pdf
Добавлен: 01.04.2023
Просмотров: 92
Скачиваний: 2
СОДЕРЖАНИЕ
1. Языки программирования высокого уровня
1.2. Классификация языков программирования высокого уровня
1.3. Возможности современных языков программирования высокого уровня
2 Организация алгоритмов циклических структур
2.1 Реализация цикла с предусловием
2.2 Реализация цикла с постусловием
- определить, какие числа даны: целые или вещественные;
- присвоить массиву имя, которое будет использоваться для каждого элемента, при этом к каждому элементу добавится номер (индекс);
- объявить массив в разделе переменных var, отведя место в памяти для массива;
- внести значения элементов в память.
В описании массива имеется специальное слово 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.
В третьем разделе работы введено понятие массива, и представлены основные виды массивов: одномерные и двумерные. Дан синтаксис описания ввода и вывода массивов.
На реализуемых примерах можно сделать вывод о том, что обработка массивов с помощью циклов еще более сокращает объем написания кода, так как для обработки массивов требуется многократное повторение однотипных действий.
В процессе выполнения курсовой работы решены следующие задачи:
1) раскрыты теоретические сведения о языках программирования высокого уровня;
2) представлена классификация языков программирования высокого уровня и выявлены их и достоинства и недостатки;
3) рассмотрены виды циклических структур;
4) рассмотрены понятие массива и представлена реализация одномерных и двумерных массивов средствами языка программирования высокого уровня Pascal;
5) продемонстрирована практическая реализация циклических структур: цикла с предусловием, цикла с постусловием и цикла с параметром, а также представлены разработки программ с использованием одномерных и двумерных массивов.
Учитывая, что все поставленные задачи курсовой работы решены, можно обоснованно утверждать, что главная цель исследования – достигнута.