Некоммерческое акционерное общество 

АЛМАТИНСКИЙ ИНСТИТУТ ЭНЕРГЕТИКИ И СВЯЗИ 

Кафедра инженерной кибернетики 

 

ИНФОРМАТИКА.
АЛГОРИТМИЗАЦИЯ

 

 

Методические указания

к выполнению лабораторных работ
для студентов всех форм обучения специальности
050718 - Электроэнергетика 

 

СОСТАВИТЕЛЬ: В. М. Тарасов. Информатика. Алгоритмизация. Методические указания к выполнению лабораторных работ для студентов всех форм обучения  специальности 050718 – Электроэнергетика. -Алматы: АИЭС, 2009. – 36  с. 

Представлены методические указания к выполнению лабораторных работ по разделу алгоритмизация дисциплины «Информатика» для студентов всех форм обучения специальности 050718 – Электроэнергетика. Они содержат систематизированные сведения и рекомендации, которые могут быть использованы студентами очного и заочного отделений при выполнении лабораторных работ. Во время лабораторных работ студенты осваивают технологию и практику разработки программ

Введение 

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

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

Решение задач на ЭВМ включает в себя следующие этапы: математическая формулировка задачи, разработка алгоритма ее решения, написание текста программы и подготовка исходных данных.

Алгоритм – это формальное описание способа решения задачи путем разбиения ее на конечную последовательность действий (этапов), понятных исполнителю.  Алгоритм может быть выполнен в графическом виде для человека или в виде программы для ПК. Графический  алгоритм выполняется в виде блок – схемы, то есть совокупности геометрических фигур, приведенных в приложении А, и стрелок, указывающих следующее действие. Формулы в блок-схеме записываются на языке математики.

 

1 Лабораторная работа 1. Создание линейного алгоритма   

 

Цель работы – ознакомление с правилами построения линейных  алгоритмов и представление его в виде программы

1.1 Составление линейного алгоритма и программы

1.1.1 Память ПК и типы данных

Данные и результаты вычислений хранятся в ячейках оперативной памяти. Ячейка памяти может представлять собой байт или несколько объединенных байтов. Ячейки памяти нумеруются в двоичной системе. Часть оперативной памяти можно представить в виде схемы, показанной на рисунке 1.1, где нумерация ячеек приведена в шестнадцатеричной системе счисления.

 Bukva    b              x                                y                                         a

Рисунок 1.1 – Часть оперативной памяти ПК

 
 

 

Однако программисту удобнее иметь дело с именами ячеек памяти, а не с их номерами, поэтому ячейкам присваивают имена (идентификаторы). Имя должно начинаться с буквы и может содержать другие буквы, цифры и символы подчеркивания, написанные слитно. Буквы применяются латинские. Например: Temperatura_vozdukha_v_zdanii. В учебных коротких программах допустимо применять короткие имена: a, b, bukva, Slovo, X, Y, Max и т.д. Имена переменных, применяемые пользователем, не должны совпадать с зарезервированными словами, приведенные в таблице В.1.

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

Константы отличаются от переменных тем, что их значения нельзя изменить в ходе выполнения программы.

Тип данных char. Минимальная ячейка памяти содержит восемь бит. В каждый бит можно записать целые числа 0 или 1. Поэтому в байт можно записать целые числа от 0 до 255, всего 256 чисел. Этим числам можно придать значения кодов символов. Например, латинской букве А присвоен код 65. При нажатии на клавиатуре символа А, в память компьютера будет записан его код 65. При выводе на экран код 65 будет преобразован в рисунок символа А.

Тип данных integer. При использовании двух байт для ячейки памяти, в нее можно записать целые числа от 0 до 65535. Разделив этот диапазон пополам, в него можно записать целые числа от -32768 до +32767.

Тип данных real. Целые числа и числа с плавающей точкой могут быть представлены в различных формах см. таблицу В.2.

Дробные числа в программе записываются в десятичной системе, для отделения дробной части ставится точка: 0, -19, 0.27, 3.1415 и т.д. Дробные числа, можно представить как числа с плавающей запятой (точкой). Пример числа записанного в форме с плавающей запятой: 3.1415 = 3.1415*100 = 0.31415*101 = 0.031415*102 = 311.415*10-2. На экран это число может быть выведено в виде 0.0314150000Е+02, такой вид называется инженерным форматом числа. Они записываются в показательной форме: например, в один байт ячейки памяти записывают показатель степени как целое число, в остальные мантиссу тоже как целое число. Диапазон записываемых чисел ±(2.9E-39 ¸1.7E+38).

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

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

В программе не имеет значения регистр букв, количество пробелов, поэтому выражения “writeln(Х)” и “WRiteLn     (х)” равноценны.

Для записи значений в переменные применяется оператор присваивания «:=». Примеры: а:=12; bukva:=’h’; X:=4.234, Slovo:=’Massiv.

Структура простейшей программы на Pascal приведена в таблице Б.1. В описательной части задаются имя программы, метки и константы, которые будут использоваться в программе, а также переменные и их типы. Главной частью программы является ее исполнительная часть, то есть последовательность инструкций, которую должен выполнить компьютер. Эти инструкции принято называть выражениями. В них могут быть использованы круглые скобки и встроенные функции см. таблицу Б.2.

В арифметических выражениях должны соблюдаться правила:

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

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

1.1.2 Операторы ввода и вывода

Для вывода значений переменных или сообщений на экран применяются операторы Writeln() или Write(). Суффикс ln обозначает перевод курсора после вывода сообщения на новую строку (аналог клавиши Enter).  В скобках указывается пояснительный текст между апострофами, через запятую имена переменных, значения которых выводятся на экран, и формат вывода переменных.

Примеры. Пусть в переменной Х содержится значение 23.174397533756787, а в переменной h значение 4.63847249138556789.

По оператору Writeln (‘Dlina=’,X,’ Vysota=’, h) на экран выйдет сообщение Dlina=2.3147397534E+01   Vysota=4.6384724914E+00.

Русские слова следует писать латинскими буквами с помощью специального кода, который можно посмотреть на сайте aipet.kz.

Значение переменной можно вывести в форматированном виде, указав параметры вывода Writeln (‘Dlina=’, X:7:2, Vysota=’, h:6:2). Тогда на экран выйдет сообщение «Dlina=     23.15 Vysota=   4.64». Здесь числа 7 и 6 указывают количество знакомест на экране для вывода значений переменных, число 2 - количество дробных знаков. Округление выполняется автоматически.

Для ввода данных при помощи клавиатуры в работающую программу применяют операторы ввода Readln (Х) или Read (х). После набора символов на клавиатуре и нажатия на клавишу Enter, набранные символы по оператору Readln (Х),  запоминаются в переменной Х и курсор переходит на следующую строку. Работа оператора Read (Х) более сложная, лучше с ней ознакомиться по литературе.

Внимание! Перед оператором ввода всегда пишется комментарий с помощью оператора Write().

Пример: Write (‘Vvedite znachenie dliny ->’); Readln (x);. Оператор Readln; без аргументов обозначает ожидание нажатия любой клавиши и часто используется для останова программы и просмотра ее результатов.

Оператор присваивания позволяет изменить текущее значение переменной. Вычисляется сначала выражение, стоящее справа от знаков ":=" ("присвоить"), результат присваивается переменной, стоящей в левой части оператора. По выражению Р:= 5*10-2; в переменную Р запишется число 48.

Списки операций и встроенных функций даны в таблицах Б.2 и В.3.

Число  представлено как функция Pi. Пример записи: X:=Cos(Pi/4).

Особенности записи математических выражений в программе:

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

- все аргументы функций обязательно пишутся в скобках;

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

