Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
11
Добавлен:
30.09.2018
Размер:
626.18 Кб
Скачать

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

Тема: Использование массивов при решении задач

  1. ПОСТАНОВКА ЗАДАЧИ

В массиве из 10 положительных чисел найти максимальное число и его положение в массиве.

  1. Текст программы

Sub m_VvodDannih()

Dim m(1 To 10) As Integer

Randomize Timer

For i = 1 To 10

m(i) = Int(Rnd() * 100) + 1

Next i

Debug.Print "Исходный массив"

For i = 1 To 10

Debug.Print m(i);

Next i: Debug.Print: Debug.Print

Call obrabotka(m())

End Sub

Sub obrabotka(m1() As Integer)

Max = m1(1): k = 1

For j = 2 To 10

If m1(j) > Max Then

Max = m1(j)

k = j

End If

Next j

‘ Вывод результата

Debug.Print "max="; Max, "k="; k

End Sub

  1. РЕЗУЛЬТАТЫ ВЫЧИСЛЕНИЙ

Исходный массив

4 40 7 77 71 19 60 71 51 15

max= 77 k= 4

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

Тема: Файлы последовательного доступа.

Задание. Составить программу для записи данных в файл последовательного доступа на диске с данными о сотрудниках: Фамилия, Год рождения, Оклад. Составить программу для чтения данных из файла последовательного доступа на диске содержащего данные о сотрудниках.

ОБРАЗЕЦ ОФОРМЛЕНИЯ ОТЧЕТА ПО ЛАБОРАТОРНОЙ РАБОТЕ

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

Тема: Файлы последовательного доступа.

  1. ПОСТАНОВКА ЗАДАЧИ

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

  1. Текст программы

Sub запись()

номер = FreeFile

Open "d:\file1.txt" For Output As номер

n = InputBox("Количество сотрудников")

For i = 1 To n

fio$ = InputBox("Фамилия")

god% = InputBox("Год рождения")

oklad = InputBox("Оклад")

Write #номер, fio$, god%, oklad

Next i

Close номер

End Sub

Sub открытие()

номер = FreeFile

Open "d:\file1.txt" For Input As номер

n = 10000

Debug.Print "Фамилия", "Год рождения", "Оклад"

For i = 1 To n

If EOF(номер) Then Exit For

Input #номер, fio$, god%, oklad

Debug.Print fio$, god%, oklad

Next i

Close номер

End Sub

Приложение 1. Алгоритм и его свойства

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

Основными свойствами алгоритмов являются:

1. Универсальность (массовость) -применимость алгоритма к различным наборам исходных данных.

2. Дискретность- процесс решения задачи по алгоритму разбит на отдельные действия.

3. Однозначность- правила и порядок выполнения действий алгоритма имеют единственное толкование.

4. Конечность- каждое из действий и весь алгоритм в целом обязательно завершаются.

5. Результативность - по завершении выполнения алгоритма обязательно получается конечный результат.

6. Выполнимость- результата алгоритма достигается за конечное число шагов.

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

Выделяют три крупных класса алгоритмов:

- вычислительные алгоритмы, работающие со сравнительно простыми видами данных, такими как числа и матрицы, хотя сам процесс вычисления может быть долгим и сложным;

- информационныеалгоритмы, представляющие собой набор сравнительно простых процедур, работающих с большими объемами информации (алгоритмы баз данных);

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

Способы записи алгоритмов

Для записи алгоритмов используют самые разнообразные средства. Выбор средства определяется типом исполняемого алгоритма. Выделяют следующие основные способы записи алгоритмов:

- вербальный, когда алгоритм описывается на человеческом языке;

- символьный, когда алгоритм описывается с помощью набора символов;

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

Общепринятыми способами записи являются графическая запись с помощью блок-схем и символьная запись с помощью какого-либо алгоритмического языка.

Описание алгоритма с помощью блок схем осуществляется рисованием последовательности геометрических фигур, каждая из которых подразумевает выполнение определенного действия алгоритма. Порядок выполнения действий указывается стрелками. Написание алгоритмов с помощью блок-схем регламентируется ГОСТом. Внешний вид основных блоков, применяемых при написании блок схем, приведен на рисунке:

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

В алгоритмах линейной структурыдействия выполняются последовательно одно за другим:

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

Алгоритмы разветвленной структуры:

-если – то;

- если – то – иначе;

- выбор;

- выбор – иначе;

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

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

Языки программирования

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

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

Основные понятия. Алфавит. Синтаксис. Семантика

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

Алфавит– фиксированный для данного языка набор символов (букв, цифр, специальных знаков и т.д.), которые могут быть использованы при написании программы.

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

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

