Программа практических занятий по курсу: "Информатика" (Pascal I-семестр)

Учебник по информатике: http://dssp.karelia.ru/web/tutorials.shtml

Занятие N1

Работа в Microsoft Word (текстовый редактор)

1) Компьютер, общие сведения. Устройство компьютера, материнская плата, процессор, память, клавиатура мышь, монитор.

2) Правила по работе с компьютерами в компьютерном классе.

3) Работа в операционной системе Windows, интерфейс, "Рабочий стол", запуск программ. Работа с файлами в Windows (выбрать диск, отметить файл(ы), копировать, поиск, посмотреть, редактировать).

4) Найти на дисках папку User, Users, Student или Students и создать в ней папку с номером группы и подгруппы.
Все рабочие файлы сохранять только в этой папке!

5) Открыть Microsoft Word и написать информацию о себе:

Номер компьютера
ФИО
Специальность
Номер группы (21106)

Исправить поля так, чтобы правое поле было 1см, остальные 2см.
Сохранить документ с именем равным номеру компьютера.

6) Создать Tаблицу 1 с помощью табуляторов:

Tаблица 1

Столбец 1Столбец 2Столбец 3Столбец 4
A123
B234
C345

7) Создать Tаблицу 2 стандартными средствами Word:

Tаблица 2

Столбец 1Столбец 2Столбец 3Столбец 4
A123
B234
C345

8) Вставить любой рисунок (Вставка/Рисунок/[Картинки:/Из файла:]), изменить формат рисунка, растянуть, уменьшить рисунок.

9) Вставить формулу (Вставка/Объект/Microsoft Equation 3.0) , убрать галочку Поверх текста:



Работа в Microsoft Excel (электронные таблицы)

1) Электронные таблицы необходимы при обработке больших массивов данных.

Ячейки в Excel нумеруются, как (имя столбца, номер строки)

Например: A1, F12

Выделение ячеек делается мышью или курсором (Shift + стрелки).

2) Устанавливаем в ячейку A1 - значение 1, выделяем мышью с ячейки A1 по ячейку A23, далее:

Правка/Заполнить/Вниз (происходит заполнение 1)

выделяем мышью с ячейки A1 по ячейку A23, далее:

Правка/Заполнить/Прогрессия/По столбцам, арифметическая, шаг 1 (происходит заполнение от 1 до 23)

3) Предположим в столбце B мы хотим получить квадрат чисел столбца A:

Устанавливаем курсор в ячейку B1, нажимаем = (или Вставка/Функция), выбираем функцию СТЕПЕНЬ() указываем над какой ячейкой делать операцию (устанавливаем курсор на клетку A1), степень указываем 2

скопируем формулу в ячейке B1 - Ctrl+Insert

вставляем формулу в ячейку B2 - Shift+Insert

выделяем ячейки с B3 по B23 и копируем туда формулы - Shift+Insert

скопируем формулу в ячейке B1 - Ctrl+Insert

вставляем формулу в ячейку C1 - Shift+Insert

выделяем ячейки с C2 по C23 и копируем туда формулы - Shift+Insert

заменим СТЕПЕНЬ(B1;2), в ячейке C1 на СТЕПЕНЬ($A$1,2)

СТЕПЕНЬ(A1,2) - A1 - это относительная ссылка

СТЕПЕНЬ($A$1,2) - $A$1 - это абсолютная ссылка

скопируем формулу в ячейке C1 - Ctrl+Insert

выделяем ячейки с D1 по D23 и копируем туда формулы - Shift+Insert

4) Построение графика:

Выделяем область данных с A1 по B23 и нажимаем иконку ДИАГРАММА (или Вставка/Диаграмма), выбираем "Точечная", Далее, Готово.

Если ткнуть мышкой на область графика, то можно увидеть выделенную область данных, по которым построен данный график.

5) Перенос данных из текстового файла:

Создаем текстовый файл (Far - Shift+F4), имя например: data.txt - 1-й столбец - значения от 1 до 6, 2-ой столбец (отделяется от первого Tab'ом) - квадрат этих чисел, сохраняем, переходим в Excel.

Далее: Файл/Открыть/Текстовые файлы (выбираем наш файл data.txt - открыть).

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


6) Задание 1: построить график этих данных - зависимости первого столбца, от второго.

7) Задание 2: заполнить ячейки с B1 по B21, значениями от 0 до 20, в столбце С получить COS от этих значений,

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

 

Графический редактор Paint

1) Панель редактирования (Набор инструментов) изображения: Карандаш, Выделение, Ластик/Цветной ластик, Заливка, Масштаб, Кисть, Линия, Прямоугольник, Эллипс.

2) Изменение параметров: Меню/Рисунок: Отразить/повернуть... , Растянуть/наклонить... , Обратить цвета.


Занятие N2

Работа в оболочке: Norton Commander (на примере программы FAR)

1) Запустить программу Far

выбрать диск: Alt + F1, Alt + F2

создать директорию (папку) F7

создать файл: Shift + F4

посмотреть: F3

редактировать: F4

отметить файл(ы): Insert

копировать отмеченные файлы (или файл под курсором): F5

переименовать: Shift + F6

сменить кодировку: Shift + F8 (или F8)

окно вывода Ctrl + O

удаление директории (папки) F8

поиск файлов (содержания): Alt + F7

2) Операции с блоками в FARTurbo Pascal - тоже самое)

Написать небольшой текст (3 - строчки) на английском:

Курсор в начало строки: Home

Курсор в конец строки: End

Выделение блока: Shift + стрелки (клавиши управления курсором)

Выделение блока до конца строки: Shift + End

Выделение блока от начала строки: Shift + Home

Копирование выделенного блока: Ctrl + Insert

Вставка скопированного блока: Shift + Insert

Удаление выделенного блока: Shift + Delete

 

Работа в командной строке (DOS). Архиваторы.

3) Операционные системы: DOS, OS/2, Windows NT/95/98/ME/2000/XP/VISTA, UNIX/Linux - хар-ки и отличия.

4) Работа в командной строке, команды:

DIR - вывод списка файлов и подпапок из указанной папки