Для ускорения печати программы, рекомендуется пользоваться специальными клавишами, приведенными в приложении А.

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

Любой алгоритм синтезируют из типовых элементов: алгоритмов линейной, разветвляющейся и циклической структуры.

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

1.1.3 Пример линейного алгоритма и программы

Требуется вычислить  функцию . Данные - значения переменных A  и X ввести с клавиатуры.

Блок – схема алгоритма и текст программы приведены на рисунке 1.2.

Пояснения к программе.

Выражением Uses Crt в программе задействована библиотека, позволяющая форматировать выводимый текст и очищать экран командой ClrScr. Все переменные, участвующие в программе, объявляются в разделе Var ее описательной части. Ввод данных осуществляется с комментарием, поэтому сначала записан оператор Write, а затем Readln. Вывод осуществляется форматным способом.

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

1.2 Варианты заданий и контрольные вопросы

Составьте блок-схему и программу вычисления выражения. Вычислите его при указанных значениях аргументов, и проверьте результат с помощью калькулятора или Excel. Повторите вычисления при произвольных значениях аргументов. Все результаты запишите в отчет по образцу, показанному на рисунке 1.2.

Program lin_algoritm;

Uses Crt;

Var A, X, Y,  {входные и выходные переменные}

S1, S2, S3, S4 : real;  {переменные для промежуточных результатов}

Begin  ClrScr;

     Write (' Vvedite A -> ');

     Readln (A);

     Write (' Vvedite X  -> ');

     Readln (x);

     S1:=2*Sqrt(A*A+Sqr(X));

     S2:=2.5*Sin(A+X)/Cos(A+X);

     S3:=Ln(A+x);

     S4:=Sin(x)+Cos(A)*Cos(A);

     Y:=S1+(S2-S3)/S4;

     Writeln (' Otvet Y=',Y:10:3);

     Readln;

End.  {Конец программы}

 

Результат работы программы .

Рисунок 1.2 - Блок-схема и программа линейного алгоритма

Варианты заданий

1) ,
вычислить при 
x=0, y=1 (P=-0.333).

2) ,
вычислить при
a=2, b=3 (P=0.2).

3) ,
вычислить при  x=1, y=1 (Z=0.5).

4),
вычислить при
a=2, b=4 (P=2).

5) ,
вычислить при a=5, x=5 (Y=100).

6) ,
вычислить при
x=4, y=3 (Z=3).

7) .
вычислить при х =,
a=5 (y=-1).

8) ,
вычислить при
a=1, b=10 (P=0.5).

9) ,
вычислить при x =9 (Y=10).   

10) ,
вычислить при
a= /2, x=2 (P=-2).

11) ,
вычислить при
a= /2, x=5,5, y=4,5 (Z=1).

12) ,
вычислить при
x= , a=10, b=3 (Y=2).

13) ,
вычислить при
x=10, y=1 (Z=1).

14)  ,
вычислить при
a= , y=3, x=2 (Z=0).

15) ,
вычислить при
a= , x=4, b=1 (P=2).

16) ,
вычислить при
a= , x=6, y=1 (Z=3).

17) ,
вычислить при
x=, y=5 (P=0.5).  

18) ,
вычислить при a=5; b=4 (Y=0).

19) ,
вычислить при
x=, a=3, b=0,5 (y=0.25).

20) ,
вычислить при
x=; a=3; b=11
 (
P=-4.5).

21) ,
вычислить при x=; a=0,5; b=10 (Y=0.5).

22) ,
вычислить при
x=; a=0,5; b=0 (Y=0.2).

 Контрольные вопросы

1.        Дайте определение алгоритму. Назовите его основные свойства.

2.        Какой алгоритм называется линейным?

3.        Что такое блок-схема? Назовите элементы блок-схемы.

4.        Опишите структуру программы.

5.        Назовите типы данных, используемые в Pascal?

6.        Расскажите о форматном и бесформатном выводе в Pascal?

7.        Как записываются арифметические выражения?

8.        Как вычислить функции tgx, ctgx, lgx?


2 Лабораторная работа 2. Разветвленный алгоритм. Повторения

 

Цель работы – создание алгоритмов разветвленной структуры и цикла.

2.1 Создание разветвленного алгоритма и программы

2.1.1 Разветвленный алгоритм

Ветвящимся (разветвленным) называется алгоритм, в котором в зависимости от вычисления некоторого условия далее алгоритм продолжается по одному из двух или из нескольких заранее предусмотренных ветвей. На рисунке 2.1 показана его блок - схема. Для реализации ветвления используются два оператора If или Case.

Пример записи условного оператора для вычисления функции  

If (x<0) then y:=Cos(x) else y:=0;.

Внимание! Условный оператор является одним выражением, поэтому точка с запятой перед else не ставится.

Если в операторе If ветвь than или ветвь else отсутствует, то ветвление называют неполным. При наличии обоих ветвей ветвление называют полным.

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

If ((X>=2) and ((X<=5)) - здесь условие истинно, если одновременно выполняются оба отношения, то есть Х лежит в пределах от 2 до 5.

If ((X<2) or ((Y>5)) - здесь условие истинно, если выполняется хотя бы одно отношение: либо Х < 2, либо Y > 5 или Х <2 и Y >5 одновременно.

В линейном алгоритме порядок выполнения операторов соответствует их записи в программе. Если необходимо нарушить этот порядок, то используется оператор безусловного перехода Goto metka, который в блок-схеме отображается в виде стрелки. Метка, используемая в операторе, показывает, что дальнейшая работа должна проводиться в другой части программы, с той строки, которая обозначена как metka. Метка должна быть описана в разделе Label.

Внимание! После метки в тексте программы ставится двоеточие.

Оператор Goto может применяться для повторений (циклов) выполнения какой-либо части программы. Количество повторений и номер повторения контролируют переменными целого типа, например integer. Ниже приведен фрагмент такой программы.

 

i:=1; {i – номер повторения}

N:=5; {N – количество повторений}

Metka1:  {Ставим двоеточие после метки}

        Writeln (‘    Nomer povtoreniya ’, i);

        i:=i+1;

If (i<=N) then Goto Metka1;

Результат работы этого фрагмента:

Nomer povtoreniya 1

Nomer povtoreniya 2

Nomer povtoreniya 3

Nomer povtoreniya 4

Nomer povtoreniya 5.

 

2.1.2 Пример создания алгоритма разветвленной структуры

Вычислить разрывную функцию  для значений Х равных  -2, 0, 0.5, 1, .

Алгоритм представлен на рисунке 2.2.

Program vetvlenie;

Uses crt; Label Metka1;

Var i, N: integer;

       x, y: real;

Begin

    ClrScr;

N:=5; i:=1;

Metka1:

Write ('  Vvedi X -> ');

Readln (X);

if (x<0) then y:=exp(x);

if ((x>=0) and (x<=1))

then  y:=0;

if (x>1) then y:=sin (x);

writeln (' Otvet Y=' ,y:10:3);

i:=i+1;

if  (i<=N) then goto Metka1;

end.

 В программе N – количество повторений, i – номер повторения. Все ветвления в программе выполнены неполными, так как  ветвь else отсутствует.

Результат работы программы показан на рисунке 2.3.

Рисунок 2.3 - Результат

Вывод значения переменной Y выполнен форматированным: выделено 10 знакомест, причем три из них отводятся для вывода дробной части числа. Для повторения части программы (цикла) применен оператор goto. Результат работы программы скопирован с экрана клавишей Print Screen  и обработан в графическом редакторе.

2.2 Варианты заданий и контрольные вопросы

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

1)

x

y

2)

x

y

-5

-3

0

