Краткое введение в программирование лекция № 6

















![Объявление константы Const Имя [As Тип] = Значение Const Age As Integer Объявление константы Const Имя [As Тип] = Значение Const Age As Integer](https://present5.com/presentation/3/17768313_25398289.pdf-img/17768313_25398289.pdf-18.jpg)





































лк6_Краткое введение в программирование Ч1.ppt
- Количество слайдов: 55
Краткое введение в программирование лекция № 6
АЛГОРИТМЫ + ДАННЫЕ = ПРОГРАММЫ Н. Вирт Понятие данного, классификацию данных по функциональному назначению, типу и структуре рассмотрели. Следующий шаг – алгоритмы.
Что такое алгоритм? • Это выполнение задачи по шагам. • Это представление решения задачи как последовательности выполнения простых действий. Ø Простые действия – это какие действия? Если алгоритм выполняется на компьютере, то это команды компьютера. В соответствии с принципом программного управления функционированием ЭВМ фон Неймана, существует 3 вида команд: 1. Арифметические и логические операции (вычислительные команды). 2. Команды ввода и вывода. 3. Команды управления.
ОПРЕДЕЛЕНИЕ АЛГОРИТМА Алгоритм - это совокупность правил для решения некоторого класса задач, последовательное применение которых за конечное число шагов приводит к определенному результату. Мухаммед Аль Хорезми (780 -850): правила (алгоритмы) десятичной арифметики.
СВОЙСТВА АЛГОРИТМА • Универсальность. • Конечность. • Определенность.
Способы описания алгоритма • машинная программа • программа на алгоритмическом языке • программа на псевдокоде • блок-схема алгоритма • описание на естественном языке
ТРАНСЛЯЦИЯ Трансляция - процесс перевода программы, написанной на алгоритмическом языке, на машинный язык (в коды компьютера). Транслятор - программа-переводчик. ТРАНСЛЯЦИЯ КОМПИЛЯЦИЯ ИНТЕРПРЕТАЦИЯ
КОМПИЛЯЦИЯ И ИНТЕРПРЕТАЦИЯ Компиляция: процесс трансляции и выполнения программы четко разделены во времени. Интерпретация: последовательно чередуются перевод группы инструкций языка в коды и их выполнение.
КОМПИЛЯЦИЯ И ИНТЕРПРЕТАЦИЯ Сравнение: Компиляция выгодней по времени выполнения и памяти. Интерпретация удобней для организации интерактивных программ.
Классификация алгоритмических языков по способу трансляции Алгоритмические языки требующие требующие компиляции: интерпретации: СИ BASIC ПАСКАЛЬ LISP ФОРТРАН Java Java. Script. . . VBScript PHP …
Классификация алгоритмических языков по назначению Алгоритмические языки . . . Универсальные Разработка Диалоговые динамическ . . . программы, их Web- сайтов: СИ ФОРТРАН обработка Java. Script, системное вычисления списков: ЛИСП, VBScript, программирование Perl PHP, Perl ПАСКАЛЬ обучение Проектирование СИ++ программированию. Логические больших систем, задачи, проектирование режим реального времени: АДА ОБЪЕКТНЫЙ экспертных систем: ПАСКАЛЬ ПРОЛОГ ВАЖНО НЕ НА КАКОМ ЯЗЫКЕ ПРОГРАММИРОВАТЬ, А КАКИЕ ЗАДАЧИ РЕШАТЬ!
Алгоритмический язык Basic Простой язык MS Visual Basic (в MS VBScript - MS Visual Basic для первых настоящее время язык сценариев for Application ПК в входит в MS Visual для разработки консольном динамических (VBA) – язык Studio (. NET)) режиме Web-сайтов написания новых сценариев Для приложений: Для Excel, Word, … разработки оконных Интернет- ASP- приложений техно (динамическ логия ASP. NET их сайтов)
ВАЖНО НЕ НА КАКОМ ЯЗЫКЕ ПРОГРАММИРОВАТЬ, А КАКИЕ ЗАДАЧИ РЕШАТЬ! Сведения, необходимые для написания программы: ·Структура программы. Принципиальные различия между VB и VBA. ·Типы и структуры данных, имеющиеся в алгоритмическом языке, их описание, допустимые операции. Почти одинаково в VB и VBA. ·Операторы преобразования данных: присваивания (одинаково в VB и VBA), операторы ввода и вывода (есть сходство и различие). ·Правила записи алгоритма - программирование основных алгоритмических структур. Почти одинаково в VB и VBA. Сначала рассмотрим общие сведения.
Объявление переменной Dim имя 1 as тип 1, имя 2 as тип 2, , …имя. N as тип N Dim a as integer, s as string • Имя - произвольный набор из латинских (необязательно) букв, цифр и символов подчеркивания (_), первый символ может быть только буквой или символом подчеркивания. • Имя переменной (и любое другое) не зависит от регистра. • Если в переменную не записано значение, то она считается пустой (empty). • Если переменная объявляется, то обязательно до использования. Чтобы сделать описание обязательным, необходимо использовать инструкцию Option Explicit в начале файла с программным кодом.
Объявление переменной - инструкция, по которой отводится (распределяется) память под переменную. Указание типа необходимо, чтобы: • транслятор мог определить, сколько памяти отвести; • транслятор мог определить, какие действия можно выполнять с переменной.
Объявление переменной При объявлении переменной тип можно не указывать: Dim имя 1 [as тип 1], …имя. N [as тип N ] Dim a, s as string Тогда переменной назначается тип variant. Это значит: • тип переменной определится, когда она получит значение; • под переменную отводится память в 16 служебных байтов + длина текущего значения. В квадратные скобки заключен необязательный элемент.
Тип variant (-) типа variant: 1) замедляется работа программы из-за необходимости преобразования типов; 2) тратится больше памяти на хранение данного; 3) возможны ошибки вычисления из-за отсутствия контроля типов. 4) (+) нет необходимости задавать тип при объявлении переменной
Объявление константы Const Имя [As Тип] = Значение Const Age As Integer = 54, s=“text”
Типы данных Visual Basic Тип данных Размер Диапазон значений ячейки в байтах Boolean 2 True или False (логический) Byte (байт) 1 От 0 до 255 Integer(целый) 4 От -32 768 до 32 767 Long (длинный 4 От -2 147 483 648 до 2 147 483 647 целый) Single 4 Абсолютное значение находится в диапазоне от (с плавающей 1, 401298 E-45 до 3, 402823 E 38* точкой обычной точности) Double 8 Абсолютное значение находится в диапазоне от (с плавающей 4, 94065645841247 E-324 до точкой двойной 1, 79769313486232 E 308* точности)
Типы данных Visual Basic Тип данных Размер Диапазон значений ячейки в байтах Currency 8 От -922 337 203 685 477, 5808 до (денежный) 922 337 203 685 477, 5807 Date (дата/время) 8 От 1 января 100 г. до 31 декабря 9999 г. Object(объект) 4 Любой указатель объекта String (строка 10 байт + Длина строки от 0 до приблизительно 2 переменной длины) длина миллиардов символов строки Variant 16 байт+ Дата/время; числовые значения с тем же (универсальный длина диапазоном, что и для Double; строки с тем же тип) строки диапазоном, что и для String Type Опреде- Диапазон каждого элемента определяется его (определяемый ляется типом данных пользователем компо- тип) нентами
Преобразование и совместимость типов В отношении типов Visual Basic проявляет максимальную терпимость – когда это возможно, преобразование одного типа в другой будет выполнено автоматически.
Правила неявного преобразования типов üПри преобразовании числа с плавающей точкой в целое происходит округление до ближайшего целого. üПри преобразовании целого числа в число с плавающей точкой дробная часть принимается равной нулю. üВ случае преобразования целого типа в другой целый тип возможна ситуация, когда целый тип с большим диапазоном значений преобразуется в целый тип с меньшим диапазоном значений. Если значение, присваиваемое «короткому» типу, выйдет за пределы диапазона его допустимых значений, произойдет ошибка периода выполнения. üСтроковые и числовые типы совместимы. Можно присвоить числовое значение строковой переменной и наоборот (если это возможно). Для уменьшения количества ошибок в программе лучше типы преобразовывать явно.
Арифметические операции и их приоритеты Приоритет Операция 1 Вызов 5 функци и, скобки. 2 ^ 6 MOD 3 - 7 +, - 4 *, /
Некоторые функции преобразования типов Y=f(X) Функция f Назначение CBool преобразование в подтип Boolean CByte преобразование в подтип Byte CCur преобразование в подтип Currency CDate преобразование в подтип Date CDouble преобразование в подтип Double CInt преобразование в подтип Integer (с округлением до ближайшего четного целого числа) CLng преобразование в подтип Long CSng преобразование в подтип Single CStr преобразование в подтип String
Логические операции Применяются к данным и выражениям логического типа (Boolean). В Visual Basic определены 6 логических операций: § AND (логическое «И» ); § OR (логическое «ИЛИ» ); § NOT (логическое отрицание); § IMP (логическая импликация); § XOR (логическое исключительное «ИЛИ» ); § EQU (логическая эквивалентность). Логические константы: TRUE, FALSE. См. самостоятельно лекции по математической логике.
Приоритеты операций Приоритет Операция 1 -7 Арифметические операции 8 <, >, <=, =>, =, <> (соотношения) 9 NOT 10 AND 11 OR 12 XOR 13 EQU 14 IMP
Оператор присваивания Имя = Выражение Dim a as double, b as string a=2. 5 b=“text” … a=5*a
ОСНОВНЫЕ АЛГОРИТМИЧЕСКИЕ СТРУКТУРЫ (УПРАВЛЯЮЩИЕ СТРУКТУРЫ, FLOW CONTROL) Следование Кодирование на VB: Оператор 1 Оператор 2 … Оператор 2 … Вычислительный блок (арифметические и логические операции) – см. принципы фон Неймана. Один вход, один выход!
ОСНОВНЫЕ АЛГОРИТМИЧЕСКИЕ СТРУКТУРЫ Разветвление (развилка) Смысл: разделение алгоритма на два Кодирование на VBScript : альтернативных пути If условие then оператор 1 Условие? Нет Да else оператор 2 Оператор 2 Оператор 1 End If Ветвь «Нет» пустая else и оператор 2 отсутствуют.
Условие? Нет Да Условный блок – условный переход (см. принципы фон Неймана). Один вход, два выхода.
Пример с – максимальное значение из а и b. Dim a as single, b as single, c as single … Нет a>b Да If a>b then c=a c=b c=a else c=b End If …
ОСНОВНЫЕ АЛГОРИТМИЧЕСКИЕ СТРУКТУРЫ Разветвление (развилка) Операторы ветви «да» ограничиваются ключевыми словами Операторы ветви «нет» ограничиваются ключевыми словами
Решение Dim a as single, b as single начало квадратного Dim c as single, d as single уравнения: Ввод a, b, c Абстракция Dim x 1 as single, x 2 as single ax 2+bx+c=0 <Ввод a, b, c> d=b 2 -4 ac d=b^2 -4*a*c нет да if d>=0 then d 0 x 1=(-b+sqrt(d))/(2*a) x 2=(-b-sqrt(d))/(2*a) <Вывод …. > else x 1=-b/(2*a) Вывод: “действ. Вывод: x 2=sqrt(-d)/(2*a) и мнимая части “действ. корней: “ x 1, x 2 <Вывод …. > корни: ”, x 1, x 2 end if Блоки ввода и вывода (см. конец принципы фон Неймана)
ОСНОВНЫЕ АЛГОРИТМИЧЕСКИЕ СТРУКТУРЫ Цикл ПОКА (с предусловием) Смысл: Кодирование на VB: повторение Do while условие тело цикла Можно Условие? Нет Loop использовать Until, тогда надо Петля инвертировать (loop) условие Да Тело цикла Тело цикла может не выполниться ни разу.
ОСНОВНЫЕ АЛГОРИТМИЧЕСКИЕ СТРУКТУРЫ ЦИКЛ ДО (с постусловием) Кодирование на VBScript : Do Тело цикла тело цикла Loop while условие Можно Не использовать Until, тогда надо Условие? инвертировать Да условие Тело цикла выполняется хотя бы один раз.
ОСНОВНЫЕ АЛГОРИТМИЧЕСКИЕ СТРУКТУРЫ Принцип Дейкстры Для построения любого алгоритма достаточно иметь три базовых структуры: следование, ветвление, цикл (безразлично -ПОКА или ДО).
ОСНОВНЫЕ АЛГОРИТМИЧЕСКИЕ СТРУКТУРЫ нач_знач≤ кон_знач ПАРАМЕТРИЧЕСКИЙ ЦИКЛ шаг>0 Кодирование на VBScript : i = нач_знач for i=нач_знач to кон_знач [step шаг] тело цикла По умолчанию next шаг=1 Нет i<=кон_знач for i=нач_знач to кон_знач [step шаг] оператор1 Да оператор2 … Тело цикла оператор. N next i =i+шаг
ОСНОВНЫЕ АЛГОРИТМИЧЕСКИЕ СТРУКТУРЫ ПАРАМЕТРИЧЕСКИЙ ЦИКЛ – СПЕЦИАЛЬНЫЙ БЛОК Кодирование на VBScript : for i=нач_знач to кон_знач [step шаг] тело цикла for i=нач_знач to кон_знач [step шаг] next for i=нач_знач to кон_знач [step шаг] оператор1 Тело цикла оператор2 … оператор. N next На практических занятиях этот блок использовать пока не будем!
Примеры Dim i As Integer, Сумма As Integer Сумма=0 For i = 1 To 100 Step 2 Сумма = Сумма +i ‘тело цикла Next Dim x As Integer For x = 1 To 50 Beep ‘ тело цикла Next x ‘ подается звуковой сигнал 50 раз
Комментарии ‘ это комментарий, ‘ т. е. текст, который не обрабатывается интерпретатором, ‘ служит для пояснения программы
Пример А - начальная стоимость оборудования (в рублях). В первый год эксплуатации стоимость оборудования снижается на В руб. , а в каждый следующий год снижение стоимости уменьшается на р % (относительно предыдущего года). Определить стоимость оборудования через N лет. Предполагается, что A>>BN. начало Ввод исх. данных Обработка Каждый год вычисления повторяются => есть цикл! Вывод результата конец
Состав данных Имя Смысл Тип Структура Исходные данные A начальная стоимость оборудовани вещественный простая переменная B начальное снижение стоимости вещественный простая переменная р процентное уменьшение снижения стоимости вещественный простая переменная N максимальное число лет целый простая переменная Выходные данные вещественный S Конечная стоимость оборудования Промежуточные переменные i номер года целый простая переменная Bt текущее ежегодное снижение стоимости вещественный простая переменная
Блок-схема алгоритма Программа Dim A as single, B as single, p as single начало Dim N as integer, S as single, Bt as single Ввод A, B, p, N Dim i as integer S=A; Bt=B <Ввод A, B, p, N> i=1 S=A Bt=B i N For i=1 to N да S=S-Bt S=S - Bt Bt=Bt-Bt*p/100 Next i=i+1 <Вывод S> обработка Вывод S конец
Ввод и вывод в Visual Basic Режим консольного Программирование приложения оконного приложения (моделирует работу MSDOS) Считывание Ввод и вывод данных (запись) данных из с помощью (в) элементов простейших управления диалоговых окон разрабатываемого окна приложения
Считывание (запись) данных из (в) элементов (ы) управления разрабатываемого окна приложения Text. Box 1 Text. Box 2 Text. Box 3 Text. Box 4 Text. Box 5 Button 1
Обработчик события: нажатие кнопки Button 1 Private Sub Button 1_Click(By. Val sender As System. Object, By. Val e As _ System. Event. Args) Handles Button 1. Click Dim A As Single, B As Single, p As Single Dim N As Integer, S As Single, Bt As Single Dim i As Integer A = CSng(Text. Box 1. Text) 'ввод А B = CSng(Text. Box 2. Text) 'ввод В p = CSng(Text. Box 3. Text) 'ввод С N = CLng(Text. Box 4. Text) 'ввод N S = A Bt = B For i = 1 To N S = S - Bt = Bt - Bt * p / 100 Next Text. Box 5. Text = CStr(S) ' Вывод S End Sub
Ввод данных с помощью простейшего диалогового окна функции Input. Box Введенное значение = Input. Box(Подсказка, что ввести) строка строка A = CSng(Input. Box("Введите начальную стоимость оборудования"))
Вывод данных с помощью диалогового окна функции Msg. Box (Сообщение [, , Заголовок] ) строка, выводимая в окне диалогового окна пропущен параметр, определяющий вид окна Msg. Box(CStr(S), , "Конечная стоимость")
Ввод и вывод в Visual Basic for Application Оконное приложение на HTML Работа с ячейками Excel Считывание Ввод и вывод данных (запись) данных из с помощью (в) элементов простейших управления диалоговых окон разрабатываемого окна приложения Как в VB
Один из приемов обращения к ячейкам рабочего листа Excel Work. Sheets (“Имя листа”). Cells(Номер строки, Номер столбца). Value Work. Sheets (“Лист1”). Cells(6, 1). Value – значение из ячейки А 6 листа Лист1 Ячейка А 6
Обработчик кнопки настраиваемой панели инструментов Sub MY() ′ MY – имя макроса Dim A As Single, B As Single, p As Single Dim N As Integer, S As Single, Bt As Single Dim i As Integer A = Worksheets("Лист1"). Cells(1, 2). Value 'ввод А B = Worksheets("Лист1"). Cells(2, 2). Value 'ввод В p = Worksheets("Лист1"). Cells(3, 2). Value 'ввод С N = Worksheets("Лист1"). Cells(4, 2). Value 'ввод N S = A Bt = B For i = 1 To N S = S - Bt = Bt - Bt * p / 100 Next Worksheets("Лист1"). Cells(5, 2). Value = S ' Вывод S End Sub
Как создать макрос? 1. Сервис/Макросы
2. Вводим имя макроса, нажимаем «Создать» => входим в редактор макросов Вводим текст макроса и сохраняем его МАКРОС СОЗДАН!
Как привязать макрос к кнопке настраиваемой панели инструментов? 1. Создаем настраиваемую панель инструментов: Вид/Панели инструментов/Настройка/Вкладка «Панели инструментов» , на ней – кнопка «Создать» . 2. Переходим на вкладку «Команды» (окна «Настройка» ), выбираем категорию команд «Макросы» , в ней настраиваемую кнопку. 3. Перетаскиваем кнопку за «рожицу» на вновь созданную панель. 4. Правая кнопка мыши – на «рожице» , в контекстном меню указываем пункт «назначить макрос» , выбираем наш макрос, нажимаем ОК. ВСЕ!!!
Структура оконного приложения на MS Visual Basic • Программа (оконное приложение) – совокупность файлов проекта (организующих файлов), файлов форм и файлов модулей. • Файлы формы (заготовки окна) – файл, хранящий интерфейс формы (Form 2. Designer. vb), и файл, хранящий программный код формы (Form 2. vb). • Файлы модулей хранят только программный код, для них нет соответствующей формы. • Файлы программных кодов состоят из описаний данных и подпрограмм.