CD - смена текущей папки

MD - создание папки

RMDIR - удаление папки

REN - переименование файлов и папок

DEL - удаление одного или нескольких файлов

ECHO - вывод сообщений и переключение режима отображения команд на экране

VER - вывод сведений о версии DOS, Windows

SET - вывод, установка и удаление переменных среды

COPY - копирование одного или нескольких файлов в другое место

Примеры:

MD D:\VC

SET NEWVAR=VALUE

COPY /B A:\VC\*.* D:\VC

RMDIR D:\VC

REN *.TXT *.BAK

DEL *.BAK

5) Архиваторы: pkzip.exe, pkunzip.exe, WinZip, RAR.exe, WinRAR.

Примеры: заархивировать в FAR - Shift+F1.

pkzip.exe archive.zip data.txt - заархивировать файл data.txt

pkunzip.exe archive.zip data.txt - разархивир. файл data.txt (если не указыв. файл (data.txt), то разархив. все файлы)

rar.exe a archive.rar data.txt - заархивировать файл data.txt

rar.exe x archive.rar data.txt - разархивировать файл data.txt

6) Открыть Internet Explorer, Mozilla Firefox или Opera в поле Адрес ввести: www.rambler.ru , в окне, в поле Поиск ввести: "киисифэ".

Поисковые сайты:

www.rambler.ru, www.ya.ru, www.google.com, www.yahoo.ru

Учебники по информатике: http://dssp.karelia.ru/web/tutorials.shtml

 

Занятие N3

Введение в язык программирования Pascal

1. Запуск Pascal (сделать поиск файла: turbo.exe) или Free Pascal из Пуск/Программы, создание окна с новой программой: F10, а затем File\NEW.

2. Структура языка Pascal - по примеру ниже.

3. Основные типы переменных в Pascal: Integer (целый), Real (дробный, с плавающей точкой), Boolean ( True (Истина), False (Ложь) ), String (строковый - набор символов). Описание констант, новых типов, переменных - по примеру, ниже. Объявление массива: Var Ar:Array[3..86] of Real; или двумерного массива: Var Array[0..10,4..8] Of Real;

4. Как начинается и заканчивается основная программа: Begin ... End.

5. Присваивание: X:=40, ввод с клавиатуры: read(x) или readln(x), вывод на экран: write(x) или writeln(x) - с переходом на следующую строку.

6. Несколько операторов помещаются внутрь следующей конструкции: Begin ... End (логические скобки в Pascal), операторы отделяются ";".

7. Как и зачем подключаются модули. Часто используемые модули Crt и Graph.

      ClrScr - очистка экрана {модуль CRT}.

8. Условия в Pascal: If условие Then ... Else ...

      условия можно объединять с помощью логических конструкций - OR ("ИЛИ") или AND ("И").

      Пример:

If (a>b) AND (x>10) Then WriteLn('a>b и x>10')
                    Else WriteLn('a<=b или x<=10');

9. Цикл FOR.

For...To, For...DownTo (зарезервированные слова)

Оператор For вызывает оператор, находящийся после слова Do, по одному разу для каждого значения в диапазоне от начального до конечного значений.

For переменная:=начальное To (или DownTo для уменьшения) конечное Do оператор

10. {Комментарий внутри этих скобок}

11. Правила оформления программ - смотреть на: zed.karelia.ru (/Студентам/Оформление программ/Правила)

      http://zed.karelia.ru/go.to/for.students/coding.rules/rules

12. Работа в оболочке Turbo (Borland) Pascal / Free Pascal:

   F10 - выход в Menu

   Ctrl+F1 - помощь по текущей команде (Help - русский)
   Ctrl+F9 - компиляция и запуск программы
   Ctrl+BreakBorland и Turbo Pascal) или Ctrl+C (во Free Pascal) - прервать программу
   Alt+F5 - посмотреть окно вывода
   Редактирование такое же, как и в Бейсике.

   Для копирования из внешних программ и обратно во Free Pascal использовать:
   Edit\Paste from Windows или Edit\Copy to Windows

13. Отличие языка Pascal от QBasic:

ОперацииPascalQBasic
Присвоение значения к переменнойA:=15; X:='Hello!';A=15: X$="Hello!"
Объявление массиваVar Arr:Array[0..99] of Real;DIM ARR(100)
Присвоение значения к элементу массиваArr[3]:=5;ARR(3)=5
Вывод на экранWriteLn('Hello!',X);PRINT "Hello!",X
Ввод с клавиатурыReadLn(n);INPUT N
Цикл For (10 повторений)For I:=1 To 10 Do операторFOR I=1 TO 10 оператор NEXT I
Очистка экранаClrScr;CLS
Вывод текста в указанную позициюGotoXY(X,Y); Write('Hello!');LOCATE Y,X: PRINT "Hello!"
Получить символ нажатой клавишиIf KeyPressed Then Ch:=ReadKey Else Ch:='' CH=INKEY$

Примеры:

Program Ex3_WriteLn_ReadLn;
Uses Crt, Graph;
Type MAS=Array[1..100] Of Integer;
Const X=40; Y=14; St='Hello!';
Var A,I:Integer;
    R:Real;
    MS:MAS;
    Ar1:Array[0..10,4..8] Of Real;
Begin
ClrScr;
WriteLn('Hello Student! ',St);
Write(Y,';');WriteLn(X);
ReadLn(A);
Write(A);
End.

For...To, For...DownTo (зарезервированные слова)

Оператор For вызывает оператор, находящийся после слова Do, по одному разу для каждого значения в диапазоне от начального до конечного значений.

For переменная:=начальное To (или DownTo для уменьшения) конечное Do оператор

Program Ex3_For;
Var I:Integer;
    MS:Array[1..100] Of Integer;
Begin
WriteLn('Vvedite chisla:');
For I:=1 To 5 Do ReadLn(MS[I]);
WriteLn('Chisla:');
For I:=1 To 5 Do WriteLn(MS[I]);
ReadLn
End.

Задание N1:

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

Задание N2:

Произвести сортировку чисел в массиве, расставив их по возрастанию. Результат вывести на экран.