1

4

-17,00

-13,00

10,00

-7,00

-28,00

-3,14

0

1

1,57

6

2,00

2,00

0,54

0,00

6,00

3)

x

y

4)

x

y

-2

0

1

3.14

5

4,80

5,00

2,54

1,00

2,28

-3,14

-1,57

0

1,57

5

-0,42

0,63

0,00

-0,78

0,99

5)

 

x

y

6)

x

y

-3,14

0

1

2

5

-1,00

1,00

2,00

4,00

10,00

-5

-2

0

2

9

10,44

5,00

1,00

1,48

2,00

7)

x

y

8)

x

y

-4

-3

0

3,14

6

0,35

0,01

2,00

3,58

3,01

-3

-0,78

0

3,14

7

0,65

-26,58

-1,00

-3,00

-1,25

9)

 

x

y

10)

x

y

-2

0

5

6

8

-8,00

2,00

27,00

41,00

69,00

-1

0

1

4

6

6,00

12,00

8,00

9,00

13,73

 


 

11)

x

y

12)

x

y

-2

-1

0

3,14

16

-2,83

-1,73

0,00

0,00

12,00

-3,14

0

3,14

5

6,3

1,00

1,00

1,00

25,00

0,03

13)

x

y

14)

x

y

-5

-2

0

0,78

3,14

5,00

5,00

0,00

0,99

0,00

-2

-1

0

1

2

-8,00

-3,00

1,41

3,00

8,00

15)

x

y

16)

x

y

-5

-3

0

1,57

3

5,66

4,00

0,00

0,00

-0,99

-3

-2

0

1

9

9,50

13,00

-7,00

3,00

21,00

17)

x

y

18)

x

y

5

3

0

-1,6

-4

1,15

1,00

0,00

1,00

-0,76

-9

-2

0

1,57

3,14

1,00

0,48

0,00

3,00

2,00

19)

x

y

20)

x

y

-1,57

0

1,57

10

15

-1,00

0,00

1,00

1,00

1,18

-0,78

0

0,78

8

9

0,01

1,00

1,99

7,00

8,00

21)

x

y

22)

x

y

-1

-0,5

0

2

3

49,00

16,00

1,00

3,87

4,58

0

1

2

5

6

5,00

8,00

2,45

5,48

6,48

 
Контрольные вопросы

1. Какие логические отношения применяют в Pascal?

2. Какие функции выполняет оператор безусловного перехода?

3. Чем отличаются полная и неполная формы оператора ветвления?

4. Как изображается на блок-схеме оператор условного перехода?

5. Расскажите о логических функциях and, or.

3 Лабораторная работа 3. Алгоритм с оператором выбора

 

Цель работы – ознакомление с особенностями программирования алгоритмов разветвленной структуры.

3.1 Создание алгоритма с оператором выбора

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

Заголовок оператора выбора имеет вид: Case “Имя переменной”  of. Переменная может быть числовая или символьная. Далее пишут возможные варианты продолжения алгоритма для разных значений переменной.

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

      Metka:

        Writeln ('Variant  ',i);

        Write ('Vvedite 1-e chislo -> ');   readln (X1);

        Write ('Vvedite matemat deystvie -> ');  readln (Znak);

        Write ('Vvedite 2-e chislo -> ');   readln (X2);

        Case Znak of

            '+' :   Rez:=X1+X2;

            '-' :   Rez:=X1-X2;

            '/' :   Rez:=X1/X2;

            '*' :   Rez:=X1*X2;

        else    begin Writeln ('Нет такого математического дейтвия! ');

                           Goto metka; {Защита от неверного ввода символа}

                   end; { Конец блока else}

        end; {Конец оператора Case}

Здесь begin и end после else, указывают блок операторов, которые должны выполняться вместе при неверном вводе символа.

В Case для переменной можно указывать диапазон или перечисление.

        Write (' Vvedite god (1700-2000) -> ');   Readln (god);

        Case god of

             1701..1799  :   Writeln (' 18 vek');

             1801..1899  :   Writeln (' 19 vek');

             1901..1999  :   Writeln (' 20 vek');

             1700, 1800, 1900  :   Writeln (' Nachalo veka');

             2000            :   Writeln (' Nachalo nashego veka');

        else    writeln (' God vne diapazona!');

        end;

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


3.2 Задания и контрольные вопросы

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

1)  На ввод числа 1 вывести надпись «Имя файла Pascal может иметь 8 символов», на ввод числа 2 « Имя файла Word может иметь 256 символов».

2)  Ввести число. На 1 вывести надпись «Имя переменной может иметь 75 символов», на 2 « Имя файла может иметь 8 символов», на 3 «Файлы Pascal имеют расширение pas. Для других чисел вывести  «Повторите ввод».

3)   Определить квартал текущего года по вводимому номеру месяца.

4)  Вводится ответ на вопрос "Укажите язык общения: русский (р), английский (а), казахский (к)". Вывести приветствия на этих языках.

5)   Вводится целое число от 1 до 5. Соответственно числу вывести  название одной из стандартных программ операционной системы.

6)   Вводится целое число. Если введен ноль, то вывести "неудовлетворительно". Если введены 1, 2, 3 или 4, то вывести "удовлетворительно". Если введены 5, 6 или 7, то вывести "хорошо". Если введены 8 или 9, то вывести "отлично".

7)  На ввод чисел от 1 до 5 вывести текст «В классе … компьютеров».

8)  На ввод чисел от 1 до 4 вывести название схемы топологии локальной сети. 1 - звезда. 2 - кольцо. 3 - магистраль. 4 - смешанная.

9)  На ввод чисел от 1 до 5 вывести название устройства ПК: системный блок, монитор, клавиатура, мышка, стабилизатор.

10)   По вводимому номеру месяца вывести название времени года.

11)   Вывести название месяца, если вводится его номер.

12)   На ввод чисел от 1 до 5 вывести тип файла, который можно создать в Word, из списка: txt, doc, html, rtf, dot.

13)   Вводится год 19 века. По номеру года определить десятилетие. При неверном вводе года вывести надпись «Это не 19 век».

14)   На ввод чисел от 1 до 4 вывести на экран тип файла, создаваемый в графическом редакторе из списка bmp, gif, jpg, npg.

15)   На ввод чисел от 1 до 3 вывести на экран тип  исполняемого  файла, из списка com, exe, bat. Для других чисел вывести «Повторить ввод».

16)   На ввод чисел от 1 до 5 вывести на экран  надпись: «Pascal», «Basic», «Delphi», «C++» или «Fortran». Для других чисел вывести  «Повторите ввод».

17)   На ввод чисел от 1 до 5 вывести наименование типа данных в Pascal.

18)   На ввод чисел от 1 до 4 вывести цикл For, While, Until, Goto Metka.

19)   На ввод чисел от 1 до 4 вывести название операции «+, -, *, /».

20)   На ввод чисел 2, 8, 10, 16 вывести название системы счисления..

21)   На ввод чисел от 1 до 5 вывести наименование одного из факультетов АИЭС: 1 - ТЭФ, 2 - ЭЭФ, 3 - ФРТС, 4 - ФЗО и ПС, 5 - ФДП.

22)   На ввод 1, 2 или 3 вывести логическую функцию And, Or или Xor.

 Контрольные вопросы

1. Расскажите о кодах символов.

2. Поясните термин текстовой файл.

3. Способы указания значений переменных в операторе Case.

4. Как изображается на блок-схеме оператор условного перехода?

6. Как создаются циклы (повторения) в программе?

7. Какие особенности характерны для оператора выбора?

8. Расскажите про логические функции And, Or и Xor.

 
4 Лабораторная работа 4. Циклические алгоритмы

 

