Тема_5

advertisement
Тема 5.
Раздел: Алгоритмизация
Алгоритм – это базовое понятие информатики. На понятии алгоритма построены все
основные принципы программирования – составление программ для вычислительных машин. Тем
не менее, существуют различные понятия алгоритма. Одним из таких определений может быть
такое:
Алгоритм – это описанная на некотором языке, точная конечная система правил,
определяющая содержание и порядок действий над некоторыми объектами, строгое выполнение
которых дает решение поставленной задачи.
Любой алгоритм существует не сам по себе, а предназначен для определенного
исполнителя. Исполнитель должен уметь выполнять некоторые команды. Исполнителем наших
алгоритмов будет компьютер.
Свойства алгоритма:
1. Дискретность – разделение информационного процесса на отдельные команды;
2. Определенность (точность) – это однозначность результатов выполнения алгоритмов в
одинаковых начальных условиях;
3. Результативность – это завершение выполнения алгоритмов определенными
результатами;
4. Массовость – это возможность применения алгоритмов для решения целого класса
задач, различающихся исходными данными;
5. Правильность алгоритмов – правильность результатов, получаемых с их помощью.
Алгоритм считается правильным, если он дает правильные результаты для любых
допустимых начальных условий. Алгоритм содержит ошибки, если его выполнение
приводит к сбоям, неправильным результатам, либо вовсе не дает никаких результатов.
Формы представления алгоритмов
Алгоритм можно описать несколькими способами:
 словесная форма представления алгоритма (описание на естественном языке);
 описание алгоритма в виде структурированной записи, например на псевдокоде – это
описание алгоритма на естественном, частично формализованном языке;
 представление алгоритма в виде блок – схемы.Это описание структуры алгоритма с
помощью геометрических фигур с линиями – связями, показывающими порядок выполнения
отдельных инструкций.
 запись структуры алгоритма на языке программирования или в машинных кодах.
Обозначение некоторых блоков алгоритма:
- Начало и конец алгоритма.
- Ввод / вывод данных.
- Выполнение операции.
- Выбор направления выполнения алгоритма в зависимости от некоторых
переменных условий.
- Изображение цикла со счетчиком.
Основные алгоритмические конструкции
Линейная алгоритмическая конструкция
3
Линейной называют алгоритмическую конструкцию, реализованную в виде
последовательности действий, в которой каждое действие алгоритма выполняется ровно один раз,
причем после I –того шага выполняется I+1 шаг, если этот шаг не конец.
Задача 1. Найти площадь прямоугольника, если известны длины его сторон.
Исходные данные: a- длина прямоугольника, b- ширина прямоугольника.
Выходные данные: s – площадь.
Блок – схема:
Начало
Ввод a,b
Вычисление площади
s=a*b
Вывод площади s
Конец
Запись структуры алгоритма на структурированном языке:
1. Ввод a,b
2. Вычисление s=a*b
3. Вывод s
4. Конец
Разветвляющаяся алгоритмическая конструкция()
Это алгоритмическая структура, обеспечивающая выбор между двумя альтернативами в
зависимости от значения входных данных.
Различают неполную развилку: если – то. На блок- схеме неполная развилка изображается так:
Нет
Да
Условие
Операторы
Полная развилка если – то – иначе на блок схеме изображается так:
Нет
Условие
Оператор 2
Задача 2. Вывести значение наибольшего из двух чисел.
Исходные данные: a- первое число, b- второе число.
4
Да
Оператор 1
Выходные данные: вывод наибольшего числа.
Блок – схема:
Начало
Ввод a,b
Нет
Да
a>b
Вывод b
Вывод a
Конец
Запись алгоритма на структурированном языке:
1. Ввод двух чисел a и b
2. если а>b то «выводим a»,
3. иначе «выводим b»
4. Конец
Задача 3.
Решим предыдущую задачу с использованием неполной развилки если – то.
Блок – схема:
Начало
Ввод a,b
Нет
Да
a>b
Вывод a
Нет
Да
b>a
Вывод b
Конец
Запись алгоритма на структурированном языке:
1. Ввод двух чисел a и b
2. если а>b то «выводим a»
3. если b>a то «выводим b»
4. Конец
5
Задача 4.
Задан фрагмент алгоритма:
1. если a*b<0 то c=a-b иначе c=a+b
c
2. если c0 то c=
c
3. d=c*a
В результате выполнения данного алгоритма с начальными значениями a=-5, b=5 какие
значения примут c и d?
Ответ: с=-1; d=5
Алгоритмическая конструкция «цикл» или повторение.
Циклом называют алгоритмическую конструкцию, в которой идущая подряд группа
действий алгоритма может выполняться несколько раз в зависимости от входных данных и
условия задачи.
Группу повторяющихся действий на каждом шагу цикла называют телом цикла.
Различают три типа циклических алгоритмов: Цикл с параметром – арифметический цикл, цикл с
предусловием и цикл с постусловием – их называют итерационными.
В циклах с параметром число повторений полностью зависит от правила изменения параметра,
которое задается с помощью начального и конечного значений параметра и шага его изменения.
Задача 5. Вывести 10 раз слово «Привет».
Пусть i – параметр.
Блок – схема:
i=1,10,1
Вывод слова
«Привет»
Алгоритм на псевдокоде:
1.НЦ Для i=1, 10, 1(начало цикла)
Вывод слова «Привет»
2.КЦ (Конец цикла)
3.конец
Задача 6.
Какие значения примут переменные n, s в результате выполнения фрагмента алгоритма:
s=1; n=1
НЦ для i=2 до 5 (начало цикла)
n=n+1; s=s+i
КЦ (конец цикла)
Ответ: n=5; s=15
Задача 7.Можно ли считать формальным исполнителем алгоритма следующие устройства:
a.) графический редактор
b.) кодовый замок
c.) телефон с памятью для записи номеров
Задача 8. К естественному представлению алгоритма относят
e.) язык PASCAL
6
f.) ER-диаграмму
g.) рекурсивные функции
h.) блок схема
d.) принтер
Раздел: Программирование на языке Visual Basic (VB).
Языки программирования - искусственные языки. От естественных они отличаются тем,
что у них малое число «слов», которые понимает компьютер. Кроме того, запись команд
(операторов) обладает очень строгими правилами, совокупность которых образует СИНТАКСИС
ЯЗЫКА, а смысл каждой команды и др. конструкций языка - это СЕМАНТИКА ЯЗЫКА.
Нарушение формы записи языка программирования приводит к тому, что транслятор не понимает
слово и выдает сообщение о синтаксической ошибке.
Если же команды записаны правильно, но не отвечают требованиям алгоритма, то
возникает семантическая ошибка (логическая ошибка или ошибка выполнения).
Интегрированная среда разработки программ на языке Visual Basic
Запуск Visual Basic в Windows 98 или WindowsXP : Пуск Программы Microsoft Visual
Basic 6.0. New Project Standard EXE Открыть. После запуска транслятора перед
пользователем открывается пустая форма:
В верхней части экрана располагаются главное меню и панель инструментов. Отметим, что
пустое окно носит имя Project1-Form1 (Form). Внутри него находится другое окно с названием
Form1. Это и есть форма, которую можно модифицировать и которая будет окном ваше
программы. В настоящий момент форма озаглавлена по умолчанию как Form1; такой заголовок
Visual Basic присваивает форме в начале работы над новым проектом. Слева от окна Form1
размещается окно панели инструментов Toolbox, в котором видны элементы управления,
доступные к размещению на форме. Справа от окна формы размещаются еще два окна. Верхнее
носит название Project Explorer - окно проводника проекта. Оно служит для выбора объекта,
который входит в проект. Нижнее окно – окно свойств объектов (Properties).
Если какие-либо из этих окон не видны, они включаются через опцию Вид (View) меню.
Элементы управления окна Toolbox
Окно элементов управления ToolBox располагается, как правило, слева от окна проекта и
имеет стандартный набор элементов управления
Рассмотрим некоторые элементы управления и их назначение:
Элемент
Название
Назначение
управления
Метка (Label)
Для вывода информации на форму,
создания надписей
Текстовое окно (TextBox) Для ввода информации с клавиатуры и
для вывода информации на форму
7
Командная кнопка
Для написания процедуры события
(CommandButton)
Если элементы управления размещены на форме, то они называются объектами
управления. Каждому объекту управления можно задать множество свойств (Properties) с
помощью окна свойств, которое размещается справа от окна проекта.
Например, свойство Caption - название, которое будет написано в заголовке формы или
объекта управления при исполнении программы. Этим свойством обладают Форма, Метка и
Командная кнопка и др. Например,
Form1. Label1.Caption=’’Стоимость’’
означает, что свойству Caption (название) объекта управления Label1 (метка1), размещенному на
Form1 (форме1), присвоено значение ’’Стоимость’’.
Свойство Text текстового окна предназначено для ввода и вывода информации.
Например, Text1.text=5, означает, что свойству text текстового окна Text1 присвоено
значение 5.
Структура программ на языке Visual Basic
Когда мы начинаем проектировать наше приложение, то мы берем некоторые
стандартные элементы управления, помещаем их на форму (одну или несколько), затем
устанавливаем начальные свойства этих объектов управления и создаем код обработки событий,
связанный с этими объектами. Событие - это какое – либо воздействие на этот объект. К событиям
можно отнести: одинарный или двойной щелчок левой кнопкой мыши по объекту, нажатие или
отпускание кнопки мыши и др.
Другим атрибутом форм и объектов управления является их программный код (Code).
Чтобы создать его, нужно дважды «щелкнуть» по изображению формы или объекта управления и
набрать программный код для этого объекта.
Как только условие задачи воплотилось в работоспособном коде программы, то
приложение считается готовым. Если объект управления активизирован, выполняется связанный с
ним программный код.
Совокупность форм с размещенными на них объектами управления и их программными кодами
образуют проект (Project). Он и является программой в обычном понимании этого термина.
Этапы создания проекта программы
Тогда процесс создания проекта программы можно разделить на следующие этапы:
 Составление точного и полного словесного описания работы программы, определение
