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

  • Цель: получить практические навыки работы по разработке и отладке программ с методами, не возвращающих значение I Теоретическая часть

  • Описание методов (процедур и функций). Синтаксис

  • Лаб_5. Лабораторная работа 5 Тема Формирование кода программного модуля по разработанному алгоритму, отладка и тестирование программы на уровне модуля формирование процедур


    Скачать 117 Kb.
    НазваниеЛабораторная работа 5 Тема Формирование кода программного модуля по разработанному алгоритму, отладка и тестирование программы на уровне модуля формирование процедур
    Дата12.11.2020
    Размер117 Kb.
    Формат файлаdoc
    Имя файлаЛаб_5.doc
    ТипЛабораторная работа
    #149870

    Лабораторная работа №5

    Тема: «Формирование кода программного модуля по разработанному алгоритму, отладка и тестирование программы на уровне модуля: формирование процедур»

    Цель: получить практические навыки работы по разработке и отладке программ с методами, не возвращающих значение
    I Теоретическая часть
    В языке C# нет специальных ключевых слов - procedure и function, но присутствуют сами эти понятия. Синтаксис объявления метода позволяет однозначно определить, чем является метод - процедурой или функцией.

    Функция отличается от процедуры двумя особенностями:

    • всегда вычисляет некоторое значение, возвращаемое в качестве результата функции ;

    • вызывается в выражениях.

    Процедура C# имеет свои особенности:

    • возвращает формальный результат void, указывающий на отсутствие результата ;

    • вызов процедуры является оператором языка;

    • имеет входные и выходные аргументы, причем выходных аргументов - ее результатов - может быть достаточно много.

    Обычно метод предпочитают реализовать в виде функции тогда, когда он имеет один выходной аргумент, рассматриваемый как результат вычисления значения функции. Возможность вызова функций в выражениях также влияет на выбор в пользу реализации метода в виде функции. В других случаях метод реализуют в виде процедуры.

    Описание методов (процедур и функций). Синтаксис

    Синтаксически в описании метода различают две части - описание заголовка и описание тела метода:

    заголовок_метода

    тело_метода

    Рассмотрим синтаксис заголовка метода:

    [атрибуты][модификаторы]{void| тип_результата_функции}

    имя_метода([список_формальных_аргументов])

    Имя метода и список формальных аргументов составляют сигнатуру метода. Заметьте, в сигнатуру не входят имена формальных аргументов - здесь важны типы аргументов. В сигнатуру не входит и тип возвращаемого результата.

    Квадратные скобки (метасимволы синтаксической формулы) показывают, что атрибуты и модификаторы могут быть опущены при описании метода. У модификатора доступа четыре возможных значения, из которых пока рассмотрим только два - public и private. Модификатор public показывает, что метод открыт и доступен для вызова клиентами и потомками класса. Модификатор private говорит, что метод предназначен для внутреннего использования в классе и доступен для вызова только в теле методов самого класса. Если модификатор доступа опущен, то по умолчанию предполагается, что он имеет значение private и метод является закрытым для клиентов и потомков класса.

    Обязательным при описании заголовка является указание типа результата, имени метода и круглых скобок, наличие которых необходимо и в том случае, если сам список формальных аргументов отсутствует. Формально тип результата метода указывается всегда, но значение void однозначно определяет, что метод реализуется процедурой. Тип результата, отличный от void, указывает на функцию.
    Список формальных аргументов

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

    Рассмотрим теперь синтаксис объявления формального аргумента:

    [ref|out|params]тип_аргумента имя_аргумента

    Обязательным является указание типа и имени аргумента. Тип аргумента может быть любым скалярным типом, массивом, классом, структурой, интерфейсом, перечислением, функциональным типом.

    Несмотря на фиксированное число формальных аргументов, есть возможность при вызове метода передавать ему произвольное число фактических аргументов. Для реализации этой возможности в списке формальных аргументов необходимо задать ключевое слово params. Оно задается один раз и указывается только для последнего аргумента списка, объявляемого как массив произвольного типа. При вызове метода этому формальному аргументу соответствует произвольное число фактических аргументов.

    Содержательно, все аргументы метода разделяются на три группы: входныевыходные и обновляемые. Аргументы первой группы передают информацию методу, их значения в теле метода только читаются. Аргументы второй группы представляют собой результаты метода, они получают значения в ходе работы метода. Аргументы третьей группы выполняют обе функции. Их значения используются в ходе вычислений и обновляются в результате работы метода. Выходные аргументы всегда должны сопровождаться ключевым словом out, обновляемые - ref. Что же касается входных аргументов, то, как правило, они задаются без ключевого слова, хотя иногда их полезно объявлять с параметром ref. Если аргумент объявлен как выходной с ключевым словом out, то в теле метода обязательно должен присутствовать оператор присваивания, задающий значение этому аргументу. В противном случае возникает ошибка еще на этапе компиляции.

    Тело метода


    Синтаксически тело метода является блоком, который представляет собой последовательность операторов и описаний переменных, заключенную в фигурные скобки. Если речь идет о теле функции, то в блоке должен быть хотя бы один оператор перехода, возвращающий значение функции в форме return (выражение).

    Переменные, описанные в блоке, считаются локализованными в этом блоке. В записи операторов блока участвуют имена локальных переменных блока, имена полей класса и имена аргументов метода.

    Вызов метода. Синтаксис


    Метод может вызываться в выражениях или быть вызван как оператор. В качестве оператора может использоваться любой метод - как процедура, так и функция. Конечно, функцию разумно вызывать как оператор, только если она обладает побочным эффектом. В последнем случае она вызывается ради своего побочного эффекта, а возвращаемое значение никак не используется. Подобную роль играет использование некоторых выражений с побочным эффектом в роли оператора, классическим примером является оператор x++ ;.

    Если же попытаться вызвать процедуру в выражении, то это приведет к ошибке еще на этапе компиляции. Возвращаемое процедурой начение void несовместимо с выражениями. Так что в выражениях могут быть вызваны только функции. Сам вызов метода, независимо от того, процедура это или функция, имеет один и тот же синтаксис:

    имя_метода([список_фактических_аргументов])

    Если это оператор, то вызов завершается точкой с запятой. Формальный аргумент, задаваемый при описании метода - это всегда имя аргумента (идентификатор). Фактический аргумент - это выражение, значительно более сложная синтаксическая конструкция. Вот точный синтаксис фактического аргумента:

    [ref|out]выражение

    О соответствии списков формальных и фактических аргументов

    Между списком формальных и списком фактических аргументов должно выполняться определенное соответствие по числу, порядку следования, типу и статусу аргументов. Если в первом списке n формальных аргументов, то фактических аргументов должно быть не меньше n ( соответствие по числу). Каждому i -му формальному аргументу (для всех i от 1 до n-1 ) ставится в соответствиеi -й фактический аргумент. Последнему формальному аргументу, при условии, что он объявлен с ключевым словом params, ставятся в соответствие все оставшиеся фактические аргументы ( соответствие по порядку). Если формальный аргумент объявлен с ключевым словом ref или out, то фактический аргумент должен сопровождаться таким же ключевым словом в точке вызова ( соответствие по статусу).

    II Контрольные вопросы


      1. Отличия процедуры от функции.

      2. Что такое сигнатура метода.

      3. Какую информацию несет метод доступа.

      4. Синтаксис объявления формального аргумента.

      5. Классификация аргументов метода.

      6. Синтаксис вызова метода.

      7. Какое соответствие должно выполняться между списком формальных и фактических аргументов.

      8. Что означает ключевое слово params в синтаксисе объявления формального аргумента.

      9. Можно ли вызвать процедуру в выражении?

      10. Можно ли вызвать функцию в выражении?

    Практическое задание к лабораторной работе №5



    1. Составьте программу перевода двоичной записи числа в десятичную.

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

    3. Написать программу вычисления площади поверхности и длины экватора на основе известного радиуса планет солнечной системы. Форму планет считать шаром. Вычисление площади и длины экватора оформить отдельными методами.

    4. Составить программу, содержащую метод на проверку пользователя на право работы с программой. Использовать для этого пароль = Kolledg. Если пароль неправильный, выйти из программы с помощью управляющего оператора.

    5. Составить программу сокращения дроби M/N, где M и N – натуральные числа.

    6. Даны координаты вершин многоугольника (х1, у1, х2, у2, …, х10, у10). Определить его периметр (расстояние между вершинами).

    7. Определить наибольший общий делитель трех натуральных чисел.

    8. Составить программу подсчета числа всех натуральных чисел, меньших М, квадрат суммы которых равен Х.

    9. Составить программу перевода десятичной записи числа в двоичную.

    10. Написать программу, которая выведет на экран кодовую ASCII – таблицу.


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