Программа практических занятий по курсу: "Информатика" (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 - это абсолютная ссылка

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

выделяем ячейки с D2 по 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 тоже самое)

Написать небольшой текст по-русски:

Курсор в начало строки: 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), создание окна с новой программой: F10, а затем File\NEW.

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

3. Основные типы переменных в Pascal: Integer, Real, Boolean, String. Описание констант, новых типов, переменных. Организация массивов.

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

5. Присваивание: X:=40, ввод с клавиатуры: readln(x), вывод на экран: write(x).

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

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

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

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

9. Цикл FOR.

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

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

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

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

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

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
Цикл ForFor 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;
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:
   Breakpoints - выдает список установленных точек останова
   Evaluate/Modify - Ctrl+F4 - вычислить/изменить значения (можно использовать переменные и изменять их значения)
   Add watch... - Ctrl+F7 - добавление переменных для наблюдения в отдельном окне наблюдений
   Add breakpoint... - добавить точку останова программы

   Горячие клавиши для трассировки:
   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 (сдавать в электронном виде).


Занятие 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(1000);
 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 - функция определяет, была ли нажата клавиша на клавиатуре {модуль Crt}

Примеры:

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 до нажатия клавиши, соответствующей номеру компьютера - при нажатии этой клавиши, должен происходить выход из программы.

 



II-семестр

Занятие N8

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

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

Пример:

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

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

Пример:

Str(X:3:2,S);

 

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

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:='o', а S:='Hello!', то n=5}

 

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. Insert - позиция, с которой подстрока 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!'}

Задание N6:

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

Задание N7:

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

 

Занятие N5

Задание N8:

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


Занятие N6

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

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

End;

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

Пример:

Program Ex6_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.

Задание N9:

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

Задание N10:

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


Занятие N7

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

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

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

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

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

Примеры:

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


Program Ex7_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.


Задание N11:

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

 

Занятие N8

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

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

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

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

Пример:

Write(Random);

Write(Random(100));

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

Задание N12:

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


Занятие N9

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

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

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

 

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

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); {создает и открывает новый файл}


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

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


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


Пример:
Program Ex9_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;
For I:=1 To N Do WriteLn(SA[I-1]);
Close(Fil);
Assign(Fil,'namesort.txt'); ReWrite(Fil);
For I:=N DownTo 1 Do WriteLn(Fil,SA[I-1]);
Close(Fil)
End.

Задание N13

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

Задание N14

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

 

Занятие N10

Работа с графикой

Модуль 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 Ex10_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:=VGALo; {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.

Задание N15

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

Задание N16

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

Задание N17

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

 

Занятие N11

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

Пример:

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

Задание N18

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



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

Задание N19

Отобразить график функции: y=a*x*x+b*x+c, где a, b, c, константы, заданные произвольно с клавиатуры. Перед рисованием графика отобразить и подписать оси X и Y, пересечение осей должно быть в центре экрана, в точке 0, 0.

 

Занятие N12

Работа с записями

Пример:

Program Ex12_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.

Задание N20

Написать программу для воспроизведения рисунка, записанного в специальном формате в файле с расширением "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

 

Литература

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