Программа практических занятий по курсу: "Информатика" (Pascal I-семестр) ГГФ
Учебник по информатике:
http://solidstate.petrsu.ru/~IVK/zhirin/inf/inf/index.htmlРабота в
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 |
A | 1 | 2 | 3 |
B | 2 | 3 | 4 |
C | 3 | 4 | 5 |
7) Создать Tаблицу 2 стандартными средствами Word:
Tаблица 2
Столбец 1 | Столбец 2 | Столбец 3 | Столбец 4 |
A | 1 | 2 | 3 |
B | 2 | 3 | 4 |
C | 3 | 4 | 5 |
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+Insert4)
Построение графика:Выделяем область данных с
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 от этих значений,построить график
зависимости значений в столбце В, от значений в столбце С (для этого в Диаграмме нужно заменить Ряды данных).
Графический редактор
Paint1) Панель редактирования (Набор инструментов) изображения
: Карандаш, Выделение, Ластик/Цветной ластик, Заливка, Масштаб, Кисть, Линия, Прямоугольник, Эллипс.2) Изменение параметров
: Меню/Рисунок: Отразить/повернуть... , Растянуть/наклонить... , Обратить цвета.Работа в оболочке
: 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 + F72) Операции с блоками в FAR (в Turbo 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, WindowsSET -
вывод, установка и удаление переменных среды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://solidstate.petrsu.ru/~IVK/zhirin/inf/inf/index.html
Введение в язык программирования Pascal
Учебник по языку Pascal:
Скачать Free Pascal:
https://www.freepascal.org/
Основная Справка (Help index) вызывается по клавише F1, Справка/Help
по конкретной команде (на которой установлен курсор в редакторе) вызывается
по нажатию сочетания клавиш Ctrl + F1.
Во Free Pascal можно установить русскую Справку
(Помощь/Help) аналогичную тому что есть для Turbo Pascal.
Файл с Русской Справкой имеет имя TURBO.TPH, его нужно скачать (по ссылке в заголовке темы) и скопировать
в папку, куда установился Free Pascal (по умолчанию, вот сюда:
C:\FPC\3.0.0\bin\i386-win32\ ).
Далее, нужно открыть сам Free Pascal и в меню Help/Files...
в открывшемся окне выбрать New и указать на этот TURBO.TPH затем
Open и Ok. Возможно еще потребуется сохранить настройки, лучше это
сделать через меню Options/Save as... , выбрать fp.ini и нажать
Open (сохранить в тот же fp.ini).
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+Break (в Borland и Turbo Pascal) или Ctrl+C (во Free Pascal) - прервать программу Alt+F5 - посмотреть окно вывода (результата работы программы или User screen - экран пользователя) Редактирование такое же, как и в Бейсике. Для копирования из внешних программ и обратно во Free Pascal использовать: Edit\Paste from Windows или Edit\Copy to Windows
13. Отличие языка Pascal от QBasic:
Операции | Pascal | QBasic |
Присвоение значения к переменной | 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:
Организовать ввод с клавиатуры заданного количества чисел (в массив) и вычислить их среднее значение.
Трассировка программ:
Меню 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:
Найти количество дней с температурой выше средней. Использовать условие: IF ... Then ... .
Задание N4:
Произвести сортировку чисел в массиве, расставив их по возрастанию. Результат вывести на экран.
Вывод в заданные координаты
GotoXY(X,Y); - помещение курсора в заданные координаты {модуль CRT}
GotoXY(X,Y); Write('Hello!'); - вывод текста в заданные координаты
Delay(1000); - задержка в ms {модуль CRT}
Пример:
Program Ex5_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.
Задание N5:
Задавая с клавиатуры длину, ширину и координаты вывода нарисовать прямоугольник соответствующей длины и ширины, заполненный знаками "$". Для рисования в заданных координатах использовать операторы GotoXY(X,Y) и Write.
Операторы цикла
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 Ex6_While; Uses Crt; Var Ch:Char; Begin Ch:=Chr(0); While Ch<>'j' Do Begin Ch:=ReadKey; Write(Ch); End End.
Program Ex6_Repeat; Uses Crt; Var Ch:Char; Begin Repeat Ch:=ReadKey; Write(Ch); Until Ch='j' End.
Задание N6:
Используя GotoXY(X,Y) для вывода текста в заданные координаты и с использованием циклов, нарисовать цифру, соответствующую номеру компьютера из "*", в заданных координатах. Затем, используя еще один цикл заставить цифру двигаться в прямолинейном направлении.
Задание N7:
Организовать движение цифры из задания N6 по кругу с помощью циклов While или Repeat ... Until до нажатия клавиши, соответствующей номеру компьютера - при нажатии этой клавиши, должен происходить выход из программы. Для вычисления координат точки на окружности - использовать тригонометрические функции: Xi=R*COS(Ai), Yi=R*SIN(Ai) (где Ai это угол i-ой позиции точки, выраженный в радианах, а Xi,Yi, координаты этой точки).
Оформление отчетов в Microsoft Word
1) Ссылки по правилам оформления отчетов:
http://dfe.karelia.ru/koi/teaching/rules.html
http://dfe.karelia.ru/koi/teaching/soft_rules.html
Титульный лист Содержание Введение 1. Глава такая-то. 2. Глава вот такая. 2.1. Подглава вот такая. ... Заключение Список использованных источников Приложение А Приложение Б ...
Задание N8
Оформить отчет (по стандартам для оформления отчетов) по программе, сделанной по заданию N7, в программе Microsoft Word (сдавать в электронном виде, сохранять в формате совместимости Word 97-2003). В отчете обязательно должно быть описание программы, отдельных ее частей и т.д., а также представлена блок-схема программы и рисунки с изображением ее работы. Для оформления отчета дома необходимо отправить себе на почту все необходимое - текст программы, рисунки и т.д.
Работа со строками
Строки в 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!'}Пример:
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}Задание N9:
Заменить все символы "," на ";" в заданной с клавиатуры строке. Результат вывести на экран.
Задание N10:
Используя операторы работы со строками, преобразовать время, полученное с помощью процедуры GetTime (Unit DOS) в строковую переменную в формате: "Текущее время: HH-часов, MM-минут, SS-секунд" и вывести значение этой переменной в заданные координаты на экран.
Задание N11:
Используя операторы работы со строками (для сдвига на один символ содержимого строковой переменной) и вывода на экран текста в определенную координату с помощью GotoXY, написать программу "бегущая строка". Строка вводится с клавиатуры и должна циклически двигаться справа налево.
II-семестр
Подпрограммы. Процедуры и функции.
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); .
Оператор выбора 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'); .
Генератор случайных чисел
Random(Range)
- возвращает случайное число.Если параметр
Range не определен, то результатом будет случайное число типа Real в диапазоне 0 <= X < 1.Если параметр
Range определен, то результатом будет случайное число в диапазоне 0 <= X < Range.Пример:
Write(Random);
Write(Random(100));
Randomize
- Инициализирует встроенный генератор случайных чисел с произвольным значением (полученным из системных часов).Задание N15:
Написать программу "Хранитель экрана". Организовать вывод текущего времени числами из задания N14, при этом необходимо добавить процедуру, выводящую разделитель часов, минут и секунд ":". Время должно периодически выводиться в произвольные координаты экрана. Выход из программы должен происходить при нажатии на любую клавишу.
Задание N16:
Сделать презентацию по программе N15 в MS PowerPoint (при создании презентации руководствоваться следующим описанием Lab_N03.doc).
Для подготовки презентации нужно выслать себе на почту текст программы N15, а также скриншоты работы этой программы.
На слайдах презентации должны быть представлены:
- титульный слайд с заголовком презентации и кто выполнил (ФИО, номер группы);
- части текста программы, выполняющие определенные функции (отдельные процедуры, части основной программы, с комментариями что они делают);
- диаграмма, отображающая в качестве столбцов - количество строк в каждой процедуре программы;
- с помощью автофигур нарисованная блок-схема программы;
- скриншоты работающей (запущенной) программы;
- эффекты анимации;
- навигация по слайдам;
- заключительный слайд с результатами (выводами).
Дома подготовить презентацию (сохранить в формате совместимости PowerPoint 97-2003) и выслать до 29 Марта мне на почту: ekostq@mail.ru (вместе с исходником программы, выполненной по заданию N15), на проверку.
Работа с файлами
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 байт. Пример:
Procedure ReWrite(Var Fil :File [; Recsize :Word]);
- создает и открывает новый файл. Пример:Append(Fil); -
процедура, открывает существующий файл для продолжения записи в файл.В режиме
{$I-} функция IOResult вернет 0, если операция была успешна, иначе, она возвращает отличный от нуля код ошибки.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.
Задание N17
Написать программу, считывающую файл и записывающую в другой файл, только те строки, в которых содержится ключевое слово, которое нужно ввести с клавиатуры.
Задание N18
Написать программу, считывающую текстовый файл и осуществляющую скроллинг его содержимого по экрану вперед и назад при нажатии определенных клавиш.
Работа с графикой
(для работы с графикой в Pascal под Windows 7 и под Remote Desktop использовать Free Pascal или DOSBox)
Архиватор RAR
Для работы в Pascal с графикой необходимо подключить графический модуль:
Uses Graph
- подключение графического модуляInitGraph(GD,GM,Pat)
- Инициализирует графическую систему и переводит видеокарту в графический режим (требуется инициализировать только 1 раз при переходе в графический режим), соответствующий параметрам 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. При использовании операторов ввода с клавиатуры в графическом окне во Free Pascal, вместо модуля CRT необходимо использовать WinCRT.Пример:
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.
Задание N19
Написать процедуру рисования машинки в заданных координатах, с помощью линий, кружков и прямоугольников. Пример вызова процедуры: CarNissanPatrol(10,10) .
Задание N20
Заставить двигаться машинку из задания N19 от края, до края экрана (циклически, бесконечно) с помощью единственного цикла. При достижении края экрана, заставить ее двигаться в обратном направлении, выход из программы (цикла) по нажатию клавиши "q" (оператор exit использовать нельзя - программа должна дойти до End.).
Генерация звуковых сигналов
Пример:
Program Ex14_Sound; Uses Crt; Var I:Integer; Begin For I:=0 To 30 Do Begin Sound(200); {Звук с частотой 200 Гц} Delay(40); {На 40 миллисекунд} NoSound; {Выключаем динамик} End; End.
Задание N22
Заставить фигуру из задания N20 при достижении краев экрана (смене направления движения) проигрывать мелодию или звуковой сигнал. И переделать выход из программы (из цикла) по нажатию клавиши "Esc".
Отображение графиков функций
Задание N23
Отобразить график функции: y=a*x*x+b*x+c (в заданном диапазоне значений [X1,X2] и с заданным шагом dX), где a, b, c, константы, заданные произвольно с клавиатуры. Начало диапазона X1 должно соответствовать левому краю экрана, в конец диапазона X2 правому краю экрана. Отдельные точки графика должны быть соединены линиями. Перед рисованием графика отобразить и подписать оси X и Y.
Записи
Запись - это структура, состоящая из фиксированного числа компонент, называемых полями. Данные одного поля разных записей имеют один и тот же тип, а разных полей могут иметь разные типы.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.Пример демонстрирует работу с записями в Pascal. Для этого в нем объявлен новый тип - rec в виде записи с полями FirstName и LastName (строкового типа) и Age (типа Byte), далее в разделе var объявлен массив записей: Baza: Array[0..100] Of rec; (объявленного выше типа). При запуске требуется ввести 5 записей (за это отвечает 1-ый цикл For), с указанием Имени, Фамилии и Возраста (которые после ввода помещаются в соответствующие поля записи: Baza[I].FirstName, Baza[I].LastName и Baza[I].Age). В следующем цикле For программа выводит все запомненные в массиве записи - на экран.
Задание к Занятию N15
Сделать скриншот с запущенным примером (представленным выше) и введенными в первый элемент записи своим: Именем, Фамилией и Годом рождения, в остальные элементы записи можно вносить любые данные не совпадающие с данными одногруппников. Этот Скриншот, а также Исходник программы необходимо отправить на ekostq@mail.ru до 27 Апреля 2020 до 15 часов.
Задание N24
Написать программу для воспроизведения рисунка, записанного в специальном формате в файле с расширением "vec". Рисунок поместить в центр экрана. Под рисунком вывести имя файла, включая путь.
Графическое изображение представляет собой набор графических примитивов: точек, отрезков, прямоугольников и эллипсов различных цветов. Прямоугольники и эллипсы могут иметь заливку. Изображение имеет 16 цветов (коды цветов 0-15).
Файл содержит записи, каждая из которых состоит из фиксированного набора полей, описывающих графический примитив. Все координаты указываются в пикселях относительно левого верхнего угла изображения, имеющего координаты (0,0). Оси направлены: 0X - вправо, 0Y - вниз. Графические примитивы отображаются относительно текущей позиции курсора, которая может быть изменена специальной командой.
Формат записи:
Таблица 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.
Кодировка цвета:
Цвет | Код |
Black | 0 |
Blue | 1 |
Green | 2 |
Cyan | 3 |
Red | 4 |
Magenta | 5 |
Brown | 6 |
LightGray | 7 |
DarkGray | 8 |
LightBlue | 9 |
LightGreen | 10 |
LightCyan | 11 |
LightRed | 12 |
LightMagenta | 13 |
Yellow | 14 |
White | 15 |
Разработка программы: "Стрелочные часы с будильником"
1)
Расчет координат стрелок стрелочных часов: Xi=R*COS(Ai), Yi=R*SIN(Ai),где:
R - радиус определенной стрелки (часовая, минутная, секундная и стрелка будильника разной длины).
Ai
- угол (выраженный в радианах), связанный определенным образом с текущим системным временем (рассчитывается отдельно для каждой стрелки: часовой, минутной, секундной, а также для стрелки будильника).Xi(Ai,R)
- координата X от центра стрелочных часов, в зависимости от угла и радиуса стрелки.Yi(Ai,R)
- координата Y от центра стрелочных часов, в зависимости от угла и радиуса стрелки.Задание N25
Разработать программу "Стрелочные часы с будильником" (в графическом режиме), позволяющую выводить циферблат стрелочных часов (с цифрами от 1 до 12), стрелки отображающие текущее время: часы, минуты, секунды, а также устанавливать на определенное время сигнал оповещения и выводить соответствующую стрелку будильника. Рисование всех стрелок должно быть выполнено в одной процедуре, которой на вход подаются: координаты вывода (координаты центра часов), цвет и радиус (длина) стрелки. Цвет и радиус должны быть разные, в зависимости от того, какая стрелка должна быть отображена, часовая, минутная, секундная или стрелка будильника. Рисование циферблата должно быть выполнено в отдельной процедуре.
Множества
Множество - набор однотипных элементов, не организованных в порядке следования и рассматриваемых как единое целое. В Паскале могут быть только конечные множества. В Турбо Паскале множество может содержать от 0 до 255 элементов.Type <имя типа>=set of <имя базового типа>; Var <идентификатор,...>:<имя типа>;
a:=['a','s','f'];Объединение множеств (+):
a:=a+['c','z'];Разность (исключение) множеств (-):
b:=b-['d','g'];Для включения элемента в множество:
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,15]; i:=9;m:=m+[i,i+1];i:=13;Include(m,i); write('m: '); for i:=1 to 100 Do if i in m then write(i,' '); writeln; s:=[15,17,9]; write('s: '); for i:=1 to 100 Do if i in s then write(i,' '); k:=m-s; writeln; write('m-s: '); for i:=1 to 100 Do if i in k then write(i,' '); End.Пример демонстрирует работу с множествами. В представленном примере сначала объявляются 3 множеста: s,m,k: set of byte; затем во множество m помещаются значения [6,4,15], в следующей строке в это множество добавляются еще значения: 9 и 10 (i:=9;m:=m+[i,i+1];), далее добавляется еще один элемент: 13 (i:=13;Include(m,i);). После этого в цикле For на экран выводятся только те значения, которые содержатся в множестве, для этого используется условие: if i in m then write(i,' '); . Затем присваиваются значения во множество s (s:=[15,17,9];) после чего его значения с помощью такого же цикла с условием выводятся на экран. Далее, делается разность множеств - исключение одного множества (s) из другого m и результат помещается в переменную k, затем содержимое множества k с помощью такого же цикла с условием выводится на экран.
Задание к Занятию N17
Внести изменения в представленный выше пример к занятию, заменив одно из значений исходного множества m (m:=[6,4,15];) , на цифру совпадающую с датой (день месяца) Вашего рождения (если дата совпадает с одним из значений в этом множестве, то добавить к ней 1 и заменить на полученное значение), затем Откомпилировать, Запустить программу и сделать Скриншот результата ее работы (того что было выведено на экран). Этот Скриншот, а также Исходник программы необходимо отправить на ekostq@mail.ru до 27 Апреля до 15 часов.
Модули
Модули предназначены для расширения возможностей основной программы и разбиения ее на несколько файлов. Модули - это отдельно компилируемые программы, в которых описываются переменные, константы, типы, классы, процедуры и функции. Для того чтобы эти объекты можно было использовать в вызывающем модуле (которым может быть и основная программа), следует указать имя файла модуля (без расширения .pas) в разделе uses вызывающего модуля. Файл модуля (.pas) или откомпилированный файл модуля (.pcu) должен находиться либо в том же каталоге, что и основная программа.Unit имя модуля; Interface раздел интерфейса Uses Const Var Function RandomColor:Byte; Procedure ColorSymbolString; Implementation раздел реализации Function RandomColor:Byte; Begin ... End; Procedure ColorSymbolString; Begin ... End; Begin раздел инициализации End.
Unit RandCol; Interface Uses CRT; Const Symb=78; Var i:Integer; Function RandomColor:Byte; Procedure ColorSymbolString; Implementation Function RandomColor:Byte; Begin RandomColor:=Random(15); End; Procedure ColorSymbolString; Begin For i:=1 to Symb Do Begin TextColor(RandomColor); GotoXY(i,1); WriteLn(CHR(47+i)); End; End; Begin ClrScr; Randomize; ColorSymbolString; End.Проверка работы модуля:
Program Unit_Test; Uses RandCol; Begin WriteLn('Hello!'); End.
Динамические переменные
Статической переменной (статически размещенной) называется описанная явным образом в программе переменная, обращение к ней осуществляется по имени. Место в памяти для размещения статических переменных определяется при компиляции программы.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 соответственно.
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): Вид\Макросы\Выполнить или Разработчик\Макросы\Выполнить
Установить макрос для запуска по сочетанию клавиш:
Вид\Макросы\Параметры или Разработчик\Макросы\Параметры: указать сочетание клавиш для запуска макроса.