исходных и выходных данных, как будет выглядеть экранная форма, т. е. какие объекты
должны быть на ней и какими должны быть их свойства. Это первый этап. Он называется
постановкой задачи (считается подготовительным и рассматривается вне среды
программирования).
 Создание экранной формы в интегрированной среде разработки языка Visual Basic со
всеми находящимися на этой форме объектами и свойствами этих объектов. Этот этап
называется разработкой пользовательского интерфейса.
 Третий этап – программирование. Это определение событий, происходящих в процессе
работы программы, составление процедур этих событий и написание программных кодов
этих процедур.
 Отладка программы – четвертый этап. Суть его состоит в устранении логических
ошибок в процедурах и в достижении правильности работы программы.
 На последнем этапе осуществляется сохранение проекта и, если нужно, компиляция –
превращение проекта в исполняемое приложение, способное работать за пределами среды
проектирования.
Переменные и константы.
Реальные данные, с которыми работает программа – это числа, строки (текст) и логические
величины (1 и 0, да и нет, истина и ложь). Эти типы данных называют базовыми.
8
Каждая единица информации храниться в ячейках памяти компьютера, имеющих свои
адреса. Заранее неизвестно в каких именно ячейках будут храниться данные, поэтому в языках
программирования введено понятие переменной, которое позволяет отвлечься от конкретных
адресов, а обращаться к содержимому памяти по идентификаторам – именам.
Имя должно начинаться не с цифры и может содержать английские буквы, цифры и знак
подчеркивания. Например, правильные имена переменных: Hello, X1, H8_D1. Имя указывает на
значение переменной. В процессе работы программы значение переменной можно менять, а имя нет. Кроме имени и значения переменная имеет тип, определяющий какая информация храниться
в переменной (число, строка символов или логическая цифра).
Рассмотрим некоторые типы данных, которые наиболее часто используются в VB:
Integer- целое, в памяти занимает 2 байта;
Single- дробное, 4 байта;
String- строковое значение (строка символов).
Объявление переменной в программе (описание)
В VB такой командой (оператором) является оператор DIM.
Синтаксис этой команды таков:
Dim ИмяПеременной [As ТипПеременной],
где:
Dim и As ключевые слова языка Visual Basic.
ИмяПеременной – создается по правилам, описанным выше, а ТипПеременной – одно из ключевых
названий типа, указанных ранее.
Прямоугольные скобки указывают на конструкции, которых может не быть.
Назначение этого оператора – объявить переменную, т.е. задать имя и тип или только имя.
DIM A AS SINGLE ‘объявляет идентификатор A, который может принимать дробное значение
DIM B AS INTEGER ‘Переменная B может принимать целое значение
DIM S AS STRING ‘Переменная S может принимать строковое значение - текст
Оператор присваивания.
Синтаксис этого оператора выглядит так:
Result=5
Такая запись означает, что в ячейку памяти с идентификатором Result будет положено
число 5, Знак «=» - это присвоение. Читается так: переменной Result присвоить значение 5.
В результате выполнения фрагмента такой фрагмент программы:
X=1
X=X+5
Значение переменной X будет равно 6.
Справа от знака равенства могут быть арифметические, логические и строковые выражения.
Других выражений не бывает.
Арифметические выражения. Для записи арифметических выражений используются такие
обозначения арифметических операций:
Операция
Описание операции
A^B
Возведение A в степень B
-A
Перемена знака A
A*B
Умножение A на B
A/B
Деление A на B
A\B
Целочисленное деление A на B
A Mod B
Деление по модулю A на B
A+B
Сложение A с B
A-B
Вычитание B из A
Выражение может содержать имена переменных, названия встроенных функций, которые
соединяются знаками арифметических операций.
Математические функции. Значениями математических функций являются числа. Всего в
языке Visual Basic 12 математических функций (табл.8).
9
Таблица 8
Математические функции
Функция
Возвращаемое значение
Sin(A)
Синус числа A
Cos(A)
Косинус числа A
Tan(A)
Тангенс числа A
Atan(A)
Арктангенс числа A
Sqr(A)
Квадратный корень из числа A
Log(A)
Натуральный логарифм числа A
Exp(A)
Показательная функция числа A
Int(A)
Наибольшее число, не превышающее число A
CInt(A)
Целое число, ближайшее к числу A
Fix(A)
Целое число, равное числу A без дробной части
Abs(A)
Абсолютное значение числа A
Rnd(A)
Случайное число
Задача 1. Записать на языке программирования оператор присваивания для вычисления
ln( 2 x  5)
переменной y, если выражение задано: y  x 3  sin 2 x 
.
1
4
3* x
Оператор присваивания:
Y=Sqr(x^3+sin(2*x))+(log(2*x-5)/(3*x^(1/4)))
Задача 2. Операторы присваивания в языках программирования
a.) соотносят переменным
некоторые множества
допустимых значений
b.) вычисляют
значение
математических
выражений
c.) меняют
значение
констант
d.) задают
значение
переменных
e.) организуют
выполнение
повторяемых
действий
Задача 3.Вычислимой функцией называется функция, для которой
a.) функция, представленная в
виде ряда значений
Val(S)
Str(F)
b.) можно задать
формулу
c.) задана матрица
значений
d.) значение функции может быть
найдено за конечное время
Строковые функции Str и Val
Функция преобразования строки символов S в число
Функция преобразования числа F в строку символов
Ввод информации с помощью текстового окна(TextBox).
Простейший ввод информации осуществляется через текстовое окно (TextBox).
Информация, записанная пользователем в этом окне в процессе работы программы, присваивается
свойству Text и может быть использована программой. Например,
A1=Text1.Text ‘ в переменную A1 положить текст
B1=val(Text2.Text) ‘ в переменную B1 положить число, которое набрано в Text2.Text
Вывод информации в текстовое окно(Textbox), на метку (Label) и на форму(Form)
Информация, присвоенная программой в процессе работы свойству Text текстового окна,
появляется в нем и тем самым сообщается пользователю. Например,
Text1.Text =“ряд”
Объект управления метка (Label) предназначен также для вывода информации. Для того
чтобы информация появилась на метке, необходимо присвоить ее значение свойству Caption
(название) этой метки. Это присвоение можно сделать на стадии создания графического
интерфейса, в этом случае метка будет использована для создания пояснительных надписей, или
на стадии выполнения программы для вывода результатов работы программы, например,
Label1.Caption=”Площадь треугольника = ”+Str(s)
Замечание. Объекты Text1 и Label1 должны быть выставлены на форму.
Для вывода информации на форму используется оператор Print.
10
Например,
Print ”Площадь треугольника = ”,s
Ввод данных с помощью системной функции InputBox
Наиболее удобным является ввод информации с помощью системной функции InputBox,
которая не требует никаких объектов на форме. Пример использования функции InputBox
приведен ниже:
Dim Slovo As String, Number1 As Single, Number2 As Single
Slovo = InputBox("Введите слово")
Number1 = Val(InputBox("Введите первое число"))
Number2 = Val(InputBox("Введите второе число"))
Вывод данных с помощью системной функции MsgBox
Эта функция называется Окно сообщения. Более простая и чаще применяемая ее форма,
когда функция выдает информацию в окно сообщения, имеет вид:
MsgBox Текст
Где Текст – это строка сообщения. Например:
MsgBox “y=”+str(y)+“ x=’+str(x)
Линейные алгоритмы
Задача 4. Составить проект программы для нахождения площади круга и длины
окружности по заданному радиусу.
Первый этап.
Исходным данным является радиус и его надо будет задавать в процессе работы проекта
программы. Обозначим его R, а выходными данными будут площадь круга и длина окружности,
обозначим их буквами – S и L соответственно. Для работы проекта нам понадобится одна форма и
на ней уже есть стандартные элементы, а нестандартные мы должны разместить на ней сами.
Дадим название проекту: Площадь круга и длина окружности. Для ввода R нужно одно окно
(Текстовое поле) и, чтобы пользователь знал для чего предназначено Текстовое поле,
расположим рядом с ним Метку – пояснительную надпись. Кроме того, на форме должны быть
еще одна Метка, на которой должны появится площадь круга и длина окружности, а также
Командная кнопка для запуска команд программы на выполнение. Пользователь должен ввести
длину радиуса и щелкнуть по командной кнопке, чтобы вычислить площадь круга и длину
окружности. Для вычисления площади круга воспользуемся формулой S=R2, а длины окружности
L=2R.
Второй этап.
Запустим VB и создадим пользовательский интерфейс.
Нам надо разместить на форме 1 объекта класса Текстовое поле, 2 объектов класса Метка и
1 объект класса Командная кнопка. Для их создания надо использовать Окно инструментов
Toolbox(слева от формы), если его нет на экране, то открыть, используя меню: View→Toolbox.
Форма с размещенными на ней объектами будет выглядеть так
11
Теперь надо наполнить каждый объект содержанием, т. е. для каждого объекта указать
свойства. Для этого на экране должна быть выставлено окно свойств - Properties. Если его нет на
экране, то открыть, используя меню: View→ Properties.
Заполняем объекты содержанием по порядку. Прежде всего, зададим свойство Caption
формы, для этого надо щелкнуть по форме вне объектов и, перейдя в окно свойств, свойству
Caption формы дать название – Вычисление площади круга и длины окружности.
Свойству Caption первой метки - Label1 присвоим значение – Введите длину радиуса.
Свойству Caption второй метки – Label2 присвоим значение – пусто.
Для каждого Текстового поля можно указать множество различных свойств, как и для
меток, но следует обратить внимание на то, что у Текстового поля нет свойства Caption, а есть
свойство Text. Мы присвоим свойству Text значение пусто (Empty). Заполним содержанием
объект Командная кнопка. Главным свойством этого объекта является Событие (мы говорили, что
для получения результата надо щелкнуть по командной кнопке). Присвоим свойству Caption
значение – Нажми, чтобы вычислить площадь круга и длину окружности.
После того, как мы укажем все выше перечисленные свойства, форма примет вид
Третий этап.
Программирование – Это главный этап создания проекта программы (Windows приложения) в среде Visual Basic. На этом этапе мы должны создать программный код обработки
события – щелчка мышью по командной кнопке, т. е. составить перечень операторов, выполнение
которых приведет к решению поставленной задачи. Этот перечень операторов называется
процедурой.
Для раскрытия окна программного кода достаточно сделать двойной щелчок по
командной кнопке, раскроется окно процедуры:
Private Sub Command1_Click()
End Sub
В этой заготовке Command1_Click() – название нашей процедуры (это название мы
создали сами), Private Sub и End Sub – ключевые (служебные) слова Visual Basic, Private –
частный, локальный, Sub – процедура, End – конец.
Между строками этой заготовки наберем с помощью клавиатуры строки с операторами
нашей программы:
Dim R As Integer, L As Single, S As Single
R = Text1.Text
S = 3.14*R^2 : L=2*3.14*R
Label2.Caption = "Площадь круга = " + Str(S)+ " Длина окружности = " +Str(L)
После того, как текст программы набран между строками заготовки, и система
программирования не выдала никаких сообщений о синтаксических ошибках можно запустить
программу на выполнение, ввести исходные данные и щелкнуть мышью по командной кнопке,
после чего сработает процедура Command1_Click() и в поле Label2 появится результат.
Запуск программы на исполнение можно произвести несколькими способами:
 «нажатием» пиктограммы
