
Министерство образования и науки РФ
Федеральное государственное бюджетное образовательное учреждение
высшего профессионального образования
«ТОМСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ СИСТЕМ УПРАВЛЕНИЯ И РАДИОЭЛЕКТРОНИКИ» (ТУСУР)
Кафедра автоматизированных систем управления (АСУ)
ОТЧЕТ
Лабораторная работа № 1
по дисциплине «Программирование»
Выполнил студент:
Доценко Илья Сергеевич
специальность 09.03.01
СОДЕРЖАНИЕ
1. Введение 3
2. Решение задачи №1 4
2.1. Описание используемых переменных 4
2.2. Описание алгоритма 5
2.3. Блок-схема алгоритма 6
2.4. Тестирование программы 7
3. Решение задачи №2 8
3.1. Описание используемых переменных 8
3.2. Описание алгоритма 8
3.3. Блок-схема алгоритма 9
3.4. Тестирование программы 10
4. Заключение 10
ПРИЛОЖЕНИЕ А ЛИСТИНГ ПРОГРАММЫ №1 12
ПРИЛОЖЕНИЕ B ЛИСТИНГ ПРОГРАММЫ №2 13
1. Введение
Лабораторная работа №1 посвящена созданию программ с использованием простых управляющих структур: условного оператора, цикла.
Условный оператор применяется для задания разветвления в программе, т.е. выбора действий в зависимости от истинности или ложности какого-либо условия. Имеется две формы записи условного оператора: полная (if – then - else) и сокращенная (if - then). Циклом называется последовательность, которая может выполняться более одного раза.
В Паскале существует три вида циклических конструкций.
Цикл с предусловием.
Используется в случае, когда циклическими действиями управляет логическое условие, и. как правило, к моменту выполнения не ясно, сколько нужно повторить циклические действия.
while <логическое выражение> do | заголовок цикла
<оператор> | тело цикла
Цикл с постусловием.
Используется в случае, когда число повторений заранее неизвестно, но известно условие, при выполнении которого цикл должен завершиться.
repeat <оператор> until <логическое выражение>
Цикл с параметром.
Используется в случае, когда число повторений цикла может быть определено перед его выполнением.
for <переменная>:=<диапазон> do <оператор>
<диапазон>::=<выражение> <направление>
<направление>::= to | downto
По ходу написания программы можно определить новые функции, чтобы определить алгоритм вычисления нового значения некоторого простого (или ссылочного) типа. Функции подобны выражениям, которые также вычисляют значения. Новая функция определяется в разделе описания, как правило, после описания переменных в виде:
function <имя функции> <формальные параметры>:<тип значения>;
<описание локальных констант, типов, переменных>
begin
<операторы>
end;
В задании используются простые типы данных (нет необходимости использовать массивы). Программы должны быть разработаны в рамках структурного программирования, без использования переходов и меток.
2. Решение задачи №1
Дано n вещественных чисел. Найти порядковый номер того из них, которое наиболее близко к квадрату какого-нибудь целого числа. Например, если n = 10 и вводим числа 110, 90, 80, 30, 50, 40, 40, 30, 22, 60, то ответ равен 3 или 5 (имеем |80 – 92| = | 50 – 72| = 1).
Подсказка: определите функцию f(k), которая вычисляет абсолютную величину разности k и ближайшего целого квадрата (ближайшим целым квадратом будет (trunc( k ))2или (trunc( k )+1)2).
2.1. Описание используемых переменных
Глобальные переменные:
n – количество чисел;
j – счетчик основного цикла;
minimum_value_number – Порядковый номер искомого числа;
minimum_value - искомого числа;
random_int – вводимое для анализа число;
sqr_value = квадрат числа для поиска разности;
difference – разность квадрата числа и искомого числа;
minimum_value_difference – минимальная разность квадрата числа и искомого числа;
minimum_value_sqr – значение квадрата числа, с минимальной разностью по отношению к анализируемому числу;
Локальны переменные функции abs_difference:
i – счетчик для цикла;
tmp – абсолютное значение разности между анализируемым числом и квадратом числа;
2.2. Описание алгоритма
Вводим количество чисел
Вводим число для анализа
Перебираем числовой ряд от 1 до 100 пока значение разности не будет минимальным
Повторяем операцию для всех вводимых чисел и определяем число с минимальной разностью.
2.3. Блок-схема алгоритма
Рис.
2.3Блок-схема алгоритма основной программы
Блокх
Рис.
2.4 Блок-схема алгоритма функции
abs_difference
Рис.
2.4 Блок-схема алгоритма функции
abs_difference
2.4. Тестирование программы
Последовательности чисел: 3,8,25:
Рис. 2.4.1
Последовательности чисел: 4,9,25,81:
Рис. 2.4.2
3. Решение задачи №2
Для заданной строки определить длину содержащейся в ней максимальной подстроки, не имеющей латинских букв.
3.1. Описание используемых переменных
Stdinput – переменная для ввода строки;
i – счетчик цикла;
k- длина текущей последовательности не латинских символов;
m – длина максимальной последовательности не латинских символов.
3.2. Описание алгоритма
Вводим строку
Проверяем, что строка не пуста
Начинаем последовательный перебор значений строки в поиск латинских символов
Определяем максимальную последовательность не латинских символов
Выводим результат
3.3. Блок-схема алгоритма
Рис.
3.3
3.4. Тестирование программы
Вводим “123456F123F1F123456789”
Рис.
3.4.1
Вводим “ f”
Рис.
3.4.2
Вводим “Pascal”
Рис.
3.4.3