Компьютеры Windows Интернет

Написание программного кода с использованием процедур. Написание программного кода с использованием процедур Ограничения по использованию оператора

В качестве первого операнда – "выражение1" – может быть использовано любое выражение, результатом которого является значение типа bool . Если результат равен true , то выполняется оператор, заданный вторым операндом, то есть, "выражение2".

Если же первый операнд paвен false , то выполняется третий операнд – "выражениеЗ". Второй и третий операнды, то есть "выражение2" и "выражениеЗ", должны возвращать значения одного типа и не должны иметь тип void . Результатом выполнения условного оператора является результат "выражения2" либо результат "выражение3", в зависимости от результата "выражение1".

Ограничения по использованию оператора

Оператор на основании значения "выражение1" должен вернуть одно из двух значений - либо "выражение2", либо "выражение3". Существует ряд ограничений на эти выражения:

  1. Нельзя смешивать пользовательский тип с простым типом или перечислением . Для указателя допустимо использовать NULL .
  2. Если типы значений простые, то типом оператора будет максимальный тип (смотри Приведение типов).
  3. Если одно из значений имеет тип перечисление, а второе является числовым типом, то перечисление заменяется на int и действует второе правило.
  4. Если оба значения являются значениями перечислений, то их типы должны быть одинаковыми, и типом оператора будет перечисление.

Ограничения для пользовательских типов (классов или структур):

  1. типы должны быть одинаковыми или один должен наследоваться от другого.
  2. если типы не одинаковы (наследование), то потомок неявно приводится к родителю, то есть типом оператора будет тип родителя.
  3. нельзя смешивать объект и указатель – либо оба выражения являются объектами, либо указателями . Для указателя допустимо использовать NULL .

Примечание

Будьте внимательны при использовании условного оператора в качестве аргумента перегруженной функции , так как тип результата условного оператора определяется на момент компиляции программы. И этот тип определяется как больший тип из типов "выражение2" и "выражение3".

Пример:

void func(double d) { Print ("double argument: " ,d); }
void func(string s) { Print ("string argument: " ,s); }

bool Expression1=true;
double Expression2=M_PI;
string Expression3= "3.1415926" ;

void OnStart ()
{
func(Expression2);
func(Expression3);

func(Expression1?Expression2:Expression3);
func(!Expression1?Expression2:Expression3); // получим предупреждение компилятора о явном приведении к типу string
}

// Результат:
// double argument: 3.141592653589793

// string argument: 3.141592653589793
// string argument: 3.1415926

«Принтер для печати пластиковых карт» - Возможность разместить в два раза больше информации на одной пластиковой карте. Стоимость. Принтер для печати пластиковых карт. ZEBRA P110i/ P120i. Обзор модельного ряда. Экономичные полноцветный принтеры для печати пластиковых карт. Высокая производительность Широкий выбор дополнительных устройств кодирования.

«Периферийные устройства ПК» - Периферийные устройства. Принтеры. Запись. Цифровые фотоаппараты. Иерархия средств подключения. Видеоадаптеры. Классификация ПУ. Универсальная последовательная шина. CD-R. Параметры выбора. Встроенная вспышка. Первопроходцы. Природа. Модем. Видеотерминал. Сканеры. Периферийные устройства ПК. Классификация мышковидных.

«Средства ввода и вывода информации» - Сканер. Плоттер. ЭЛТ. Принтеры. Клавиатура. Цифровые камеры и фотоаппараты. Функции. Универсальное устройство для ввода. Устройства ввода и вывода информации. Графический планшет. Мышь.

«Устройства вывода информации» - Устройство компьютера. Чем больше разрешающая способность монитора, тем выше качество изображения. Недостатки струйных принтеров: Большой расход чернил; Высокая стоимость заправки. Плоские мониторы на жидких кристаллах (ЖК) компактны и не имеют излучения. Устройства вывода информации. Монитор является универсальным устройством вывода информации.