Занятие N4

Трассировка программ:

   Меню Debug:

   Add breakpoint... - добавить точку останова программы (Breakpoint во Free Pascal)
   Breakpoints - выдает список установленных точек останова (Breakpoint List во Free Pascal)

   Evaluate/Modify... - Ctrl+F4 - вычислить/изменить значения (можно наблюдать за значениями
      переменных, изменять их значения и вычислять выражения с несколькими переменными)
   Add watch... - Ctrl+F7 - добавление переменных для наблюдения в отдельном окне наблюдений

   Горячие клавиши для трассировки:
   F7 - Trace - трассировка со входом в функции и процедуры
   F8 - Step - трассировка с пропуском функций и процедур
   Ctrl+F2 - сброс трассировки

Задание N3:

Изменить программу, выполненную по заданию N1 так, чтобы она вводила указанное количество коэффициентов a, b и c, и лишь после этого выполняла расчеты корней квадратного уравнения и выводила результаты. Результаты выводить на экран в виде таблицы. В первом столбце таблицы значения X1, во втором X2, если корней нет, то написать в соответствующей строчке: "Корней нет".

Задание N4:

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


Занятие N5

Оформление отчетов в Microsoft Word

1) Ссылки по правилам оформления отчетов:

http://dfe.karelia.ru/koi/teaching/rules.html

http://dfe.karelia.ru/koi/teaching/soft_rules.html


2) Структура отчета:

Титульный лист
Содержание
Введение
1. Глава такая-то.
2. Глава вот такая.
2.1. Подглава вот такая.
...
Заключение
Список использованных источников
Приложение А
Приложение Б
...

3) Основные моменты при оформлении отчетов:

- "Титульный лист" оформляется по правилам оформления отчетов;

- в "Содержании", отдельно в каждой строчке, указываются все разделы отчета и номера страниц на которых они расположены;

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

- в тексте, все рисунки, таблицы и формулы должны быть пронумерованы;

- в "Заключении" кратко излагаются основные результаты работы, оценивается степень достижения поставленной цели. Могут даваться рекомендации по дальнейшему развитию работы и возможным применениям полученных результатов. Из "Заключения" читатель должен увидеть объем проделанной работы и ее ценность;

- в "Приложения" выносятся громоздкие по объему материалы, наличие которых в основном тексте затруднило бы его восприятие:
   - таблицы промежуточных результатов и других вспомогательных данных,
   - рисунки, если количество их велико,
   - подробные электрические схемы, блок-схемы (примеры, основные элементы схем алгоритма),
   - тексты и описания программ для ЭВМ.

- правильно и в нужном месте расставить номера страниц;

- правильно установить поля.

Задание N5

Оформить отчет (по стандартам для оформления отчетов) по программе, сделанной по заданию N4, в программе Microsoft Word (сдавать в электронном виде, сохранять в формате совместимости Word 97-2003). В отчете обязательно должно быть описание программы, отдельных ее частей и т.д., а также представлена блок-схема программы и рисунки с изображением ее работы. Для оформления отчета дома необходимо отправить себе на почту все необходимое - текст программы, рисунки и т.д.


Занятие N6

Вывод в заданные координаты

GotoXY(X,Y); - помещение курсора в заданные координаты {модуль CRT}

GotoXY(X,Y); Write('Hello!'); - вывод текста в заданные координаты

Delay(1000); - задержка в ms {модуль CRT}

Пример:

Program Ex6_Helix;
Uses Crt;
Const X=40;Y=14;
Var I:Integer;
Begin
ClrScr;
For I:=0 To 200 Do
 Begin
   GotoXY(X+Round(Cos(I/9)*I/9),Y-Round(Sin(I/9)*I/15));
   Write('*');
   Delay(100);
 End;
ReadLn
End.

Задание N6:

Используя GotoXY(X,Y) для вывода текста в заданные координаты и с использованием циклов, нарисовать цифру, соответствующую номеру компьютера из "*", в заданных координатах.

 

Занятие N7

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

For...To, For...DownTo (зарезервированные слова)

Оператор For вызывает оператор, находящийся после слова Do, по одному разу для каждого значения в диапазоне от начального до конечного значений.

For переменная:=начальное To (или DownTo для уменьшения) конечное Do оператор

 

While условие выполнения цикла Do оператор

Оператор после Do будет выполняться до тех пор, пока булево выражением является истинным (True).

 

Repeat
операторы
...
Until условие выхода из цикла

Операторы между словами Repeat и Until повторяются до тех пор, пока булево выражение является Истинным (True).


ReadKey - функция приостанавливает выполнение программы, ожидая нажатия клавиши, читает символ из буфера клавиатуры, соответствующий нажатой клавише {модуль Crt}

KeyPressed - функция определяет, была ли нажата клавиша на клавиатуре (True - нажата, False - нет) {модуль Crt}

If KeyPressed Then Ch:=ReadKey - позволяет проверять на нажатую клавишу только в случае нажатия клавиши, иначе продолжается выполнение программы.


Примеры:

Program Ex7_While;
Uses Crt;
Var Ch:Char;
Begin
Ch:=Chr(0);
While Ch<>'j' Do
 Begin
   Ch:=ReadKey;
   Write(Ch);
 End
End.

Program Ex7_Repeat;
Uses Crt;
Var Ch:Char;
Begin
Repeat
  Ch:=ReadKey;
  Write(Ch);
Until Ch='j'
End.

Задание N7:

Используя еще один цикл заставить фигуру из задания N6 двигаться.

Задание N8:

Организовать движение фигуры из задания N6 по кругу с помощью циклов While или Repeat ... Until до нажатия клавиши, соответствующей номеру компьютера - при нажатии этой клавиши, должен происходить выход из программы. Для вычисления координат точки на окружности - использовать тригонометрические функции: Xi=R*COS(Ai), Yi=R*SIN(Ai) (где Ai это угол i-ой позиции точки, выраженный в радианах, а Xi,Yi, координаты этой точки).


Занятие N8

Работа со строками

