47943

Информатика в школе

Конспект

Информатика, кибернетика и программирование

Процедуры вывода Write и WriteLn. читается – райт и райтлайн; переводится пиши и пиши строку С помощью операторов Write и WriteLn изображают на экране ту или иную информацию состоящую из символов. Правила записи и выполнения оператора WriteLn те же что и у Write с одним исключением – после его выполнения следующий оператор Write или WriteLn печатает свою информацию с начала следующей строки а после выполнения оператора Write продолжает печатать в той...

Русский

2013-12-13

382.5 KB

12 чел.

Введение.

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

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

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

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

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

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

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

Если программа курса информатики для 10-11 классов рассчитана на 68 учебных часов, то для знакомства с языком программирования этот материал вполне достаточный. При 132 часах эту работу можно дополнить такими темами, как "Массивы", "Работа со строковыми переменными" и т.д.      


Процедуры вывода Write и WriteLn .

(читается – "райт" и "райт'лайн; переводится -  "пиши" и "пиши строку")

       С помощью операторов Write и WriteLn изображают на экране ту или иную информацию, состоящую из символов.

То, что нужно изобразить, заключают в круглые скобки.

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

Примеры:

Как пишем обращение  Что видим в результате на экране

к процедуре

 

Write(-500)  -500

Write(2*2-1)  3

Write('Хорошо!')  Хорошо!

Один оператор Write может выводить сразу несколько элементов. Элементы нужно отделять друг от друга запятыми. Все элементы выводятся в одну строку вплотную друг к другу. Если вся информация не умещается в одну строку, то неуместившаяся часть автоматически выводится с начала следующей строки. На экране отображаются только те пробелы, которые встречаются внутри кавычек.

Пример:

Как пишем обращение                      Что видим в результате на экране

к процедуре                                       

                                                     

Write('Это',4+4,'кошек')               Это8кошек

Write('Это ',4+4,' кошек')                Это 8 кошек

Write('16+17=',16+17)                       16+17=33

Write (3+2,' ',4)                 5 4

Write(3+2,4) {Это два числа 5 и 4}             54

Задача 1.

Изобразить на листке бумаги в клетку (один символ – одна клетка), что напечатает оператор:

Write('12','5 + 1',5 + 1,' = ',120+21)

Решение.

      125 + 16 = 141

 

Программы на Паскале содержат "знаки препинания": служебные слова BEGIN и END, точка с запятой и точка.

BEGIN (читается – "бигин"; переводится – "начало") ставят в начале программы, чтобы было видно, откуда она начинается. END (читается – "энд"; переводится – "конец") с точкой ставится в конце программы, чтобы было видно, где она кончается. Точкой с запятой отделяют операторы друг от друга. Служебные слова BEGIN и END от операторов точкой с запятой не отделяются.


Пример (первая программа на Паскале):

Программа         Что видим в результате на экране

 

BEGIN                                     

   Write('Начали!');  Начали!95

   Write(8+1);                          

   Write(5)

END.

 

 

Программу можно записывать и в строчку, и в столбик. Служебные слова и операторы могут быть записаны любыми буквами (заглавными или строчными, а также любым шрифтом).

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

Пример:                                                               

Программа                                                             Что видим в результате на экране

                                         

BEGIN                                                               

   Write('Начали!'); {Это приказ печатать!}        Начали!95

   Write(8+1);                                                    

   Write(5)                           

END.                           

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

Примеры:

Программа                                  Что видим в результате на экране

BEGIN Write('Ама'); Write('зонка') END.    Амазонка

BEGIN Write('Ама'); WriteLn('зонка') END.    Амазонка

BEGIN WriteLn('Ама'); Write('зонка') END.        Ама

 зонка

BEGIN WriteLn('Ама'); WriteLn('зонка') END.   Ама

                                                                                зонка

После выполнения Write курсор остается в той же строке, а после выполнения WriteLn курсор прыгает в начало следующей строки, поэтому оператор WriteLn можно использовать просто для перевода курсора в начало следующей строки. Для этого достаточно написать одно слово WriteLn, без скобок.

Задача 2.

       Что напечатает программа?

BEGIN  

    Write(1992);

    WriteLn('    Мы начинаем!');

    WriteLn(6*8);

    WriteLn;

    WriteLn('Шестью шесть '  , 6*6,'.Арифметика:,(6+4)*3)

END.


Решение.

  1.  Мы начинаем!

48

Шестью шесть  36.Арифметика:30

Оператор присваивания.

 Оператор присваивания состоит из знака присваивания :=, слева от которого пишется переменная, а справа – число, переменная или выражение. При выполнении оператора присваивания компьютер "в уме" вычисляет правую часть и присваивает вычисленное значение переменной, стоящей в левой части.

Пример:

Фрагмент программы Что будет напечатано в результате

                                                 выполнения данного фрагмента

BEGIN

    а:=2*3+4;

    b:=а;                                      y=21

    y:=a+b+1;

    Write('y=',y)

END.

Замечание

        Если переменная принимает новое значение, то старое значение автоматически стирается.

Задача 3.

       Что напечатает компьютер в результате выполнения следующего фрагмента программы?

BEGIN

   t:=9;

   k:=1+2;

   s:=2*k;

   t:=6-s;

   Write('t=',t)

END.

Ответ.t=0

Описание переменных.

Описание переменных начинается со служебного слова VAR (читается – "вар"; переводится – "переменная"), которое записывается выше BEGIN . После VAR записываются имена всех переменных, встречающихся в программе с указанием через двоеточие типа значений, которые каждая переменная имеет право принимать.

Для чего описывают переменные?

Компьютер отводит в памяти места (ячейки) под переменные величины, упомянутые в программе. Разным типам значений переменных компьютер отводит разные по объёму ячейки.


Типы значений переменных.

тип

читается

переводится

диапазон принимаемых значений

объём памяти для одной переменной

Integer

интеджер

целый

целые числа от –32768 до 32 767

2 байта

LongInt

лонг'инт

длинное целое

целые числа от –2147483648 до 2147483 647

4 байта

Byte

байт

целые числа от 0 до 255

1 байт

Real

риэл

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

целые и дробные числа

6 байт

 

Чтобы заставить Паскаль выводить вещественные числа в обычном, понятном виде, нужно в оператор вывода WriteLn дописать формат численного значения переменной: WriteLn(x:n:m), где n – натуральное число, показывающее сколько символов, включая целую часть, дробную часть, знак и десятичную точку, должно занимать всё изображение числа, m – натуральное число, показывающее количество символов после десятичной точки.

Пример:

Программа Что видим в результате на экране

VAR a,b : Integer; с= 1.17

        c : Real;

BEGIN

        a:=6;

        b:=7;

        c:=b/a;

       WriteLn('c=',c:5:2)

END.

Самостоятельная работа №1 по теме "Процедуры вывода. Оператор присваивания. Описание переменных".

I ВАРИАНТ

1.Что выведет на экран                                                    следующая программа?

    BEGIN      

            Write('Я учусь в ');

            Write(2*3+5);

            WriteLn(' классе.');

            Write('Мне',16,'лет.');  

            WriteLn;      

            WriteLn('Я знаю, что ','2*2=');

            Write((6*6-12)/6)

   END.

2. Какое значение будет иметь переменная а

   после выполнения следующих операторов

    присваивания:

     а:=5;

     b:=а+4;

     a:=а+b;

     а:=а+b+а*b;

3. Написать программу, которая вычисляет

   переменную d по формуле              

       

   и выводит результат на экран,

   если а=2, b=5.

II ВАРИАНТ

1. Что выведет на экран                                                                                             

    следующая программа?

    BEGIN      

            Write('Мне ');

            Write(3*3+7);

            WriteLn(' лет.');

            Write('Я учусь в',11,'классе.');  

            WriteLn;      

            WriteLn('Неправда, что ','2*2=');

            Write((7*6-22)/4)

   END.

2. Какое значение будет иметь переменная b

   после выполнения следующих операторов

    присваивания:

     а:=3;

     b:=а+9;

     b:=а+b;

     b:=а-b+b/a;

3. Написать программу, которая вычисляет

   переменную c по формуле

        

   и выводит результат на экран,

   если а=6, b=4.

Устные упражнения.     

  1.  Что напечатает следующая программа? Верно ли описана переменная f?

VAR f : Integer;

BEGIN

       f:=30;

       f:=f+4;

      WriteLn(f)

END.

     

  1.  Что будет напечатано при выполнении следующих фрагментов программ:

     а) a:=100; a:=10*a+1; WriteLn(a);

б) a:=100; a:=-a; WriteLn(a);