Цель работы – ознакомление с особенностями циклических алгоритмов.

4.1 Создание циклических алгоритмов и программ

4.1.1 Необходимость массивов

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

Для решения подобных задач был создан специальный тип переменной – массив. В памяти ПК создают блок ячеек памяти, у которых одно имя, а ячейки массива нумеруются (индексируются), см. рисунок 4.1. В каждую ячейку массива можно записать данные только одного типа: целые или дробные числа, символы. При обращении к конкретной ячейке  указывают имя массива и индекс (номер) ячейки, таким образом, получая доступ к ее содержимому. Например,  Ves[1]=10, Ves[5]=13. Меняя в цикле индекс ячейки от 1 до 5, получаем возможность обращаться ко всем ячейкам массива. Программы с циклами и массивами получаются компактными.

Целочисленный массив с индексами от 0 до 5 объявляется в разделе Var выражением: “Ves: array [0..5] of integer;”. Если в программе несколько массивов одного типа, то удобно объявлять их типовое имя в разделе Type и указывать конкретные имена в разделе Var:

“Type T= array [1..20] of integer;   Var   Ves, A, B, C : T;”

4.1.2 Обработка массивов

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

В Pascal существует три оператора цикла: For, While, Repeat. Оператор цикла представляет собой единую синтаксическую конструкцию, в которой можно выделить три основные части: заголовок цикла, тело цикла, закон изменения шага параметра, заключительную строку.

Если число повторений известно заранее (до начала повторений), то удобно воспользоваться циклом с параметром - счетчиком For - to или For downto. В остальных случаях следует использовать цикл с предусловием While - do или c постусловием Repeat - until.

На рисунке 4.1 показана блок схема и программа цикла For - to. Счетчик i меняется от m1 до  m2 с шагом +1, естественно m1 меньше  m2.

 

For i:=m1 to m2 do

begin

  Оператор 1

  . . .

  Оператор N

end;

Блок схема и программа цикла For downto аналогична. Счетчик i меняет свои значения от m1 до  m2 с шагом -1, естественно m1 больше  m2.

Команды, которые повторяются в цикле, расположены между операторными скобками begin и end.

Оператор цикла с параметром – счетчиком имеет ограничения:

-  i, m1, m2  могут быть переменными только целого типа;

- 

i меняется в цикле на единицу;

-  параметр (счетчик) i нельзя изменить внутри тела цикла.

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

Оператор цикла с предусловием While - do показан на рисунке 4.2.

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

Внимание! Настоятельно рекомендуется перед запуском программы с циклами While и Repeat обязательно ее сохранить, на случай если случайно не будет предусмотрено изменение параметра цикла.

4.1.3 Пример применения цикла For

Вычислить значения функции Y=A/K2, для каждого целого К, причем К меняется от 1 до 10 с шагом +1 и записать их в массив D.

 

Program for_to;

var k: integer; a, y: real;

   D: array {1..20] of real;

begin

    write(‘ Vvedite A ->’); readln (a);

    for k := 1 to 10 do    

    begin

         y := a / sqr(k); D[k]:=y;

         writeln(’K=’, k:2, ’Y=’, y:8:3);

    end;

end.

Начальные значения параметра цикла k равное 1 и конечное его значение равное 10 заданы в заголовке цикла. Цикл продолжается пока k не пробежит все значения от 1 до 10. Для каждого значения k вычисляется и   печатается вычисленное значение функции  и сохраняется в массиве.

 

4.1.4 Пример применения  цикла While

Найти в массиве A(10) c пятого по десятый элемент первый отрицательный элемент и напечатать его.

{Фрагмент программы}

I:=5;  N=10;

While ((A[i]>=0) and (i<=N)) do

Begin  

        Writeln (‘ Ind=’ , I , A[i]:4:1;);

         i:=i+1;

End;

If  I <= N

then  Writeln (‘ Otritsat element=’ ,
            A[i]:4:1;)

else  Writeln (‘Otritsat elementa net’);

Цикл продолжается пока условие (A[i]>=0 and (i<=N))  истинно. Количество повторений цикла зависит от данных массива и заранее нельзя определить. После выхода из цикла печатается результат поиска.

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

4.2 Задания и контрольные вопросы

1)       В массиве А(10) определить количество и сумму отрицательных элементов с 5 по 10 элементы. Минимум и его позицию.

2)       В массиве А(10) определить сумму и количество положительных элементов с 3 по 8 элементы. Максимум и его позицию.

3)       В массиве А(10) определить количество отрицательных  и положительных элементов с 4 по 9 элементы. Минимум и его позицию.

4)       В массиве А(10) определить количество отрицательных элементов с 2 по 7 элементы. Минимум и его позицию.

5)       В массиве А(10) определить количество отрицательных  четных элементов с 5 по 10 элементы. Среднее положительных элементов.

6)       В массиве А(10) определить количество положительных нечетных элементов с 3 по 8 элементы. Максимум и его позицию.

7)       В массиве А(10) определить количество отрицательных элементов с 4 по 9 элементы. Среднее элементов более 3.

8)       В массиве А(10) определить количество элементов больших 2  с 5 по 10 элементы массива. Среднее положительных элементов.

9)       В массиве А(10) определить количество и сумму элементов меньших 5 с 2 по 7 элементы массива. Минимум и его позицию.

10)   В массиве А(10) определить количество отрицательных четных элементов с 3 по 8 элементы. Максимум и его позицию.

11)   В массиве В(10) определить количество отрицательных нечетных элементов с 5 по 10 элементы. Среднее значение элементов.

12)   В массиве В(10) определить количество и сумму отрицательных элементов с 5 по 10 элементы. Среднее отрицательных элементов.

13)   В массиве В(10) определить сумму и количество положительных элементов с 3 по 8 элементы. Разность максимума и минимума.

14)   В массиве В(10) определить количество положительных элементов с 4 по 9 элементы. Среднее положительных элементов.

15)   В массиве В(10) определить количество отрицательных элементов с 2 по 7 элементы. Среднее значение элементов.

16)   В массиве В(10) определить количество отрицательных  четных элементов с 5 по 10 элементы. Сумму минимума и максимума.

17)   В массиве В(10) определить количество положительных нечетных элементов с 3 по 8 элементы. Разность максимума и минимума.

18)   В массиве В(10) определить количество отрицательных элементов с 4 по 9 элементы. Среднее отрицательных элементов.

19)   В массиве В(10) определить количество элементов больших 2 с 5 по 10 элементы массива. Среднее значение элементов.

20)   В массиве В(10) определить количество и сумму элементов меньших 5 с 2 по 7 элементы массива. Сумму минимума и максимума.

21)   В массиве В(10) определить количество отрицательных четных элементов с 3 по 8 элементы. Среднее отрицательных элементов.

22)   В массиве В(10) определить количество отрицательных нечетных элементов с 5 по 10 элементы. Среднее максимума и минимума.

Контрольные вопросы

1. Что называется циклом?

2. К какому типу данных должен быть отнесен счетчик цикла For?

3. Какие виды циклов существуют в Pascal?

4. Дайте сравнительную характеристику циклов For - to и For - downto.

5. Что представляет собой цикл While?

6.  Как осуществляется накапливание суммы или произведения?

 
5 Лабораторная работа 5. Применение циклических алгоритмов

 

5.1 Применение циклов

Циклы часто применяются для всевозможных расчетов. На рисунке 5.1 показан график функции. Аргумент Х здесь меняется от -1 до 5,2 с шагом 0,2. Для каждого значения Х вычислены значения функции.

Рисунок 5.1 – График функции

 
 

 


Стандартные задачи обычно включают такие вычисления:

