Файл: Лабораторная работа 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).


Циклом называется последовательность, которая может выполняться более одного раза.

В Паскале существует три вида циклических конструкций.

  1. Цикл с предусловием(while).

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

while <логическое выражение> do | заголовок цикла

<оператор> | тело цикла

  1. Цикл с постусловием(repiat).

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

repeat <оператор> until <логическое выражение>

  1. Цикл с параметром(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. Описание алгоритма


  1. Вводим eps, первые два элемента чисел Фибоначчи 0 и 1.

  2. Перебираем числовой ряд, пока разницы по модулю, результатов двух функций не станет больше 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. Описание алгоритма


  1. Вводим строку.

  2. Удаляем пробелы если они есть, в начале и в конце строки.

  3. Преобразуем строку в числовой формат.

  4. Проверяем есть ли в строке символы, которые не смогли преобразовать в число.

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 г.