«Принтеры» - Локальные. Термоблок, печка, fuser - узел в котором тонер впекается в бумагу. Лазерные. Матричные (игольчатые). Со временем теряют свои свойства и подлежат регулярной замене специалистом. Струйные. Сетевые. Меняется пользователем. Характеристики принтеров. Девелопер, носитель, developer - мельчайшие металлические частицы, переносящие тонер на фотовал.

«Подсистема ввода-вывода» - Точка прерывания. Таблицы. Непрерывное размещение. Атрибут. Разрешения на доступ к файлам. Связный список индексов. Данные. Физическая организация. Прямой доступ к памяти. Индексно-последовательный файл. Монтирование. Ввод-вывод, управляемый прерываниями. Разрешения на доступ к каталогам. Организация параллельной работы.

Всего в теме 27 презентаций

Программный код представлен на рис. 4.3-9.

Option Strict On Option Explicit On Imports System.Math Public Class Form1 "Функция ввода координаты точки в TextBox Function vvod(ByVal T As TextBox) As Single Return CSng(Val(T.Text)) End Function "Процедура вывода результата в TextBox Sub vivod(ByVal Z As Single, ByVal T As TextBox) T.Text = CStr(Z) End Sub "Функция вычисления длины отрезка по координатам двух точек Public Function ДлинаОтрезка(ByVal x1 As Single, _ ByVal y1 As Single, ByVal x2 As Single, _ ByVal y2 As Single) As Single Return CSng(Sqrt((x2 - x1) ^ 2 + (y2 - y1) ^ 2)) End Function "Процедура вычисления периметра и площади треугольника Sub PS(ByVal x1 As Single, ByVal y1 As Single, _ ByVal x2 As Single, ByVal y2 As Single, _ ByVal x3 As Single, ByVal y3 As Single, _ ByRef P As Single, ByRef S As Single) Dim A, B, C, Pp As Single A = ДлинаОтрезка(x1, y1, x2, y2)"Вызов ф-ции выч-я дл.отр. B = ДлинаОтрезка(x2, y2, x3, y3) C = ДлинаОтрезка(x3, y3, x1, y1) P = (A + B + C) : Pp = P / 2 S = CSng(Sqrt(Pp * (Pp - A) * (Pp - B) * (Pp - C))) End Sub "Процедура обработки события нажатия на кнопку Button1 Private Sub Button1_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click Dim x1 As Single, x2 As Single, x3 As Single Dim y1 As Single, y2 As Single, y3 As Single Dim Пер As Single, Пло As Single x1 = vvod(TextBox1) : x2 = vvod(TextBox2) : x3 = vvod(TextBox3) y1 = vvod(TextBox6) : y2 = vvod(TextBox7) : y3 = vvod(TextBox8) PS(x1, y1, x2, y2, x3, y3, Пер, Пло) vivod(Пер, TextBox4) : vivod(Пло, TextBox5) End Sub Private Sub Button2_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button2.Click End End Sub End Class

Выполнение приложения и получение результатов

Результат приведен на рис. 4.3-10.

Доказательство правильности результата

A =
= 2.82843 B =
= 2

C = = 2 Р = А + В + С = 6.828427; Рр = Р/2 = 3.414213 S= = 2


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

«Структура VB-программ, модули и процедуры.

Средства программирования алгоритмов линейной структуры»

1. Что представляет собой математическая модель?

2. Какие основные этапы включает в себя решение задач на компьютере?

3. Какие этапы компьютерного решения задач осуществляются без участия компьютера?

4. Что называют математической моделью объекта или явления?

5. Из каких последовательных действий состоит процесс разработки программы?

6. Что называется алгоритмом?

7. Какими основными свойствами должен обладать алгоритм?

8. Какие существуют способы описания алгоритмов?

9. Какими графическими символами принято изображать в схемах алгоритма?

10. Как работает интерпретатор?

11. Как работает компилятор?

12. Какой алгоритм называется линейным?

13. Какой алгоритм называется циклическим?