- найти все значения функции;

- найти при каких значениях Х наблюдается максимум и минимум функции;

- амплитуду функции (разность между максимумом и минимумом);

- среднее значение функции на каком-то отрезке Х;

- интеграл функции на заданном отрезке Х;

- сумму значений функции в заданном диапазоне.

Поскольку значения аргумента обычно дробное, то удобно применять цикл While. Ниже приведена программа по расчету функции в диапазоне Х от -0.4 до 2. В программе вычислены: значение Х, при котором наблюдается максимум функции, интеграл для положительных значений Y и среднее значение положительных Y.

Program funkstiya;  Uses Crt;

Var x, y, a, b, shag, max,  integral, sred, X_max, sum: real;

       k: integer;

 begin clrscr; sum:=0; integral:=0; k:=0; a:=-0.4; b:=2; shag:=0.2; x:=a;

      max:=-100000; min:=100000;

      Writeln; Writeln (' Funkstiya Y=2SinXSinX+XX/15-1');

      While (x<=(b+shag/2)) do   

     begin

           Y:=2*sqr(Sin(x))+x*x/15-1;

           Writeln('  X:=',x:4:1,'  Y=',Y:4:2);

           If (max< y) then begin max:=Y; X_max:=X; end;

           if (Y>0) then begin  Sum:=sum+y; k:=k+1; end;

           if (Y>0) then integral:=integral+shag*y;

           x:=x+shag;

      end;

      Writeln('  Kol_vo polozh. y=', k);

      Writeln('  Srednee polozh. Y=', (sum/k):4:2);

      Writeln('  Max=', max:5:2,' pri X=', X_max:5:2);

      Writeln('  Integral=', integral:8:5);

end.

 

Пояснения к программе

В условии выполнения цикла While (x<=(b+shag/2)) значение переменной b увеличено, чтобы Х захватил значение b=2. Если так не сделать, то Х=2 может не попасть в цикл из-за приближенного значения переменных типа Real и накапливания ошибки при вычислении Х.

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

Рисунок 5.2 – Результат расчетов

 

5.2 Задания и контрольные вопросы

Должны быть выведены все значения Х и Y, определить при каких значениях Х наблюдается Max и Min и их значения.

Т а б л и ц а 5.1 – Варианты к заданию

Функция

Интервал

[a, b]

Шаг h

Вычислить и вывести на печать

1

Y=CosX+0,7

[-1, 4]

0,5

Разности Max- Min, Xmax-Xmin

2

Y=CosX+X/10

[-1, 1]

0,2

Max, сумму положительных Y

3

Y=SinX+X2/30

[0, 2]

0,2

Max, сумму положительных Y

Продолжение таблицы 5.1

4

Y=SinX-X2/15

[3, 5]

0,2

Min, сумму отрицательных Y

5

Y=Cos2X-0.3X

[-1, 1]

0,2

Max, cреднее значение Y

6

Y=SinX-X2/15

[4, 6]

0,2

Min, сумму отрицательных Y

7

Y=CosX+0,3Х

[-1, 5]

0,5

Разности Max- Min, Xmax-Xmin

8

Y=CosX-X2/15

[-1, 1]

0,2

Max, cреднее значение Y

9

Y=SinX+0.7

[1, 3]

0,2

Max, сумму положительных Y

10

Y=CosX-0,3X

[1, 4]

0,5

Разности Max- Min, Xmax-Xmin

11

Y=CosX+X2/10

[1, 5]

0.5

Min, сумму отрицательных Y

12

Y=cosX+0,7

[2, 4]

0,2

Min, сумму отрицательных Y

13

Y=SinX-X2/15

[0, 6]

0,5

Разности Max- Min, Xmax-Xmin

14

Y=CosX+0,3Х

[2, 4]

0,2

Min, сумму отрицательных Y

15

Y=CosX+0,7

[-1, 5]

0,5

Max, сумму отрицательных Y

16

Y=CosX-0,3X

[-1, 1]

0,2

Max, сумму положительных Y

17

Y=SinX+0,7

[3, 5]

0.2

Min, сумму отрицательных Y

18

Y=CosX-X2/15

[-1, 4]

0,5

Разности Max- Min, Xmax-Xmin

19

Y=CosX+X2/10

[1, 4]

0.5

Разности Max- Min, Xmax-Xmin

20

Y=Cos2X+0,3X

[3, 5]

0.2

Max, сумму положительных Y

21

Y=SinX+X2/30

[1, 6]

0.5

Разность Max- Min

22

Y=Cos2X-0.3X

[1, 3]

0,2

Min, сумму отрицательных Y

Контрольные вопросы.

1. Что называется циклом?

2. К какому типу должен быть отнесен счетчик цикла For, его диапазон?

3. Какие виды циклов существуют в Pascal?

4. Как вычисляются математические функции?

5. Как определяется четность и нечетность элементов?

6. Как осуществляется накопление суммы (интеграла)?

 

6 Лабораторная работа 6. Подпрограмма – функция

 

Цель работы – Научиться применению подпрограммы - функции при математических расчетах.

6.1 Создание подпрограмм - функций

При программировании часто возникает необходимость повторять одну и ту же последовательность операторов в различных частях программы при разных параметрах. Чтобы многократно не переписывать эту последовательность, удобно в дополнение к основной программе, использовать подпрограммы: процедуры и функции. Подпрограмма вызывается на выполнение из основной программы по имени. В подпрограмме - функции выходной результат один, а подпрограмме - процедуре возможно несколько выходных результатов, которые могут использоваться в главной программе. Подпрограммы  пишутся после заголовка Program главной программы и до описательной части или до начала исполнительной части (до слова begin) основной программы.

Подпрограмма имеет  ту же структуру, что и основная программа: заголовок, описательную часть, исполнительную часть.

Заголовок подпрограммы - функции имеет вид:

Function имя функции (список формальных параметров): тип функции;

Пример заголовка функции: Function Max ( i: integer; x, у: real): real;

Формальные параметры функции могут быть только входными данными, а выходным параметром является само имя функции, поэтому в заголовке необходимо указать тип функции (integer, real). В описательной части подпрограммы определяются типы переменных, не описанных в заголовке функции, обычным способом. Подпрограмма заканчивается оператором end;.

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

Пример записи Y:= Tg(x);.

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

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

Внимание! Глобальных переменных, то есть переменных доступных всем подпрограммам  следует избегать, поскольку такие программы, как правило, не работоспособны.

 6.1.1 Пример создания простейшей функции.

Program Function_kub;         {Заголовок основной программы}

                                            {Глобальные переменные отсутствуют}

Function Kub(x: real): real;   {Начало функции с именем Kub}

var Y: real;                            {Локальные переменные для функции}

begin 

Y:=x*x*x;        {Вычислительная часть функции}

       kub:=y;          {Имени функции обязательно даем значение}

end;                      {Конец функции}

 

{glavnaya programma}

var X,Y: real;                    {Локальные переменные главной программы}

begin   

      X:=4;  

      y:=Kub(x);  {Записываем созданную функцию в выражение}

      Writeln ('  x=', X:4:2,'  X^3=', y:6:2);

end.

Структуру аналогичную приведенной, имеют функции любой сложности.

6.2 Задания и контрольные вопросы

Вычислить примеры для заданных и произвольных значений аргументов, создав функции не встроенные в Pascal: tg, ctg, lg, xy.

 

1)
x=, a=0.5, b=10 (у=0.5).

2)

y= , x=1 (z=1).

3)
a=2, b=3 (P=2).

4)
x=
, y=9 (Z=3).

5)
x=1, y=1 (Z=0.5).

6)
a=2, b=4 (P=2)
.