-Start на линейке инструментов;
12
 выбрать Run (главное меню) → Start; (→ - означает, что выбирается пункт меню или
выполняется действие, следующие за стрелкой);
 F5.
Завершение исполнения программы также можно произвести несколькими способами:
 «нажатием» пиктограммы
-End;
 Run (главное меню) → End;
 закрытием окна формы.
Аварийное завершение исполнения программы – одновременное нажатие клавиш Ctrl
+ Break → End .
Программирование ветвлений на языке Visual Basic
Ветвление - выбор пути решения задачи в соответствии с выполнением или
невыполнением некоторого условия выбора.
Алгоритмы, в которых последовательность выполнения некоторых действий зависит от
выполнения проверяемых условий, называются нелинейными.
Для записи условий используются логические выражения, которые также называют
условными выражениями. Условные выражения могут быть простыми и сложными.
Простое условие - это два выражения, между которыми помещается знак сравнения.
Примеры записи простых условий:
A>0, C<=D, B<>0 и т. д.
Сложное условие - это последовательность простых условий, заключенных в круглые
скобки, которые соединены между собой знаками логических операций: And (и) - логического
умножения, Or (или) - логического сложения, Not (не) - логического отрицания.
Примеры записи сложных условий:
(A>B) AND (B>C)
(A>=B) OR (A<=C) OR (A=D)
Истинность сложных условий определяется в соответствии с таблицами истинности для
логических функций AND, OR,NOT.
Таблица истинности для логического умножения AND и OR
А
В
А AND В
А OR В
False
False
False
False
False
True
False
True
True
False
False
True
True
True
True
True
Таблица истинности для логического отрицания (NOT)
A
NOT A
False
True
True
False
Задача 5 .Ни в одном языке программирования нет ... выражений
a.) текстовых
b.) арифметических
c.) логических
d.) физических
Понятие условного оператора If
Условный оператор позволяет проверить некоторое условие и в зависимости от
результатов проверки выполнить то или иное действие. Этот оператор в языке Visual Basic имеет
две формы записи: упрощенная однострочная форма и более сложная многострочная форма.
Однострочная форма записи условного оператора:
If Условие Then оператор1 Else оператор2
Многострочная форма записи условного оператора:
If Условие Then
<оператор 1>
13
Else
<оператор 2>
End if
Примечания:
 полужирным шрифтом выделяются ключевые слова;
Различают два вида условных переходов: двойной условный переход и одинарный
условный переход.
Двойной условный переход работает так: если условие имеет истинное значение,
делается переход к выполнению операторов Оператор 1, стоящих после слова Then. Если условие
имеет ложное значение, делается переход к выполнению операторов Оператор 2, стоящих после
слова Else. После этого выполнение условного оператора прекращается и выполняются
операторы, стоящие за условным оператором. Блок - схема двойного условного перехода
изображена в разделе Алгоритмизация.
Одинарный условный переход работает так: если условие имеет истинное значение,
делается переход к выполнению операторов, стоящих после слова Then. Если условие имеет
ложное значение, выполнение условного оператора прекращается и начинают выполняться
операторы, стоящие за условным оператором. В этом случае оператор условия будет выглядеть
так:
If условие Then
<операторы>
End If
Или так:
If условие Then <операторы>
Задача 6: Составить блок-схему и программу вычисления значений функции:
4 X ,еслиX  4
y
при X=-2; 4; 5
7
X