в) a:=10; b:=25; a:=b-a; b:=a-b; WriteLn(a,' ',b);

Имена переменных.

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

Примеры правильной записи имён:

f

s

velichina

xxx

polnaja_summa

tri_pius_dva

s25

k1

_r1

Примеры неправильной записи имён:

ж

ширина

polnaja summa

2as

max*y

Запись арифметических выражений.

Действие

Результат

Смысл

2+3

5

Плюс

4-1

3

Минус

2*3

6

Умножить

10/5

2

Разделить

17div5

3

Целочисленное деление

17mod5

2

Остаток от целочисленного деления

Примеры:

Арифметическое         Запись арифметического

выражение                   выражения в программе

1) ab+cd a*b+c*d

2) a(b+c)                          a*(b+c)     

                                          

3)   a+1 (a+1)/(b+1)

     b+1

4)   1 1/(a*b)

     ab

 Замечание

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

Задача 4.

      Как правильно записать арифметическое выражение в программе?

Решение.

Замечание

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

Запись математических функций.

Действие

Результат

Смысл

Sqr(5)

25

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

Sqrt(25)

5

Корень квадратный

Pi

3.1415...

Число "пи"

Frac(23.192)

0.192

Дробная часть числа

Int(3.98)

3.0

Целая часть числа

Round(5.8)

6

Округление

Abs(-20)

20

Модуль числа

Random

0.73088

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

Random(200)

106

Случайное целое число из диапазона (0-199)

Примеры:

Действия Результыты

Sqr(2+1) 9

10+Sqr(2+1) 19

1+Abs(5-8) 4

Sqr(2)+Sqrt(35+1) 10

Sqrt(8+Int(41.5)) 7

21div(Round(Pi+1)) 5

Задача 5.

     Что напечатает данная программа?

VAR a,b : Integer;

BEGIN

      a:=(Sqrt(16)+1)*(20-Sqr(2*2))-11;

      b:=11div(a-4);

     WriteLn(Sqr(a)+b-1)

End.

Ответ.82 

Задача 6.

       Написать программу для вычисления площади основания и объёма спичечной коробки, если известны её размеры: высота – 12.41 см., ширина – 8 см., толщина – 5 см.

Программа.

VAR shirina,tol,S : Byte;

        visota,V : Real;

BEGIN

   visota:=12.41;

   shirina:=8;

   tol:=5;

   S:= shirina* tol;

   V:=S*visota;

   Write('S=',S,'V=',V:10:3)

END.

Оператор ввода данных ReadLn.