Строки в Pascal имеют тип String и представляют из себя массив символов типа char, доступ к каждому из символов строки так же, как и к элементу массива, через [ ].

Пример:

Ch:=S[2]; {если S:='Hello!', то Ch='e'}

Str(X[:Width[:Decimals]]; var S:string) - Преобразовывает числовое значение X (Real, Integer) в строковое представление этого числа S. (Width - количество символов в результирующей строке, Decimals - количество знаков после запятой).

Пример:

Str(X:3:2,S);

 

Val(S; Var V; Var Er:Integer) - Преобразовывает строковое значение S в его числовое представление V.

S - переменная строкового типа. Должна представлять последовательность символов, формирующих число. V - результат - переменная типа Real или Integer. Er - код ошибки - переменная типа Integer.

Пример:

Val(S,V,Er);

 

Pos(Substr:String; S:String) - Ищет подстроку в строке.

Параметры Substr и S - строковые выражения. Pos ищет первое вхождение строки Substr в строку S и возвращает целочисленное значение, которое является индексом первого символа Substr внутри S. Если строка Substr не найдена, то Pos возвращает нуль.

Пример:

n:=Pos(SubStr,S); {если SubStr:='e', а S:='Hello!', то n=2}

 

Delete(Var S:String; Index:Integer; Count:Integer) - Удаляет из строки ее часть.

Параметр S - переменная со строковым типом. Index и Count - целочисленные выражения. Delete удаляет Count символов из строки S, начиная с позиции Index. Если значение Index больше, чем длина S, то никакие символы не удаляются. Если Count определяет большее количество символов, чем остается в строке с позиции Index до конца строки, то удаляется остаток строки.

Пример:

Delete(S,3,2); {если S:='Hello!', то в результате выполнения этой команды S='Heo!'}


Insert(SubStr:String; Var S:String; Index:Integer) - Вставляет подстроку SubStr в строку S.

Параметр S - исходная строка, SubStr - подстрока, вставляемая в строку S. Index - позиция, с которой подстрока SubStr вставляется в строку S. Если в результате строка длиннее 255-и символов, то она усекается до 255 символов.

Пример:

Insert('Student',S,4); {если S:='Hello!', то в результате выполнения команды S='HelStudentlo!'}



Copy(S:String; Index:Integer; Count:Integer) - Возвращает подстроку строки (копирует часть строки).

S - исходная строка, Index - позиция, с которой начинается копирование, Count - количество копируемых символов.

Пример:

S2:=Copy(S,2,4); {если S:='Student', то в результате выполнения команды S2='tude'}


Length(S : String) - Возвращает динамическую длину строки (количество символов в строке).

Пример:

n:=Length(S); {если S:='Hello!', то в результате выполнения команды n='6'}

 

GetTime(Var Hour, Minute, Second, Sec100 : Word) - возвращает текущее время, установленное в операционной системе (Unit DOS)

Пример:

GetTime(HH, MM, SS, S100); {параметры: HH, MM, SS, S100 - типа Word}


Объединение строк:
Пример:

S:=S1+' Student '+S2; {если S1:='Hello', а S2:='PetrSU!', то S='Hello Student PetrSU!'}

Задание N9:

Заменить все символы "," на ";" в заданной с клавиатуры строке. Результат вывести на экран.

Задание N10:

Используя операторы работы со строками, преобразовать время, полученное с помощью процедуры GetTime (Unit DOS) в строковую переменную в формате: "Текущее время: HH-часов, MM-минут, SS-секунд" и вывести значение этой переменной в заданные координаты на экран.

Задание N11:

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



II-семестр

Занятие N9

Подпрограммы. Процедуры и функции.

Procedure идентификатор(параметры);
Var описание локальных переменных;
Begin

End;

Function идентификатор(параметры):тип;
Var описание локальных переменных;
Begin
  идентификатор:=результат;
End;

Пример:

Program Ex9_Procedure_Function;
Uses Crt;
Var R:Real;
    n,X1,Y1:Integer;

Procedure WriteXY(Var X,Y:Integer;M:Real);
Begin
 GotoXY(X,Y); Write(M);
 X:=WhereX;
 Y:=WhereY;
End;

Function XStepN(X:Real;N:Integer):Real;
Var I:Integer;
      Y:Real;
Begin
Y:=1;
 For I:=1 To N Do Y:=Y*X;
 XStepN:=Y;
End;

Begin
 X1:=1; Y1:=5;
 R:=XStepN(3,4); WriteXY(X1,Y1,R);
 R:=XStepN(2,3); WriteXY(X1,Y1,R);
End.

Задание N12:

Переделать задание N11 так, чтобы вращение "бегущей строки" (сдвиг на один символ) осуществлялось в процедуре. Пример вызова процедуры: ShiftStr(S) .

Задание N13:

Организовать процедуры рисующие цифры от '0' до '9' в заданных координатах (левый верхний угол цифры), в текстовом режиме (подобно заданию N6) и выполнить их вызов в основной программе так, чтобы получилось какое-то число. Пример вызова процедуры: Number0(X,Y); Number9(X,Y); .


Занятие N10

Оператор выбора Case

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

Case выражение Of
  вариант: оператор;
  ...
  вариант: оператор;
Else оператор
End

Часть "Else" является необязательной.

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

Примеры:

Case Ch Of
  'A'..'Z', 'a'..'z': WriteLn('Буква');
  '0'..'9'          : WriteLn('Цифра');
  '+', '-', '*', '/': WriteLn('Оператор');
Else WriteLn('Специальный символ')
End;


Program Ex10_Case;
Uses Crt;
Var Ch:Char;
Begin
Repeat
  Ch:=ReadKey;
  Case Ord(Ch) Of
    72:WriteLn('Вверх');
    77:WriteLn('Вправо');
    80:WriteLn('Вниз');
    75:WriteLn('Влево');
  End;
Until Ch='q'
End.


Задание N14:

Организовать процедуру, которой в качестве параметров подаются координаты вывода и строка, состоящая из цифр, которые нужно вывести. С помощью этой процедуры, используя оператор выбора Case, необходимо сделать вывод этой строки цифр, цифрами из задания N13. Пример вызова процедуры: BigNumb(X,Y,'60279431581'); .

 