1
,
еслиX

4

Постановка задачи:
Требуется: Вычислить значение функции Y для заданных значений X.
Дано:
X– значение X
Разработка интерфейса:
Разместим на форме следующие объекты:
 Label1 - имя метки для вывода слов "Введите значение X"
 Text1 - имя текстового окна для ввода значения X (свойству Text присвоить значение
пусто (Campty)).
 Label2 - имя метки для вывода значения функции.
 Пуск - имя командной кнопки
.
14
Блок-схема алгоритма:
Начало
Ввод
X
Нет
X>=4
Y  7X 1
Да
Y 4 X
Конец
Программа:
Private Sub Command1_Click()
Dim X As Single, Y As Single
X = Text1.Text
If X >= 4 Then
Y = 4 * Sqr(X)
Else
Y=7*X
End If
Label2.Caption = "Y=" + Str(Y) + " при X=" + Str(X)
End Sub
Задача 7. Составить блок-схему и программу, в которой определяется полугодие года
(первое или второе) по номеру введенного месяца.
Требуется: Вывести сообщение о номере полугодия года.
Дано:
N – номер месяца.
Разработка интерфейса:
Разместим на форме следующие объекты:
 Label1 - имя метки для вывода слов "Введите номер месяца года"
 Text1 - имя текстового окна для ввода значения N (свойству Text присвоить значение
пусто).
 Пуск - имя командной кнопки.
 Label2 - имя метки для вывода номера полугодия.