(читается – "рид'лайн; переводится – "читай строку")

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

Пример.

VAR a,b : Integer;

BEGIN

     ReadLn(a,b);

     WriteLn(a+b)

END.

        Эта программа на операторе ReadLn остановиться и будет ждать. Человек должен набрать на клавиатуре первое число (значение переменной a), затем нажать клавишу пробела, затем набрать второе число (значение переменной b) и нажать клавишу Enter. Паскаль воспринимает нажатие пробела как сигнал человека о том, что закончен набор на клавиатуре одного числа и сейчас начнётся набор другого. После набора на клавиатуре последнего числа необходимо нажать клавишу

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

Замечание.

       Оператор ReadLn можно писать и без скобок, просто так: ReadLn. Компьютер остановиться и будет ждать нажатия клавиши Enter. Таким образом создаются паузы в процессе выполнения программы.

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

Пример.

VAR a,b : Integer;

 BEGIN

     WriteLn('Введите два целых числа');

     ReadLn(a,b);

     WriteLn(a+b)

END.

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

Значением переменной может быть не только число, но и текст. Оператор a:='Привет всем!' записывает в ячейку a строку Привет всем! Оператор WriteLn(a) выведет на экран текст Привет всем!

Описание VAR a:String говорит о том, что переменная а обязана иметь текстовое значение.

(читается – "стринг"; переводится – "строка")

Строковую переменную можно задавать не только оператором присваивания, но и оператором ReadLn.

Пример.

VAR а : String;

BEGIN

    WriteLn('Введите какое-нибудь слово');

    ReadLn(a);

    WriteLn('Вы ввели слово ',а)

END.

Задача7.

       Написать программу, которая осуществляла бы такой диалог человека с компьютером:

Компьютер выводит на экран:

Здравствуй, я компьютер, а тебя как зовут?

Человек вводит с клавиатуры:

имя

Компьютер выводит на экран:

Очень приятно, …. Сколько тебе лет?

Человек вводит с клавиатуры:

возраст

Компьютер выводит на экран:

Ого! Целых … лет! Ты уже совсем взрослый!

Программа.

VAR a : String;

        b : Byte;

BEGIN

       WriteLn('Здравствуй, я компьютер, а тебя как зовут?');

        ReadLn(a);

        WriteLn('Очень приятно, ',а,'. Сколько тебе лет?');

        ReadLn(b);

        WriteLn(' Ого! Целых ',b,' лет! Ты уже совсем взрослый!')

END.

Замечание

        При вводе одним оператором ReadLn нескольких строковых переменных (или строковых переменных вместе с числовыми) нужно заканчивать ввод каждой переменной нажатием клавиши Enter.

Разветвляющиеся программы.

 

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

If условие then оператор_1

                 else оператор_2;

(If читается – "иф"; переводится – "если"; then читается "зэн"; переводится – "то"; else читается "элз"; переводится – "иначе")

Работает этот оператор так – сначала проверяется условие, и, если оно верно, выполняется оператор_1, в противном случае выполняется оператор_2.

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

знак

отношение

=

равно

<

меньше

<=

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

>

больше

>=

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

<>

не равно

Задача 8.

        Составить программу для следующей задачи: Компьютер должен перемножить два числа – 167 и 121. Если их произведение превышает 2000, то компьютер должен напечатать текст Произведение большое, иначе – текст Произведение маленькое. После этого компьютер в любом случае должен напечатать само произведение.

Программа.

VAR a,b,с : Integer;

BEGIN

    a:=167;

    b:=121;

    c:=a*b;

    If c>2000 then WriteLn('Произведение большое');

                     else WriteLn('Произведение маленькое');

    WriteLn(с)

END.

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

В Паскале есть и краткая форма условного оператора, которая просто позволяет выполнять заданный оператор, если выполнено условие:

If условие then оператор_1;

Если условие верно, то выполняется оператор_1, иначе выполняться будет следующий за условным оператор.

Задача 9.

        Составить программу для следующей задачи: В компьютер вводится слово. Компьютер должен просто распечатать его. Однако, если введённым словом будет "колхозник", то компьютер должен вместо него напечатать слово "фермер".

Решение.

VAR a : String;

BEGIN

     ReadLn(a);

     If a='колхозник' then a:='фермер';

     WriteLn(a)

END.

Составной оператор.

Часто бывает так, что в случае выполнения некоторого условия надо осуществить несколько действий, а не одно, как это предусмотрено в условном операторе. В этом случае используется составной оператор, который выглядит следующим образом:

begin

   оператор_1

   оператор_2

        .

        .

   оператор_n

end;

Зарезервированные слова Begin и End называются операторными скобками. Между ними может быть сколько угодно других операторов, но считается всё это одним составным оператором.

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

Задача 10.

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

Программа.  

VAR otvet : String;

        a,b : Integer;          

BEGIN 

  WriteLN(' Чем займемся – сложением или возведением в квадрат?');

   ReadLn(Otvet);

   If Otvet='сложением' then

                                              begin

                                                    Writeln('Введите два числа');

                                                    ReadLn(a,b);

                                                    WriteLn('Сумма равна',a+b)

                                               end

                                       else

                                               begin

                                                     WriteLn('Введите число');

                                                      ReadLn(a);

                                                     WriteLn('Квадрат числа равен',a*a)

                                               end

END.

Задача 11.

       Составить программу для решения квадратного уравнения ax2+bx+c=0, где b не равно 0,

c не равно 0.

Программа.

    

Var a,b,c,x,x1,x2,D:real;

BEGIN

       WriteLn('Введите a,b,c');

       ReadLn(a,b,c);

       D:=b*b-4*a*c;

       if D<0 then WriteLn('корней нет')

                  else if D=0 then begin

                                                 x:=-b/(2*a);

                                                 WriteLn('x=',x:6:2)

                                             end

                                     else  begin

                                                 x1:=(-b+Sqrt(D))/(2*a);

                                                 x2:=(-b-Sqrt(D))/(2*a);

                                                 WriteLn('x1=',x1:6:2);

                                                 WriteLn('x2=',x2:6:2)

                                      end;

       ReadLn

END.      

Вложенные операторы If. Сложное условие в операторе. Логические операции.

В операторе If после слова then и else может стоять любой оператор Паскаля, в том числе и еще один If.

Задача 12.

       Составить программу для решения следующей задачи: В компьютер вводится число. Если оно находится в интервале от  28 до 30, то напечатать текст Попал, иначе – Не попал.

Программа.

VAR а : Real;

 BEGIN

    WriteLn('Введите число');

     ReadLn(a);

     If a>28 then  If a<30 then WriteLn('Попал')

                                       else WriteLn('Не попал');

                 else WriteLn('Не попал')

END.

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

Чтобы программа со вложенными друг в друга If была короче и понятнее, можно использовать только один If, применяя логические операции AND, OR и NOT.

AND (читается – "энд"; переводится – "и"), поставленный между двумя условиями, говорит о том, что должны выполняться сразу оба эти условия.

Решение Задачи 11 с применением логической операции AND.

VAR а : Real;

BEGIN

    WriteLn('Введите число');

     ReadLn(a);

     If (a>28) AND (a<30) then WriteLn('Попал')

                                         else WriteLn('Не попал')

END.

OR (читается – "о"; переводится – "или"), поставленный между двумя условиями, говорит о том, что достаточно, если будет выполняться хотя бы одно из них.

NOT (читается – "нот"; переводится – "не"), поставленный перед условием, говорит о том, что условие не должно выполняться.

Примеры:

Фрагменты программ Результаты

a:=8; b:=6; If (a>b) AND (b>7) then k:=1 else k:=0 k=0

a:=8; b:=6; If (a>b) OR (b>7)    then k:=1 else k:=0 k=1

a:=8; b:=6; If (a<b) OR (b>7)    then k:=1 else k:=0 k=0

a:=8; b:=6; If NOT (a=8)           then k:=1 else k:=0 k=0

Внутри скобок можно писать не только простые, но и сложные условия. Например, фрагмент

If NOT ((a>2) AND (b>3)) then… можно перевести так: Если неправда, что одновременно верны два условия a>2 и b>3, то …

Символьный тип данных.

VAR а,b : Char;          (читается – "кэр", переводится – "символ")

Это описание означает, что переменные а и b имеют право принимать значения любых символов, имеющихся на клавиатуре. Например:   а:='л'; b:='+';

При вводе нескольких символов одним оператором ReadLn все символы набираются на клавиатуре подряд без пробелов.

Задача 13.

        Написать программу, переворачивающую любое трёхбуквенное слово, введённое человеком с клавиатуры.

Программа.

VAR a1,a2,a3 : Char;

BEGIN

     ReadLn(a1,a2,a3);

     WriteLn(a3,a2,a1)

END.   

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

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

Этот оператор называется оператором выбора и имеет следующий вид:

case выражение of

      список_значений_1 : оператор_1;

      список_значений_2 : оператор_2;

  …

      список_значений_n : оператор_n;

      else оператор;

end;

Здесь между зарезервированными словами case и of находится выражение, принимающее значение, которое может присутствовать в одном из списков значений, находящихся слева от двоеточий. Ветвь else, отвечающая всем неперечисленным значениям выражения, необязательна. При выполнении данного оператора вначале вычисляется значение выражения. Затем выбирается тот список значений, в котором находится полученное значение, и выполняется соответствующий ему оператор. Если значение выражения отсутствует в списках значений, ни один из вариантов выполняться не будет. В этом случае выполняется ветвь else оператора case или, если эта ветвь отсутствует, следующий за case оператор.

Замечание.

        Переменная, стоящая после слова case, должна быть так называемого порядкового типа. Пока мы знаем 3 типа, относящихся к порядковым, - это Integer, LongInt и Char.

Задача 14.

       Написать программу, спрашивающую у ученика его отметку и реагирующую на неё подходящим текстом.

Программа.

VAR otmetka : Integer;

BEGIN

   WriteLn('Какую отметку ты получил сегодня?');

    ReadLn(otmetka);

    case otmetka of

        1,2 : WriteLn('Кошмар!');

        3    : WriteLn('Неважно');

        4    : WriteLn('Неплохо');

        5    : WriteLn('Отлично');

        else  WriteLn('Таких отметок не бывает');

    end

END.

 Замечание.

        Конструкция 12..16 обозначает то же, что и 12, 13, 14, 15, 16 и называется диапазоном. Такая конструкция служит для сокращения записи.

Самостоятельная работа №3 по теме "Разветвляющиеся программы".

I ВАРИАНТ

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

  1.  Написать программу, которая просит ввести с клавиатуры число x и выводит на экран результат b, который вычисляется по формуле:

 

-1

 

  1.  Написать программу, которая просит ввести с клавиатуры номер дня недели и выводит на

     экран сообщение о том, какой сегодня день – рабочий или выходной.

      

II ВАРИАНТ

  1.  Написать программу, которая просит ввести с клавиатуры два числа и выводит на экран

     минимальное из этих чисел.

  1.  Написать программу, которая просит ввести с клавиатуры число и выводит на экран

     результат c, который вычисляется по формуле:

 

-,

 

3*.  Написать программу, которая просит ввести с клавиатуры число, символ арифметического            

      действия (+,-,*,/) и еще одно число и выводит на экран результат полученного выражения.


 Циклические программы.

Цикл представляет собой последовательность операторов, которая выполняется неоднократно.

В языке программирования Паскаль имеется три разновидности цикла:

  •  цикл с предусловием (цикл "пока" – while);

  •  цикл с постусловием (цикл "до тех пор, пока" – repeatuntil);

  •  цикл со счётчиком (цикл "для" – forto/downto);

Цикл с предусловием.

Цикл с предусловием имеет вид:

While условие do оператор;

(While: читается – "вайл"; переводится – "пока"; do: читается – "ду"; переводится – "делай".)

  Работает оператор while так:

Сначала компьютер проверяет истинность условия, стоящего после слова while. Если условие истинно, то выполняется оператор, стоящий после do. Затем снова проверяется истинность условия и в случае истинности снова выполняется этот оператор и т.д. Если условие ложно, то оператор while прекращает свою работу и компьютер переходит к выполнению следующего оператора.

Оператор, стоящий после do называется телом цикла. Телом цикла может быть и составной оператор, т.е. группа операторов, заключённая в операторные скобки begin...end .

 

Задача 15.

Составить программу с использованием оператора while для вычисления квадратных корней из чисел 900, 893, 866 и т.д. до тех пор,  пока это можно делать.

Программа.

Var a:Real;

BEGIN

   a:=900;

   while a>=0 do begin

                                WriteLn('Число=',a:5:0,'  Корень=',Sqrt(a):7:2);

                                a:=a-3;

                   end;

    ReadLn

END.

Цикл с постусловием.

Цикл с постусловием имеет вид:

Repeat оператор, оператор, …, оператор Until условие;

(Repeat Until условие: читается – "ри'пит…ан'тил"; переводится – "повторяй… до тех пор, пока не выполняется условие.)

  Работает оператор repeat так:

Сначала компьютер по очереди выполняет операторы, стоящие после слова repeat, пока не дойдёт до слова until. Если условие ложно, то компьютер снова по очереди выполняет эти операторы и снова проверяет истинность условия и т.д. Если условие оказывается истинным, то работа оператора repeat прекращается и компьютер переходит к выполнению следующего по порядку оператора.

Задача 16.

Составить программу с использованием оператора repeat  для вычисления квадратных корней из чисел 900, 893, 866 и т.д. до тех пор,  пока это можно делать.

Программа.

Var a:Real;

BEGIN

   a:=900;

   repeat

        WriteLn('Число=',a:5:0,'  Корень=',Sqrt(a):7:2);

        a:=a-3;

   until a<0;

   ReadLn

END.

Отличия операторов repeat и while.

  •  Компьютер выходит из цикла оператора repeat тогда, когда условие истинно, а из цикла оператора while – когда условие ложно;

  •  while может ни разу не выполнить оператор, стоящий после do; repeat же хотя бы раз операторы, стоящие между repeat и until выполнит.

  •  Если тело цикла содержит несколько операторов, то в цикле while, в отличие от цикла repeat, необходимо использовать операторные скобки begin ...end.

Цикл со счётчиком.

Цикл со счётчиком имеет следующий вид:

For имя:=выражение_1 to выражение_2 do оператор;

имя –это имя произвольной переменной порядкового типа, называемой переменной цикла (или его счётчиком);

выражение_1 и выражение_2 – это произвольные выражения порядкового типа.

(For: читается – "фо"; переводится – "для"; to: читается – "ту"; переводится – "до"; do: читается – "ду"; переводится – "делай".)

Конструкция For i:=1 to 200 do ... переводится так: для i, изменяющегося от 1 до 200, делай оператор, стоящий после слова do.

Цикл For используют тогда, когда точно знают, сколько раз должно быть выполнено тело цикла.

Оператор, стоящий после do может быть и составным.

Работает оператор For так:

Прежде всего вычисляется выражение_1, и переменной цикла (пусть это будет i) присваивается его значение. Затем вычисляется выражение_2 и сравнивается с i. Если i>выражение_2, то оператор For завершает свою работу, так ничего и не сделав. В противном случае выполняется оператор, стоящий после do. После выполнения этого оператора значение i увеличивается на единицу и снова сравнивается с выражение_2. Если i>выражение_2, то оператор For завершает свою работу, иначе снова выполняется оператор, стоящий после do, снова значение i

увеличивается на единицу и т.д.

 

           Оператор For позволяет не только увеличивать, но и уменьшать переменную цикла. Для этого вместо to нужно писать downto.

(читается – "даунту"; переводится – "вниз до".)

 

Задача  17.

            Написать программу с использованием оператора For, которая печатает на экране:

Прямой счёт:-4 –3 –2 –1 0 1 2 3 4 Обратный счёт:4 3 2 1 0 –1 –2 –3 –4 Конец счёта.

Программа.

Var i:Integer;

BEGIN

  Write('Прямой счёт:');

  For i:=-4 to 4 do Write(i,' ');

  Write('Обратный счёт:');

  For i:=4 to -4 downto Write(i,' ');

  Write('Конец счёта.');

  ReadLn;

END.

Элементарная техника программирования.

Вычислительная циклическая программа.

Задача.

Во дворце N залов. Известны длина и ширина каждого зала. Вычислить площадь пола  каждого зала.

Программа.

Var i,dlina,shirina,N,S:Integer;

BEGIN

   WriteLn('Введите число залов');

   ReadLn(N);

   For i:=1 to N do begin

                                   WriteLn('Ведите длину и ширину зала');

                                   ReadLn(dlina,shirina);

                                   S:= dlina*shirina;

                                   WriteLn('Площадь пола=',S)

                              end

END.

Счётчики.

Счётчик – это переменна я величина, в которой что–нибудь подсчитывается.

Задача.

В компьютер вводится  200 чисел. Компьютер должен подсчитать и напечатать, сколько среди них положительных.       

   

Решение.

Введём переменную i, которая будет выполнять роль счётчика положительных чисел. Оператор с:=с+1 в нужный момент увеличивает  значение счётчика на единицу. Увеличение с на единицу выполняется лишь при выполнении условия: а>0, где а – вводимое число. Счётчик перед входом в цикл необходимо обнулять, иначе он начнёт считать не с нуля.

VAR c,i :Integer;

          a :Real;

BEGIN

     c:=0;

     For i:=1 to 200 do begin

                                        WriteLn('Введите число');

                                        ReadLn(a);

                                        If a>0 then c:=c+1

                                   end;

    WriteLn('Из них положительных – ',c)

END.                 

Сумматоры

      Сумматор – это переменная величина, в которой подсчитывается сумма чего – либо.

Задача.

Во дворце N залов. Известны длина и ширина каждого зала. Вычислить площадь пола всего дворца.

Решение.

Введём переменную Sum, которая будет выполнять роль сумматора. Оператор                                    Sum:=Sum+S каждый раз увеличивает значение сумматора на величину S, т.е. в ячейке Sum накапливается сумма вычисленных площадей отдельных залов. Сумматор перед входом в цикл тоже необходимо обнулять, иначе он начнёт считать не с нуля.

Var i,dlina,shirina,N,S,Sum:Integer;

BEGIN

    Sum:=0;

   WriteLn('Введите число залов');

   ReadLn(N);

   For i:=1 to N do begin

                                   WriteLn('Ведите длину и ширину зала');

                                   ReadLn(dlina,shirina);

                                   S:= dlina*shirina;

                                   Sum:=Sum+S

                              end;

   WriteLn('Площадь пола всего дворца=',Sum);

   ReadLn

END.

 

Поиск максимального из чисел.

Задача.

    Составить программу для определения максимального из 10 вводимых чисел.

Решение.

     Приготовим для самого максимального числа ячейку и назовём её  max. Первое число не глядя введём в эту ячейку. Каждое следующее число (назовём его x) будем сравнивать с  max. Если оно больше, то присвоим переменной max значение этого числа.

Var i,x,max :Integer;

BEGIN

   WriteLn('Введите первое число ');

   ReadLn(max);

   For i:=2 to 10 do begin

                                   WriteLn('Введите следующее число');

                                   ReadLn(x);

                                   If x>max then max:=x

                              end;

   WriteLn('Максимальное число: ',max);

   ReadLn

END.

Оператор GOTO.

 GOTO m1 - оператор перехода (читается – "гоуту"; переводится – "иди к".); m1 – метка.

 Метка – это произвольное имя или произвольное целое положительное число. Оператор GOTO можно писать в любых местах программы, и метку можно ставить перед любым оператором, заставляя компьютер таким образом перескакивать в программе откуда угодно и куда угодно (правда, в сложных программах эта свобода перескакивания существенно ограничивается). Метка должна отделяться от оператора двоеточием.

 Метки, встречающиеся в программе, должны быть описаны выше BEGIN после слова LABEL(читается – "лэйбл"; переводится – "метка").

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

Задача.

Написать программу, которая бесконечно печатает букву А.

Программа.

LABEL m1;

BEGIN

m1:  Write('A');

         ReadLn;

        GOTO m1

END.

Задача.

  При помощи цикла напечатать на экране: 3 5 7 9

Программа.

LABEL m1;

VAR f:Integer;

BEGIN

        f:=3;

m1:  Write(f,' ');

        f:=f+2;

        If f<=9 then GOTO m1;

         ReadLn;

END.


Графика.

Стандартные модули.

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

Модуль СRТ занимается звуком.

Модуль Graph позволяет работать с изображениями на экране.

Чтобы использовать в программе  тот или иной стандартный модуль, нужно записать     первой строкой своей программы: USES <имя модуля> (читается "юзез", переводится – "использует").

Mодуль Graph.

(читается – "граф", переводится – "графика")

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

Текстовый и графический режимы.

Существуют два режима работы компьютера с монитором – текстовый и графический. В любом месте программы можно переключиться из одного режима в другой.

Текстовый режим используется для вывода на экран текстовой и числовой информации. Работая в текстовом режиме, компьютер считает экран разбитым на 25 строк и 80 столбцов. В каждой из получившихся клеточек умещается ровно один символ. Рисовать в текстовом режиме компьютер не может.

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

Текстовый режим в Паскале используется по умолчанию.

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

Перед использованием процедуры InitGraph необходимо создать две переменные величины типа Integer с произвольными именами (Device,Mode).

Обе эти переменные при обращении к процедуре InitGraph  должны быть записаны внутри круглых скобок. ( Device – это тип видеоадаптера, Mode – номер графического режима. Если написать Device:=0, то Паскаль сам определит тип видеоадаптера и установит самый мощный из допустимых  графический режим.)

Пример. Программа, рисующая окружность.

USES Graph;

VAR Device,Mode:Integer;

BEGIN

     Device:=0;

     InitGraph(Device,Mode,'a:\TP\BGI');

     Circle(100,80,50);

     ReadLn;

     CloseGraph

END.

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

Замечание

         При переключении режимов всё  содержимое экрана стирается.

Рисование простейших фигур.

В компьютере применяется такая система координат:

 x

       y

Отличия графической системы координат от декартовой:

  •  Графические координаты принимают только целочисленные значения.
  •  Графические координаты принимают значения, ограниченные как снизу (нулевым значением), так и сверху (значением разрешения).
  •  Графическая координата отсчитывается сверху вниз.

№ п\п

название фигуры

процедура

назначение процедуры

1

точка

PutPixel(x,y,color)

закрашивает точку с графическими координатами (x,y) цветом color. Цвет можно указывать как числом, так и предопределённой константой. (См. таблицу цветов.)

2

отрезок прямой линии

Line(x1,y1,x2,y2)

рисует отрезок прямой линии, проведенной между точками с графическими координатами (x1,y1)и (x2,y2).

3

прямоугольник

Rectangle(x1,y1,x2,y2)

рисует прямоугольник с координатами левого верхнего угла (x1,y1) и правого нижнего (x2,y2).

4

залитый прямоугольник

Bar (x1,y1,x2,y2)

рисует залитый прямоугольник текущим цветом и закрашивает его в соответствии с установленным при обращении к SetFillStyle стилем.

5

окружность

Circle(x,y,R)

рисует окружность с центром в точке (x,y) радиусом R.

6

дуга окружности

Arc(x,y,beg,end,R)

рисует дугу с центром окружности дуги в точке (x,y). Параметры beg и end – это начальный и конечный углы, отсчитываемые от горизонтальной оси против часовой стрелки в градусах, R – радиус окружности.

7

залитый сектор круга

PieSlice(x,y,beg,end,R)

рисует залитый сектор круга текущим цветом.

8

эллипс

Ellipse(x,y,f1,f2,rx,ry)

рисует эллипс центром в точке (x,y), где f1 и  f2 – начальный и конечный углы части эллипса, отсчитываемые от горизонтальной оси против часовой стрелки в градусах, rx и ry – радиусы эллипса.

9

залитый сектор эллипса

 Sector(x,y,f1,f2,rx,ry)

рисует залитый сектор эллипса текущим цветом.

10

залитый эллипс

FillEllips(x,y,f1,f2,rx,ry)

рисует залитый эллипс текущим цветом.

Работа с цветом. Заливка. Стиль линий и заливки.

Замечание.

По умолчанию все фигуры рисуются тонкими белыми линиями.

Процедура SetLineStyle.

     Процедура SetLineStyle(style,0,thickness) устанавливает стиль рисуемых линий.

стиль линии

значение аргумента style

сплошная

SolidLn  

пунктирная

DottedLn    

штрихпунктирная

CenterLn   

штриховая

DashedLn

 

стиль линии

значение аргумента thickness

нормальная толщина

1

толстая линия

3

Замечание.

Второй аргумент используется при задании своего стиля линии.

Процедура SetColor.

    Процедура SetColor(color) устанавливает цвет рисуемых линий.

цвет

значение аргумента color

код

Чёрный

Black

0

Синий

Blue

1

Зелёный

Green

2

Бирюзовый

Cyan

3

Красный

Red

4

Розовый

Magenta

5

Коричневый

Brown

6

Светло-серый

LightGray

7

Тёмно-серый

DarkGray

8

Светло-синий

LightBlue

9

Светло-зелёный

Light Green

10

Светло-бирюзовый

Light Cyan

11

Светло-красный

Light Red

12

Светло-розовый

Light Magenta

13

Жёлтый

Yellow

14

Белый

White

15

Процедура SetFillStyle.

 Процедура SetFillStyle(style,color) устанавливает цвет и стиль заливки.

стиль заливки

значение аргумента style

код

Сплошное заполнение цветом фона

EmptyFill

0

Сплошное заполнение заданным цветом

SolidFill

1

Заполнение горизонтальными линиями

LineFill

2

Диагональное заполнение    ( /// )

LtSlashFill

3

Диагональное заполнение толстыми линиями

SlashFill

4

Обратное диагональное заполнение толстыми линиями

BkSlashFill

5

Обратное диагональное заполнение ( \\\ )

LtBkSlashFill

6

Клетчатое заполнение

HatchFill

7

Косое клетчатое заполнение

XhatchFill

8

Чередующееся линейное заполнение

InterleaveFill

9

Редко расположенные точки

WideDotFill

10

Часто расположенные точки

CloseDotFill

11

Стиль определён пользователем

UserFill

12

Замечание.

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

Процедура FloodFill.

 

           Процедура FloodFill(x,y,color) закрашивает область, внутри которой находится точка с координатами (x,y). Закрашиваемая область должна быть ограничена замкнутой линией цвета color.

Замечание.

           Распространённая ошибка – на вопрос о том, каким цветом будет красить оператор FloodFill(100,200,0), отвечают: "Чёрным", хотя нужно отвечать: "Не знаю, надо посмотреть в SetFillStyle".

Задача.

          Нарисовать жёлтый квадрат и закрасить его горизонтальными линиями красного цвета.

Программа.

USES Graph;

VAR Device,Mode:Integer;

BEGIN

     Device:=0;

     InitGraph(Device,Mode,'a:\TP\BGI');

     SetColor(14);

     SetFillStyle(2,4);

     Rectangle(200,50,300,150);

     FloodFill(250,100,14);

     ReadLn;

     CloseGraph

END.

Использование в рисовании переменных величин.

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

Задача 12.

           Нарисовать горизонтальный ряд окружностей радиусом 10 на расстоянии 100 от верхнего края экрана и с такими горизонтальными координатами центра: 50, 80, 110, 140,…, 290.

Программа.

USES Graph;

VAR Device,Mode,x:Integer;

BEGIN

     Device:=0;

     InitGraph(Device,Mode,'a:\TP\BGI');

     x:=50;

     Repeat

              Circle(x,100,10);

               x:=x+30;

     Until x>290;

     ReadLn;

     CloseGraph

END.

Задачи:

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

     2.   Нарисовать "Круги на воде", т.е. нарисовать 20 концентрических окружностей,   

           т.е. окружностей разного радиуса, но имеющих общий центр.

     3.   Разлиновать экран в линейку.

     4.   Разлиновать экран в клетку.

Использование случайных величин при  рисовании.

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

Задача.

            Нарисовать "звёздное небо", т.е. в случайных местах экрана нарисовать 1000 разноцветных точек.

Фрагмент программы:

For i:=1 to 1000 do PutPixel (Random(640),Random(480),Random(16));

Задачи:

  1.  Нарисовать "дождь в луже", т.е. заполнить экран окружностями радиуса 20 в случайных местах.
  2.  Нарисовать "мыльные пузыри", т.е. заполнить экран окружностями случайных радиусов и цветов в случайных местах.
  3.  Нарисовать "звёзды в окне", т.е. изобразить звёздное небо в пределах прямоугольника.

Движение картинок по экрану.

Рассмотрим иллюзию движения, возникающую на экране кинотеатра.

Если внимательно посмотреть на киноплёнку фильма, изображающего, скажем, движение

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

Точно так же поступают с созданием движения на экране компьютера.

Задача.

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

Программа.

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

USES Graph;

VAR Device,Mode,x:Integer;

BEGIN

     Device:=0;

     InitGraph(Device,Mode,'a:\TP\BGI');

     x:=40;

     Repeat

          SetColor(15);

          Circle(x,100,10);  {рисуем белую окружность}

          SetColor(0);

          Circle(x,100,10);  {рисуем чёрную окружность}

           x:=x+1;

     Until x>600;

     SetColor(15);      

     Circle(x,100,10);  {рисуем последний раз белую окружность}

     ReadLn;

     CloseGraph

END.

Замечание.

Изменить скорость движения можно, увеличив или уменьшив шаг движения. Если фигуры рисовать толстой линией, то движение сильно замедлится, так как толстая линия рисуется гораздо дольше тонкой, то же относится и к закрашенной окружности. Замедлить движение можно и с помощью оператора Delay, введя её между рисованием и стиранием фигуры.

Задачи:

  1.  Нарисовать две окружности, которые движутся слева направо.
  2.  Нарисовать две окружности, одна из которых движется вниз, а другая – направо.
  3.  Нарисовать окружность, которая бесконечно движется, отскакивая от правого и левого края экрана.
  4.  Нарисовать кораблик, плывущий по реке.


МАССИВЫ

I. Переменные с индексами.

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

 x [1], y [I], z [I, j].

       Рассмотрим бесконечный ряд чисел Фибоначчи: 1  1  2  3  5  8  13  21 34 … Каждое из чисел Фибоначчи обозначается индексированной переменной таким образом:

f [1] =1  f [2] =1  f [3] =2  f [4] =3  f [5] =5 …

       В этом ряду каждое из чисел является суммой двух предыдущих. В индексном виде это записывается так:

f [1] = f [I-2] + f [I-1].

Задача.

       Запишите в индексном виде, как получается из предыдущего числа ряда последующее:

а) 14   18   22   26 … f [I] = f [I-1] + 4

б)  6   12   24   48  … f [I] = f [I-1] * 2  

в)  3    5    9   17   33   65 … f [I] = 2 * f [I-1] – 1  