Основные элементы алгоритмического языка

Основными понятиями в алгоритмических языках являются следующие.

Имена (идентификаторы)- последовательность символов для обозначения объектов программы (переменных, массивов, функций и дp.).

Операции. Существуют следующие типы операций:

- арифметические операции: сложение, обозначается символом “+”; вычитание, обозначается символом “-”; умножение, обозначается символом “*”; деление, обозначается символом “/”; возведение в степень обозначается символом “^”;

- логические операции: операции “логическое и”, “логическое или”, “логическое не” и др.;

- операции отношения: меньше, обозначается символом “<”; больше, обозначается символом “>”; меньше или равно, обозначается символами “<=”; больше или равно, обозначается символами “>=”; равно, обозначается символом “=”; не равно, обозначается символами “<>”.

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

Ключевые слова– это слова языка, имеющие строго определенное назначение, которые не могут использоваться в качестве идентификаторов.

Данные- величины, обрабатываемые программой. Имеется тpи основных вида данных:константы,переменныеимассивы.

Константы- это данные, которые зафиксированы в тексте программы и не изменяются в процессе ее выполнения.

Примеры констант:

числовые: 7.5, 12;

строковые: "abcde", "информатика".

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

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

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

Различают выражения арифметические,логическиеистроковые.

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

1. Нельзя опускать знак умножения между сомножителями и ставить рядом два знака операций.

2. Индексы элементов массивов записываются в скобках.

3. Операции выполняются в порядке старшинства: сначала вычисление функций, затем возведение в степень, потом умножение и деление и в последнюю очередь - сложение и вычитание.

4. Операции одного старшинства выполняются слева направо.

Логические выраженияописывают некоторые условия, которые могут удовлетворяться или не удовлетворяться. Таким образом, логическое выражение может принимать только два значения - "истина" или "ложь" (да или нет).

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

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

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

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

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

Программирование– это теоретическая и практическая деятельность решения задачи средствами конкретного языка программирования и оформления полученных результатов в виде программы.

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

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

Языки высокого уровня работают через трансляционные программы -трансляторы, которые преобразуют исходный код в последовательность команд машинного языка. Существует два основных вида трансляторов:интерпретаторы, которые сканируют и проверяют исходный код в один шаг, икомпиляторы, которые сканируют исходный код для создания текста программы на машинном языке, которая затем выполняется отдельно.

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

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

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

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

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

1. Если программа большая, разделение ее на части облегчает создание, тестирование и ее сборку.

2. Если программа большая и повторная компиляция всего исходного текста занимает много времени, разделение ее на части экономит время компиляции.

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

Инструментальные системы программирования

Для популярных языков программирования на ЭВМ существует множество систем программирования. Программисты предпочитают те системы, которые легки в использовании, позволяют получить эффективные программы, имеют богатые библиотеки функций (подпрограмм) и мощные возможности для отладки разрабатываемых программ. В качестве примеров таких систем программирования можно назвать Delphi, Visual C++, Visual Basic.

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

Для перевода текста программы на машинный язык применяются специальные программы ТРАНСЛЯТОРЫ, которые бывают двух типов: компиляторы(переводят текст программы на машинный язык один раз),интерпретаторы(переводят текст программы на машинный язык каждый раз при запуске программы на исполнение).

Приложение 2. Стандартные встроенные математические функции

Обозначение в математике

Запись на BASIC

Пояснения

SIN X

SIN(X)

Аргумент в радианах

COS X

COS(X)

Аргумент в радианах

tg (X)

TAN(X)

Аргумент в радианах

ex

EXP(X)

Экспоненциальная функция,

где е= 2,7182...., x<= 78

ln X

LOG(X)

Функция натурального лога-

рифма (по основанию е), X>0

X

ABS(X)

Модуль числа X

arctg X

ATN(X)

Результат в радианах

Выделение целой части числа X

INT(X)

Y=INT(4.2) | y=4

Y=INT(-4.2) | y=-5

SQR(X)

X0

Примеры записи встроенных функций:

В математике

В BASIC

ln у 

ABS(LOG(Y))

ex+2

EXP(X+2)

Sin22x

Sin(2*x)^2

((a+b*x)/(a*x-b))^(1/3)

Приложение 3. Основные сведения об операторах VBA

Функция MsgBox

MsgBox(coo6щениe[, кнопки][, заголовок][, файл справки, контекст])

Выводит на экран диалоговое окно, содержащее сообщение, устанавливает режим ожидания нажатия кнопки пользователем, а затем возвращает значение типа Integer, указывающее, какая кноп­ка была нажата.