Занятие N11

Генератор случайных чисел

Random(Range) - возвращает случайное число.

Если параметр Range не определен, то результатом будет случайное число типа Real в диапазоне 0 <= X < 1.

Если параметр Range определен, то результатом будет случайное число в диапазоне 0 <= X < Range.

Пример:

Write(Random);

Write(Random(100));

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

Задание N15:

Написать программу "Хранитель экрана". Организовать вывод текущего времени числами из задания N14, при этом необходимо добавить процедуру, выводящую разделитель часов, минут и секунд ":". Время должно периодически выводиться в произвольные координаты экрана. Выход из программы должен происходить при нажатии на любую клавишу.


Занятие N12

Работа с файлами

Assign(Fil, FileName); - процедура, назначает файловой переменной имя внешнего файла.

Параметр Fil - переменная файлового типа - File (например: File of Integer) или Text. Параметр FileName - тип String, состоит из пути и имени файла: Примеры имен файла: 'FileName.txt' или 'C:\BP\FileName.txt'.

Close(Fil); - закрывает ранее открытый файл.

 

Procedure Reset(Var Fil :File [; Recsize :Word]); - открывает существующий файл.

Параметр Fil - файловая переменная любого файлового типа - File (например: File of Integer) или Text.

Параметр RecSize - необязательный параметр, который может быть определен только, если Fil - нетипизированный файл. В этом случае, RecSize определяет размер блока, который нужно использовать при передаче данных. Если RecSize опущен, принят заданный по умолчанию размер блока в 128 байт.

Пример:

Reset(Fil); {открывает существующий файл (для чтения из него) }

 

Procedure ReWrite(Var Fil :File [; Recsize :Word]); - создает и открывает новый файл.

Пример:

ReWrite(Fil); {создает и открывает новый файл (для записи в него) }

Append(Fil); - процедура, открывает существующий файл для продолжения записи в файл.


Пример считывания и записи данных в файл:

ReadLn(Fil,s); {считывает из файла строку в переменную s}
WriteLn(Fil,s); {записывает в файл содержимое строки s}



EOF(Fil) - возвращает True если достигнут конец файла и False в противном случае.

Not - операция отрицания или инверсия.

В режиме {$I-} функция IOResult вернет 0, если операция была успешна, иначе, она возвращает отличный от нуля код ошибки.


Пример:
перед запуском примера, необходимо создать простой текстовый файл, состоящий из нескольких строк, английскими буквами (например: фамилии или имена на английском), имя файла должно быть до 8 символов на английском и без использования специальных символов, расширение у файла должно быть .txt
Program Ex12_File_SortString;
Var Fil:Text;
Nam:String;
SA:Array [0..100] of String[60];
I,N:Integer;
Begin
N:=0;
ReadLn(Nam); Assign(Fil,Nam); Reset(Fil);
While Not EOF(Fil) Do
  Begin ReadLn(Fil,SA[N]); N:=N+1 End;
Close(Fil);
For I:=0 To N-1 Do WriteLn(SA[I]);
Assign(Fil,'namesort.txt'); ReWrite(Fil);
For I:=N-1 DownTo 0 Do WriteLn(Fil,SA[I]);
Close(Fil)
End.

Задание N16

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

Задание N17

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

 

Занятие N13

Работа с графикой
(для работы с графикой в Pascal под Windows 7 и под Remote Desktop использовать Free Pascal или DOSBox)
Архиватор RAR

При использовании операторов ввода с клавиатуры в графическом окне во Free Pascal, вместо модуля CRT необходимо использовать WinCRT.

для установки DOSBox, сначала:
- скачайте DOSBox и архиватор RAR, нажав на соответствующее имя в заголовке этого занятия,
- затем откройте папку с закаченными файлами (DOSBox-0.65.rar и rar.exe) и скорпируйте их в свою домашнюю папку,
- затем запустите Far Manager, перейдите в свою домашнюю папку и откроете ее так, чтобы она была на обоих панелях Far Manager,
- зайдите внутрь архива - DOSBox-0.65.rar (для этого поместите на него курсор и нажмите Enter) и скопируйте папку DOSBox-0.65 на противоположную панель (используя F5)
- зайдите внутрь этой РАЗАРХИВИРОВАННОЙ папки и скопируйте из нее папку VC на диск C:\ (в корень диска),
- скопируйте с сайта пример работы с графикой (тот, что ниже по тексту после "Пример:")
- используя Far Manager создайте в своей домашней папке новый файл (Shift + F4) с именем gr10.pas ,
- запустите эмулятор DOS - (DOSBox.exe) из разархивированной папки - DOSBox-0.65 (при этом должен запуститься и VC - аналог Far Manager), по умолчанию в DOSBox сочетание Ctrl + F9 используется для выхода из DOSBox - удалите это сочетание клавиш и сохраните!
- запустите из DOSBox - Pascal (C:\BP\BIN\turbo.exe)
- установите настройки пути для модуля graph.tpu , для этого зайдите в Options/Directories и там, где Unit directories установите путь к модулям (C:\BP\UNITS),
- откройте сохраненный пример gr10.pas и запустите его (если на экране появятся различные графические фигуры, значит настройки сделаны верно!),
- закройте все окна - так чтобы осталось только одно чистое окно для написания программы (для закрытия окон щелкните мышкой, на зеленом квадратике в левом - верхнем углу окна с программой или другом каком-то окне, которое необходимо закрыть; для создания нового окна выберете File/New),
- для сохранения установленных путей и настроек Pascal с чистым окном зайдите в Options и выберете Save.

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

Модуль Graph:

Uses Graph - подключение графического модуля

InitGraph(GD,GM,Pat) - Инициализирует графическую систему и переводит видеокарту в графический режим, соответствующий параметрам GD-"графический драйвер" и GM-"графический режим", информация по этим параметрам - в разделе "Помощь" по модулю Graph - "Константы и типы GRAPH.TPU".

CloseGraph - Закрывает графическую систему.

SetColor(Color) - Устанавливает текущий цвет, используя палитру.