II. Определение массива.

       

       Массив – это совокупность конечного числа элементов одного и того же типа, в которой каждый элемент имеет номер, а все элементы – общее имя.

       Номер элемента массива назначается его индексом, причем индексов может быть несколько. Массив с одним индексом называют одномерным массивом, с двумя – двумерным и т.д.

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

III. Одномерные массивы.

       Описание одномерного массива имеет вид:

VAR имя_массива: array [нач_инд .. кон_инд]   of тип_данных;

       Здесь имя_массива выбирается в соответствии с обычными привилами Раскаля. Array – читается "эррэй"; переводится "массив" – зарезервированное слово, указывающее, что имя относится к массиву. Нач_инд и кон_инд – это целые числа, определяющие диапазон изменения индексов элементов массива:

VAR temp: array [1..31]  of Real;

       Нумерация массива не обязательно начинается с 1, но нижняя граница должна быть меньше верхней. Количество элементов в массиве можно найти по формуле: кон_инд – нач_инд + 1.

       Так, например, массив VAR sum: array [6..8] of Integer; состоит всего из трех элементов 8 – 6 + 1=3.

     

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

       Пример задания одномерного массива:

1 способ (примитивное присваивание VAR a : array [1..4]\ of integer;

BEGIN

       a [1] : = 8; a [2] : = 9; a [3] : = - 35; a [4] : = 2;

2 способ (с помощью клавиатуры)

const  n = 10;

VAR a: array [1..n] of integer;  I : integer;

BEGIN

       For I :1 to n do begin

                                     writeln (' Введите a [' , I , '] ');

                                     Readhn (a [I]);

                                     end;    for

Задача.

Дана таблица чисел. Найти сумму положительных элементов.

Программа

const n =5;

VAR a : array [1..n] of integer;

        S, I : integer;

BEGIN

        For I = 1 to n do readln (a [I]);

        For I : 1 to n do write ( a [I];  1);

        writehn;

        S : = 0;

        For I = 1 to n do if a [I] > 0 then S : = S +U [I];

        write ('S = ' , S);

END.

IV. Двумерные массивы.

       Описание двумерного массива имеет вид:

VAR имя_массива: array [номер_1столбца .. номер_посл_столбца] of тип_данных;

       Так, таблица сложения натуральных чисел может быть описана так:

VAR Add : array [1..9,1..9] of Integer;

       Обратиться к элементу двумерного массива можно, указав номер строки (индекс I) и номер столбца (индекс I) в квадратных скобках после имени массива. Так, например, на пересечении сложения чисел стоит элемент Add [2,5], он равен 7.

       Пример задания двумерного массива:

1 способ (примитивное присваивание)

VAR t : array [1..3, 1..4] of Integer;

BEGIN

       t [1,1] : = - 8;      …  t [1,1] : = - 18;

       …

       t [3,1] : = 11;       …  t [3,4] : = 25;

2 способ ( с помощью клавиатуры)

VAR a : array [1..3, 1..4] of Integer;

BEGIN

       For I = 1 to 3 do

                   begin

                       writehn ('Введите элементы   ' , I , ' строки ');

                       For I : = 1 to 4 do Readhn (a [I , j]);

                       end;    for      

Задача.

       В доме 3 подъезда по 6 квартир. Число жильцов в каждой квартире известно. Данные хранятся в виде таблицы:

а) жильцов в каждом подъезде

