Отчет по программированию, ЛБ№3, Хисматуллин. Отчет по лабораторной работе 3 по дисциплине Программирование Студент гр
Скачать 1.08 Mb.
|
1 Министерство науки и высшего образования Российской Федерации Федеральное государственное бюджетное образовательное учреждение высшего образования ТОМСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ СИСТЕМ УПРАВЛЕНИЯ И РАДИОЭЛЕКТРОНИКИ (ТУСУР) Кафедра компьютерных систем в управлении и проектировании (КСУП) ОТЧЕТ по лабораторной работе №3 по дисциплине Программирование Студент гр № з-511П12-5 ДР. Хисматуллин Томск 2022 2 Содержание 1. Введение 2. Задача 1 Анализ задачи 1……………………………………………..6 Алгоритм решения задачи 1………………………………6 2.3 Тест программы 2.4 Текст программы 2.5 Блок-схема…………………………………………………10 3. Задача 2 3.1 Анализ задачи 2…………………………………………11 3.2 Алгоритм решения задачи 2…………………………..11 3.3 Тест программы 3.4 Текст программы 3.5 Блок схема 3 Введение Работа с файлами. Для организации ввода-вывода могут быть определены специальные переменные файловых типов, которые считаются представителями файлов в программе. С каждой переменной файлового типа также связано понятие текущего указателя файла. Текущий указатель — скрытая переменная (те. неявно описанная вместе с файловой переменной, которая обозначает указывает) на некоторый конкретный элемент файла. При работе с файлами перед и после операций ввода-вывода необходимо выполнить стандартные процедуры assign, reset, rewrite, close Процедуры write ив отличие от многих других процедур, могут вызываться с различным числом параметров, и эти параметры могут иметь различные типы. Процедуры write ив отличие от многих других процедур, могут вызываться с различным числом параметров, и эти параметры могут иметь различные типы. Процедура read предназначена для чтения значений из файла в программу. Первым параметром должно быть имя файловой переменной, к которой была применена одна из операций открытия (reset или rewrite). Далее должны следовать переменные, в которые будут помещаться читаемые из файла значения. Тип этих переменных должен совпадать с базовым типом файла из первого параметра. Выполнение процедуры read 4 происходит следующим образом. Начиная с текущей позиции указателя файла, будут последовательно читаться значения, содержащиеся в файле. Каждое прочитанное значение будет присваиваться очередной переменной из тех, которые указаны в вызове процедуры. После каждого акта чтения указатель файла будет смещаться наследующую позицию. Если указатель файла указывает наконец файла, то чтение невозможно. Функция eof() — булевская функция, равна истине, если имеется ситуация конец файла. Процедура write позволяет записывать в файл информацию из программы. Первым параметром этой процедуры должна быть файловая переменная, открытая процедурой reset или rewrite. Далее должен идти список переменных, тип которых совпадает с базовым типом файла из первого параметра. Выполнение процедуры write. Значение очередной переменной будет помещено в файл вместо, отмеченное текущим указателем. После этого текущий указатель будет передвинут на одну позицию, и действия повторяются для следующей переменной из списка параметров. Рекурсия Объект называетсярекурсивным, если он содержит сам себя или определен с помощью самого себя. Рекурсия в программировании — один из важнейших принципов построения подпрограмм. Если процедура P содержит явное обращение к самой себе, то она называется прямо рекурсивной если P содержит обращение к процедуре Q, которая содержит (прямо или косвенно) 5 обращение кто называется косвенно рекурсивной. Поэтому использование рекурсии не всегда сразу видно из текста программы. Косвенная рекурсия может быть задана в системе подпрограмм, которые определяются бок о бок и взаимно опираются друг на друга 6 Основная часть Задача 1 type rad = file of integer; Описать процедуру p(f,g) от двух файлов типа а, которая из файла f переписывает в пустой файл g сначала все положительные числа, а потом все отрицательные. Указание введите файл f (последний элемент равен 0). Выполните процедуру p(f,g). Распечатайте файл g. Задача 2 Описать рекурсивную функцию letter (s), которая подсчитывает количество букв в строке s. Алгоритм решения задачи 1. while not eof(f) do // Задаем цикл с предусловием, условие - функция конца файла begin read(f,a); // Считываем числа из файла f if a> 0 then write(g,a); // Если число "а" положительное, то записываем в файл g end; close(f); // Закрываем файл f reset(f); // Снова открываем файл f while not eof(f) do // Задаем цикл с предусловием, условие - функция конца файла В данной задаче мы используем переменную ас типом integer, так как вводимые числа являются целыми. 7 8 Текст программы PR1; uses crt; // Вызываем дополнительный модуль type rad=file of integer ; // Задаем имя файлового типа procedure P(var f,g:rad); // Задаем имя и параметры процедуры var a: integer ; // Задаем тим переменной "а" для чисел, вводимых в программу begin reset(f); // Открываем для чтения файл f while not eof(f) do // Задаем цикл с предусловием, условие - функция конца файла begin read(f,a); // Считываем числа из файла f if a> 0 then write(g,a); // Если число "а" положительное, то записываем в файл g end; close(f); // Закрываем файл f reset(f); // Снова открываем файл f while not eof(f) do // Задаем цикл с предусловием, условие - функция конца файла begin read(f,a); // Считываем числа из файла f if a< 0 then // Задаем условие, если число меньше 0 begin write(g,a); // Записываем числа в файла g end; end; close(f); // Закрываем файл f close(g); // Закрываем файл g end; var f,g:rad; // Задаем имя файлового типа 9 a: integer ; // Задаем тим переменной "а" для чисел, вводимых в программу begin clrscr; // Очищаем экран assign(f, 'filef' ); // Связываем файл с файловой переменной f rewrite(f); // Создаем и открываем файл f assign(g, 'fileg' ); // Связываем файл с файловой переменной g rewrite(g); // Создаем и открываем файл g writeln (Введите числа в файл f 0 - окончание ввода // Выводим на экран сообщение repeat // Цикл с постусловием. Записываем в файл f числа, введенные с клавиатуры readln (a); write(f,a); until a= 0 ; // Цикл работает до тех пор, пока мы не введем число 0 writeln; // Создаем пустую строку P (f,g); // Вызываем процедуру Р reset(g); // Открываем файл g Содержание нового файла // Выводим на экран сообщение while not eof(g) do // Цикл с предусловием, выполняется пока "не конец файла" begin read(g,a); // Читаем из файла g числа write(a, ' ' ); // Выводим на экран числа через пробел end; close(g); // Закрываем файл readln // Задержка экрана end. 10 11 Алгоритм решения задачи 2. if s[i] in bk then begin inc(k);writeln( 'k1=' ,k); end; // Условие, если символ под порядковым номером i входит в bk, тогда "к" увеличиваетсч на единицу if i 1 );writeln( 'k2=' ,k); end; // Условие, если i меньше длинны строки, ток к+результат функции для следующего символа letters:=k; // присваиваем в результат функции "кВ данной задаче мы вводим переменную к, которая относится к типу integer. Так как количество символов является целым числом. 12 13 Текст программы program PR2; uses crt; const bk=[ 'A' 'Z' , 'a' 'z' , 'А' 'я' , 'ё' , 'Ё' ]; // Задаем константу bk для множества букв алфавитов function letters(s: string ;i: integer ): integer ; // Описываем функцию с аргументами s и i var k: integer ; // Задаем переменную "к" begin if s[i] in bk then inc(k); // Условие, если символ под порядковым номером i входит в bk, тогда "к" увеличиваетсч на единицу if i 1 ); // Условие, если i меньше длинны строки, ток к+результат функции для следующего символа letters:=k; // присваиваем в результат функции "к" end; var s: string ; // Описываем переменную s строкового типа begin Введите строку // Вывод сообщения на экран readln(s); // вводим строку Количество букв) // Выводит на экран количесвто букв в строке end. 14 |