SetBkColor(Color) - Устанавливает текущий цвет фона.

Line(X1,Y1,X2,Y2) - Рисует линию от точки с координатами (X1, Y1) до точки с координатами (X2, Y2).

MoveTo(150,150) - Перемещает текущий указатель (CP) в точку с координатами (X, Y).

LineTo(X,Y) - Рисует линию от текущего указателя (CP) до (X,Y).

Rectangle(X1,Y1,X2,Y2) - Рисует прямоугольник, используя текущий тип и цвет линии.

Circle(X,Y,R) - Рисует окружность текущим цветом, используя точку (X, Y) как центр.

SetFillPattern(Pattern,10) - Устанавливает определяемый пользователем шаблон закраски.

SetFillStyle(Pattern,13) - Устанавливает цвет и стиль закраски.

Bar(110,80,150,95) - Рисует закрашенный прямоугольник, используя текущие стиль и цвет закраски.

Bar3D(80,30,120,60,10,TopOn) - Рисует параллелепипед, используя текущий стиль и цвет закраски.

OutTextXY(X,Y,TextString) - Отображает TextString в координатах (X, Y), текущим цветом.

PutPixel(X,Y,Color) - Ставит точку в координатах (X, Y), цветом Color.

GetMaxX и GetMaxY - Возвращают текущее разрешение по горизонтали: GetMaxX и вертикали: GetMaxY.

ClearDevice - Очищает графический экран, используя цвет фона, установленный SetBkColor.

 

Пример:

Program Ex13_Graph;
Uses Crt, Dos, Graph;
Const Pat='C:\BP\BGI';
      Patt:FillPatternType=(128,64,32,16,8,4,2,1);
Var GD,GM:Integer;
Begin
GD:=VGA; GM:=VGAHi; {For VGALo}
InitGraph(GD,GM,Pat);
SetColor(Green); Line(0,0,150,150);
MoveTo(150,150); LineTo(170,90);
SetColor(Red); Circle(50,50,20);
SetColor(Yellow); Rectangle(40,20,70,70);
SetFillPattern(Patt,10);	{SetFillStyle(1,13);}
Bar(110,80,150,95);
Bar3D(80,30,120,60,10,TopOn);	{TopOff}
ReadLn;
CloseGraph
End.

Задание N18

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

Задание N19

Заставить двигаться машинку из задания N18 от края, до края экрана. При достижении края экрана, заставить ее двигаться в обратном направлении, выход из программы по нажатию клавиши "q".

Задание N20

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

 

Занятие N14

Генерация звуковых сигналов

Пример:

Program Ex14_Sound;
Uses Crt;
Var I:Integer;
Begin
For I:=0 To 80 Do
 Begin
   Sound(200);	{Звук с частотой 200 Гц}
   Delay(1000);	{На 200 миллисекунд}
   NoSound;	{Выключаем динамик}
 End;
End.


Задание N21

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



Отображение графиков функций

Задание N22

Отобразить график функции: y=a*x*x+b*x+c (в заданном диапазоне значений [X1,X2] и с заданным шагом dX), где a, b, c, константы, заданные произвольно с клавиатуры. Начало диапазона X1 должно соответствовать левому краю экрана, в конец диапазона X2 правому краю экрана. Отдельные точки графика должны быть соединены линиями. Перед рисованием графика отобразить и подписать оси X и Y.

 

Занятие N15

Записи

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

Общий вид описания типа record:

type t = record
    id11, id12, ... :type1;
    id21, id22, ... :type2;
    ...
end;
здесь id11, id12, ..., id21, id22, ... - идентификаторы полей; type1, type2, ... - типы полей; t - имя типа (записи).

Пример:

Program Ex15_Record;
Uses Crt;
Type
  rec = record
         FirstName:String;
         LastName :String;
         Age      :Byte;
  end;
Var
  Baza: Array[0..100] Of rec;
  I: Integer;
begin
For I:=0 To 4 Do
Begin
  Write('FirstName='); ReadLn(Baza[I].FirstName);
  Write('LastName='); ReadLn(Baza[I].LastName);
  Write('Age='); ReadLn(Baza[I].Age);
End;
WriteLn('FirstName LastName Age');
For I:=0 To 4 Do
  WriteLn(Baza[I].FirstName,' ',Baza[I].LastName,' ',Baza[I].Age);
End.

Задание N23

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

Графическое изображение представляет собой набор графических примитивов: точек, отрезков, прямоугольников и эллипсов различных цветов. Прямоугольники и эллипсы могут иметь заливку. Изображение имеет 16 цветов (коды цветов 0-15).

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

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

  1. Поле Operation типа Byte. Содержит код операции в соответствии с Табл.1.
  2. Поле X типа Integer. Содержит значение координаты по оси X.
  3. Поле Y типа Integer. Содержит значение координаты по оси Y.
  4. Поле Color типа Byte. Поле содержит цвет графического примитива. Это битовое поле, т.е. в нем имеют значение отдельные биты и группы битов. Обычно биты нумеруются с нуля (младший бит). Бит считается установленным, если содержит 1, и сброшенным (не установленным), если содержит 0. Для выделения нужной группы битов используют битовые маски и операцию логического умножения AND, а также операции логического сдвига вправо (SHR) и влево (SHL).

Таблица 1. Содержимое поля Operation.

Код операции Вид операции
0

Запись содержит указание размера рисунка в пикселях (в полях X и Y). Если 7 бит поля Color установлен, то рисунок имеет заливку фона, код цвета которого указан в битах 0-3.

1

Указание позиции курсора (X,Y) относительно левого верхнего угла рисунка. Поле Color не несет полезной информации.

2

Рисование пикселя в позиции (X,Y). Цвет пикселя задан в младших 4-х битах (0-3) поля Color.

3

Рисование отрезка из текущей позиции курсора в точку (X,Y). Цвет задан в битах 0-3 поля Color. Позиция курсора изменяется на (X,Y).

4

Рисование прямоугольника, два диагональных угла которого заданы текущей позицией курсора и точкой (X,Y). Цвет задан в битах (0-3) поля Color. Признак заливки - бит 7 установлен в 1.