14. Какой алгоритм называется разветвляющимся?

15. В чем отличие передачи результатов выполнения функций и процедур?

16. Доказывает ли получение правдоподобного результата правильность программы?

17. Какие ошибки могут остаться не выявленными, если не провести проверку (просмотр, прокрутку) программы?

18. Чем тестирование программы отличается от её отладки?

19. Можно ли с помощью тестирования доказать правильность программы?

20. На какой стадии работы над программой вычисляются эталонные результаты тестов?

21. Назовите основные этапы процесса тестирования.

22. В чём отличие синтаксических ошибок от семантических?

23. О чём свидетельствует отсутствие сообщений машины о синтаксических ошибках?

24. Какие разновидности ошибок транслятор не в состоянии обнаружить?

25. Что такое программа?

26. На каком этапе происходит поиск и устранение ошибок в программе?

27. Что такое система программирования?

28. Что такое процедура?

29. Какими преимуществами обладает программа, имеющая процедуры?

30. Какие средства процедурного программирования имеются в языке VB?

31. Каким образом происходит обмен данными между отдельными процедурами программы?

32. Что такое фактические и формальные параметры?

33. Каким образом передать в качестве параметра: константу, переменную, выражение?

34. Как используются глобальные переменные?

35. Как используются локальные переменные?

36. Что называется формальными параметрами?

37. Что называется фактическими параметрами?

38. Что происходит при вызове процедуры?

39. Каким образом параметры могут передаваться в процедуру?

40. Какие параметры передаются по значению?

41. Какие параметры передаются по адресу?

42. Что относится к средствам процедурного программирования?

43. Что является результатом выполнения функции?

44. Каким образом надо объявить отдельные переменные, чтобы внутри функции они были локальными?

45. Какой оператор используется для досрочного выхода из функции?

46. Что контролируется при вызове функций и процедур?

47. Как необходимо объявить формальные параметры, чтобы передать параметр-переменную по значению?

48. Как необходимо объявить формальные параметры, чтобы передать параметр-переменную по адресу?

49. Каким образом осуществляется вызов процедуры-функции из вызывающей программы?

50. Что может быть результатом выполнения процедуры?

51. Какой оператор используется для досрочного выхода из процедуры?

52. Где могут находиться описания функций и процедур?

53. Где будет доступна переменная, объявленная с помощью оператора Public?

54. Где может находиться оператор Private?

55. Что такое комментарий и правила его записи?

56. Какие значения имеют переменные в начале программы?

57. Для чего описываются (определяются) процедуры и функции?

58. Как осуществляется вызов процедур?

59. Как осуществляется вызов функций?


Похожая информация.


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

Для вывода данных из оперативной памяти на экран монитора используется оператор вывода write:

Здесь в круглых скобках помещается список вывода - список выражений, значения которых выводятся на печать. Это могут быть числовые, символьные и логические выражения, в том числе переменные и константы.

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

Пример . Оператор write ("s=" , s) выполняется так:

  1. на экран выводятся символы, заключенные в апострофы: s=
  2. на экран выводится значение переменной, хранящееся в ячейке оперативной памяти с именем s.

Если значение переменной s равно 15 и она имеет целочисленный тип, то на экране появится: s=15.

Если значение переменной s равно 15, но она имеет вещественный тип, то на экране появится: s=l.5Е+01.

При выполнении оператора вывода все элементы списка вывода печатаются непосредственно друг за другом. Так, в результате работы оператора write (1, 20, 300) на экран будет выведена последовательность цифр 120300, которая будет восприниматься нами как число 120300, а не как три отдельные числовые константы. Сделать выводимые данные более доступными для восприятия можно разными способами:

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

Для вывода вещественного числа в формате с фиксированной запятой в списке вывода для каждого выражения указывается два параметра:

  1. общее количество позиций, отводимых под число;
  2. количество позиций в дробной части числа.