7)
a=5, x=5 (Y=10)
.

8)

a= 3, x=/4, N=4 (Y=81).

9)
х =, a=5 (Y=-1).

10)

x=, y=5 (P=-0.5).

11)   
x =9 (Y=10).  

12)
x= , a=10, b=3 (Y=2).

13)
a= /2, x=5.5, y=4.5 (Z=1).

14)
a=1, b=10 (P=0.67)
.

15)
x=10, y=1 (Z=1)
.

16)  
a=4, b=7, c=2  (P=-1).

17)

a= , x=4, b=1  (P=2).

18)

a= , x=6, y=1 (Z=3).

19)   Y=aN Tgx 
a= 3, x=/4, N=4  (Y=81).

20) Y=aN Cosx

a= 2, x=0, N=4 (Y=16).

21)
 
x=, a=0.5, b=0 (Y=0.5).

22)
x=, a=3, b=11 (P=-4.5).

Контрольные вопросы

1.        Назначение подпрограмм.

2.        Типы подпрограмм.

3.        Обращение к функции.

4.        Локальные и глобальные переменные.

5.        Опишите структуру функции.

 

7 Лабораторная работа 7. Символьная и строковая информации

 

Цель работы – обработка символьной и строковой информации. Использование кодов символов.

7.1 Обработка символов

Символьные переменные хранятся: один символ в переменной char, набор символов (строка) в переменной типа String. Строка - это последовательность символов, записанных с помощью кодов. То есть вместо символов “ABBA” в память компьютера записываются  коды этих символов «65 66 66 65». Таблица кодов ASCII, применяемых в Pascal, дана в приложении Ж.

Для объявления переменных строкового типа используется стандартный идентификатор string, за которым следует заключенное в квадратные скобки значение длины строки. Если при работе программы длина строки будет переполнена, то строка становится пустой. Если длина строки не указывается, то по умолчанию она принимается равной 255 байт (символов). Формат объявления строковых  переменных имеет вид:

var slovo: string[12];   stroka: string; simvol: char;.

Строковый тип является по существу массивом, поэтому доступ к отдельному символу строки можно осуществть по его индексу, например,  если slovo =’ledokol, то slovo[2]=’e.

Для строк возможны следующие действия:

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

- ввод значений строковых переменных с клавиатуры производится с помощью стандарт­ной процедуры read (имя) или readln (имя);

- для задания в строке значения применяется оператор присваивания, например, slovo:='Ledokol'.

Для выполнения разных действий со стро­ками существует набор встроенных функций и процедур, описанных ниже.

Примеры применения этих функций приведены в таблице 7.1.

Т а б л и ц а 7.1 – Примеры работы строковых функций и процедур

Оператор

Результат

Kod:=Ord(‘A’);

Kod=65

Simvol:=Chr(65);

Simvol=’A’

St1:=’Ledokol 5’;  St2:=Copy(St1,5,3);

St2=’kol’

St1:=’Led’;  St2:=’kol’;  St3:=Concat(St1,’o’,St2);

St3=’Ledokol’

St1:=’Ledokol 5’;  N:=Length(St1);

N=9

St1:=’Ledokol 5’; Pod_St2:=’kol’; N:=Pos(Pod_St2,St1);

N=5

St1:=’Ledokol 5’;  Delete (St1, 4, 3);

St1=’Led 5’

St1:=’Ledkol’;  St2:=’o’;  Insert (St2, St1, 4);

St1:=’Ledokol’

Chislo:=8;  Str (Chislo, St);

St=56. Код числа 8.

M:=2;  N:=0;  St:=’8’; {То есть в St содержится код цифры 8, равный 56}  Val (St, N, Cod);   M:=M+N;

M=10

 

Функция Ord (Sim: Char): Longint. Функция возвращает код символа, записанного в символьную переменную Sim.

Функция Chr(Cod: integer): Char. Функция возвращает символ, соответствующий указанному коду.

Функция Copy (St, Poz, N): String. Функция выделяет из строки St подстроку длиной N символов, начиная с позиции Pоz. Здесь Poz и N - целочисленные выражения.

Функция Concat (Stl, St2, . . ,Stn: String): String. Функция выполняет сцепление строк в том порядке в каком они указаны в списке параметров. Результирующая строка не должна превышать 255 байт.

Функция Length (St: String): Integer. Функция вычисляет  длину строки St, то есть количество видимых в ней символов.

Функция Pos (Pod_St, St1: String): Byte. Функция обнаруживает первое появление в строке St1 подстроки Pod_St. Результат имеет целочисленный тип и равен номеру той позиции строки St1, где находится первый символ подстроки Pod_Stl. Если подстрока не найдена, то результат равен нулю.

Процедура Delete (Var St: string, Poz: Integer, N: Integer). Процедура удаляет N символов в строке St, начиная с позиции, определяемой значением параметра Poz. Если значение Poz больше 255, возникает прерывание.

Процедура Insert (Stl: string, Var St2: string, Poz: Integer). Процедура вставляет строку Stl в строку St2, начиная с позиции Poz.

Процедура Str (Chislo: Integer, Var St: string). Процедура преобразовывает целое число, записанное в переменную Chislo в текст, и помещает результат в строку St. То есть в строковую переменную St, вместо цифр записываются их коды. Например, вместо числа 87 записывается коды цифр 8 и 7 равные «56» и «55».

Процедура Val (St: string, Var Chislo, Var Cod: Integer). Процедура преобразовывает значение строковой переменной St, в которой записаны коды цифр  в целое число и помещает результат в переменную Chislo. Значение St не должно содержать незначащих пробелов в начале и в конце. Если во время операции преобразования ошибки не обнаружены, тогда значение целочисленной переменной Cod равно нулю. Если ошибка обнаружена, например, при попытке перевести литерное значение (например, пробел) в цифровое, Cod будет содержать номер позиции первого ошибочного символа, а значение переменной Chislo не будет определено.

Файл или строка называются текстовыми, если в них записаны только коды символов, без указания форматирования.

Для процедур Str и Val в таблице 7.1 приведена форма преобразования целых чисел.

7.1.1 Пример обработки символьной информации

Условие задачи. Ввести символы с клавиатуры. Напечатать символы и их коды, начиная с символа «А» до символа введенного с клавиатуры. Выполнить объединение выводимых символов в строку. Требуемый результат работы программы приведен на рисунке 7.1.


Program Simvoly; Uses Crt; 

Var     Sim: char;     {Символьная переменная}

   Stroka, Str1, Str2: String;  {Строковый тип данных на 256 символов}

   K, N: Integer;

Begin  ClrScr;  Writeln; Stroka:='';  {Строка пустая}

Str1:='  Rezultat =  ';

Write('   Vvedi zaglavnyu lat. bukvu->'); Readln(Sim);

k:=ord(Sim);  {Определяем код (номер) буквы}

For n:=65 to k do

begin                            {Печатаем символы от А до …}

    Write('   ',Chr(n));   {Пробелы записаны, чтобы символы не сливались}

     Stroka:=Stroka+Chr(n); {Собираем символы в строку}

end;

Writeln;  {Начало новой строки}

For n:=ord('A') to (ord(Sim)+5) do Write('  ',ord(n));  {Печать кодов}

Writeln;

Str2:=Concat(Str1,Stroka);   {Объединение строковых переменных}

Writeln('  ', Str2);

Writeln (‘   Kod simvola “1”=’, Ord(‘1’));

readln;  

end.

7.2 Варианты заданий и контрольные задания

 При выполнении заданий помните, что коды цифр от 0 до 9 будут равны соответственно 48..57, а строку следует рассматривать как массив.

