Главная страница
Навигация по странице:

  • 3 Решение задачи 3.1 Описание используемых переменных, обоснование типов данных

  • Приложение 1. Листинг программы Задача 1 function

  • Приложение 2. Распечатки тестов Задача 1

  • Лабораторная работа 1. Лабораторная работа 1 по дисциплине Программирование Выполнил студент Дорогавцев Роман Георгиевич специальность 2022 г


    Скачать 260.71 Kb.
    НазваниеЛабораторная работа 1 по дисциплине Программирование Выполнил студент Дорогавцев Роман Георгиевич специальность 2022 г
    Дата06.10.2022
    Размер260.71 Kb.
    Формат файлаdocx
    Имя файлаЛабораторная работа 1.docx
    ТипЛабораторная работа
    #717822

    Министерство науки и высшего образования РФ

    Федеральное государственное бюджетное образовательное учреждение высшего образования

    ТОМСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ СИСТЕМ УПРАВЛЕНИЯ И РАДИОЭЛЕКТРОНИКИ (ТУСУР)

    Кафедра компьютерных систем в управлении и проектировании (КСУП)

    ОТЧЕТ

    Лабораторная работа № 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 посвящена созданию программ с использованием простых управляющих структур: условного оператора, цикла.

    Циклы - основное средство в программировании, позволяющее коротко записывать алгоритм, осуществляющий большое количество действий.

    Для реализации циклических алгоритмов в языке Паскаль используются операторы повторения:

    1. оператор цикла с параметром;

    2. оператор цикла с предусловием;

    3. оператор цикла с постусловием.

    В настоящем параграфе изучается оператор цикла с параметром. Такой оператор предусматривает повторное выполнение некоторого оператора с одновременным изменением значения, присваиваемого управляющей переменной (параметру этого цикла). Он имеет вид:

    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

    1. Вводим длину последовательности n;

    2. Для цикла определяем количество вводимых и проверяемых элементов;

    3. Проверяем каждое вводимое переменное на соответствие поставленному условию (число близко к квадрату какого-либо целого числа);

    4. Выводим порядковый номер введенного числа поставленному условию.





    Рис. 1.1 Блок-схема нахождения числа близкого к квадрату введённого числа

    Алгоритм решения задачи 2

    1. Вводим текстовые данные (строку);

    2. задаем начальное значение переменных L, t;

    3. проверяем введенные символы, если они соответствуют символам латинского алфавита, то к переменной t прибавляем значение 1 (то есть считает длину подстроки) и выводи результат.

    4. Если условие не выполнено то нет решения.







    Рис. 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





    написать администратору сайта