Алгоритмические структуры и структурированные типы данных

Тип работы:
Контрольная
Предмет:
Программирование


Узнать стоимость

Детальная информация о работе

Выдержка из работы

Содержание

  • Введение
  • Теоретическая часть
  • Постановка задачи
  • Задание № 1
  • Задание№ 2
  • Функция
  • Программа
  • Заключение
  • Список использованных источников

Введение

Тема данной контрольной работы — «Алгоритмические структуры и структурированные типы данных». Прежде, чем приступить к выполнению поставленной задачи, разберем теоретические понятия, которые затрагивает тема данной курсовой работы.

Теоретическая часть

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

Алгоритм характеризуется несколькими свойствами:

· Дискретность — разрывность структуры;

· Массовость — применимость ко всем задачам рассматриваемого типа, при любых исходных данных;

· Определенность — точность (каждый шаг алгоритма строго определен и не допускает различных толкований);

· Результативность — свойство, состоящее в том, что любой алгоритм должен завершаться за конечное число шагов;

· Формальность — строгое исполнение инструкций без отвлечения на поставленную задачу.

Существует три базовые алгоритмические структуры: следование, ветвление, повторение.

· Следование состоит из двух команд с указанной очередностью их выполнения и имеет вид: < команда-предшественник>; < команда-преемник>.

· Ветвление состоит из некоторого условия, проверяемого на истинность при выполнении структуры, команды, выполняемой при выполнении проверяемого условия, и команды, выполняемой при невыполнении условия. Структура имеет вид if < условие> then < команда, выполняемая при выполнении условия> else < команда, выполняемая при невыполнении условия>;.

· Структура повторения, она же цикл, служит для компактной записи одного и того же набора команд, повторяемых для различных значений параметров команд. Тело цикла — последовательность повторяемых команд, которая может быть и пустой. Например, цикл FOR < переменная цикла>: =< выражение 1> TO < выражение 2> DO {операторы тела цикла};

Теперь разберем понятие «Структурированные типы данных».

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

Структурированный тип данных — тип данных, позволяющий хранить вместе под одним именем некоторое количество переменных.

Структура, которая объединяет элементы одно типа данных — массив.

Массивы бывают: одномерные, двумерные.

Одномерный массив (вектор) — совокупность

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

Так, например, последовательность чисел 1, 2, 3, 4, 5 может образовывать одномерный вещественный массив размерности 5, например, с именем, а вида: а [1] = 1, а [2] = 2, а [3] = 3, а [4] = 4, а [5] = 5. Значение порядкового номера элемента массива — индекс элемента.

Двумерный массив (матрица) — совокупность одномерных векторов, рассматриваемых либо по горизонтали (по строкам), либо по вертикали (по столбцам) и имеющих одинаковую размерность, одинаковый тип и общее имя.

Чтобы выделить какой-то элемент матрицы, нужно так же, как и с вектором, обратиться к индексу, который имеет две вышеописанные координаты (столбец, строка).

Задание моей курсовой работы включает в себя работу с файлами.

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

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

Говоря о файлах в Паскале, мы должны помнить, что все файлы нужно описать в программе либо в разделе переменных VAR, либо в разделе типов TYPE.

Чтение файла — ввод данных из внешнего файла, находящегося на диске, в оперативную память машины.

Запись в файл — вывод результатов работы программы из оперативной памяти на диск в файл.

Обращение к файлу в Паскале происходит прописыванием пути к файлу на жестком диске, указывая при этом и имя файла. Например: 'С: Programs filesprogramma. txt'.

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

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

Подпрограммы помогают в решении некоторых важных задач:

· избавляют от необходимости многократно повторять в тексте программы аналогичные фрагменты;

· улучшают структуру программы, облегчая ее понимание;

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

Существует два вида подпрограмм: процедура и функция.

Процедура - это поименованный составной оператор, где имя задается служебным словом Procedure.

Структура процедуры имеет следующий вид:

Procedure < имя процедуры> (формальные параметры: их тип);

Var (локальные переменные) begin.

end;

Функция — это поименованный составной оператор, возвращающий единственное значение, имя которой задается служебным словом Function.

Структура функции имеет следующий вид:

Function < имя функции> (формальные параметры: их тип): < тип функции> ;

Var

(локальные переменные)

Begin …

< имя функции>: =< выражение>; end

Постановка задачи

Реализовать при помощи языка программирования Паскаль, поставленные задачи при помощи описанных выше алгоритмов.

Задание № 1

1. Имеется файл, в котором содержится размерность массива и его элементы.

Вычислить:

А) максимальный по модулю элемент массива;

Б) сумму элементов массива, расположенных между первым и вторым положительными элементами.

Полученные результаты записать в новый файл.

Задание№ 2

2. Соседями элемента Аij в матрице назовем элементы Akl где i - 1? k ? i + 1, j - 1? l ? j + 1, (k, l) ? (i, j). Операция сглаживания матрицы дает новую матрицу того же размера, каждый элемент которой получается как среднее арифметическое имеющихся соседей соответствующего элемента исходной матрицы.

А) Построить результат сглаживания заданной вещественной матрицы размером 10×10 (оформить в виде процедуры).

Б) В сглаженной матрице найти сумму модулей элементов, расположенных ниже главной диагонали (оформить в виде функции).

алгоритм программирование следование ветвление

Задание № 1