Тогда интерфейс программы будет выглядеть так:
15
В проекте программы будет использована одна переменная N - номер месяца.
Блок-схема алгоритма решения задачи представлена ниже:
Начало
Ввод N
Нет
N>0 и N<13
Да
Нет
Да
N>0 и N<=6
Вывод:
II полугодие
Наберите
правильно номер
месяца
Вывод:
I полугодие
Конец
Программный код процедуры этой задачи будет выглядеть таким образом:
Private Sub Command1_Click()
Dim N As Integer
N = Val(Text1.Text) ‘ Вводится номер месяца
If (N > 0) And (N < 13) Then
If (N > 0) And (N <= 6) Then
Label2.Caption = "I полугодие"
Else
Label2.Caption = "II полугодие"
End If
Else
Label2.Caption = "Введите правильно номер месяца"
End If
End Sub
Оператор If можно использовать и в таком виде, в котором вместо оператора Else (иначе)
можно ставить оператор ElseIf (иначе если) и делать условия вложенными таким образом:
If условие 1 Then
[Серия 1]
[ElseIf условие 2 Then
[Cерия 2 для ElseIf]
...
[ElseIf условие n Then
[Cерия n для ElseIf]
[Else
[Cерия для Else]]
End If
16
Задача 8. По номеру введенного весеннего месяца (переменная n) определить название
месяца.
Если считать, что n – номер введенного весеннего месяца, то фрагмент кода программы
будет следующий:
If n = 3 Then
Print " март"
ElseIf n = 4 Then
Print "апрель"
ElseIf n = 5 Then
Print "май"
Else
Print "набран номер не весеннего месяца"
End If
Программирование повторений
Повторение - это многократное выполнение одного или нескольких предписаний
алгоритма.
Цикл - это оператор языка программирования, с помощью которого это повторение будет
выполнять компьютер - исполнитель алгоритмов.
В языке Visual Basic циклы - многострочные операторы двух видов: циклы со счетчиком и
циклы с условием.
Программирование повторений с помощью цикла со счетчиком
Цикл со счетчиком - это многострочный оператор, его синтаксис таков:
For Имя=Знач1 To Знач2 [Step Знач3]
Серия повторяющихся операторов
Next [Имя],
где Имя - это имя переменной, которую называют счетчиком;
Знач1 - начальное значение счетчика;
Знач2 -. конечное значение счетчика;
Знач3 - величина, на которую изменяется значение счетчика при одном повторении. Она
называется шагом цикла.
Серию повторяющихся операторов иначе называют телом цикла.
Логика работы оператора цикла со счетчиком такая. Сначала цикл проверяется на
непротиворечивость, т.е. если конечное значение счетчика больше начального, то шаг цикла
должен быть положительным, а если конечное значение счетчика меньше начального, то шаг
должен быть отрицательным. Если проверка выявила такое противоречие, то работа цикла
прекращается и выполняются операторы, следующие за оператором цикла. Если же противоречия
нет, то повторяющиеся операторы будут выполнены при начальном значении счетчика. Затем
начальное значение счетчика будет изменено на величину шага цикла, сделана проверка на то, что
не вышло ли значение счетчика за пределы интервала между начальным и конечным значениями и
если вышло, то работа цикла будет прекращена, а если нет, то повторяющиеся операторы будут
выполнены при новом значении счетчика, после чего значение счетчика опять будет изменено на
величину шага цикла и т. д.
Оператор цикла со счетчиком будем представлять в виде блок-схемы следующим образом:
17
Повторять, меняя
имя от Знач1 до
Знач2 с шагом Знач3
Серия повторяющихся
операторов
Конец повтора
Блок “Конец повтора”, изображенный на этой блок – схеме, можно не использовать, а сразу
осуществить переход к блоку “Повторять, меняя имя от Знач1 до Знач2 с шагом Знач3”.
Выражение Step Знач3 может отсутствовать, в этом случае шаг считается равным единице.
Шаг может быть как целым, так и дробным, как положительным, так и отрицательным.
Например, решим такую задачу:
Задача 9. Вывести на форму таблицу значений функции Y=X3-3X-0.5 на отрезке [-2,4]
с шагом H=0,25.
Рассмотрим эту задачу подробно, начиная с постановки задачи. Из условия задачи видно,
что начальное значение X равно –2, конечное 5, а шаг равен 0,25. Таким образом, значение X
соответствует параметрам счетчика в цикле For и для каждого значения счетчика надо вычислить
значение функции Y и вывести вычисленное значение Y и значение счетчика X.
Блок – схема решения задачи 9 будет выглядеть так, как показано на рисунке ниже.
Разберемся с тем, как будет выглядеть интерфейс для данной задачи, т. е. определим,
какие объекты надо разместить на форме для ввода исходных данных, для вывода результатов
выполнения программы и какое событие должно произойти, чтобы был выполнен код программы.
Из постановки задачи видно, что исходными данными являются значения X, а они формируются
автоматически от -4 до 2 с шагом 0.25 и их вводить не надо, а значит, и не нужны объекты на
форме для ввода исходных данных.
Для вывода результатов работы программы удобно воспользоваться методом Print,
который позволяет осуществить вывод результатов непосредственно на форму, т. е. для вывода
результатов других объектов на форме также не нужно. Разместим на форме одну командную
кнопку, свойству Caption которой присвоим значение «Старт», а при щелчке мышью по ней
начнется вывод значений функции при очередном значении аргумента.
18
Начало
X = -2 , 4,0.25
Y=X3-3X-0.5
Вывод Y,X
Конец
Тогда программный код процедуры Command1_Click():
Private Sub Command1_Click()
Dim X As Single, Y As Single
For X = -2 To 4 Step 0.25
Y = X ^ 3 - 3 * X - 0.5
Print "Y=", Y, " При X=", X
Next X
End Sub
Рассмотрим более сложную задачу, в которой рассматриваются алгоритмы поиска суммы,
количества и произведения элементов последовательности.
Задача 10. Дана последовательность: Sin(0.1)/0.1, Sin(0.2)/0.2, Sin(0.3)/0.3,…, Sin(1)/1.
Найти сумму отрицательных элементов последовательности, количество
положительных и произведение элементов последовательности, значения которых
больше 0.5.
Из условия задачи видим, что аргумент функции Sin и знаменатель элемента
последовательности изменяются с равным шагом, известно начальное значение и конечное
значение этих величин. Таким образом, эти величины соответствуют параметрам счетчика в
цикле For и для каждого значения счетчика надо вычислить значение очередного элемента
последовательности.
Пусть:
x – имя счетчика,
xn - начальное значение счетчика,
xk – конечное значение счетчика,
h – шаг изменения счетчика,
y – значение очередного элемента последовательности,
s - сумма отрицательных элементов последовательности,
k – количество положительных элементов последовательности,
p - произведение элементов последовательности, значения которых больше 0.5.
Для ввода xn, xk и h используем функцию InputBox, для вывода элементов
последовательности применим оператор Print, а он не требует никаких объектов на форме, а для
вывода s, p и k – функцию MsgBox, для программного кода – командную кнопку.
Блок – схема решения задачи представлена:
19
Начало
Ввод xn, xk, h
S=0 K=0 P=1
Повторять, меняя
x от xn до xk c
шагом h
Вычисление y
В
ыв
од
p
y<0
Нет
y>0
s=s+y
Да
Нет
y>0.5
Нет
Конец повтора
Вывод s,k,p
Конец
20
k=k+1
Да
p=p*y
Программный код задачи будет представлен в виде:
Private Sub Command1_Click()
Dim x As Single, s As Single, xn As Single, xk As Single, h As Single
Dim p As Single, k As Single, y As Single
xn = Val(InputBox("Введите начальное значение x"))
xk = Val(InputBox("Введите конечное значение x"))
h = Val(InputBox("Введите шаг изменения x"))
s = 0: k = 0: p = 1
‘Подготовка переменных для нахождения суммы, количества и
произведения
For x = xn To xk Step h
y = Sin(x) / x
Print "y="; y; " при x="; x
If y < 0 Then s = s + y
If y > 0 Then k = k + 1
If y > 0.5 Then p = p * y
Next x
MsgBox "Сумма="+Str(s)+" Количество="+Str(k)+" Произведение="+Str(p)
End Sub
Эту задачу можно решить иначе, если вычислить количество повторений цикла по формуле
N=(xk-xn)/h+1. Тогда цикл надо осуществлять по другой переменной, которая изменяется от 1 до
N, а за изменением x следить самим. Фрагмент программы будет выглядеть в этом случае так:
s = 0: k = 0: p = 1
N=(xk-xn)/h+1
x=xn
For i = 1 To N
y = Sin(x) / x
Print "y="; y; " при x="; x
x=x+h
If y < 0 Then s = s + y
If y > 0 Then k = k + 1
If y > 0.5 Then p = p * y
Next i
Программирование повторений с помощью циклов с условием
Если заранее неизвестно, какое количество раз надо повторить тело цикла, используются
циклы с условием. Такой цикл реализуется с помощью многострочного оператора Do … Loop.
Условие выхода из цикла можно поставить в начале, перед телом цикла. Такой цикл
называется циклом с предусловием. Синтаксис цикла с предусловием:
Do Условие
Серия повторяющихся операторов
Loop
21
Оператор цикла с предусловием будем представлять в виде блок-схемы следующим образом:
Вход
Да
Условие
Нет
Серия повторяющихся
операторов
Выход
Если условие выхода из цикла стоит после тела цикла (в конце), то такой цикл называется
циклом с постусловием.
Синтаксис цикла с постусловием:
Do
Серия повторяющихся операторов
Loop Условие
Оператор цикла с постусловием будем представлять в виде блок-схемы следующим
образом:
Проверка условия выхода из цикла производится с помощью ключевых слов While или
Вход
Серия повторяющихся
операторов
Нет
Условие
Да
Выход
Until.
Если в условии используется ключевое слово While, то условие называется условием
продолжения цикла. В этом случае тело цикла выполняется повторно до тех пор, пока условие
выполняется.
Если в условии используется ключевое слово Until, то условие называется условием
завершения цикла. В этом случае тело цикла выполняется повторно до тех пор, пока условие не
выполняется.
После ключевого While (или Until) записывается условное выражение. В циклах с
предусловием Серия повторяющихся операторов может не выполняться ни разу, а в циклах с
постусловием - хотя бы один раз.
Задача 11. Составить программу нахождения суммы элементов последовательности:
1/1, 1/4, 1/9, …, пока очередной член последовательности не станет меньше заданного числа
E(число Е меньше или равно 1).
Постановка задачи. Из условия задачи видно, что знаменатель-это квадрат натурального
числа, а также видно и то, что количество повторений цикла неизвестно. Решим эту задачу с
помощью цикла с предусловием. Пусть счетчиком цикла будет переменная I и счетчик изменяется
от единицы с шагом 1. Число E введем с клавиатуры, а в переменной S накопим сумму.
22
Блок-схема:
Начало
Ввод E
I=1 S=0
Нет
1
I2
E
Да
S=S+1/I^2 I=I+1
Вывод S
Конец
Программа:
Private Sub Command2_Click()
Dim E As Single, S As Single, I As Integer
E = Val(InputBox("Введите значение E"))
I=1
S=0
Do While 1 / I ^ 2 >= E
S=S+1/I^2
I=I+1
Loop
Print S
End Sub
Программный код решения задачи 8 с использованием цикла с постусловием и ключевого слова
Until будет выглядеть так:
Private Sub Command2_Click()
Dim E As Single, S As Single, I As Integer
E = Val(InputBox("Введите значение E "))
I=1
S=0
Do
S=S+1/I^2
I=I+1
Loop Until 1 / I ^ 2 < E
Print S
End Sub
Задача12. Задан фрагмент алгоритма:
если а<0 то а=-а
если b<0 то b=-b
Пока выполняется условие (a>b) делать a=a-b
В результате выполнение данного алгоритма с начальными значениями a=-13;b=5 какие
значения примут переменные a и b?
Из условия задачи видно, что здесь использован цикл с предусловием. Перед его
непосредственным использованием a=13, а b=5. После выполнения первой итерации a=8, а b=5,
после второй a=3, а b=5, при следующей итерации будет осуществлен выход из цикла. Таким
образом, a=3, а b=5
23
Задача 13. Что определяет фрагмент алгоритма, приведенного на блок- схеме?
S=0
Ввод X
Да
X0
Нет
Нет
S=S+X
X<0
Да
Вывод S
МАССИВЫ
Понятие массива
Для хранения в памяти компьютера большого числа однотипных данных используются
массивы. В основе массивов лежит понятие индекса.
Допустим, нам известна температура в каждый из дней октября
День месяца
1 2 3 4 5 6 7 8 9 10 11 12 13 14 … 29 30
31
5 7 9 8 2 0 3 11 12 3 0 -2 -4 0 … 0
1
2
Температура, С
Тогда температура - это последовательность чисел, следующих по порядку одно за
другим. А день месяца – это порядковый номер элемента в этой последовательности или индекс.
По таблице можно определить, что температура в первый день месяца была 5 градусов, во
второй – 7, в десятый – 3, а в двадцать девятый - 0.
Если обозначим последовательность температур за весь месяц, например, буквой t, тогда
можно обозначить через t(l) температуру первого дня месяца, t(2) - второго, ..., t(31) -последнего.
Тогда каждый из этих элементов обладает именем и значением, т. е. является переменной с
индексом.
Таким образом, под массивом можно понимать набор однотипных данных, объединенных
одним именем и отличающихся индексами.
В нашем примере имя массива t, а индекс может принимать любые целочисленные
значения от 1 до 31. Обращение к элементу массива производится по его имени, состоящему из
имени массива и его индекса, например, t(7), при этом каждый элемент массива имеет свое
значение. Если индекс массива имеет значение i, то обращение к элементу массива можно
осуществить как t(i).
Этот пример является определением одномерного массива – одномерной таблицы, а если
данные можно представить в виде двумерной таблицы, то и массив можно определить как
двумерный.
Массивы могут быть различных типов: числовые, строковые и т. д.
Объявление одномерных массивов
Массив перед первым использованием необходимо объявить с помощью оператора Dim.
Объявление массива отличается от объявления переменных тем, что после имени массива в
24
скобках указывается диапазон значения индекса – минимальное и максимальное его значения или
только максимальное.
Объявить массив температур, рассмотренный в п. 9.1, можно одним из следующих
способов:
Dim t(31) As Integer
‘ Указывается максимальное значение индекса
Dim t(1 To 31) As Integer ‘ Указывается диапазон значений индекса с использованием
ключевого слова To
На самом деле в первом случае объявления массива мы указали на один элемент больше.
Дело в том, что в VB нумерация элементов массивов по умолчанию начинается с 0 (нуля).
Заполнение одномерного массива
Работа с массивом начинается, как правило, с заполнения его значениями, т. е. с
присвоения элементам массива определенных значений. Для заполнения, как правило,
используется цикл со счетчиком, где счетчиком является индекс массива. Заполнение можно
произвести различными способами.
Заполнение с помощью функции Inputbox
Этот способ состоит в том, что пользователь вводит значения элементов массива с
клавиатуры. Рассмотрим этот способ на примере заполнения массива значениями дневных
температур за месяц. Код такой программы будет выглядеть следующим образом:
Dim t(1 To 31) As Integer, I As Integer
For I=1 To 31
T(I)= Val(InputBox(“Введите значение дневной температуры _
в ”+Str(I)+” день”
Next I
Заполнение с помощью датчика случайных чисел
Заполним числовой массив, состоящий из 11 элементов, случайными целыми числами в интервале
от 1 до 10, используя функцию случайных чисел Rnd и функцию выделения целой части Int.
Dim A(10) As Byte, I As Integer
Randomize
For I = 1 To 10
A(I) = Int(Rnd*10) + 1
Next I
Вывод элементов одномерного массива
Как правило, элементы одномерного массива выводятся на форму. Для вывода чаще
используется цикл со счетчиком, где счетчиком является индекс массива. Рассмотрим вывод
элементов одномерного массива на форму, код такой процедуры может быть таким:
Dim A(10) As Byte, I As Integer
For I = 1 To 10
print “A(“;I;”)=”,A(I)
Next I
Поиск в одномерных массивах
Данные в массивах обрабатываются с помощью каких – либо алгоритмов. Например,
можно отсортировать фамилии, расположенные в массиве, по алфавиту, найти среднее значение
температуры воздуха в месяце, определить самого высокого человека в группе и т. д.
Рассмотрим некоторые из алгоритмов, решая такую задачу:
25
Задача 14. Составить проект программы для нахождения в одномерном массиве,
состоящем из 20 действительных чисел, количества элементов, больших 5, среднего
значения элементов массива, произведения элементов массива, попавших в интервал
(2;4) и минимального элемента массива.
Для решения задачи определим такие переменные:
Areal(20) – массив действительных чисел;
Countt - количество элементов массива, больших 5;
Sum – сумма всех элементов массива;
Aver - среднеe значение элементов массива;
Mult - произведение элементов массива, попавших в интервал (2;4);
Min - минимальный элемент массива.
Массив заполним датчиком случайных чисел числами в диапазоне от 1 до 10, вывод
результатов работы программы осуществим на форму с помощью оператора Print. Следовательно,
для работы программы на форму достаточно поместить только один объект управления командную кнопку.
Программный код решения этой задачи будет выглядеть так:
Dim Areal(20) As Single, Countt As Integer, Sum As Single, _
Aver As Single, Mult As Double, Min As Single, i As Integer
Private Sub Command1_Click()
For i = 1 To 20
Areal(i) = 1+ Rnd * 10
Print Areal(i)
Next i
Sum = 0: Mult = 1
‘подготовка переменных для нахождения суммы,
произведения,
Min = Areal(1): Countt = 0 ‘минимального элемента и количества
For i = 1 To 20
Sum = Sum + Areal(i)
If Areal(i) > 2 And Areal(i) < 4 Then Mult = Mult * Areal(i)
If Areal(i) < Min Then Min = Areal(i)
If Areal(i) > 5 Then Countt = Countt + 1
Next i
Aver = Sum / 20
Print " Количество элементов массива, больших 5="; Countt
Print " Среднеe значение элементов массива ="; Aver
Print " Произведение элементов массива, попавших в интервал (2;4) ="; Mult
Print " Минимальный элемент массива ="; Min
End Sub
26
Блок – схема задачи 14 представлена на рисунке ниже.
Начало
Повторять по I от 1 до 20
Areal(I)=-1+rnd(i)*10
CСount=0 Mult=0 Sum=0
Min= Areal(1)
Повторять по I от 1 до 20
Sum=Sum+ Areal(I)
Да
2<Areal(I)<4
Mult= Mult* Areal(I)
Нет
Да
Areal(I)<Min
Min= Areal(I)
Нет
Да
Areal(I)>5
Countt =Countt+1
Нет
Aver=Sum/20
Вывод Mult, Min,
Countt, Aver
Конец
Задача 15. Задан одномерный массив X1, X2, …XN. Что определяет фрагмент алгоритма, приведенный ниже?
i=i+2
R=1
нет
да
i=2
Xi<0
iN
да
R=R*Xi
нет
27
Задача 16.Наиболее точным определением понятия "массив" является...
i.) самый
простой оператор
языка
программирован
ия
j.) набор
переменных,
начинающихся
с одной буквы
k.) последовательность
фиксированного числа
однотипных переменных,
имеющих общее имя
l.) ограниченная
апострофами
последовательност
ь любых символов
m.) законченное
минимальное смысловое
выражение на языке
программирования
Обработка строковых выражений
Строка – это либо упорядоченная последовательность символов (знак, для которого
установлен определенный код – число от 0 до 255), либо пустая строка. Для обозначения строки
используются кавычки:
“” – обозначение пустой строки;
“студент” – пример непустой строки.
Количество символов в строке называют длиной строки.
Каждый символ в строке имеет свою позицию – порядковый номер при счете слева направо.
Например, символ “д” в строке “студент” имеет 4-ю позицию.
При программировании часто приходится иметь дело не со всей строкой, а с частью строки
и ее называют подстрокой (следует заметить, что это не определение, а понятие). Например, “ход”
– это часть строки “пароход”.
Строки можно складывать, и эта операция называется конкатенацией. Конкатенация
обозначается знаком “+” или “&”.
Следующий программный код демонстрирует единственную операцию над строками:
Dim S1 As String, S2 As String, S As String
S1=”Сам” : S2 = “лет”
S=S1+”о”+S2
Значением переменной S будет строка “Самолет”.
Для работы со строками в VB существует ряд функций. Перечень наиболее часто
использующихся функций приведен ниже.
Строковые функции. Строковые функции либо возвращают строковые значения, либо их
аргументами являются строковые величины. К строковым функциям отнесем: функцию
определения длины строки, функции выделения подстроки и функцию поиска подстроки, а также
функции преобразования. Для указания аргументов в функциях будем использовать суффиксы.
Функция
Возвращаемое значение
Len(S$)
Функция определения длины строки S$
Mid(S$,P,[K]) Функции выделения подстроки с позиции P длиной K
Left(S$,K)
Функция выделения подстроки слева длиной K
Right(S$,K)
Функция выделения подстроки справа длиной K
InStr(S$,T$)
Функция поиска подстроки T$ в строке S$
Val(S$)
Функция преобразования строки S$ в число
Str(F)
Функция преобразования числа F в строку символов
Например,
left(«Василий»,3) дает результат «Вас»,
right(«Василий»,3) дает результат «лий»
mid(«Василий»,2,3) дает результат «аси».
Применение некоторых из них приведено в программном коде при решении следующей
задачи:
Задача 17. Ввести слово и определить совпадают ли в нем вторая буква от начала слова и
третья буква от конца слова (в слове больше 3-х букв).
Пусть S – слово, S2 – вторая буква от начала слова, а S3 – третья буква от конца слова, Lдлина слова. Для ввода слова S используем функцию InputBox, а для вывода букв S1 и S3 оператор
Print.
Это простейшая программа, блок-схему для нее составлять не будем.
28
Программа:
Private Sub Command1_Click()
Dim S As String, S2 As String, S3 As String
Dim L As Integer
S = InputBox("Введите слово")
L = Len(S)
S2 = Mid(S, 2, 1)
S3 = Mid(S, L - 2, 1)
If S2 = S3 Then Print "буквы совпадают" Else Print "буквы не совпадают"
End Sub
Задача 18. Ввести слово и образовать новое слово из всех четных букв.
Пусть S – слово, S2 – очередная четная буква, Sn – новое слово, L-длина слова, I – счетчик
цикла. Для ввода слова S используем функцию InputBox, а для вывода очередной четной буквы оператор Print.
Блок-схема:
Начало
I=2,L,2
Ввод S
S2=Mid(S,I,1)
Определение L
Sn=Sn+S2
Подготовка: Sn=””
Вывод Sn
Конец
Программа:
Private Sub Command1_Click()
Dim S As String, S2 As String, Sn As String
Dim L As Integer, I As Integer
S = InputBox("Введите слово")
L = Len(S)
Sn = ""
For I = 2 To L Step 2
S2 = Mid(S, I, 1)
Sn = Sn + S2
Next I
Print "Новое слово-", Sn
End Sub
29
Раздел: Эволюция языков программирования
Алгоритм и программа
Алгоритм – это точно определенное описание способа решения задачи в виде конечной
последовательности действий. Иначе, это описание называется формальным
Программа – это логически упорядоченная последовательность команд необходимая для
управления компьютером.
Программа, с которой работает процессор, представляет собой последовательность чисел,
называемую машинным кодом. Написать программу в машинном коде достаточно сложно и
поэтому для представления алгоритма в виде, понятном компьютеру, служат языки
программирования.
Языки программирования
Языки программирования - это искусственные языки. Они отличаются от естественных
ограниченным, достаточно малым числом слов, значение которых понятно компьютеру
(транслятору), и очень строгими правилами записи команд (операторов). Совокупность
требований для записи команд образуют синтаксис языка, а смысл каждой команды – семантику
языка.
Нарушение формы записи программы приводят к синтаксической ошибке, а правильно
написанная программа, но не отвечающая алгоритму, приводит к семантической ошибке (по
другому – логической, или ошибке времени выполнения программы).
Процесс поиска ошибок в программе называют тестированием, процесс устранения
ошибок – отладкой программы.
Уровни языков программирования
Если язык программирования ориентирован на конкретный тип процессора и учитывает его
особенности, то он называется языком программирования низкого уровня. “Низкий уровень” –это
значит, что операторы близки к машинному коду и ориентированы на конкретный тип процессора.
Языком самого низкого уровня является язык Ассемблера, который представляет каждую
машинную команду в виде символьных условных обозначений, называемых символьными
мнемониками. Перевод программы на языке Ассемблера в машинный язык называется
транслитерацией. Программа, написанная на языке низкого уровня, может быть использована
только в такой среде, в которой она была создана. С помощью языков низкого уровня создаются
очень эффективные и компактные программы, так как разработчик получает доступ ко всем
возможностям процессора.
Языки программирования высокого уровня ближе и понятнее человеку, чем компьютеру. В
программах, созданных на языках высокого уровня, особенности компьютерных систем не
учитываются, перенос программ на уровне исходных текстов на другие платформы не создает
трудностей, если в них создан транслятор этого языка. Программы разрабатывать на языках
высокого уровня проще, а ошибок допускается меньше.
Поколения языков программирования.
Языки программирования принято делить на пять поколений. В первое поколение входят
языки, созданные в начале 50-х годов, когда первые компьютеры только появились на свет. Это
был первый язык ассемблера, созданный по принципу « одна инструкция – одна строка».
Расцвет второго поколения языков программирования пришелся на конец 50-х – начало 60х годов. Тогда был разработан символический ассемблер, в котором появилось понятие
переменной. Он стал первым полноценным языком программирования. Благодаря его
возникновению заметно возросли скорость разработки и надежность программ.
Появление третьего поколения языков программирования принято относить к 60-м годам.
В это время родились универсальные языки высокого уровня, с их помощью удается решать
задачи из любых областей. Такие качества новых языков, как относительная простота,
независимость от конкретного компьютера и возможность использования мощных
синтаксических конструкций, позволили резко повысить производительность труда
программистов. Подавляющее большинство языков этого поколения успешно применяется и
сегодня.
30
С начала 70-х годов по настоящее время продолжается период языков четвертого
поколения. Эти языки предназначены для реализации крупных проектов, повышения их
надежности и скорости создания. Они обычно ориентированы на специализированные области
применения, где хороших результатов можно добиться, используя не универсальные, а
проблемно-ориентированные языки, оперирующие конкретными понятиями узкой предметной
области. Как правило, в эти языки встраиваются мощные операторы, позволяющие одной строкой
описать такую функциональность, для реализации которой в языках младших поколений
потребовались бы тысячи строк исходного кода.
Рождение языков пятого поколения произошло в середине 90-х годов. К ним относятся
также системы автоматического создания прикладных программ с помощью визуальных средств
разработки, без знания программирования. Главная идея, которая закладываемая в эти языки,возможность автоматического формирования результирующего текста на универсальных языках
программирования (который потом требуется откомпилировать). Инструкции же вводятся в
компьютер в максимально наглядном виде с помощью методов, наиболее удобных для человека,
не знакомого с программированием.
Классификация и обзор языков программирования
Деление языков программирования на классы можно представить на схеме таким образом:
Языки программирования
Процедурные
Операционные
Структурные
Объектноориентированные
Объектные
Визуальные
Декларативные
Функциональные
Логические
Процедурное программирование - есть отражение фон Неймановской архитектуры
компьютера. Программа, написанная на процедурном языке, представляет собой
последовательность команд, определяющих алгоритм решения задачи. Основная идея
процедурного программирования - использование памяти для хранения данных. Основная
команда- присвоение, с помощью которой определяется и меняется память компьютера.
Программа производит преобразование содержимого памяти, изменяя его от исходного состояния
к результирующему.
Различают такие языки процедурного программирования:
 Язык Фортран создан в начале 50-х годов 20-го века для программирования научнотехнических задач;
 Кобол – создан в конце 60-х годов 20-го века для решения задач обработки больших объемов