б) во всем доме.

Программа

VAR a : array [1..3, 1..6] of Integer;

        y : array [1..3]  of Integer;

        e , j , f , n : Integer;

BEGIN

        n : = 0l;  количество жильцов всего дома

        For I = 1 to 3 do

        begin

        writeln ('Введите количество жильцов в ' , I , '  подъезда ')

        y [I] : = 0;  количество жильцов в I-ого подъезда

        for I : 1 to 6 do

              begin

                  read (a [I , j]);

                  y [I] : = y [I] + a [I , j];

                  end;

              n : = n + y [I];

              end;

              For f : = 1 to 3 do

                   writehn (' количество жильцов ' , f , ' подъезда : ' , y [f]);

Writeln (' количество жильцов всего дома = ' , n);

END.

СТРОКОВЫЙ ТИП String. РАБОТА СО СТРОКАМИ.

       Вспомним, что описание VAR a : String говорит о том, что переменная а обязана иметь строковое (текстовое значение).

       Чтобы сэкономить память, работая в квадратных скобках, после слова String, максимальную длину строки.

Например:

VAR a : String [20]. В этом случае под символы переменной а в память будет отведено 20 байт.

       Если задана строка s : = ' Барка ', то считается автоматически заданным массив символов с тем же именем: s [1] = ' Б ' , s [2] = ' a ' , s [3] = ' н ' , s [4] = ' к ', s [5] = ' а '. Тогда после выполнения оператора s [3] : = ' р ' мы получили s = ' Барка '.

       Строки можно сравнивать. Условие S1 = S2 считается выполненным, если обе строки абсолютно одинаковы, включая и пробелы. Сравнивание идет посимвольно слева направо. Поэтому считается, что ' панк ' < ' парк ' , так как первый несовпадающий символ ' р ' имеет больший номер в алфавите, чем ' н '.