Блок-схема:

Текст программы:

var

dan, rez: text;

max, s, i, k1, k2,n: integer;

a: array [1. 100] of integer;

begin

randomize;

writeln ('Введите количество элементов массива: ');

read (n);

assign (dan,'F: учёба (информатика лабыкурсоваяmassiv. txt');

assign (rez,'F: учёба (информатика лабыкурсоваяrezultat. txt');

rewrite (dan);

for i: =1 to n do begin

a [i]: =random (-50,50);

writeln (dan, a [i]);

end;

close (dan);

reset (dan);

max: =1;

for i: =1 to n do begin

readln (dan, a [i]);

if abs (a [i]) > max then max: =abs (a [i]);

end;

close (dan);

reset (dan);

rewrite (rez);

writeln (rez,'максимальный по модулю элемент: ', max);

for i: =1 to n do begin

readln (dan, a [i]);

if a [i] >0 then begin

k1: =a [i];

break;

end;

end;

writeln (rez,'первый положительный элемент: ', k1);

for i: =p to n do begin

readln (dan, a [i]);

if a [i] >0 then begin

k2: =a [i];

break;

end;

end;

writeln (rez,'второй положительный элемент: ', k2);

s: =k1+k2;

writeln (rez,'сумма двух первых положительных элементов: ', s);

close (dan);

close (rez);

end.

Тестовый пример:

Задание № 2

Блок-схема:

Процедура

Функция

Программа

Текст программы:

type

mas=array [1. 10,1. 10] of real;

const

n=10;

m=10;

var

a, b: mas;

i, j, k, l: integer;

procedure sglaj (var a: mas; n, m: integer; var b: mas; p, q: integer);

var

k, sr, i, j: integer;

begin

for i: =1 to n do

for j: =1 to m do

begin

if (i=1) and (j=1) or (i=1) and (j=m) or (i=n) and (j=1) or (i=n) and (j=m) then

begin

if (i=1) and (j=1) then b [i, j]: = (a [i+1,j] +a [i, j+1]) /2;

if (i=1) and (j=m) then b [i, j]: = (a [i+1,j] +a [i, j-1]) /2;

if (i=n) and (j=1) then b [i, j]: = (a [i-1,j] +a [i, j+1]) /2;

if (i=n) and (j=m) then b [i, j]: = (a [i-1,j] +a [i, j-1]) /2;

end

else

if (i> 1) and (i< n) and (j=1) or (i> 1) and (i< n) and (j=m) or (i=1) and (j> 1) and (j< m) or (i=n) and (j> 1) and (j< m) then

begin

if (i> 1) and (i< n) and (j=1) then b [i, j]: = (a [i-1,j] +a [i+1,j] +a [i, j+1]) /3;

if (i> 1) and (i< n) and (j=m) then b [i, j]: = (a [i-1,j] +a [i+1,j] +a [i, j-1]) /3;

if (i=1) and (j> 1) and (j< m) then b [i, j]: = (a [i, j-1] +a [i, j+1] +a [i+1,j]) /3;

if (i=n) and (j> 1) and (j< m) then b [i, j]: = (a [i, j-1] +a [i, j+1] +a [i-1,j]) /3;

end

else

b [i, j]: = (a [i-1,j] +a [i+1,j] +a [i, j-1] +a [i, j+1]) /4;

end;

end;

function sum (a: mas; n, m: integer): real;

var

i, j: integer;

s: real;

begin

s: =0;

for i: =1 to n do

for j: =1 to m do

if j<i then s: =s+abs (a [i, j]);

sum: =s;

end;

begin

randomize;

writeln ('исходная матрица: ');

for i: =1 to n do

for j: =1 to m do

a [i, j]: =random (-5,5);

for i: =1 to n do begin

for j: =1 to m do

write (a [i, j]: 5);

writeln

end;

writeln ('сглаженная матрица: ');

sglaj (a, 10,10,b, 10,10);

for i: =1 to n do begin

for j: =1 to m do

write (b [i, j]: 6:

1);

writeln

end;

writeln ('сумма модулей элементов ниже главной диагонали: ', sum (a, 10,10));

end.

Тестовый пример:

Заключение

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

Реализовала при помощи языка программирования Паскаль, поставленные задачи при помощи описанных выше алгоритмов.

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

Построила результат сглаживания заданной вещественной матрицы размером 10×10 и простроила в виде процедуры. В сглаженной матрице нашла сумму модулей элементов, расположенных ниже главной диагонали и оформила в виде функции.

Список использованных источников

1. Соболь Б. В. и др. Информатика. Учебник. / 3-е изд., доп. и перераб. — Ростов н/Д: Феникс, 2007. — 446 с.

2. Информационные технологии / Под ред. Трофимова В. В. — М.: Высшее образование, 2011. — 632 с.

3. Макарова Н. В. Информатика. Учебник. Начальный уровень / Изд. Питер, — 3 издание, 2013 год, 160 стр.

4. Романова Ю. Д. Информатика и информационные технологии: учебное пособие / Под ред. Ю. Д. Романовой. — 5-е изд., испр. и доп. — М.: Эксмо, 2011. — 704 с.

5. Информатика. Базовый курс / Под ред. С. В. Симоновича. — 2-е изд. — СПб.: Питер, 2011. — 639 с.

ПоказатьСвернуть
Заполнить форму текущей работой