5

Рисование эллипса с центром в текущей позиции курсора, и радиусами, заданными в полях X и Y. Цвет задан в битах (0-3) поля Color. Признак заливки - бит 7 установлен в 1.

6

Заливка области, ограниченной контуром, начиная с точки (X,Y). Цвет контура задан в битах 0-3, а цвет заливки - в битах 4-7 поля Color.

Примечания:

1. Запись с кодом 0 является первой и единственной в файле.

2. Позиция курсора изменяется на (X,Y) только в операциях с кодами 1 и 3.

Кодировка цвета:

Цвет Код
Black0
Blue1
Green2
Cyan3
Red4
Magenta5
Brown6
LightGray7
DarkGray8
LightBlue9
LightGreen10
LightCyan11
LightRed12
LightMagenta13
Yellow14
White15


Занятие N16

Разработка программы: "Стрелочные часы с будильником"

1) Расчет координат стрелок стрелочных часов: Xi=R*COS(Ai), Yi=R*SIN(Ai),

где:

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

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

Xi(Ai,R) - координата X от центра стрелочных часов, в зависимости от угла и радиуса стрелки.

Yi(Ai,R) - координата Y от центра стрелочных часов, в зависимости от угла и радиуса стрелки.


Задание N24

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


Занятие N17

Множества

Множество - набор однотипных элементов, не организованных в порядке следования и рассматриваемых как единое целое. В Паскале могут быть только конечные множества. В Турбо Паскале множество может содержать от 0 до 255 элементов.
В качестве базовых типов могут использоваться: перечислимые типы данных, символьный и байтовый типы или диапазонные типы на их основе.

Множество имеет зарезервированное слово set of и вводится следующим описанием:
Type
  <имя типа>=set of <имя базового типа>;
Var
  <идентификатор,...>:<имя типа>;

Объединение множеств (+):
a:=a+['c'];
Разность множеств (-):
b:=b-['d'];
Для включения элемента в множество:
Include(Var S: set of T; Element:T);
Для исключения элемента из множества:
Exclude(Var S:set of T; Element:T);
где S - множество элементов типа Т, а Element - включаемый (или исключаемый) элемент.

Пересечение множеств (*):
c:=a*b;
Пример:
Program Ex18_Mnogestva;
uses crt;
var
s,m,k: set of byte;
i,n:byte;
Begin
 clrscr;
 m:=[6,4];
 i:=9;m:=m+[i];i:=13;Include(m,i);
 s:=[15,17,9];
 k:=m-s;
 for i:=1 to 100 Do
 if i in k then write(i,', ');
End.

Занятие N18

Динамические переменные

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

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

Размещаются динамические переменные в динамической области памяти (heap-области).

Динамическая переменная не указывается явно в описаниях переменных и к ней нельзя обратиться по имени. Доступ к таким переменным осуществляется с помощью указателей и ссылок.

Работа с динамической областью памяти в Turbo Pascal реализуется с помощью процедур и функций New, Dispose, GetMem, FreeMem, Mark, Release, MaxAvail, MemAvail, SizeOf.

New(var p:Pointer); - выделяет место в динамической области памяти для размещения динамической переменной p^ и ее адрес присваивает указателю p.

Dispose(var p:Pointer); - освобождает участок памяти, выделенный для размещения динамической переменной процедурой New, и значение указателя p становится неопределенным.

GetMem(var p:Pointer; size:Word); - выделяет участок памяти в heap-области, присваивает адрес его начала указателю p, размер участка в байтах задается параметром size.

FreeMem(var p:Pointer; size:Word); - освобождает участок памяти, адрес начала которого определен указателем p, а размер - параметром size. Значение указателя p становится неопределенным.

Mark(var p:Pointer); - записывает в указатель p адрес начала участка свободной динамической памяти на момент ее вызова.

Release(var p:Pointer); - освобождает участок динамической памяти, начиная с адреса, записанного в указатель p процедурой Mark, то есть, очищает ту динамическую память, которая была занята после вызова процедуры Mark.

MaxAvail:Longint; - возвращает длину в байтах самого длинного свободного участка динамической памяти.

MemAvail:Longint; - полный объем свободной динамической памяти в байтах.

SizeOf(X):Word; - возвращает объем в байтах, занимаемый X, причем X может быть либо именем переменной любого типа, либо именем типа.

Примеры:
var
     p1, p2: ^Integer;
Здесь p1 и p2 - указатели или переменные ссылочного типа.
p1:=NIL; p2:=NIL;
После выполнения этих операторов присваивания указатели p1 и p2 не будут ссылаться ни на какой конкретный объект.
New(p1); New(p2);
Процедура New(p1) выполняет следующие действия: - в памяти ЭВМ выделяется участок для размещения величины целого типа; - адрес этого участка присваивается переменной p1.

После выполнения операторов присваивания:

p1^:=2; p2^:=4;
в выделенные участки памяти будут записаны значения 2 и 4 соответственно.

Занятие N19

Visual Basic

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

Открыть Microsoft Excel 2010.

Если в меню Excel отсутствует вкладка "Разработчик", то нужно проделать следующие действия:
Файл/Параметры/Настройка ленты/Настройка ленты (Основные вкладки): Поставить галочку: "Разработчик"

Открытие редактора Visual Basic'а: Разработчик/Visual Basic

Пример N1:

- создайте форму - для этого выполните: Insert\UserForm

- установите на форму, друг за другом, три текстовых поля TextBox1, TextBox2 и TextBox3 и две кнопки CommandButton1 и CommandButton2 .

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

- двойным нажатием мыши кликнуть на CommandButton1 и поместить туда строчку:
TextBox3.Text = Str(Val(TextBox1.Text) + Val(TextBox2.Text))

- двойным нажатием мыши кликнуть на CommandButton2 и поместить туда строчку:
End

Двойным нажатием мыши кликнуть на саму форму и поместить в нее следующий код:
UserForm1.Caption = "MyProgram"
CommandButton1.Caption = "Sum"
CommandButton2.Caption = "Exit"


В результате должно получиться следующее:

Private Sub CommandButton1_Click()
    TextBox3.Text = Str(Val(TextBox1.Text) + Val(TextBox2.Text))
End Sub

Private Sub CommandButton2_Click()
    End
End Sub

Private Sub UserForm_Click()
    UserForm1.Caption = "MyProgram"
    CommandButton1.Caption = "Sum"
    CommandButton2.Caption = "Exit"
End Sub
- сохранить программу из Microsoft Excel, выбрав при этом Книга Excel с поддержкой макросов и закрыть программу.
- открыть сохраненный файл. При открытии сохраненного файла может появиться сообщение:
Предупреждение системы безопасности Запуск макросов отключен (Включить содержимое) ). Нужно нажать на кнопку Включить содержимое.

После этого можно запустить программу, нажав F5.

Пример N2:
Function GetFilePath(Optional ByVal Title As String = "Выберите файл для обработки", _
                     Optional ByVal InitialPath As String = "c:\", _
                     Optional ByVal FilterDescription As String = "Текстовый файл", _
                     Optional ByVal FilterExtention As String = "*.txt") As String
    ' функция выводит диалоговое окно выбора файла с заголовком Title,
    ' начиная обзор диска с папки InitialPath, возвращает полный путь к выбранному файлу, или пустую строку в случае отказа от выбора
    ' для фильтра можно указать описание и расширение выбираемых файлов
    On Error Resume Next
    With Application.FileDialog(msoFileDialogOpen)
        .AllowMultiSelect = False
        .ButtonName = "Выбрать": .Title = Title: .InitialFileName = InitialPath
        .Filters.Clear: .Filters.Add FilterDescription, FilterExtention
        If .Show <> -1 Then Exit Function
        GetFilePath = .SelectedItems(1)
    End With
End Function

Sub ExportAsText(ByVal nRow As Integer)     'процедура сохраняющая в текстовый файл данные
    Dim Row As Integer
    Dim fTXT As String    
    fTXT = Application.GetSaveAsFilename(fTXT, FileFilter:="Текстовый файл (*.txt), *.txt", Title:="Выберите файл для записи")   'Выбираем путь и имя файла для сохранения
    If fTXT = "" Then
            MsgBox "Файл не выбран.", vbCritical, "Error"   'в случае отказа выдается ошибка
            End     'завершение работы
                Else
        Open fTXT For Output As #1                   'Открываем файл для сохранения
        Print #1, "Data:"
        For Row = 1 To nRow
            If Selection.Cells(Row, 1) > 0 Then
                Print #1, Selection.Cells(Row, 1)    'Записываем данные которые > 0 из таблицы в файл
            End If
        Next Row
        Close #1        'закрываем файл
    End If
End Sub

Sub ExampleVB()
    'описание переменных
    Dim Dat(20) As Double   'объявляет массив данных на 20 элементов
    Dim n As Integer
    Dim TxData As String
    Dim fNAM As String

    Worksheets("Лист1").Columns("A:D").Delete   'удаляем столбцы с A по J
    Worksheets("Лист1").Rows("1:10").Delete     'удаляем строки с 1 по 10
    
    fNAM = GetFilePath("Выберите файл для обработки", "C:\", "Текстовый файл", "*.txt")   'выбираем путь и имя файла с диска
    If fNAM = "" Then
            MsgBox "Файл не выбран.", vbCritical, "Error"   'в случае отказа выдается ошибка
            End     'завершение работы
    End If
      
    Worksheets("Лист1").Activate
    
    Open fNAM For Input As #1       'открываем файл для чтения данных
    n = 0
    Do Until EOF(1)
    Line Input #1, TxData           'построчно считываем данные из текстового файла в строковую переменную
    Dat(n) = Val(TxData)            'преобразуем строковую переменную в числовое значение и помещаем в соотв. эл-нт массива
    n = n + 1                       'подсчитываем количество данных
    Loop
    Close #1                        'закрываем файл
    
    Worksheets("Лист1").Columns("A:D").ColumnWidth = 6          'устанавливаем ширину ячеек
    For nRow = 1 To n
        Worksheets("Лист1").Cells(nRow, 1).Font.Size = 8        'устанавливаем размер шрифта в ячейках
        Worksheets("Лист1").Rows(nRow).RowHeight = 10           'устанавливаем высоту ячеек
        Worksheets("Лист1").Cells(nRow, 1) = Dat(nRow - 1)      'заполняем ячейки данными из массива
        If Dat(nRow - 1) < 0 Then
            Worksheets("Лист1").Cells(nRow, 1).Interior.Color = RGB(255, 0, 0)  'подкрашиваем красным ячейку с отрицательным значением
        End If
    Next
        
    Cells(1, 1).Select
    MsgBox "Данные загружены!", , "Ready"   'окно с сообщением
    ExportAsText (n)                        'вызов процедуры записи в файл

End Sub
- открыть редактор Visual Basic и в окне Project - VBA Project ткнуть на "ЭтаКнига".
- скопировать Пример N2 в появившееся окно редактора.
- сохранить программу из Microsoft Excel, выбрав при этом сохранить Книгу Excel с поддержкой макросов и закрыть программу.
- открыть сохраненный файл. При открытии сохраненного файла может появиться сообщение:
Предупреждение системы безопасности Запуск макросов отключен (Включить содержимое) ). Нужно нажать на кнопку Включить содержимое.

После этого можно запустить программу, нажав F5.
Или запустить макрос (программу на Visual Basic): Вид\Макросы\Выполнить или Разработчик\Макросы\Выполнить

Установить макрос для запуска по сочетанию клавиш:
Вид\Макросы\Параметры или Разработчик\Макросы\Параметры: указать сочетание клавиш для запуска макроса.

 

Литература

1. Учебные и методические пособия [Электронный ресурс] - Режим доступа: http://dssp.karelia.ru/ivk-stud/moodle/, http://dssp.karelia.ru/web/tutorials.shtml
2. С.В. Мациевский, С.А. Ишанов, С.В. Клевцур, ИНФОРМАТИКА / Учебное пособие / Издательство: Калининградского государственного университета.- 2003г.