данных, хранящихся на различных носителях данных;
 Алгол (1960 год) – это многоцелевой расширенный язык программирования. В нем впервые
введены понятия «блочная структура программы» и «динамическое распределение памяти»;
 В середине 60-х годов 20-го века был создан специализированный язык программирования для
начинающих – BASIC. Характеризуется простотой освоения и наличием универсальных
средств для решения научных, технических и экономических задач, а также задач, например,
игровых.
Все перечисленные выше языки были ориентированы на различные классы задач, но они в
той или иной мере были привязаны к конкретной архитектуре ЭВМ.
 В 1963-1966гг был создан многоцелевой универсальный язык PL-1. Этот язык хорошо
приспособлен для исследования и планирования вычислительных процессов, моделирования,
решения логических задач, разработки систем математического обеспечения.
 Язык Паскаль (PASCAL) (1968-1971гг)- язык процедурного программирования наиболее
популярный для ПК, который и в настоящее время успешно применяется. В основу языка
Pascal положен подход от общей задачи к частным (более простым и меньшим по объему). К
основным принципам, которыми обладает Паскаль, можно отнести: а) Структурное
программирование, которое основано на использовании подпрограмм и независимых
31
структур данных; б) Программирование «сверху-вниз», когда задача делится на простые,
самостоятельно решаемые задачи. Затем выстраивается решение исходной задачи полностью
сверху вниз.
 К языкам процедурного программирования можно отнести язык АДА (1979 г) Язык назван в
