Фактические и формальные параметры
При описании процедуры (функции) может указываться список формальных параметров. Каждый параметр является локальным по отношению к описываемой процедуре (функции), к нему можно обращаться только в пределах данной процедуры (функции). Фактические параметры – это параметры, которые передаются процедуре (функции) при обращении к ней. Число и тип формальных и фактических параметров должны совпадать.
Локальные и глобальные переменные
В любой программе все переменные делятся на глобальные и локальные. Глобальные переменные – это переменные из раздела описания основной части программы, а локальные - из раздела описания процедур и функций. Локальные переменные существуют только в течение времени работы процедуры, определяются при ее вызове и исчезают после завершении работы процедуры.
Пример выполнения работы:
Условие задачи: Разработать программу перестановки значений переменных A, B, C в порядке возрастания, т.е. так, чтобы A<B<C. Var A, B,C :Integer; Procedure SWAP(Var X,Y:Integer); Var T: Integer; Begin T:=X; X:=Y; Y:=T; End; Begin Readln(A, B,C); If A>B Then Swap(A,B); If B>C Then Swap(C,B); If A>B Then Swap(A,B); Writeln(A, B,C); End. | Пояснение При вызове процедуры Swap(A,B) управление передается на участок программного кода, занимаемый процедурой Swap. При этом значение переменной А присваивается переменной X, а значение переменной B становится значением переменной Y. При изменении переменной X произойдет изменение значения и переменной A. После выполнения процедуры осуществляется возврат на оператор основной программы, следующий за вызовом процедуры. |
Условие задачи: Разработать программу вычисления суммы трех чисел, используя функцию сложения двух чисел Var A,B,C :Integer; Function SUM (X,Y:INTEGER) : INTEGER; Begin SUM:=X+Y; End; Begin Readln(A, B, C); Writeln(SUM(SUM(A, B ), C) ); End. | Пояснение При вызове функции SUM(A,B); управление вычислительным процессом передается на участок программного кода, занимаемый функцией SUM. При этом значение переменной А присваивается переменной X функции SUM, а значение переменной B становится значением переменной Y. Имени функции присваивается результат сложения и осуществляется возврат в основную программу. Результат, полученный после первого вызова функции, подставляется в качестве фактического параметра вместе с переменной С и выполняется второй вызов функции. После возврата из функции управление передается оператору Writeln, который выводит результат функции. |
Контрольные вопросы
· Что такое процедура?
· Что такое функция процедура?
· В чем разница между функцией и процедурой?
· Как оформляются определенные в программе функции и процедуры?
· Что такое формальные и фактические параметры?
· Как в программе выполнить процедуру или функцию?
Варианты к лабораторной работе №9
(ваш номер по журналу соответствует номеру варианта)
№ | Задание 1 (определение функции) Задание 2 (определение процедуры) |
Для следующей программы написать функцию, которая определяет выполняется ли теорема Пифагора для трех величин. READLN( A,B,C); IF (PIF(A,B,C)=0 ) AND (PIF(B,C,A)=0) AND (PIF(A,C,B)=0) THEN WRITELN(‘НЕ ПРЯМОУГОЛЬНЫЙ» ELSE WRITELN(‘ПРЯМОУГОЛЬНЫЙ’); | |
Ввести три числа. У каждого числа поменять знак, использовать свою процедуру замены числа на такое же значение с изменением знака. | |
Ввести два числа. Определить в каком из них сумма цифр больше, используя функцию вычисления суммы цифр одного числа. | |
Ввести пять слов. В каждом слове заменить буквы А на О. Использовать процедуру замены в строке букв А на О. | |
Вычислить 4!+7!+2!, используя функцию вычисления факториала. | |
Ввести три числа. Вывести первые цифры чисел. использовать процедуру замены числа на его первую цифру. | |
Вычислить НОД(A,B)+НОД(C,B)+НОД(A,C), используя функцию нахождения НОД (наибольшего общего делителя) для двух чисел. | |
Ввести три числа. Каждое число заменить на остаток от деления числа на 8. Использовать процедуру замены числа остатком от деления на 8 (mod не использовать). | |
В пятиугольнике известны стороны и диагонали. Найти площадь пятиугольник, используя функцию вычисления площади треугольника по трем сторонам. | |
Ввести три числа. Каждое число заменить на целую часть от деления на 3. Использовать процедуру замены числа целой частью от деления на 3 (div не использовать). | |
Получить все шестизначные счастливые числа. Счастливым называют такое число, для которого сумма первых трех его цифр равна сумме последних трех его цифр. Использовать функцию определения суммы цифр трехзначного числа. | |
Ввести два числа. Найти сумму чисел из первых двух цифр каждого числа, используя процедуру , которая оставляет только первые две цифры числа. Например, даны 1234 и 5432,результат 12+54=66. | |
Ввести два числа. Найти количество цифр в двух числах, используя функцию вычисления количества цифр в одном числе. | |
Ввести четыре цифры. Из цифр получить наименьшее число, которое можно получить из этих цифр, используя процедуру перестановки местами значений двух величин. | |
Найти tg(2x)+tg(3x)/tg(x2), используя функцию вычисления тангенса. | |
В учебном заведении три компьютерных класса. Ввести площадь каждого класса и количество компьютеров в нем. Для каждого класса вывести сообщение нарушены или не нарушены требования (на 1 ПК не менее 6 кв.м) . использовать свою процедуру проверки и вывода сообщения. | |
Ввести стороны четырехугольника и его диагональ. Найти площадь четырехугольника, используя в качестве процедуры вычисление площади треугольника по трем сторонам (формула Геррона) | |
Ввести три слова. В каждом слове заменить буквы О на У. Использовать процедуру замены в строке букв О на У. | |
Вычислить 53+34+27, используя функцию возведения числа в степень | |
Отсортировать одномерный массив по убыванию, используя процедуру перестановки местами значений двух величин. | |
Даны стороны двух треугольников. Найти сумму их площадей, используя функцию вычисления площади треугольника по его сторонам | |
Разработать программу перестановки значений переменных A, B, C в порядке убывания возрастания, т.е. так, чтобы A>B>C , используя процедуру перестановки двух значений. | |
Вычислить s=min(a,b,c)+max(b,c)/min(a,c). | |
Ввести четыре числа. Каждое число заменить на остаток от деления числа на 7. Использовать процедуру замены числа остатком от деления на 7(mod не использовать). | |
В круглой заготовке радиуса R вырезаны два круглых отверстия радиусы которых R1 и R2. Найти площадь круглой заготовки, используя функцию вычисления площади окружности | |
Ввести три целых числа каждое число заменить его модулем, используя свою процедуру замены числа на его модуль. (встроенной функцией ABS не пользоваться). | |
Вычислить z=min(a,3b)*min(2a,-b,2b), используя функцию вычисления минимума из двух значений. | |
Ввести пять чисел. В каждом числе удалить «хвостовые» цифры 5. (например, дано 2355, результат 23). Использовать процедуру замены исходного числа на значение, полученное после удаления «хвостовых» 5. | |
Ввести два числа. Найти сумму всех цифр первого и второго числа, используя функцию нахождения суммы одного числа. | |
Разработать программу перестановки значений переменных A, B, C,D в порядке возрастания, т.е. так, чтобы A<B<C<D. | |
Ввести пять чисел. Найти сумму максимального и минимального, используя две функции: нахождения минимума из двух значений и максимума из двух значений. | |
Ввести три цифры. Из цифр получить наименьшее число, которое можно получить из этих цифр, используя процедуру перестановки местами значений двух величин. | |
Вычислить НОД(A,B,C)+НОД(A,B,C,D), используя функцию нахождения НОД (наибольшего общего делителя) для двух чисел. | |
Ввести три числа. Найти сумму первых цифр каждого числа, используя процедуру , которая оставляет только первую цифру числа. Например, даны 12 , 520, 231 ,результат 1+5+2=8 | |
Вычислить s=max(a,b)/min(a,c)+max(b,c). | |
Ввести три числа. Вывести последние цифры чисел. Использовать процедуру замены числа на его последнюю цифру. | |
Вычислить Y=MIN(A,3B)*MIN(2A-B, 2B), используя функцию нахождения минимума для двух чисел. | |
Ввести три даты (день, месяц). Для каждой даты вывести сообщение правильно ли дата определена (не существует 32 дня и 13 месяца). Использовать свою процедуру проверки и вывода сообщения. | |
Даны шесть чисел. Найти максимальное, используя функцию нахождения максимума из двух значений | |
Ввести четыре числа. В каждом числе удалить «хвостовые» единицы. (например, дано 2311, результат 23). Использовать процедуру замены исходного числа на значение, полученное после удаления «хвостовых» единиц. | |
Вычислить , используя функцию вычисления | |
Ввести три даты (день, месяц). Для каждой даты вывести дату предыдущего дня . Использовать свою процедуру замены введенной даты на дату предыдущего дня. | |
Вычислить 3!+6!+4!, используя функцию вычисления факториала. | |
Ввести четыре слова. В каждом слове заменить буквы Е на Н. Использовать процедуру замены в строке букв Е на Н. | |
Вычислить z=sign(x)+sign(y), где Sign( a)= | |
Отсортировать одномерный массив по возрастанию, используя процедуру перестановки местами значений двух величин. | |
Ввести десять чисел. Найти минимальное, используя функцию нахождения минимума из двух значений. | |
Ввести пять вещественных чисел. Каждое число округлить до ближайшего целого. Использовать процедуру замены числа результатом его округления (встроенной функцией ROUND не пользоваться). | |
Ввести два числа. Определить в каком числе больше цифр, используя функцию определения количества цифр для натурального числа. | |
Ввести три цифры. Из цифр получить наибольшее число, которое можно получить из этих цифр, используя процедуру перестановки местами значений двух величин. | |
Ввести шесть различных чисел. Найти максимальное, используя функцию нахождения максимума из двух значений. | |
Ввести три числа. Вывести сумму цифр каждого числа. Использовать процедуру замены числа на сумму его цифр. | |
Даны три квадратных уравнения AX2+BX+C=0 BX2+AX+C=0 CX2+AX+B=0 Определить, сколько из них имеют вещественные корни, используя функцию вычисления корней квадратного уравнения. | |
Ввести четыре цифры. Из цифр получить наибольшее число, которое можно получить из этих цифр, используя процедуру перестановки местами значений двух величин. | |
Вычислить A3+B4+C7, используя функцию возведения числа в целую степень | |
Разработать программу перестановки значений переменных A, B, C,D в порядке убывания возрастания, т.е. так, чтобы A>B>C>D. | |
Вычислить , используя функцию вычисления | |
Ввести три числа – номера месяцев. Вывести количество дней в каждом месяце. Использовать свою процедуру замены номера месяца на количество дней в нем | |
Вычислить tg(x)+tg2(5x)/tg(x2), используя функцию вычисления тангенса. | |
Ввести три числа. Каждое число заменить на целую часть от деления на 3. Использовать процедуру замены числа целой частью от деления на 3 (div не использовать). | |
Вычислить s=max(a,b)+min(a,b,c)+max(a,c) | |
Ввести три числа. В каждом числе удалить «хвостовые» нули. (например, дано 2300, результат 23). Использовать процедуру замены исходного числа на значение, полученное после удаления «хвостовых» нулей. | |
Ввести восемь чисел. Найти максимальное, используя функцию нахождения максимума из двух значений. | |
Ввести три даты (день, месяц). Для каждой даты вывести дату следующего дня. Использовать свою процедуру замены введенной даты на дату следующего дня. |
ЛАБОРАТОРНАЯ РАБОТА № 10
Тема: Чтение и запись текстовых файлов в программе на TurboPascal 7.0
Цель работы:Изучение особенностей чтения и записи текстовых файлов
Пояснения к работе
Текстовые файлы хранят информацию в виде последовательности символов. Символы составляют строки произвольной длины. В конце каждой строки записываются два символа: #13 #10 (возврат каретки, перевод строки), которые отделяют строку от следующей. Весь файл заканчивается символом конец файла. В текстовый файл можно записать и из него прочитать информацию любого типа. Текстовый файл можно создать и преобразовать текстовым редактором.