1)       Введены 2 строки символов, имеющие несколько одинаковых начальных символов. Определить, какая строка больше, и какая меньше. Для обеих строк определить длину. Объединить строки.

2)       Ввести строку символов, содержащую фамилию и год поступления в институт. Преобразовать год в переменную целого типа, прибавить к ней 4 и напечатать результат « Окончил институт  в . . . году» .

3)       Введена строка символов, содержащая число и день недели. Определить это число прибавить 7 и напечатать результат. Пример, «8 среда» преобразовать в «15 тоже среда».

4)       Введена строка символов, содержащая число длиной 2 байта в двоичной системе. Напечатать оба байта отдельно на разных строках. Найти большую строку.

5)       Введена строка символов, содержащая число длиной один байта в двоичной системе. Поменять полубайты местами.

6)       Введены две строки символов, представляющие числа в двоичной системе длиной один байт. Определить большую строку. Объединить их в третьей строке двумя способами.

7)       Введена строка символов. Посчитать количество пробелов в строке.

8)       Адрес ячейки памяти состоит из двух байт, записанных в одну строку. Выделить оба байта. Найти меньшую строку.

9)       Напечатать 10 символов в цикле, начиная с введенной заглавной латинской буквы.

10)   Введена строка символов. Определить количество слов в строке. Определить слово, имеющее максимальное количество символов.

11)   Ввести заглавную латинскую букву. Напечатать коды символов в цикле, начиная с введенного до символа Y.

12)   Ввести два символа. Напечатать часть латинского алфавита между этими символами в прямом порядке.

13)   Ввести два символа. Напечатать часть латинского алфавита между этими символами в обратном порядке.

14)   Напечатать 10 символов в цикле, начиная с введенного символа в обратном порядке.

15)   Вводится строка символов, включающая цифры. Определить количество цифр в строке.

16)   Ввести строку символов, содержащую фамилию и год рождения. Преобразовать год в переменную целого типа, прибавить 50 и напечатать результат « Юбилей 50 лет будет в . . . году» .

17)   Напечатать коды 10 символов в цикле, начиная с введенной заглавной латинской буквы.

18)   Ввести число от 65 до 76. Вывести на экран 10 символов, начиная с символа имеющего код, равный введенному числу.

19)   Во введенном тексте из трех слов переставить первое слово на последнее место.

20)   Напишите программу обращения «переворачивания»  слова. Если исходное слово "dog", то в результате должно получиться  слово "god".

21)   Напишите программу, которая для любого целого числа К от 16 до 26 выводит фразу "Ему К лет", учитывая согласование между числительным и существительным, то есть "Ему 18 лет" или "Ему 21 год".

22)   Ввести строку символов, содержащую фамилию и год поступления в школу. Преобразовать год в переменную целого типа, прибавить к ней 10 и напечатать результат « Окончил школу  в . . . году».

 Контрольные вопросы

1.        Как записываются символы в память ПК?

2.        Символьные переменные.

3.        Строковые переменные.

4.        Функции для работы со строковыми переменными.

5.        Процедуры для работы со строковыми переменными.

6.        Строковые переменные как массивы.

7.        Сравнение строковых переменных и их длина.


Приложение A
Элементы блок – схем и клавиатура

 

Т а б л и ц а  А.1 - Элементы блок

Обозначение

Назначение

Используется для обозначения начала или окончания алгоритма

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

Отображает функцию обработки данных любого вида. Используется для обозначения операций присваивания

Используется для обозначения заголовка цикла со счетчиком  For

Используется для проверки логического условия  при ветвлении или в циклах While или Repeat

Используется для обозначения подпрограмм.

 

Точка объединения ветвей алгоритма.

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

Клавиатура

Язык Pascal создан для работы в операционной системе DOS. Ниже показано назначение клавиш в Pascal (точнее в DOS).

Inset – изменение формы курсора, переход от вставки к замене символов при печати и наоборот.

Home – перенос курсора в начало строки.

End – перенос курсора в конец строки.

Backspace (Bs) – стирание символа слева от курсора.

Delete – стирание символа над курсором (в windows справа от курсора).

Shift + стрелки перемещения курсора – выделение текста.

Ctrl + Inset – копирование выделенного текста в буфер обмена.

Shift + Inset – вставка содержимого буфера обмена в точку, где находится курсор.

Shift + Delete - копирование выделенного текста в буфер обмена и стирание его с экрана (команда Вырезать).

Alt + Bs – возврат стертых фрагментов текста, возможно многократное нажатие.


Приложение Б
Структура программы и встроенные функции

Т а б л и ц а  Б.1 – Структура простейшей программы

Часть

Раздел

Обозначение в программе

Описа-тельная

Заголовок программы

Program  Primer;

Объявление меток

Label   vyhod, metka1;

Объявление констант

Const  a=3.5; b=5;

Объявление переменных

Var  y, z: real; i, n: integer;

Исполни-тельная

Начало исполнительной части

Begin

{Ввод исходных данных};

{Обработка исходных данных};

{Вывод результата};

Конец программы

End.

Т а б л и ц а  Б.2 - Некоторые встроенные функции языка Pascal

Функция

Запись на Pascal

SinX или CosX, (x задается в радианах)

Sin(x) или Cos(x)

Arctg y

Arctan(y)

LnX – значение натурального логарифма для x >0

Ln(x)

ex или exp(x)

Exp(x)

 - абсолютное значение величины х

Abs(x)

, для x>=0

Sqrt(x)

х2

Sqr(x)

Целая часть числа х, получаемая путем отбрасывания дробной части. Результат целого типа longint.

Trunc(x)

Целая часть числа х, получаемая путем отбрасывания дробной части. Результат типа Real.

Int(x)

Целая часть числа х, получаемая путем округления до ближайшего целого. Результат целого типа longint.

Round(x)

Случайное целое число от 0 до х-1

Random(x)

Случайное число диапазона (1> x ≥ 0)

Random

 

Для возведения в степень, используют тождество xY = eYLnХ, то есть применяют выражение X:=exp(Y*ln(X)).

Для вычисления десятичного логарифма используется выражение Lg(x)=Ln(x)/ln(10).

Тригонометрические функции не указанные в таблице, вычисляются через Cos и  Sin по известным тригонометрическим формулам.


Приложение В
Основные элементы языка Turbo Pascal

 

Т а б л и ц а  В.1 – Список зарезервированных слов

Absolute

Downto

In

Or

Then

And

Else

Inherited

Packed

To

Array

End

Inline

Private

Type

Asm

External

Interface

Procedure

Unit

Assembler

Far

Interrupt

Program

Until

Begin

File

Label

Public

Uses

Case

For

Mod

Record

Var

Const

Forward

Near

Repeat

Virtual

Constructor

Function

Nil

Set

While

Destructor

Goto

Not

Shl

With

Div

If

Object

Shr

Xor

Do

Implementation

Of

String

 

Т а б л и ц а  В.2 – Некоторые типы данных

Целые числа

Действительные числа

Тип

Диапазон значений

Тип

Диапазон значений

shortint

-128 ¸ 127

real

±(2.9E-39 ¸1.7E+38)

integer

-32768 ¸ 32767

single

±(1.5E-45 ¸3.4E+38)

longint

-2147483648 ¸ 2147483647

double

±(5.0E-324 ¸1.7E+308)

Символы

Строки

Char

Согласно с таблицей кодов

String

До 256 символов

Т а б л и ц а  B.3 – Перечень операций языка

Операции

Действие

Тип результата

 

 

Арифмети-ческие

+, -, *

Сложение, вычитание, умножение

Целый или вещественный

 

/

Деление

Вещественный

 

Div

Частное при целочисленном делении