честь первой программистки Ады Лавлейс- дочери Байрона. Его отличает модульность
конструкций.
 Язык СИ (начало 70-х годов) также относится к языкам процедурного программирования.
Первоначальный его вариант планировался как язык для реализации операционной системы
Unix вместо языка Ассемблера. Одной из особенностей языка СИ является то, что различия
между выражениями и операторами сглаживаются, что приближает его к функциональным
языкам программирования. Кроме того, в языке СИ отсутствует понятие процедуры, а
использование подпрограмм основано на понятии функции, которая может сочетать в себе
возможности процедуры. С одной стороны, по набору управляющих конструкций и структур
данных его можно отнести к языкам высокого уровня, а с другой – он имеет набор средств
прямого обращения к функциональным узлам компьютера, а это означает, что его можно
использовать как операционный язык.
Объектно-ориентированное программирование (ООП)
Объектно-ориентированное программирование (ООП) — это метод программирования,
при использовании которого главными элементами программ являются объекты. В языках
программирования понятие объекта реализовано как совокупность свойств (структур данных,
характерных для данного объекта), методов их обработки (подпрограмм изменения их свойств) и
событий, на которые данный объект может реагировать и, которые приводят, как правило, к
изменению свойств объекта.
Объединение данных и свойственных им процедур обработки в одном объекте, называется
инкапсуляцией и является одним из важнейших принципов ООП.
Другим фундаментальным понятием является класс. Класс это шаблон, на основе которого
может быть создан конкретный программный объект, он описывает свойства и методы,
определяющие поведение объектов этого класса. Каждый конкретный объект, имеющий структуру
этого класса, называется экземпляром класса.
Следующими важнейшими принципами ООП являются наследование и полиморфизм.
Наследование предусматривает создание новых классов на базе существующих и позволяет
классу потомку иметь (наследовать) все свойства класса – родителя.
Полиморфизм означает, что рожденные объекты обладают информацией о том, какие
методы они должны использовать в зависимости от того, в каком месте цепочки они находятся.
Другим важнейшим принципом ООП является модульность – объекты заключают в себе
полное определение их характеристик, никакие определения методов и свойств не должны
располагаться вне его, это делает возможным свободное копирование и внедрение одного объекта
в другие.
Наиболее современными языками программирования являются С++ и Java. С середины
90-х годов многие объектно–ориентированные языки реализуются как системы визуального
проектирования, в которых интерфейсная часть программного продукта создается в диалоговом
режиме, практически без написания программных операторов. К объектно – ориентированным
системам визуального проектирования относятся Visual Basic, Delphi, C++ Builder, Visual C++.
Язык VBA (Visual Basic for Application) – язык приложений Microsoft Office (Excel, Word,
Power Point и др). VBA соблюдает основной синтаксис языка и правила программирования языков
Basic – диалектов, позволяет создавать макросы для автоматизации выполнения некоторых
операций и графический интерфейс пользователя, интеграцию между различными программными
продуктами.
Декларативные языки программирования
К ним относятся функциональные и логические языки программирования.
Функциональное программирование- это способ составления программ, в которых
единственным действием является вызов функции. В функциональном программировании не
32
используется память, как место для хранения данных, а, следовательно, не используются
промежуточные переменные, операторы присваивания и циклы. Ключевым понятием в
функциональных языках является выражение. Программа, написанная на функциональном языке,
представляет собой последовательность описания функций и выражений. Выражение
вычисляется сведением сложного к простому. Все выражения записываются в виде списков.
Первым языком стал язык Лисп (LISP, LIST Processing- обработка списков) создан в 1959г. Этот
язык позволяет обрабатывать большие объемы текстовой информации.
Логическое программирование- это программирование в терминах логики.
В 1973 году был создан язык искусственного интеллекта Пролог (PROLOG) (Programming
in Logic). Программа на языке Пролог строится из последовательности фактов и правил, затем
формулируется утверждение, которое Пролог пытается доказать с помощью правил. Язык сам
ищет решение с помощью методов поиска и сопоставления, которые в нем заложены. Логические
программы не отличаются высоким быстродействием, так как процесс их выполнения сводится к
построению прямых и обратных цепочек рассуждений разнообразными методами поиска.
Языки программирования баз данных.
Языки программирования баз данных отличаются от алгоритмических языков прежде всего
своим функциональным назначением. При работе с базами данных выполняются следующие
операции:
 создание, преобразование и удаление таблиц в БД;
 поиск, отбор, сортировка по запросам пользователя;
 добавление новых записей и модификация существующих, удаление записей и др.
