Файл: Лабораторная работа 1 по дисциплине Программирование Выполнил студент СергеевСмирнов Сергей Николаевич специальности 09. 03. 01.docx
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 20.03.2024
Просмотров: 28
Скачиваний: 0
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
Министерство науки и высшего образования РФ
Федеральное государственное бюджетное образовательное учреждение
высшего образования
«ТОМСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ СИСТЕМ УПРАВЛЕНИЯ И РАДИОЭЛЕКТРОНИКИ» (ТУСУР)
Кафедра автоматизированных систем управления (АСУ)
ОТЧЕТ
Лабораторная работа № 1
по дисциплине «Программирование»
Выполнил студент:
Сергеев-Смирнов Сергей Николаевич
специальности 09.03.01
группа з-431П10-2
СОДЕРЖАНИЕ
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. Заключение 11
ПРИЛОЖЕНИЕ А ЛИСТИНГ ПРОГРАММЫ №1 12
ПРИЛОЖЕНИЕ B ЛИСТИНГ ПРОГРАММЫ №2 14
1. Введение
Лабораторная работа №1 посвящена созданию программ с использованием простых управляющих структур: условного оператора, цикла.
Задание состоит из двух задач. Решение первой задачи предусматривает использование простых типов данных, а решение второй задачи —
строкового типа данных. В ходе выполнения лабораторной работы необходимо составить программы на языке Паскаль. В некоторых программах полезно определить вспомогательные функции или процедуры.
Новая функция определяется в разделе описания, как правило, после описания переменных в виде:
function <имя функции> <формальные параметры>:<тип значения>;
<описание локальных констант, типов, переменных>
begin
<операторы>
end;
Во всех задачах строки вводятся пользователем с клавиатуры.
Условный оператор используется для разветвления, т.е. выбора действий в зависимости от условия, которое может быть либо истинное, либо ложное. У условных операторов есть две формы записи: полная (if – then - else) и сокращенная (if - then).
Циклом называется последовательность, которая может выполняться более одного раза.
В Паскале существует три вида циклических конструкций.
-
Цикл с предусловием(while).
Используется в случае, когда циклическими действиями управляет логическое условие, и как правило, к моменту выполнения не ясно, сколько нужно повторить циклические действия.
while <логическое выражение> do | заголовок цикла
<оператор> | тело цикла
-
Цикл с постусловием(repiat).
Используется в случае, когда число повторений заранее неизвестно, но известно условие, при выполнении которого цикл должен завершиться.
repeat <оператор> until <логическое выражение>
-
Цикл с параметром(for).
Используется в случае, когда число повторений цикла может быть определено перед его выполнением.
for <переменная>:=<диапазон> do <оператор>
<диапазон>::=<выражение> <направление>
<направление>::= to | downto
2. Решение задачи №1
Числа Фибоначчи: F0=0, F1=1, а любое следующее число Фибоначчи равно сумме двух предыдущих: Fn = Fn-1+Fn-2. Известно, что при достаточно больших n справедливо приближенное равенство
Определите наименьший номер n, начиная с которого равенство выполняется с точностью до заданного eps.
2.1. Описание используемых переменных
eps - погрешность;
Fn, F – результаты выражений;
F0, F1 – первые два элемента чисел Фибоначчи;
n – порядок элемента;
2.2. Описание алгоритма
-
Вводим eps, первые два элемента чисел Фибоначчи 0 и 1. -
Перебираем числовой ряд, пока разницы по модулю, результатов двух функций не станет больше eps.
2.3. Блок-схема алгоритма
Рис. 2.3
2.4. Тестирование программы
При eps=1:
Рис. 2.4.1
При eps=0.1:
Рис. 2.4.2
При eps=0.01:
Рис. 2.4.3
3. Решение задачи №2
Определить является ли заданная строка правильной записью вещественного числа (возможно, со знаком, а также с пробелами спереди и/или сзади). Указание: вещественное число может быть представлено либо в виде числа с фиксированной десятичной точкой (-214.78), либо в виде числа с плавающей десятичной точкой (-2.1478Е+02).
3.1. Описание используемых переменных
Str – заданная строка ;
V, err – переменные процедуры val;
3.2. Описание алгоритма
-
Вводим строку. -
Удаляем пробелы если они есть, в начале и в конце строки. -
Преобразуем строку в числовой формат. -
Проверяем есть ли в строке символы, которые не смогли преобразовать в число.
3.3. Блок-схема алгоритма
Рис. 3.3
3.4. Тестирование программы
Вводим “234.46”
Рис. 3.4.1
Вводим “ -746.475”
Рис. 3.4.2
Вводим “Stroka”
Рис. 3.4.3
4. Заключение
Для написания программ была применена циклическая конструкция, а именно цикл с предусловием while…do. В первой задачи при помощи цикла сравнивалась разности двух выражений по модулю, с заданным eps. Также была определена новая функция Fn с одним формальным параметром. Во-второй задачи цикл использовался для удаления пробелов в начале и в конце введенной строки. Также присутствует конструкция if…else, которая позволяет сделать выбор между результатами в зависимости от истинности или ложности условия, тем самым осуществить ветвление в программе.
ПРИЛОЖЕНИЕ А ЛИСТИНГ ПРОГРАММЫ №1
program Lab1_1_var12;
function Fn(n:integer):real; {Функция Fn с формальным}
{параметром n(integer-целое)}
{тип функции(real-вещественное)}
begin
Fn:=exp(ln((1+sqrt(5))/2)*n)/sqrt(5) {Формула расчета функции}
end;
var F,F0,F1,n:integer; {Определяем переменные}
eps:real; {Погрешность}
begin
write('eps='); {Вводим погрешность}
readln(eps); {присваиваем переменной eps}
F0:=0; {Первое число Фибоначчи}
F1:=1; {Второе число Фибоначчи}
F:=F0+F1; {Число Фибоначчи равно сумме двух предшествующих}
{чисел}
n:=2; {первые два элемента это 0 и 1}
while abs(F-Fn(n))>eps do {Запускаем цикл с предусловием} {который выполняется пока}
{разницы двух функций больше eps}
begin
F0:=F1; {Первому расчетному числу присваивается значение}
{второго числа Фибоначчи}
F1:=F; {Второму расчетному числу присваивается значение}
{суммы первых двух чисел Фибоначчи}
F:=F0+F1; {Число Фибоначчи присваивается сумма первого}
{числа Фибоначчи и второго числа Фибоначчи}
n:=n+1;{Для расчета следующего элемента последовательности}
end;
writeln();
writeln('Наименьший номер n = ',n);{вывод результата на экран}
writeln('F=',F:0,' Fn =',Fn(n):0:1);
readln
end.
ПРИЛОЖЕНИЕ B ЛИСТИНГ ПРОГРАММЫ №2
program Lab1_2_var12;
var
Str: string; {переменная строки}
V: real; {строка преобразованная в числовой вид}
err: integer; {переменная содержит индекс символа, который} {не получилось преобразовать в число}
begin
write('Введите строку: '); {ввод с клавиатуры строку}
readln(Str); {Присваиваем введенную строку переменной}
{удаляем пробелы в начале строки}
while (length(Str) > 0) and (Str[1] = ' ') do delete(Str, 1,1);
{удаляем пробелы в конце строки}
while (length(Str) > 0) and (Str[length(Str)] = ' ') do delete(Str, length(Str), 1);
{преобразование строкового значения в его числовое представление}
val(Str, V, err);
if
err > 0 then write('Эта строка не является правильной записью вещественного числа.')
{если есть символ который не смогли преобразовать в число,}
{то строка не является правильной записью}
else
write('Эта строка является правильной записью вещественного числа.');
{в противном случае строка не является правильной записью}
readln();
end.
2022 г.