Лабораторная работа 1. Лабораторная работа 1 по дисциплине Программирование Выполнил студент Дорогавцев Роман Георгиевич специальность 2022 г
Скачать 260.71 Kb.
|
Министерство науки и высшего образования РФ Федеральное государственное бюджетное образовательное учреждение высшего образования ТОМСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ СИСТЕМ УПРАВЛЕНИЯ И РАДИОЭЛЕКТРОНИКИ (ТУСУР) Кафедра компьютерных систем в управлении и проектировании (КСУП) ОТЧЕТ Лабораторная работа № 1 по дисциплине «Программирование» Выполнил студент: Дорогавцев Роман Георгиевич специальность ________ 2022 г СОДЕРЖАНИЕ 1. Введение……………………………………………………………………..2 2. Анализ задачи № 1………………………………………………………….2 3. Решение задачи……………………………………………………………..4 3.1. Описание используемых переменных, обоснование выбора типа данных……………………………………….4 3.2. Описание алгоритма…………………………………………………….4 3.3. Тестирование программы………………………………………………...5 4. Заключение………………………………………………………………….6 Приложение 1. Листинг программы…………………………………………7 Приложение 2. Распечатки тестов…………………………………………...8 1 Введение Лабораторная работа №1 посвящена созданию программ с использованием простых управляющих структур: условного оператора, цикла. Циклы - основное средство в программировании, позволяющее коротко записывать алгоритм, осуществляющий большое количество действий. Для реализации циклических алгоритмов в языке Паскаль используются операторы повторения: оператор цикла с параметром; оператор цикла с предусловием; оператор цикла с постусловием. В настоящем параграфе изучается оператор цикла с параметром. Такой оператор предусматривает повторное выполнение некоторого оператора с одновременным изменением значения, присваиваемого управляющей переменной (параметру этого цикла). Он имеет вид: For <параметр> := <начальное значение> to <конечное значение> do <оператор> или For<параметр>:=<начальное значение> downto <конечное значение> do <оператор> Выбирающие операторы предназначены для выделения из составляющих их операторов - компонент одного - единственного, который и выполняется. Таким образом, выбирающие операторы реализуют управляющую структуру “ветвление”. В качестве выбирающих в языке определены условный оператор и оператор варианта. Существует две формы условного оператора : If <условие> then < оператор > IF <условие> then < оператор > else <оператор> Они соответствуют базовым управляющим структурам короткого и полного ветвления 2 Анализ задачи №1 Задача 1 Дано n вещественных чисел. Найти порядковый номер того из них, которое наиболее близко к квадрату какого-нибудь целого числа. Например, если n = 10 и вводим числа 110, 90, 80, 30, 50, 40, 40, 30, 22, 60, то ответ равен 3 или 5 (имеем |80 – 9 2 | = | 50 – 7 2 | = 1). Подсказка: определите функцию f(k), которая вычисляет абсолютную величину разности k и ближайшего целого квадрата (ближайшим целым квадратом будет (trunc( k ))2 или (trunc( k ) + 1)2 ) Задача 2 Для заданной строки определить длину содержащейся в ней максимальной подстроки, не имеющей латинских букв. 3 Решение задачи 3.1 Описание используемых переменных, обоснование типов данных Переменные задачи 1: prev – переменная для проверки предыдущей переменной с полным квадратом next - переменная для проверки следующей переменной с полным квадратом i, n, X, Min, Index, V – переменные циклов. Переменные задачи 2: Переменные: s- переменная, которая будет хранить введенные текстовые данные L, t -переменные для подсчета длины строки 3.2 Описание алгоритма Алгоритм решения задачи 1 Вводим длину последовательности n; Для цикла определяем количество вводимых и проверяемых элементов; Проверяем каждое вводимое переменное на соответствие поставленному условию (число близко к квадрату какого-либо целого числа); Выводим порядковый номер введенного числа поставленному условию. Рис. 1.1 Блок-схема нахождения числа близкого к квадрату введённого числа Алгоритм решения задачи 2 Вводим текстовые данные (строку); задаем начальное значение переменных L, t; проверяем введенные символы, если они соответствуют символам латинского алфавита, то к переменной t прибавляем значение 1 (то есть считает длину подстроки) и выводи результат. Если условие не выполнено то нет решения. Рис. 1.2 Блок-схема подсчета максимальной длины строки 3.3 Тестирование программы Тестирование задачи 1: При тестировании программы были выявлены синтаксические ошибки, которые исправлены правильность работы программы проверена на следующих исходных данных: количество вводимых переменных – 10, далее вводим сами значения переменных 110, 90, 80, 30, 50, 40, 40, 30, 22, 60. В результате выполнения программы мы получаем, что вводимый элемент №3 соответствует поставленной задачи. Примеры выполнения программы представлены в приложении. Тестирование задачи 2: При тестировании программы были выявлены синтаксические ошибки, которые исправлены правильность работы программы проверена на следующих исходных данных: PRIVET ПРИВЕТ привет, в результате получаем Длина максимальной подстроки: 0 Примеры выполнения программы представлены в приложении. 4 Заключение Использование специальных функций Pascal и операторов условия позволяют проводить анализ вводимых и находить решение поставленной задачи. Приложение 1. Листинг программы Задача 1 function Delta(k : integer) : integer; var prev, next : integer; begin { проверять надо разницу как с предыдущим, так и с последующим полным квадратом } prev := trunc(sqrt(k)); next := prev + 1; prev := Abs(k - sqr(prev)); next := Abs(k - sqr(next)); if prev > next then Delta := next else Delta := prev; end; var i, n, X : integer; min, index, V : integer; begin write('n = '); readln(n); min := maxint; for i := 1 to n do begin write('Элемент №', i, ' = '); readln(X); V := delta(X); if V < min then begin min := V; index := i; end; end; writeln('Наиболее близко к полному квадрату было число №', index); end. Задача 2. var S: string; L, t: byte; begin write('Введите строку: '); readln(S); L:=0; t:=0; while S<>'' do begin if not (upcase(S[1]) in ['A'..'Z']) then inc(t) else begin if t > L then L:=t; t:=0; end; delete(S,1,1); end; writeln('Длина максимальной подстроки: ',L); end. Приложение 2. Распечатки тестов Задача 1 Задача 2 |