Программа практических занятий по курсу: "Информатика" (Pascal I-семестр)
Учебник по информатике:
http://dssp.karelia.ru/web/tutorials.shtmlРабота в
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://dssp.karelia.ru/web/tutorials.shtml
Введение в язык программирования 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+Break (в Borland и Turbo Pascal) или Ctrl+C (во Free Pascal) - прервать программу Alt+F5 - посмотреть окно вывода Редактирование такое же, как и в Бейсике. Для копирования из внешних программ и обратно во 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:
Изменить программу, выполненную по заданию N1 так, чтобы она вводила указанное количество коэффициентов a, b и c, и лишь после этого выполняла расчеты корней квадратного уравнения и выводила результаты. Результаты выводить на экран в виде таблицы. В первом столбце таблицы значения X1, во втором X2, если корней нет, то написать в соответствующей строчке: "Корней нет".
Задание N4:
Изменить программу, выполненную по заданию N3 так, чтобы при выводе результаты были отсортированы по возрастанию значения X1. Решения, у которых нет корней, должны быть выведены в конце таблицы.
Оформление отчетов в Microsoft Word
1) Ссылки по правилам оформления отчетов:
http://dfe.karelia.ru/koi/teaching/rules.html
http://dfe.karelia.ru/koi/teaching/soft_rules.html
Титульный лист Содержание Введение 1. Глава такая-то. 2. Глава вот такая. 2.1. Подглава вот такая. ... Заключение Список использованных источников Приложение А Приложение Б ...
Задание N5
Оформить отчет (по стандартам для оформления отчетов) по программе, сделанной по заданию N4, в программе Microsoft Word (сдавать в электронном виде, сохранять в формате совместимости Word 97-2003). В отчете обязательно должно быть описание программы, отдельных ее частей и т.д., а также представлена блок-схема программы и рисунки с изображением ее работы. Для оформления отчета дома необходимо отправить себе на почту все необходимое - текст программы, рисунки и т.д.
Вывод в заданные координаты
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) для вывода текста в заданные координаты и с использованием циклов, нарисовать цифру, соответствующую номеру компьютера из "*", в заданных координатах.
Операторы цикла
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, координаты этой точки).
Работа со строками
Строки в 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, при этом необходимо добавить процедуру, выводящую разделитель часов, минут и секунд ":". Время должно периодически выводиться в произвольные координаты экрана. Выход из программы должен происходить при нажатии на любую клавишу.
Работа с файлами
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.
Задание N16
Написать программу, считывающую файл и записывающую в другой файл, только те строки, в которых содержится ключевое слово, которое нужно ввести с клавиатуры.
Задание N17
Написать программу, считывающую текстовый файл и осуществляющую скроллинг его содержимого по экрану вперед и назад при нажатии определенных клавиш.
Работа с графикой
(для работы с графикой в Pascal под Windows 7 и под Remote Desktop использовать Free Pascal или DOSBox)
Архиватор RAR
Модуль 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
Закодировать в текстовом файле координаты произвольной фигуры, состоящей из линий и вывести ее на графический экран.
Генерация звуковых сигналов
Пример:
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.
Записи
Запись - это структура, состоящая из фиксированного числа компонент, называемых полями. Данные одного поля разных записей имеют один и тот же тип, а разных полей могут иметь разные типы.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.
Код операции | Вид операции |
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 от центра стрелочных часов, в зависимости от угла и радиуса стрелки.Задание N24
Разработать программу "Стрелочные часы с будильником" (в графическом режиме), позволяющую выводить циферблат стрелочных часов (с цифрами от 1 до 12), стрелки отображающие текущее время: часы, минуты, секунды, а также устанавливать на определенное время сигнал оповещения и выводить соответствующую стрелку будильника. Рисование всех стрелок должно быть выполнено в одной процедуре, которой на вход подаются: координаты вывода (координаты центра часов), цвет и радиус (длина) стрелки. Цвет и радиус должны быть разные, в зависимости от того, какая стрелка должна быть отображена, часовая, минутная, секундная или стрелка будильника. Рисование циферблата должно быть выполнено в отдельной процедуре.
Множества
Множество - набор однотипных элементов, не организованных в порядке следования и рассматриваемых как единое целое. В Паскале могут быть только конечные множества. В Турбо Паскале множество может содержать от 0 до 255 элементов.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.
Динамические переменные
Статической переменной (статически размещенной) называется описанная явным образом в программе переменная, обращение к ней осуществляется по имени. Место в памяти для размещения статических переменных определяется при компиляции программы.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): Вид\Макросы\Выполнить или Разработчик\Макросы\Выполнить
Установить макрос для запуска по сочетанию клавиш:
Вид\Макросы\Параметры или Разработчик\Макросы\Параметры: указать сочетание клавиш для запуска макроса.
Литература
1. Учебные и методические пособия [Электронный ресурс] - Режим доступа: http://dssp.karelia.ru/ivk-stud/moodle/, http://dssp.karelia.ru/web/tutorials.shtml