ПРОЦЕДУРЫ, ФУНКЦИИ И ОПЕРАЦИИ ДЛЯ РАБОТЫ НАД СТРОКАМИ.

Исходные данные

Операции

Результат

Пояснение

s1: = ' Мото ';

s2: = ' роллер '

s3: = s1 + s2 или

s3: = condet (s1, s2)

s3 = ' Мотороллер '

Операция + над двумя строками просто соединяет две строки в одну.

s5 = ' Мотороллер '

k: = Pos (' рол ', s5)

k = 5

Функция Pos возвращает позицию, на которой находится строка 'рол' в строке s5. В случае, если такой строки нет, то значение функции равно 0.

s3 = ' Мотороллер '

I: = Length (s3)

I = 10

Функция Length (длина) выдает (возвращает) количество символов в строке.

s3 = ' астроном '

s4: = Copy (s3,3,4)

s4 = ' трон '

Функция Copy возвращает часть строки длиной 4 начиная с третьего символа.

s5 = ' Коробочка ';

Delete (s5,4,2)

s5 = ' Корочка '

Процедура Delete удаляет из строки s5 два символа начиная с четвертого.

s6: = ' Рука ';

s7: = ' баш ';

Insert (s7,s6,3)

s6 = ' Рубашка '

Процедура Insert вставляет в строку s6 строку s7 начиная с третьего символа.