Для обработки больших массивов информации и выборки записей по определенным
признакам был создан структурированный язык запросов SQL (Structured Query Language). Язык
SQL – это стандартный язык работы с реляционными базами данных.
Сегодня в мире ведущие производители СУБД: Microsoft (SQL Server), IBM (DB2), Oracle,
Software AG (Adabas), Informix и Sybase. Практически в каждой СУБД имеется свой встроенный
язык работы с БД. Так, например, в Oracle имеется встроенный язык PL/SQL, в Informix –
INFORMIX 4GL, в Adabas – Natural и т.д.
Языки программирования для компьютерных сетей
Языки программирования для компьютерных сетей являются интерпретируемыми.
Интерпретаторы для них распространяются бесплатно, а сами программы – в исходных текстах.
Такие языки называются скрипт – языками.
Язык HTML (Hyper Text Markup Language) – универсальный язык разметки гипертекста,
используемый для подготовки Web документов для Internet. Язык позволяет форматировать текст,
добавлять графические образы, работать с таблицами и организовывать связь одного документа с
другим с помощью механизма гиперссылок.
Язык Perl (80 г) содержит многочисленные функции работы со строками, массивами,
всевозможные средства преобразования данных.
Язык PHP (1995-1997гг) обладает средствами доступа к БД и используется создателями
динамических сайтов во всем мире.
Язык Tcl/Tk (конец 80-х годов) состоит из мощных команд, предназначенных для работы с
абстрактными нетипизированными объектами и позволяет создавать программы с графическим
интерфейсом.
Язык VRML (1994г) создан для организации виртуальных трехмерных интерфейсов в
Интернете.
Язык XML. С 1996г идет работа над созданием универсального языка структуры
документов. Может стать заменой языка HTML.
Вопросы к разделу: Эволюция языков программирования
1.
Какие из перечисленных языков подходят для программирования (ответ – все):
n.)
1.
PHP
o.)
Ассемблер
p.)
C, C++
q.)
Java
К какому типу языков относится язык Lisp:
a.) язык системного
программирования
b.) язык структурного
программирования
c.) язык функционального
программирования
d.) язык логического
программирования
33
Не является принципом объектно-ориентированного программирования...
2.
a.) инкапсуляция
2.
b.) наследование
c.) полиморфизм
Декларативный (с точки зрения парадигмы) язык рассматривает программу как:
b.) совокупность
описания входных
данных и описания
искомого результата
a.) совокупность определений
функций, которые обмениваются
между собой данными без
использования промежуточных
переменных и присваиваний.
3.
b.) C++
c.) Tcl
b.) формальным
PHP
b.)
Ассемблер
Java
d.) язык логического
программирования
c.) язык функционального
программирования
d.) основная функция
программы
c.) обратная цепочка
логического вывода
b.) экземпляры
c.) функцией
d.) фрагментам
Что делает операция модификация над объектом?
b.) доступ к содержанию объекта
по частям, в строго определенном
порядке
c.) разрушает объект и
освобождает, занимаемую им
память
d.) изменяет
состояние объекта
Языки программирования 2-го поколения характеризует:
c.) система визуального проектирования
пользовательских приложений,
выполняющая автоматическую
генерацию соответствующих программ
b.) система
обозначений для
абстрактного
описания
вычислений
d.) система мнемоник для
обозначения машинных
команд конкретного
семейства компьютеров
Какие виды программ не присущи языку программирования С:
a.) процедуры
9.
d.)
В объектно-ориентированном программировании каждый объект по отношению к своему
классу является...
a.) система
машинных команд
конкретного
компьютера
8.
C, C++
b.) конструктор основного
класса программы
a.) дает доступ к
состоянию, но не
изменяет его
7.
d.) объектно-ориентированным
В языке Prolog при решении задач используются:
a.) кодом
6.
c.)
b.) язык структурного
программирования
a.) прямая цепочка
логического вывода
5.
c.) структурным
К какому типу языков относится язык Lisp:
a.) язык системного
программирования
4.
d.) Java
Какие из перечисленных языков подходят для программирования:
a.)
3.
d.) совокуп
ность
описаний
процедур
Методика анализа, проектирования и написания приложений с помощью структуры классов,
каждый из которых является целостным фрагментом кода и обладает свойствами и
методами, называется___________ программированием.
a.) модульным
2.
c.) описание задачи в терминах
фактов и логических формул, а
решение задачи выполняет
система с помощью механизмов
логического ввода
Какие из перечисленных языков являются скриптовыми языками:
a.) PHP
1.
d.) использование функций
b.) функции
c.) модули
d.) методы
Что делает операция итератор над объектом?
a.) дает доступ к
состоянию, но не
изменяет его
b.) изменяет
состояние объекта
c.) разрушает объект и
освобождает занимаемую им
память
d.) доступ к содержанию объекта
по частям, в строго определенном
порядке
10. Какие языки являются языками декларативного программирования:
a.) языки структурного
программирования
b.) языки
сценариев
c.) языки запросов к базам
данных
d.) логические
языки
11. Стиль программирования JAVA требует, чтобы имена данных класса записывались:
a.) начиная с заглавной буквы
34
b.) как угодно
c.) начиная с префикса "m_"
d.) начиная с прописной буквы
e.)
Download