Файл: Обзор языков программирования высокого уровня (Реализация цикла с предусловием).pdf

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

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

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

Добавлен: 01.04.2023

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

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

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

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

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

В процессе выполнения курсовой работы решены следующие задачи:

1) раскрыты теоретические сведения о языках программирования высокого уровня;

2) представлена классификация языков программирования высокого уровня и выявлены их и достоинства и недостатки;

3) рассмотрены виды циклических структур;

4) рассмотрены понятие массива и представлена реализация одномерных и двумерных массивов средствами языка программирования высокого уровня Pascal;

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

Учитывая, что все поставленные задачи курсовой работы решены, можно обоснованно утверждать, что главная цель исследования – достигнута.