x: = 2.73284

Str (x:4:2,s8)

s8 = ' 2.73 '

s8 = ' 2.73 '

Val (s8,x,Osh)

x = 2.73

  


 

А также другие работы, которые могут Вас заинтересовать

33751. Содержание договора поставки 15.89 KB
  Обязанности поставщика: передать товар в обусловленный срок равномерными партиями в соответствии с установленными графиками; восполнить недопоставленный товар в следующий период; вывезти товар от которого отказался покупатель но принял его на ответственное хранение; подготовить товар к вывозу и уведомить об этом покупателя если договор заключен с условием выборки товара; выполнить указание покупателя об отгрузке заказанного им товара другому лицу; возместить расходы понесенные покупателем в связи с ответственным хранением...
33752. Ответственность сторон за нарушение условий договора поставки 14.48 KB
  Ответственность сторон за нарушение условий договора поставки. Ответственность по договору поставки в основном регламентируется общими положениями о куплепродаже но существуют следующие особенности: покупатель вправе предъявить требования предусмотренные статьей 475 ГК Последствия передачи товара ненадлежащего качества при нарушении поставщиком условий договора о качестве и комплектности товара только если поставщик незамедлительно после получения уведомления о допущенных недостатках не заменит недоброкачественный товар либо не...
33753. Прекращение договора поставки 14.05 KB
  Прекращение договора поставки. Основаниями прекращения договора поставки являются: ненадлежащее исполнение договора; соглашение сторон о расторжении договора; односторонний отказ от исполнения договора в случае существенного нарушения договора другой стороной ст. Основаниями для одностороннего отказа от исполнения договора поставки являются: нарушения допущенные поставщиком; поставка товаров с недостатками не устранимыми в приемлемый для покупателя срок п.