При выполнение нового оператора write вывод продолжается в той же строке. Чтобы осуществить переход к новой строке, используется оператор writeln. Других различий между операторами write и writeln нет.

4.2.2. Первая программа на языке Паскаль

Пользуясь рассмотренными операторами, составим программу, вычисляющую длину окружности и площадь круга радиуса 5,4 см.

Исходными данными в этой задаче является радиус: r - 5,4 см. Результатом работы программы должны быть величины С - длина окружности и S - площадь круга. С, S и r - величины вещественного типа.

Исходные данные и результаты связаны соотношениями, известными из курса математики: С = 2πr, S = πr + . Программа, реализующая вычисления по этим формулам, будет иметь вид:

Эта программа верна и решает поставленную задачу. Запустив её на выполнение, вы получите следующий результат:

И всё-таки составленная нами программа имеет существенный недостаток: она находит длину окружности и площадь круга для единственного значения радиуса (5,4 см).

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

4.2.3. Ввод данных с клавиатуры

Для ввода в оперативную память значений переменных используется оператор ввода read:

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

Первое введённое пользователем значение переменной помещается в ячейку памяти, имя которой расположено первым в списке ввода, и т. д. Поэтому типы вводимых значений (входного потока) должны соответствовать типам переменных, указанных в разделе описания переменных.

Пример . Пусть

var i, j: integer; x: real; a: char;

Присвоим переменным i, j, x, а значения 1, 0, 2.5 и "А". Для этого воспользуемся оператором read (i, j, x, a) и организуем входной поток одним из следующих способов:

Здесь мы не только использовали различные разделители (пробел, запятая), но и входной поток представляли в виде одной, двух и четырёх строк.

Для ввода данных с клавиатуры можно также использовать оператор readln, который отличается от оператора read только тем, что после его выполнения курсор переходит на новую строку.

Усовершенствуем программу n_1, организовав в ней ввод данных с помощью оператора read. А чтобы пользователь знал, для чего предназначена программа, и понимал, какое именно действие ожидает от него компьютер, выведем соответствующие текстовые сообщения с помощью оператора writeln:

Результат работы усовершенствованной программы:

Теперь наша программа может вычислить длину окружности и площадь круга для любого значения r. Иначе говоря, она решает не единичную задачу, а целый класс задач. Кроме того, в программе понятно и удобно организован ввод исходных данных и вывод получаемых результатов. Это обеспечивает дружественность пользовательского интерфейса.

Самое главное

Для ввода в оперативную память значений переменных используются операторы ввода read и readln.

Для вывода данных из оперативной памяти на экран монитора используются операторы вывода write и writeln.

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

Вопросы и задания

  1. Запишите оператор, обеспечивающий во время работы программы ввод значения переменной summa.
  2. Целочисленным переменным i, у, k нужно присвоить соответственно значения 10, 20 и 30. Запишите оператор ввода, соответствующий входному потоку:
      а) 20 10 30
      б) 30 20 10
      в) 10 30 20
  3. Опишите переменные, необходимые для вычисления площади треугольника по его трём сторонам, и запишите оператор, обеспечивающий ввод необходимых исходных данных.
  4. Что является результатом выполнения оператора?
      а) write (а)
      б) write (1 а ")
      в) write (1 а=1, а)
  5. Какой тип имеет переменная f, если после выполнения оператора write (f) на экран было выведено следующее число?
      а) 125
      б) 1.25Е+2
  6. Каким образом можно вывести на экран вещественное число в формате с фиксированной запятой?
  7. Запишите операторы ввода двух чисел и вывода их в обратном порядке.
  8. Дан фрагмент программы:

    read (a); read (b); c:=a+b; write (a, b); write (с)

    Упростите его, сократив число операторов ввода и вывода.

  9. Дан фрагмент программы:

    а:=10; b:=a+l: a:=b-a; write (а, Ь)

    Какие числа будут выведены на экран компьютера?

  10. Напишите программу, которая вычисляет площадь и периметр прямоугольника по двум его сторонам.