Оператор InputBox

Переменная=InputBox(сообщение[, заголовок][, умолчание][, Хпоз][, Y поз] [,файл справки, контекст])

Выводит на экран диалоговое окно, содержащее сообщение и поле ввода, устанавливает режим ожидания ввода текста пользо­вателем или нажатие кнопки, а затем присваивает значение типа String, содержащее текст, выведенный в окне.

Условный оператор IF

Для проверки одного условия и выполнения оператора или блока операторов используется оператор IF...THEN. Этот опера­тор можно использовать с разным синтаксисом: однострочным (линейным) и многострочным (блочным).

а) Однострочный:

if<условие> Then <оператор>

б) блочный:

if<ycлoвue> Then

<блок операторов>

End if

Для проверки одного условия и выбора одного из двух бло­ков операторов используется оператор вида If...Then... Else

If <условие> Then

<блок операторов1>

Else

<блок операторов2>

End If

Для проверки более одного условия и выполнения одного из нескольких блоков операторов используется оператор вида:

If...Then...ElseIf

if<условие 1>Then

<блок операторов 1>

Elseif <условие 2> Then

<блок операторов 2>

…………………………..

Elseif<условие n> Then

<блок операторов п>

Else

<блок операторов Else>

End If

Оператор выбора SELECT CASE

Используется для проверки одного условия и выполнения одного из нескольких блоков операторов.

Формат записи оператора:

Select Case проверяемое выражение

Case список выражений 1

операторы I

Case список выражений 2

операторы 2

Case список выражений 3

операторы 3

…………………

Case Else

операторы группы Else

End Select

Проверяемое выражение вычисляется в начале работы опера­тора Select Case. Это выражение может возвращать значение лю­бого типа (логическое, числовое, строковое).

Список выражений - одно или несколько выражений, разде­ленных стандартным символом – разделителем (;).

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

- выражение

- выражение 1 Tо выражение 2

- Is логический оператор (оператор сравнения) выражение

Например, Is>= 10

Оператор цикла For...Next имеет две разновидности:

а) For счетчик = начало То конец [Step приращение]

операторы

Next [счетчик]

б) For Each <элемент> In <группа>

операторы

Next [элемент]

Оператор цикла WHILE...WEND

Используется для организации циклов с предусловием и име­ет следующий формат:

While <условие продолжения цикла>

операторы тела цикла

Wend

Оператор цикла DO...LOOP

Используется для организации циклов с неопределенным числом повторений (с предусловием и с постусловием).

Этот оператор для организации цикла с предусловием может использоваться в двух модификациях:

a) Do While <условие продолжения цикла>

операторы тела цикла

Loop

б)Do Until <условие прекращения цикла>

операторы тела цикла

Loop

Для организации цикла с постусловием этот оператор также может быть использован в двух модификациях:

в) Do

операторы тела цикла

Loop While <условие продолжения цикла>

г) Do

операторы тела цикла

Loop Until <условие прекращения цикла>

Оператор перехода GoTo

Этот оператор позволяет выполнить безусловный переход к заданной строке активной процедуры.

Формат оператора:

GoTo строка

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

Оператор With для операций с одним объектом. Если в одном блоке программы требуется выполнить не­сколько операций с одним объектом, то это можно явно указать оператором With, а затем не повторять имя этого объекта.

Формат записи оператора:

With объект

[операторы]

End With

Приложение 4. ПРОЦЕДУРЫ И ФУНКЦИИ В ЯЗЫКЕ VBA

В Qbasic используются 2 типа подпрограмм: процедуры SUB и процедуры-функции Function. Процедура SUB – END SUB позволяет описать набор операторов, которые могут быть исполнены по вызову из любого места программы и неоднократно. Процедура может возвращать значения нескольких переменных. Допускается рекурсивный вызов процедур (из процедуры можно вызвать другую процедуру) Формат процедуры:

SUB имя(список формальных параметров)

операторы

[EXIT SUB]

END SUB

Для создания процедуры:

1. В окне редактора VBA в меню Insert выбрать команду Procedure, в открывшемся окне выбрать тип процедуры (Sub) и задать имя процедуры.

Список параметров процедуры разделяется запятыми. Эти параметры формальные, они передаются в процедуру при ее вызове.

По умолчанию все переменные в процедуре являются локальными. Некоторые переменные можно сделать статическими (STATIC - они сохраняют свое значение между вызовами процедуры, оставаясь при этом локальными).

Для вызова процедуры из программы используется оператор CALL.

Его формат: CALL имя_процедуры (список фактических параметров)