33754. Поставка товаров для государственных нужд 15.58 KB
  Поставка товаров для государственных нужд разновидность договора поставки. Срок выполнения действий по заключению договора ограничен законом он определен либо в 30 дней либо в 20. Особенности договора поставки для государственных нужд состоят в том что участниками этого типа договора являются три лица: заказчик; поставщик; получатель товара. Предметом вышеназванного договора являются вещи определяемые родовыми признаками; потребность в заказываемых вещах выявляется из государственных программ форма этого договора должна быть всегда...
33755. Договор контрактации, обязанности сторон 22.42 KB
  Характеристика договора контрактации консенсуальный взаимный возмездный. Разновидностью данного договора является поставка сельскохозяйственной продукции для государственных нужд. Предметом договора контрактации могут быть вещи трех видов: непереработанная продукция; переработанная продукция; сырье. Предмет этого договора не предназначен для личного семейного домашнего т.
33756. Договор о снабжении энергетическими и другими ресурсами 15.89 KB
  Договор о снабжении энергетическими и другими ресурсами. По договору энергоснабжения энергоснабжающая организация обязуется подавать потребителю абоненту энергию через присоединенную сеть а потребитель абонент обязуется оплачивать принятую энергию а также соблюдать предусмотренный договором режим ее потребления. Договор энергоснабжения является разновидностью договора куплипродажи и по своей природе двусторонний и возмездный. Особенности договора энергоснабжения: необычность электроэнергии как объекта: электроэнергию нельзя...
33757. Institute on Mathematics and Mechanics, Urals Branch of Russian Academy of Science 16.5 KB
  Semiotics, dealing with sign systems and with practice of their functioning, may be considered as tools for descriptions of theories of HCI and Computer Visualization just as Mathematics is tools for descriptions of Physics Theories.
33758. Договор дарения 16.24 KB
  Договор дарения. Договор дарения договор по которому одна сторона даритель безвозмездно передает или обязуется передать другой стороне одаряемому вещь в собственность либо имущественное право требование к себе или третьему лицу либо освобождает или обязуется освободить ее от имущественной обязанности перед собой или третьим лицом. Разновидностью договора дарения является пожертвование дарение сделанное в отношении неопределенного круга лиц в общеполезных целях. Договор дарения может быть как консенсуальным так и...
33759. Договор ренты (понятие, виды) 14.34 KB
  Договор ренты понятие виды. По договору ренты одна сторона получатель ренты передает другой стороне плательщику ренты в собственность имущество а плательщик ренты обязуется в обмен на полученное имущество периодически выплачивать получателю определенную денежную сумму либо предоставить средства на его содержание в иной форме. Виды договора ренты: постоянная рента; пожизненная рента; пожизненное содержание с иждивением. Эти виды договора ренты имеют ряд общих признаков но различаются: формой предоставления содержания...