Целый

 

Mod

Остаток при целочисленном делении

Целый

 

Операции сравнения

=

Равенство

 

Логический (false, true)

 

<> 

Неравенство

 

Меньше

 

Больше

 

<=

Меньше или равно

 

>=

Больше или равно

 

Логи-
ческие

Not

Отрицание

 

Логический (false, true)

 

Or

Дизъюнкция (ИЛИ)

 

And

Конъюнкция (И)

 

Xor

Исключающее ИЛИ


Приложение Г

Написание русских букв латинским алфавитом

 

В Pascal буквы русских слов рекомендуется заменять с помощью стандартного кода Tran slit, показанного в таблице. Этот код также используется в электронной почте, поскольку кириллицей оснащены далеко не все компьютеры в других странах. В Internet существует множество бесплатных автоматических перекодировщиков Рус – Lat  и  Lat - Рус.

Т а б л и ц а  Г.1

Алфавит

Примеры

Алфавит

Примеры

рус.

лат.

рус.

лат.

а

a

Абай  à  Abay

р

r

Раушан à Raushan  

б

b

Аманбаев àAmanbayev

с

s

Сайран   à Sayran

в

v

Валерий  à Valeriy

т

t

Татьяна  à Tatyana

г

g

Галия   à Galiya

у

u

Улжан   à Ulzhan

д

d

Джубаны àDzhubany

ф

f

Фёдор  à Fyodor

е

e, уe

Ержан  à Erzhan

х

Kh, h

Хамит  à Khamit

ё

yo

Соловьёв à Solovyov

ц

ts

Цезарь  à Tsezar

ж

zh

Жанара  àZhanara

ч

ch

Чингис  à Chingis

з

z

Зарема   à Zarema

ш

sh

Шынар  à Shynar

и

i

Иванов   à Ivanov

щ

chsh

Щукин  à Chshukin

й

y

Алексей  à Aleksey

ъ

Апост
роф

Съезд   à S'ezd

к

k

Кенжегуль àKenzhegul

ы

y

Ырысжан à Yryszhan

л

l

Людмила  à Lyudmila

ь

Опус-
кается

Цезарь  à Tsezar

м

m

Мальков à Malkov

э

e

Эльмира  à Elmira

н

n

Италия   à Italiya

ю

yu

Юрий  à Yuriy

о

o

Ольга   à  Olga  

я

ya

Январь  à Yanvar

п

p

Петров  à  Petrov

 

 

 

 

Особые случаи

 

Сочетание букв ЫЙ и ЙЫ

Кайырхан   à  Kaiyrkhan

Беспалый   à   Bespalyi

Сочетание гласной буквы и буквы Е

Тулеев        à   Tuleyev

Галиев      à   Galiyev

 


Приложение Д

Часто встречающиеся ошибки в программах

 

Если компилятор обнаружит синтаксическую ошибку, то он устанавливает курсор на ошибку и печатает описание ошибки.

Т а б л и ц а  Д.1

Описание  ошибки

Причина ошибки

Error 3: Unknown identifier.

Неизвестный тип переменной. Возникает, если переменная не описана в разделе  Var или неверно написано имя переменной. Часто возникает при пропуске символа «*» в математических выражениях.

Error 8: String constant exceeds line.

В операторе вывода пропущен один из двух апострофов.

Error  85: “;” expected.

В указанном курсором месте, возможно, не достает указанного символа. Причины:  пропущен символ ";"  в конце предыдущего выражения, количество открывающих операторных скобок begin не равно количеству закрывающих операторных скобок end. Прежде чем исправлять следует проверить алгоритм.

Error 94: “.” expected.

В указанном курсором месте не достает символа указания конца файла. Количество слов begin возможно меньше, чем слов end.

Error 89: “)” expected.

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

Error 205: Floating point over low.

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

Error 26: Type mistakes.

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

Error 200: Division by zero.

Курсор указывает на строку с ошибкой при попытке деления на ноль. Измените данные.

Error 106: Invalid numeric format.

Курсор указывает на строку с ошибкой. Возможно, вместо числа был введен символ.

Error 35: Label identifier expected.

Пропущена метка после оператора Goto.

Error 82: Undefined label in preceding statement.

Метка не описана в разделе Label.


Приложение Е

Коды ASCII некоторых символов

 

В приложении приведены американские стандартные коды ASCII символов имеющие коды от 47 до 126.  Для русских букв существует в DOS несколько кодировок, причем для Windows создана новая кодировка. Поэтому существуют определенные трудности для вывода русских букв (кириллицы) на экран или на бумагу.

Т а  б л и ц а К.1

Код

Символ

Код

Символ

Код

Символ

Код

Символ

47

/

67

C

87

W

107

k

48

0

68

D

88

X

108

l

49

1

69

E

89

Y

109

m

50

2

70

F

90

Z

110

n

51

3

71

G

91

[

111

o

52

4

72

H

92

\

112

p

53

5

73

I

93

]

113

q

54

6

74

J

94

^

114

r

55

7

75

K

95

_

115

s

56

8

76

L

96

 

116

t

57

9

77

M

97

a

117

u

58

:

78

N

98

b

118

v

59

;

79

O

99

c

119

w

60

80

P

100

d

120

x

61

=

81

Q

101

e

121

y

62

82

R

102

f

122

z

63

?

83

S

103

g

123

{

64

@

84

T

104

h

124

|

65

A

85

U

105

i

125

}

66

B

86

V

106

j

126

~

 


Список литературы

 

1.     Аляев Ю.А., Козлов О.А. Алгоритмизация и языки программирования Pascal, C++, Visual Basic: Учебно-справочное пособие. – М.: Финансы и статистика, 2004.

2.     Культин Н.Б. Turbo Pascal в задачах и примерах. – СПб.- БХВ – Петербург, 2005.

3.     Фаронов В.В. Turbo Pascal 7.0. Начальный курс: Учебное пособие.- М: Нолидж, 1999.

4.     http:/info/aipet.kz/Правила пользования информационными ресурсами/ Таблица соответствия букв кириллицы и букв латинского алфавита.

 

Содержание
Введение

 3

1 Лабораторная работа 1. Создание линейного алгоритма

 3

1.1 Составление линейного алгоритма и программы

 3

1.2 Варианты заданий и контрольные вопросы

 6

2 Лабораторная работа 2. Разветвленный алгоритм. Повторения

 9

2.1 Создание разветвленного алгоритма и программы

 9

2.2 Варианты заданий и контрольные вопросы

11

3 Лабораторная работа 3. Алгоритм с оператором выбора

13

3.1 Создание алгоритма с оператором выбора

14

3.2 Задания и контрольные вопросы

14

4 Лабораторная работа 4. Циклические алгоритмы

15

4.1 Создание циклических алгоритмов и программ

15

4.2 Задания и контрольные вопросы

17

5 Лабораторная работа 5. Применение циклических алгоритмов

19

5.1 Применение циклов

19

5.2 Контрольные вопросы

20

6 Лабораторная работа 6. Подпрограмма – функция

21

6.1 Создание подпрограмм - функций

21

6.2 Задания и контрольные вопросы

23

7 Лабораторная работа 7. Символьная и строковая информации

24

7.1 Обработка символов

24

7.2 Варианты заданий и контрольные задания

27

Приложение A. Элементы блок-схем и клавиатура

29

Приложение Б. Структура программы и встроенные функции

30

Приложение В. Основные элементы языка Turbo Pascal

31

Приложение Г. Написание русских букв латинским алфавитом

32

Приложение Д. Часто встречающиеся ошибки в программах

33

Приложение Е. Коды ASCII некоторых символов

34

Список литературы

35