Урок №1 языки программирования. Язык паскаль



бет1/2
Дата28.06.2016
өлшемі226.5 Kb.
#162855
түріУрок
  1   2
Урок №1 ЯЗЫКИ ПРОГРАММИРОВАНИЯ. ЯЗЫК ПАСКАЛЬ.

ЯНУ


Языки низкого (машинного) уровня удобны для интерпретации аппаратурой ЭВМ, но плохо приспособлены для непосредственного использования человеком - программистом. Они разработаны с максимальным приближением к конкретному виду компьютеров, ориентированы на его систему команд. Поэтому программа, составленная для одного компьютера, будет непонятна другому. Каждый оператор программы - это машинная команда, а все данные имеют адреса, по которым происходит обращение к ним. Пример ЯНУ - Ассемблер. ЯНУ достаточно сложны и на них составляют программы только профессионалы - разработчики новой техники.

ЯВУ


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

ПАСКАЛЬ.

Язык программирования Паскаль был разработан в 1968 - 1970 годах швейцарским профессором Никлаусом Виртом и назван в честь великого французского математика и философа Блеза Паскаля (1623-1662г). Созданный для обучения студентов, язык оказался настолько хорош, что стал использоваться профессионалами. Он является мощным средством программирования широкого круга прикладных задач.



Достоинства ПАСКАЛЯ.

1. Прост при изучении из-за интуитивной понятности его конструкций.

2. Программы наглядны, легко читаются.

3. Наличие большой библиотеки модулей.

4. Простые, гибкие и четкие структуры языка.

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

6. Отладка программы по частям делает ее надежной.

7. Структурированность программ прививает хороший стиль программирования.



Интегрированная среда программирования (ИС).

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



Основные особенности ИС Паскаля:

1) многооконность;

2) возможность работы с несколькими файлами сразу;

3) развитая система меню;

4) наличие диалоговых окон;

5) поддержка работы с "мышью";

6) возможность по желанию пользователя легко модифицировать ИС.

Первое знакомство.

I. Вызов Паскаля (вход в интегрированную среду):

C:\PASCAL\turbo.exe (или свой вариант).

Появляется основной экран ИС - голубое поле экранного редактора (для размещения текстов программ), вверху - строка основного меню (содержит 10 пунктов), внизу - строка состояния (строка подсказок).

II. Выполнение готовой программы (любой из 3 вариантов):

а) F10, "Run", Enter, "Run", Enter;

б) Alt+R, "run", Enter;

в) Ctrl+F9.

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

III. Выход из Паскаля (любой из 3 вариантов):

а) F10, "File", Enter, "Exit", Enter;

б) Alt+F, "Exit", Enter;

в) Alt+X.

Перед выходом из Паскаля появится сообщение:

"NONAME00.PAS has been modified. Save?" [Файл изменен. Сохранить?]

Следует выбрать: "Yes" [да], "No" [нет] или "Cancel" [отменить выход] (Рекомендуется выбирать "no", если задача решена и получена оценка.)



Алфавит языка.

Алфавит Паскаля состоит из:

-- английских букв

-- цифр


-- математических знаков -, +, *, /, <, >, =, <=, >=, <>

-- скобок (, ), [, ], ,

-- других символов ' : ; , . := .. "пробел"

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



Д/З: Выучить конспект.

Урок №2 СТРУКТУРА ПРОГРАММЫ В ПАСКАЛЕ.

Программа в Паскале имеет вид:



I. Заголовок Program <имя программы>;

II. Раздел объявлений (описаний) Const <имя>=<значение>;

Var <имя>,<имя>:<тип1>;

В разделе объявлений должны быть указаны все объекты, с которыми будет работать программа: константы, переменные, процедуры и функции. В разделе Const приводятся значения КОНСТАНТ - величин, которые не изменяются при выполнении программы. В разделе Var перечисляются типы всех ПЕРЕМЕННЫХ - величин, которые могут изменять значения при выполнении программы.

Рассмотрим 2 типа переменных:

1) integer - целые числа из интервала [-32768, 32767];

2) real - дробные числа из интервала [-2.9*10-39, 1.7*1038].

Имя программы, имена констант, переменных и других объектов программы называются ИДЕНТИФИКАТОРАМИ. Они записываются по правилам:

1. Имя должно лаконично отражать сущность объекта.

S,v,t - общепринятые обозначения;

Summa, N_max - значения суммы номера максимума.

2. Длина идентификатора не должна превышать 127 символов, но для Паскаля значимы только первые 63 знака.

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

4. но начинаться он должен с буквы или знака подчеркивания.

5. Маленькие и большие буквы в записи идентификаторов Паскаль не различает:

SUMMA, SumMA, summa - для Паскаля одно и то же.

III. Тело программы begin



<операторы>

end.


В теле программы записываются операторы - отдельные шаги алгоритма. Каждый оператор заканчивается ";" Этот знак можно не ставить перед "end".

Арифметические операции в Паскале.

1. Операции с дробными числами (обычные, как в математике).

- вычитание; + сложение; * умножение; / деление.

2. Операции с целыми числами.

- вычитание; + сложение; * умножение;

Деление представлено двумя операциями:

div - целая часть от деления, mod - остаток.

23 div 3 = 7 23 mod 3 = 2

9 div 4 = 2 9 mod 4 = 1

35 div 10 = 3 35 mod 10 = 5

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

READLN.

Процедура Readln считыват значения, вводимые с клавиатуры, и записывает их в переменные, которые указаны. Общий вид:



Readln (<имя>,...,<имя>);

Например, если на запрос Readln (а, с, х); с клавиатуры будут введены числа 2, 5, и 4.6, то переменные получат значения: а=2, с=5, х=4.6.

Примечание: при вводе значения разделяются пробелами.

WRITELN и WRITE.

Процедуры Writeln и Write служат для печати информации в "черном" экране компьютера. Они отличаются только тем, что процедура Write после напечатанного оставляет курсор на той же строчке, а Writeln переводит его после печати на новую строку. Общий вид: Writeln (<список вывода>);

Элементы списка вывода разделяются запятыми. Элементом может быть:

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

Например: в программе - Write ('Привет!'); на экране - Привет!

б) имя переменной - на экране будет напечатано ее значение. Например:

если Х=675, то в программе - Write (Х);

на экране - 675

в) выражение - будет вычислено его значение и напечатан результат. Например:

в программе - Write (34*2+102);

на экране - 170

ЗАДАЧА. Ввести с клавиатуры скорость и время путника. Напечатать расстояние.

Решение.


Program Rasst; {комментарии записывают в фигурных скобках}

var v,t:integer; {объявляем 2 переменные - целые числа}

begin {тело программы записываем с отступом вправо}

Write ('введи v и t '); {печатается приглашение для ввода числа}

Readln (v, t); {запрашиваются с клавиатуры значения для v и t}

Writeln ('S=',v*t); {печатается текст "S=" и результат v*t}

Readln {задержка в "черном" экране, выход - Enter}

end.


САМОСТОЯТЕЛЬНО: Ввести с клавиатуры длину и ширину прямоугольника. Найти его периметр.

Д/З. Ввести с клавиатуры цену и количество товара. Найти стоимость покупки.

Урок №3. ФОРМАТЫ ПЕЧАТИ.

I. Печать целых чисел.

Пусть А=45, В=123, тогда при выполнении Writeln (А, В); значения А и В сольются в одно число:

45123

Чтобы разделить числа, используют форматы печати, определяя для каждой переменной количество позиций в строке. Оно записывается после имени переменной через ":". Таким образом, оператор можно записать так: Writeln (A:4, B:6); и на экране значения будут напечатаны в виде



_ _45_ _ _123

II. Печать дробных чисел.

Дробное число в памяти компьютера представлено в стандартном виде: целая часть числа - это 1 цифра, не равная 0, остальные цифры записываются в дробную часть. Чтобы исходное число сохранило свое значение, его следует домножить на 10 в соответствующей (положительной или отрицательной) степени. Выражение "умножить на 10 в степени" компьютер записывает одним символом "Е". В дробной части - 10 цифр. Таким образом, число 1243,563 будет иметь вид 1.2435630000Е+03,

число 0,0000345 будет иметь вид 3.4500000000Е-05.

Такая запись называется "число с плавающей точкой". Именно в этом виде и будет напечатано значение любой переменной X типа real, если в программе выполняется оператор Writeln (X);

Чтобы напечатать дробное число в привычном нам виде, который называется "число с фиксированной точкой", следует указать для него форматы печати, которые выбираем по своему желанию:

Writeln ( <имя>: <колич. всех знаков>: <колич. знаков на дроб.часть> );



ПРИМЕР: пусть Х=1243,563, тогда

Writeln (X:8:2); ==> _1234.56

Writeln (X:13:5); ==> _ _ _1234.56300

Writeln (X:10:3); ==> _ _1234.563


ЗАДАЧА. Ввести с клавиатуры значение массы тела m. Считая g=9,8, найти вес тела P.

Комментарий: при решении задачи после умножения получится дробное число, поэтому печатать его будем с "фиксированной точкой": всего 7 знаков, в том числе и десятичная точка, из них 2 цифры - дробная часть.

Решение.

Program Ves;

const g=9.8; { константа g – ускорение свободного падения}

var m:integer; {переменная m – масса тела}

begin

Write ('Введи массу '); {приглашение ввести значение массы}



Readln (m); {с клавиатуры вводится число и записывается в m}

Writeln ('Веc=',m*g:7:2); {результат m*g печатается «с фиксированной точкой»}

Readln {задержка в диалоговом режиме}

end.


САМОСТОЯТЕЛЬНО: Введя с клавиатуры площадь и одну сторону прямоугольника, найти длину другой стороны.

Д/З. Папа, воспитывая сына-двоечника, изнашивает в год 3 ремня. Ввести с клавиатуры количество изношенных папой ремней, определить: какой класс закончил сын.

Урок №4. ОПЕРАТОР ПРИСВАИВАНИЯ.

ПРОМЕЖУТОЧНАЯ ПЕРЕМЕННАЯ.

Очень часто при решении задач выполняются промежуточные вычисления, которые не указываются в ответе, но участвуют в получении окончательного результата. (Например, нахождение скорости катера по течению реки при вычислении пройденного по течению расстояния; нахождение дискриминанта при решении квадратного уравнения). Такие вычисления запоминаются в промежуточных переменных.

Промежуточные переменные должны быть объявлены так же, как и переменные с исходными данными, в разделе Var. Значения они получают не с клавиатуры, а с помощью оператора присваивания. Этот оператор имеет вид:

<имя переменной> := <значение>;

Здесь "значением" может быть конкретное число, имя другой переменной или выражение соответствующего типа. Например, переменной типа integer можно присвоить лишь целочисленное значение и нельзя - дробное. Однако переменной типа real можно присваивать и дробные, и целые значения.



Порядок выполнения оператора присваивания.

1. Вычисляется значение, стоящее в правой части оператора присваивания.

2. Результат записывается в переменную, имя которой указано в левой части.

ПРИМЕР: С:=45; в С будет число "45"

В:=С-5; в В будет число "40"

В:=В*2; в В будет число "80"

С:=В; в С будет число "80"


ЗАДАЧА. Ввести с клавиатуры скорость катера vk и скорость течения vt. Какой путь S пройдет катер по течению за t=3 часа?

Комментарий: при решении задачи объявим и

Решение.

Program S_po_t;

Const t=3; {константа t=3}

ar vk,vt,v_po,s_po: integer; {переменные: vk, vt, v_po - скорость по }

begin {течению и s_po - расстояние по течению}

Write ('Введи v катера и v течения ');

Readln (vk, vt);

v_po:=vk+vt; {находим скорость по течению}

s_po:=t*v_po; {находим расстояние по течению}

Writeln ('Расстояние по теч.=',s_po); {печать результата}

Readln

end.
ЗАДАЧА. Ввести с клавиатуры значения для А и В. Поменять их местами. Комментарий: чтобы решить эту задачу, используем следующий алгоритм:



1) объявим в программе третью переменную Х;

2) запомним в новой переменной Х значение А;

3) скопируем в А значение из В;

4) скопируем в В число из Х (исходное значение А).

Решение.

Program Change;

Var a,b,x: integer;

begin


Write ('Введи А и В ');

Readln (a, b);

x:=a; {Х <= A }

a:=b; {A <= B }

b:=x; {B <= X }

Writeln('a=', a, ' b=', b); {'a=' и ' b='- это текст, а и b -числа}

Readln

end.
САМОСТОЯТЕЛЬНО. Ввести с клавиатуры значения для А, В, С. Поменять их местами: А => В, В => С, С => А. Комментарий: в программе будет объявлено 4 переменных, обмен значений произведем за 4 шага.


Д/З: Маша Петрова сделала в диктанте М ошибок, а Гриша Кружков, который у нее все списал, - на К ошибок больше. Ввести с клавиатуры значения для М и К. Сколько ошибок сделал Гриша?

Урок №5 ТИП WORD. ЦЕЛОЧИСЛЕННАЯ АРИФМЕТИКА.

ЗАДАЧА 1. Ввести с клавиатуры двузначное число. Напечатать цифры его единиц и десятков.

Решение.


Program E_D;

Var ed, des, x: integer; {х – число, ed - единицы, des – десятки}

begin

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



Readln (x);

ed:=x mod 10; {находим правую цифру числа}

des:=x div 10; {находим левую цифру числа}

Writeln ('В числе ', ed ,' единиц и ', des ,' десятков.');

Readln

end.


Иногда при решении задач используются только натуральные числа. При этом удобнее их тип объявлять не integer (числа из интервала [-32768, 32767] ), а WORD, для которого диапазон значений = [0, 65535].

ЗАДАЧА 2. Ввести с клавиатуры натуральное число. Напечатать, сколько в нем тысяч.

Решение.


Program thausend;

Var thau, x: word; {х – число, thau – количество тысяч}

begin

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



Readln (x);

thau:=x div 1000; {находим левые цифры числа}

Writeln ('В числе ', thau ,' тысяч.');

Readln


end.

CАМОСТОЯТЕЛЬНО 1.Ввести с клавиатуры натуральное число. Напечатать, сколько в нем сотен (1 цифру) и десятков тысяч. Комментарий: цифру сотен можно получить из остатка от деления числа на 1000.

2. На кухне площадью С кв.м. дедушка рассыпал мелочь. С каждого кв.м. бабушка собрала N копеек. Задать С и N. Каков общий урожай в рублях?

3. Пожарных учат надевать штаны за 23 секунды. Ввести с клавиатуры время в минутах. Напечатать, сколько штанов успеет надеть хорошо обученный пожарный за это время (целое число: штаны - штучная вещь!).
Д/З Ввести с клавиатуры натуральное число. Напечатать 3 его младшие цифры.

Урок №6 СТАНДАРТНЫЕ ФУНКЦИИ ПАСКАЛЯ.

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



Функция

Тип аргумента

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

Комментарии

Abs(X) модуль Х

целый

дробный


целый

дробный


Тип аргумента совпадает с типом результата

Sqr(X) квадрат Х

целый

дробный


целый

дробный


Sqrt(X) корень из Х

целый

дробный


дробный

X >= 0

Round(X)

Округление до целых



дробный

целый

Round(2.8) -> 3

Round(2.3) -> 2



Trunc(X)

Целая часть от Х



дробный

целый

Trunc(2.8) -> 2

Trunc(2.3) -> 2



Int(X)

Целая часть от Х



дробный

дробный

Int(2.8) =>

=> 2.0000000000E+00



Frac (X)

Дробная часть от Х



дробный

дробный

Frac(2.1358)=> 0.1358 =>

=> 1.3580000000Е-01



Sin(X) - sin X

целый

дробный


дробный

Аргумент записывается

в радианах:

1 рад - это примерно 57°,

рад = 180°



Cos(X) - cos X

целый

дробный


дробный

Pi-число 

нет

дробный

Pi = 3.14...

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

Например:

1) в операторе присваивания: <имя> := <функция>;

X := Sqrt (a+b);

b := Sin (2*y) + Cos (y);

2) в операторе печати: Writeln (<функция>);

Writeln ('квадрат=',Sqr(f+z));

Writeln ('дробная часть=',Frac(w/g):6:4);



ЗАДАЧА. Ввести с клавиатуры длины катетов треугольника. Найти гипотенузу.

Решение


Program Gip;

Var a, b, c: real;

begin

Write ('Ввести А и В ');



Readln (a,b);

c:=Sqrt (Sqr(a)+Sqr(b)); {формула гипотенузы (т. Пифагора)}

Writeln ('c=',c:6:2);

Readln


end.

СЛУЧАЙНЫЕ ЧИСЛА.

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

1) включить генератор случайных чисел "Randomize". Эта процедура записывается в программе сразу после "begin";

2) выбрать значение для переменной с помощью функции "Random"

а) для дробных чисел из интервала [ X0; X1 ): X:=Random * (X1-X0) + X0;

б) для целых чисел из интервала [ X0; X1 ]: X:=Random(X1-X0) + X0.

3) напечатать полученное число, чтобы знать, что выбрал компьютер: Writeln ('X=', X);
ЗАДАЧА. Когда дядя Петя вышел во двор с ружьем, с 1-ой яблони упало f, а со 2-ой - g соседей. Ввести случайным образом значения для f и g, найти общее количество упавших соседей.

Решение.


Program D_Petya;

const X0=1; {х0 и х1 – границы промежутка случайных чисел }


X1=8;

Var f, g, vsego: integer;

begin

Randomize;



f:=Random(X1-X0)+X0; {стандартные формулы для случайного числа}

g:=Random(X1-X0)+X0;

Writeln ('на 1 яблоне ',f,' соседей');

Writeln ('на 2 яблоне ',g,' соседей');

vsego := f+g;

Writeln ('всего ', vsego ,' соседей');

Readln

end.


CАМОСТОЯТЕЛЬНО. Толя поспорил с Колей, что съест А баночек гуталина, а съел только К баночек. Сколько баночек не смог осилить Толя? (А и К задать случайным образом, А>K).

Д/З. В специальный ящик можно уложить 68 яиц. А если уминать их ногами, то поместится в 100 раз больше. Сколько уминаемых ногами яиц можно уложить в Х таких ящиков? (Х задать случайным образом.)



Урок №7 ТИП BOOLEAN.

Переменные типа BOOLEAN могут иметь только 2 значения - "true" ("истина") и "false" ("ложь"). Эти значения переменные могут получать только в операторе присваивания: слева - имя переменной, справа - логическое выражение. Логическое выражение содержит сравнение: x>r+4, a<=5*b и т.п.



ПРИМЕР. Пусть объявлена переменная b: boolean, в теле программы стоит оператор b := x>5; тогда при х=7 b="true"; при х=3 b="false".

ЗАДАЧА 1. Ввести случайным образом двузначное число. Равны ли его цифры?

Решение


Program Figures;

Сonst X0=10; {х0 и х1 – границы промежутка случайных чисел }

x1=99;

Var x, ed, des: integer; {Х-число, ed-цифра единиц и des-



цифра десятков }

Otvet: boolean; {в логической переменной Otvet будет содержаться}

Begin {ответ на вопрос в виде "true" или "false".}

Randomize;

x := Random (X1-X0) + X0;

Writeln ('В числе ', x, ' цифры равны? ');

ed := x mod 10;

des := x div 10;

Otvet := ed = des; {проверка равенства}

Writeln (Otvet); {будет напечатано "true" или "false"}

Readln

end.


ЗАДАЧА 2. Ввести с клавиатуры N кабинета. Есть ли такой в гимназии?

Решение


Program Gym;

Const n=48; {всего 48 кабинетов}

Var Otvet: boolean;

Num: integer;

begin

Write ('Введи номер ');



Readln (Num);

Otvet := Num <= n; {номер меньше или равен последнему?}

Writeln ('Есть такой кабинет? ',Otvet);

Readln


end.

САМОСТОЯТЕЛЬНО.

N1. Ввести с клавиатуры число. Является ли оно положительным?

N2. Задать случайным образом номер дня недели - целое число от 1 до 7. Напечатать, является ли день выходным.

Д/З. Задать с помощью генератора случайных чисел час суток - целое число от 0 до 23. Напечатать, к какой половине дня он относится (до или после полудня).

Урок №8 СЛОЖНЫЕ УСЛОВИЯ.

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

Союз Not означает "отрицание", для него можно записать таблицу значений:


Условие

Not (условие)

true

false

false

true

Союз And связывает 2 условия и означает, что обязательно должны выполняться оба условия. Таблица истинности для этого союза:



условие 1

условие 2

(условие 1) and (условие 2)

true

true

true

true

false

false

false

true

false

false

false

false

Союз Or связывает 2 условия и означает, что должно выполниться хотя бы одно условие. Таблица истинности для этого союза:



Условие 1

условие 2

(условие 1) or (условие 2)

true

true

true

true

false

true

False

true

true

False

false

false


ЗАДАЧА. Ввести с клавиатуры 2 натуральных числа: d - день и m - месяц. Считая, что в каждом месяце по 30 дней, определить, нет ли ошибки.

Решение.


Program Data;

Const dd=30; {максимальное количество дней}

mm=12; {максимальное количество месяцев}

Var d, m: integer;

Otvet: boolean; {логическая переменная Otvet имеет}

begin {значение "true" при правильно введенной дате}

Write ('Введи день, месяц ');

Readln (d, m);

Otvet := (d<=dd) and (m<=mm); {должны быть выполнены оба условия}

Writeln ('Дата введена верно? ', Otvet);

Readln

end.
ЗАДАЧА. В гимназии уроки труда проходят в 33 и 38 кабинетах. Задать случайным образом N кабинета. Является ли он кабинетом иностранного языка?



Комментарий: введем 4 константы –

) и). Кроме этого, объявим 2 переменные: N - число - номер кабинета и

.

Решение.


Program Kabinet;

Const k1=33; {k1 и k2 - номера кабинетов труда}

k2=38;

x0=1; {х0 и х1 - границы интервала для выбора кабинета}



x1=48; {случайным образом}

Var N: integer;

Otvet: boolean; {логическая переменная Otvet имеет значение}

Begin {"true" при правильно выбранном номере}

Randomize;

N:=Random(X1-X0)+X0;

Write ('Кабинет ', N,' - кабинет труда? ');

Otvet := (N=k1) or (N=k2); {достаточно выполнения одного из условий}

Writeln (Otvet);

Readln


end.

САМОСТОЯТЕЛЬНО (по вариантам)

1. Задать случайным образом N кабинета гимназии. Он на 2 этаже?

2. Ввести с клавиатуры двузначное число. Есть ли в его записи цифра "5"?

3. Ввести с клавиатуры 2 натуральных числа: часы и минуты. Определить, нет ли ошибки.

4. В зрительном зале 30 рядов по 25 мест. Ввести с клавиатуры номер места и ряда. Определить, нет ли ошибки.

5. Поезд составлен из 17 вагонов по 36 мест в каждом. Ввести с клавиатуры номер вагона и места. Определить, нет ли ошибки.

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

Д/З. Задать случайным образом N месяца. Определить, это летний месяц? Это зимний месяц?

Урок №9. УСЛОВНЫЙ ОПЕРАТОР IF. ОПЕРАТОРНЫЕ СКОБКИ.

До сих пор при решении задач мы могли напечатать ответ на вопрос задачи в виде "true" или "false". Такой вид ответа далеко не всегда подходит, хочется в случае "true" выдавать одно сообщение, а в случае "false" - другое. Или выполнять разные действия в зависимости от результата проверки какого-либо условия. Для этого служит оператор if. Он позволяет реализовать алгоритм ветвления. Общий вид:



if <условие> then <оператор 1>

else <оператор 2>;

Здесь:


<условие> - это переменная типа boolean или логическое выражение, которое может быть простым или сложным:

<оператор 1> и <оператор 2> - любой оператор (Writeln, Readln, оператор присваивания, if и т.д.) или несколько операторов, заключенных в "операторные скобки".

Ветвь "else" может отсутствовать.



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

ЗАДАЧА. На мини-рынке продают молоко и цветы. Задать случайным образом N - номер торгового места - целое число от 1 до 6. Определить, чем торгуют: 1, 3, 5 - молоко, 2, 4, 6 - цветы.

Решение.


Program Rinok;

Const x0=1; {х0 и х1 отвечают за случайный выбор места}

x1=6;

N1=1; {N1, N2 и N3 отвечают за “молоко”}



N2=3;

N3=5;


Var N: integer;

begin


Randomize;

N:=Random(X1-X0)+X0;

Write ('место ', N);

if (N=N1) or (N=N2) or (N=N3)

then Writeln ('-молоко') {если условие верно, то напечатается "молоко"}

else Writeln ('-цветы'); {иначе напечатается "цветы"}

Readln

end.


САМОСТОЯТЕЛЬНО Вовочка, любитель стрелять из рогатки, 7 раз попадал в милицию. Ввести случайным образом число - номер попадания. Определить результат: 4, 6, 7 - милиционеры вставляли новое стекло, 1, 2, 3, 5 - майор лично менял разбитые лампочки.

Д/З В поезде 17 вагонов. С 10 по 17 вагоны купейные, а остальные - плацкартные. Ввести с клавиатуры номер вагона. Напечатать его вид.

Урок №10. УСЛОВНЫЙ ОПЕРАТОР IF. РЕШЕНИЕ ЗАДАЧ.

(По вариантам)

№1 Ввести с клавиатуры 2 числа. Напечатать а) большее, б) меньшее.

№2 Ввести с клавиатуры 2 числа. Напечатать их частное или сообщение "Делить на ноль нельзя".

№3 Ввести с клавиатуры значения для Х. Вычислить и напечатать соответствующее значение для Y по правилу:

А) Y=X+5, X<6 Б) Y=X-4, X<=100

Y=X/2, X>=6 Y=X*3, X<+100

№4 (По Г.Остеру). У младенца Кузьки вылезло уже s зубов , а у его бабы Дуси осталось w зубов. Задать с помощью генератора случайных чисел 2 целых числа от 0 до 5 - значения для s и w. У кого зубов больше?

№5 Два числа К и М однажды пришли в такое место, где валялось много всяких разностей и стали искать свою. Ввести с клавиатуры значения для М и

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

№6 В бублике 1 дырка, в кренделе - 2. На сколько меньше дырок в А бубликах, чем в В кренделях?

№7 Мама завела себе Х кактусов. Когда трехлетняя Маша старательно побрила папиной бритвой Т кактусов, мама не смогла определить каких кактусов больше: гладких или небритых. Помоги ей.

Д/З Одна тетенька произносит К слов в минуту, а другая - С слов. Кто и на сколько больше скажет слов за 3 часа, если они разговаривают одновременно и непрерывно, не слушая друг друга?

Урок №11. ТИП CHAR.

В Паскале есть возможность решения задач с использованием переменных символьного типа. Они объявляются:

Var <имя переменной>: char;

Их значения - это любой символ: буква, цифра, знак. Все символы, которые могут быть значением переменных типа сhar, собраны в таблицу ASCII (как буквы в алфавит). Каждому символу соответствует уникальный код - число от 0 до 255. Таким образом, переменные char можно сравнивать: больше та переменная, чье значение имеет больший код.

Символьные переменные получают свои значения с клавиатуры (оператор Readln) или в операторе присваивания. Присваивание для переменных char может быть записано двумя способами:

а) х:= '*'; б) х:=#65; (65 - код английской буквы 'A')



ЗАДАЧА. Ввести с клавиатуры символ Х. Является ли он большой русской буквой?

Решение.


Program Bukva;

Const b1='А'; {b1 и b2 отвечают за 1 и последнюю русскую}

b2='Я'; {большую букву}

Var х:char; begin

Write ('введи знак ');

Readln (х);

if (х>=b1) аnd (х<=b2) {должны выполняться оба условия }

then Writeln ('Это большая русская буква')

else Writeln ('Ошибка');

Readln


end.
САМОСТОЯТЕЛЬНО. Ввести с клавиатуры символ. Является ли он:

а) маленькой английской буквой?

б) большой английской буквой?

в) цифрой?


Д/З. Ввести с клавиатуры символ. Это слэш? (т.е. символ '\' или '/')

Урок 12. Стандартные функции для символьных переменных.

Ф-ция, Тип Тип Комментарии

ее значение аргумента результата

Ord (х)


код символа х char целый Ord ('D') => 68

Chr (х) целый char Chr (100) => 'd'

cимвол кода х

Pred (х) целый целый Pred (132) => 131

предыдущее

значение х char char Pred ('Л') => 'K'

Succ (х) целый целый Succ (132) => 133

следующее

значение х char char Succ ('Л') => 'М'

Задача. Задать случайным образом kod - код символа. Напечатать Symb - сам символ и его соседей Symb_L - слева и Symb_R- справа.

Решение


Program Symbol;

Const x0=0; {x0 и x1 отвечают за случайный выбор кода}

x1=255;

Var Symb, Symb_L, Symb_R: char; kod: integer;



begin

Randomize;

kod := Random(x1-x0)+x0;

Write ('Код=',kod);

Symb := Chr (kod);

Write (' символ: ',Symb);

Symb_L := Pred (Symb);

Write (' слева: ',Symb_L);

Symb_R := Succ (Symb);

Writeln (' справа: ',Symb_r); Readln

end.

Самостоятельно. Ввести с клавиатуры символ-маленькую английскую букву. Напечатать соответствующую ей большую. (Комментарий: маленькие и большие английские буквы имеют коды, отличающиеся на 32: Ord ('F')=Ord ('F')+32.)

Д/З. Задать случайным образом код символа - большой русской буквы. Напечатать соответсвующую ей маленькую букву. (Комментарий: ряд маленьких русских букв в таблице ASII прерывается а...п, р...я. Разность кодов больших и маленьких букв до "n"= 32, после 'р'=80.)

Урок 13. Оператор Case.
Оператор Case служит для реализации алгоритма ветвления не по 2-м направлениям, как в if ("then" и "else"), а по многим. Общий вид:

Case <выражение> of



<знач 1>: <оператор1>;

<знач 2>: <оператор2>;

...


<знач n>: <оператор n> Внимание! Перед "else" нет ";"

else <оператор>

end;

Комментарии:



1) <выражение>, проверяемое в Case, должно иметь значение дискретного типа, например, inteder или char;

2) <значение> может записываться разными способами:

а) единичное, например 'а': <оператор>;

или 1234: <оператор>;

б) список, например 'a', 'A', 'я', 'Я': <оператор>; или 3, 45, 127: <оператор>;

в) интервал, границы которого разделяются "..", например 'a'..'я': <оператор>;

или 15..23: <оператор>;

3) <оператор> - любой простой или составной;

4) ветвь "else" может отсуствовать.
ЗАДАЧА Ввести с клавиатуры mon - номер месяца. Напечатать, сколько в нем дней.

Решение.


Program Month;

Const J=1; {январь}

F=2; {февраль}

A=4; {апрель}

In=6; {июнь}

S=9; {сентябрь}

N=11; {ноябрь}

D=12; {декабрь}

Var mon: integer;

begin


Write ('Введи номер месяца ');

Readln (mon);

Case mon of

F: Writeln ('28 или 29 дней');

A, In, S, N: Writeln ('30 дней');

J..D: Writeln ('13 день') {эта строчка будет выполняться

только в том случае, если не были выбраны 2 предыдущие строки}

else Writeln ('Такого месяца нет')

end;

readln


end.

САМОСТОЯТЕЛЬНО: Ввести с клавиатуры номер месяца. Напечатать время года.

Д/З Ввести с клавиатуры час суток. Напечатать время суток: утро, день, вечер, ночь.

Урок №14 ОПЕРАТОР CASE: РЕШЕНИЕ ЗАДАЧ

(по вариантам).

1. В шеренге спортсмены стоят по росту. Задать с помощью генератора случайных чисел номер спортсмена - целое число от 1 до 9, определить вид

спорта: 1,2,9 - баскетбол, 3,4,5 - бег, 6,7,8 - штанга.

2. В поликлинике кабинеты распределены так: 1,2,3,17 - окулисты, 4,18,19,20 - хирурги, 5-8 стоматологи, 9-16 - педиатры. Задать с помощью генератора случайных чисел номер кабинета - целое число от 1 до 20, определить специальность врача.

3. С автостанции автобусы отправляются по 16 маршрутам и переезжают через реку по 4-м мостам: 1,2,3,5 - по Южному, 4,6,7,8 - по Центральному, 9,10,11, 12 - по Северному, 13,14,15, 16 - по Окружному. Ввести с клавиатуры номер маршрута. Определить, по какому мосту он пойдет.

4. Задать с помощью генератора случайных чисел номер ряда в кинотеатре - целое число от 1 до 25. Определить сколько стоит билет, если его цена зависит от ряда: 1,2,3, 25- 10 руб, 4,5 - 15 руб, с 6 по 24 - 20 рублей.

5. Один мальчик на перемене 12 раз дергал девочек за косички. Ввести номер косички. Определить, кому она принадлежит: 1,2,3,8 - девочке из 3"а", 4,5,6 - девочке из 3 "б", 7,10, 11, 12 - девочке из 3"в", 9 - завучу Маргарите Багратионовне.

6. Во время сильного дождя на остановке стояло 12 человек. Подкативший автобус забрызгал грязью 4-го, 5-го, 6, 7 и 8-го человека. Остальные попрыгали в колючие кусты, причем 3-ий, 9-ый и 12-ый так и не смогли выбраться из них. Задать номер пассажира, определить:

а) грязный он или исцарапанный; б) едет или сидит в кустах.

7. Во время игры в прятки 1,6,10 мальчики спрятались в бочку из под известки, 2,3,4,5 - в ящик из-под угля, 8 и 9 - бочку из под зеленой краски, 7 - прислонился к свежеокрашенной стене. Задать номер мальчика, напечатать его цвет.

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

9. Ввести с клавиатуры букву 7-го класса. Определить его тип:

а - гимназический, б - математический, в - обычный, г - коррекция.

(Буква может быть большой или маленькой).

10. Ввести с клавиатуры дату: 3 числа - день, месяц, год. Определить:

а) какое число будет завтра; б) какое число было вчера.

11. Задать случайным образом час суток. Определить вид деятельности ребенка: в школе, делает уроки, гуляет, спит.

12. Ввести с клавиатуры левую скобку. Напечатать соответствующую ей правую.

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

Д/З Ввести с клавиатуры номер квартиры. Напечатать, в каком она подъезде.

Урок №15. ОПЕРАТОР ЦИКЛА REPEAT

Оператор Repeat служит для реализации циклического алгоритма с пост-условием. Общий вид: Repeat



<оператор>;

<оператор>;

. . .

<оператор>

Until <условие>;
Операторы в теле цикла записываются через «;» Перед «Until» точка с запятой не ставится.

Порядок выполнения цикла Repeat

  1. Выполняются операторы тела цикла.

  2. Проверяется условие: если оно истинно, то происходит выход из цикла, если ложно, то еще раз выполняется тело цикла.


Особенности цикла Repeat

  1. Число проходов цикла заранее неизвестно, минимальное количество – 1.

  2. Выход из цикла, если условие истинно.

  3. Условие может быть простым или сложным.

  4. Тело цикла может состоять из нескольких операторов.

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


ЗАДАЧА Ввести с клавиатуры ряд чисел, признак окончания ввода – число 0. Найти сумму чисел.

Решение.


Program Summa_Repeat;

Const End_Repeat =0;

Var chislo, Summa: integer;

Begin


Summa:= 0; {Начальное значение для суммы - 0}

Repeat


Write (‘Введи число ’);

Readln (chislo); {в переменную chislo вводится с клавиатуры значение}

Summa := Summa + chislo; {к старому значению суммы добавится введенное число}

Until chislo = End_Repeat;

Writeln (‘Сумма = ’, Summa);

Readln


End.
САМОСТОЯТЕЛЬНО Изменить программу так, чтобы она находила:

а) сумму четных чисел;

б) произведение чисел (измените константу!);

в) квадрат каждого числа.


Д/З Изменить программу так, чтобы она находила количество введенных чисел.

Урок 16. РЕШЕНИЕ ЗАДАЧ.

Вводить с клавиатуры числа до тех пор, пока не будет введено число "100". Найти:

а) количество четных чисел (таких, у которых остаток от деления на 2=0);

б) сумму отрицательных чисел ;

в) произведение чисел, попадающих в интервал [5; 15];

Д/З Вводить с клавиатуры символы до тех пор, пока не будет введен пробел.

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



Урок 17. ЦЕЛОЧИСЛЕННАЯ АРИФМЕТИКА.

Чтобы разделить число на отдельные цифры, воспользуемся операциями div и mod:

х mod 10 - получим правую цифру числа

х div 10 - получим левую часть числа (без одной цифры).

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

ЗАДАЧА. Ввести с клавиатуры натуральное число. Найти сумму его цифр.

Решение: Programm Sum;

Var chislo; word; {число, введенное с клавиатуры}

tchifra, Summa:integer; {tchifra - правая цифра}}

begin

Write ('введи число');



Readln (chislo);

Summa:=0;

Repeat

tchifra:-chislo mod 10; {скопировали правую цифру}



Summa:=Summa+tchifra;

chislo:=chislo div 10 {оставили от числа левую часть}

Until chislo=0; {выход из цикла, если нет больше цифр}

Writeln ('сумма цифр= ', Summa);

Readln end.

САМОСТОЯТЕЛЬНО: Изменить программу так, чтобы в ней подсчитывалось:

а) количество цифр числа;

б) произведение цифр, больших 0;

в) сумма цифр, меньших 3.



Д/З. Ввести с клавиатуры натуральное число. Сколько в нем цифр "5"?

Урок 18. РЕШЕНИЕ ЗАДАЧ. ТИП LONGINT.

ЗАДАЧА Ввести с клавиатуры натуральное число. Приписать к нему с обеих сторон по цифре 7.

Чтобы к числу приписать справа какую-либо цифру, нужно умножить его на 10 и прибавить к результату заданную цифру:

123 => 123*10 => 1230+7 => 1237

Чтобы приписать цифру слева, нужно ее умножить на 10 или на 100, или на 1000 и к результату прибавить исходное число:

123 => 7*1000 => 7000+123 => 7123

84 => 7*100 => 700+84 => 784

52349 => 7*10000 => 700000+52349 => 752349

Для решения этой задачи надо получить из 3-значного числа 5-значное, из 4-значного - 6-значное. Поэтому ни тип integer, ни тип word для ответа не подходят. Тип переменных LONGINT позволяет работать с числами из интервала от -2147483648 до 2147483647.

Решение:

Programm Dve_7;

Const Seven=7; {цифры, которые припишем}

Var new, {новое число}

mnochitel:longint; {на что умножим левую семерку}

chislo, copia:word; {в переменной copia будем сохранять}

begin {значение числа, введенное с клавиатуры.}

Write ('введи число ');

Readln (chislo); copia:=chislo;

mnochitel:=1; {начальное значение множителя = 1}

Repeat

mnochitel:=mnochitel*10;



chislo:=chislo div 10

Until chislo=0;

new:=(Seven*mnochitel+copia)*10+Seven;

Writeln ('новое число=', new);

Readln

end.


САМОСТОЯТЕЛЬНО.

1. Ввести с клавиатуры натуральное число. Изменить его левую цифру на "9".

2. Ввести с клавиатуры натуральное число. Равны ли его первая и последняя цифры?

Д/З. Ввести с клавиатуры натуральное число. Напечатать его "перевертыш".

Урок №19. ОПЕРАТОР ЦИКЛА WHILE.

Оператор While служит для реализации циклического алгоритма с пред-условием.

Общий вид: While <условие> do

<оператор>;
Порядок выполнения цикла While.

Проверяется условие: если оно истинно, то выполняются операторы тела цикла. Если ложно, то происходит выход из цикла.


Особенности цикла While.

  1. Число проходов цикла заранее неизвестно, минимальное количество – 0.

  2. Выход из цикла, если условие ложно.

  3. Условие может быть простым или сложным.

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

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


ЗАДАЧА Ввести с клавиатуры несколько дробных чисел, признак окончания ввода – число 1000. Найти и напечатать целую часть каждого числа.

Решение.


Program Trunc_While;

Const End_While =1000;

Var chislo: real;

Tr: integer;

Begin

Write (‘Введи число ’);



Readln (chislo); {в переменную chislo вводится с клавиатуры значение}

While chislo <> End_While do

begin

Writeln (‘Целая часть = ’, Trunc (chislo));



Write (‘Введи число ’);

Readln (chislo)

End;

Readln


End.
САМОСТОЯТЕЛЬНО Изменить программу так, чтобы она находила:

а) дробную часть чисел;

б) произведение чисел, меньших 22;

в) сумму чисел, которые попадают в промежуток [10, 50].


Д/З Изменить программу так, чтобы она находила среднее арифметическое введенных чисел.

Урок №20. ЧИСЛА ФИБОНАЧЧИ
Рассмотрим последовательность чисел: 1, 1, 2, 3, 5, 8, … В этом ряду каждое новое число – это сумма двух предыдущих, а первое и второе равны 1. Последовательность, составленная таким образом, называется рядом Фибоначчи, а каждое из чисел – числом Фибоначчи.

Составим цикл для нахождения N-ого числа этой последовательности:

x0 := 1;

x1 := 1;


k := 3

While k <= n do

Begin

x := x0 + x1;



x0 := x1;

x1 := x;


k := k + 1

end;


Writeln (n, ‘-ое число Фибоначчи = ‘, x);
САМОСТОЯТЕЛЬНО.

  1. Найти номер первого числа Фибоначчи, большего 100.

  2. Найти количество первых чисел Фибоначчи, для которого сумма больше 100.

  3. Найти произведение первых К чисел Фибоначчи для К, введённого с клавиатуры.


Д/З Сколько чисел Фибоначчи потребуется для нахождения произведения, большего 1000?

Урок 21. Алгоритм Евклида.

Алгоритм Евклида служит для нахождения НОД двух чисел. Основная идея алгоритма: если х>у и r - остаток от деления х на у, то НОД(х,у) = НОД(у,r). Это равенство можно продолжать до тех пор, пока остаток не станет равен 0.

На Паскале этот алгоритм можно записать без использования переменной r:

While (х>0) and (у>0) do

if х>у then х:=х mod y

else y:=y mod х;

nod:=х+у;

Так как на определенном этапе выполнения цикла остаток от деления станет равен 0, то при выходе из цикла одна из переменных (либо х, либо у) получит значение 0, а в другой переменной будет НОД.



САМОСТОЯТЕЛЬНО:

1) Найти НОД (х,у)

2) Найти НОД (х,у,z)

3) Найти НОК (х,у) = х*у / НОД (х,у) Комментарий: перед циклом следует

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

цикла переменные х и у будут испорчены.



Д/З. Определить, являются ли числа х и у, введенные с клавиатуры, взаимно

простыми. (Взаимно простыми называются числа, у которых НОД = 1).



Урок №22 ОПЕРАТОР ЦИКЛА С ПАРАМЕТРОМ.

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

For <параметр> := <начальное значение> to <конечное значение> do <операторы тела цикла>;

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

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

ПОРЯДОК ВЫПОЛНЕНИЯ ОПЕРАТОРА FOR.

1. Вычисляются начальное и конечное значение.

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

3. Выполняются операторы цикла.

4. Значение параметра цикла увеличивается на один шаг.

5. Проверяется условие: если значение параметра цикла не больше конечного, то происходит переход к п.3, иначе - конец цикла и продолжение программы.



ПРАВИЛА ИСПОЛЬЗОВАНИЯ ОПЕРАТОРА ЦИКЛА.

1. Запрещается вход в цикл, минуя оператор FOR, то eсть передача извне управления на операторы тела цикла недопустима.

2. В операторе FOR можно задавать и отрицательный шаг, тогда общий вид оператора цикла будет таким:

For <параметр> := <начальное значение> downto <конечное значение> do <операторы тела цикла>;

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

ЗАДАЧА Ввести с клавиатуры a и b. Найти сумму целых чисел, принадлежащих отрезку [a, b].

Решение


Program Summa_for;

Var Summa, x, a, b: integer; х-число между а и b

begin

Write ('Введи a и b ');



Readl (a, b);

Summa := 0;

For x:=a to b do begin

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

Readln (x);

Summa := Summa + x end;

Writeln ('сумма=', Summa);

Readln end.



САМОСТОЯТЕЛЬНО:

1. Ввести с клавиатуры 7 чисел, найти их произведение.



Д/З Задать случайным образом 12 чисел. Найти их среднее арифметическое.

Урок №23 РЕШЕНИЕ ЗАДАЧ.

1. Задать случайным образом 10 чисел от 22 до 135. Напечатать те из них, которые больше 100.

2. Задать с клавиатуры А и N. Напечатать значение А в степени N.

3. Задать с клавиатуры N. Напечатать значение N! = 1*2*3*4*...*N.

4. Напечатать большие русские буквы в строчку через 2 пробела.

5. Напечатать маленькие русские буквы в 2 строчки: от "я" до "р", от "п" до

"а".

6. Ввести с клавиатуры 5 значений для Х. Вычислить и напечатать для каждого из них значение Y по правилу:



а) б)

3*X, если X<=-9 X/10, если X<=-5

Y = X-8, если -9

3*X, если X>=9 X/10, если X>=9


Д/З Напечатать маленькие английские буквы в столбик от "z" до "а".

Урок №24 ОДНОМЕРНЫЕ МАССИВЫ.

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

Массивы - это фиксированное количество упорядоченных однотипных переменных, обозначенных одним и тем же именем, например: A, T. Отдельные переменные в массиве называются элементами. Они располагаются в памяти ЭВМ в определенном порядке. Место каждого элемента массива определяется его номером (индексом), по которому можно обратиться к значению переменной: A[1], D[4], Ms[6], Tt[3]. Индексом массива может быть не толькo число, но и переменная, и числовое или буквенное выражение дискретного типа.

В качестве примера можно привести следующие виды массивов:

а) массив - список учеников вашего класса: индексом служит порядковый номер, элементы массива - фамилии учеников;

б) оценки по информатике каждого ученика - массив, в котором индексом служат порядковые номера уроков, а элементы массива - оценки.

Массивы характеризуются типом переменных, размерностью и размером. Тип элементов - арифметический или символьный. Размерность массива - число индексов, определяющих один элемент массива. Если индекс один, то массив - одномерный. Размер - это количество элементов в массиве.

При работе с массивами нужно придерживаться следующей схемы:

1) объявление массива;

2) задание начальных значений элементам массива;

3) работа с элементами массива;

4) печать результатов.

Рассмотрим подробнее каждый шаг.

1. ОБЪЯВЛЕНИЕ. Каждый массив, используемый в программе, должен быть заранее объявлен. Пример:

Const n=5;

Var а: array [1..n] of real; - массив a из 5 дробных чисел.

Const n=12;

Var c: array [1..n] of char; - массив c из 12 символов.

2. ЗАДАНИЕ НАЧАЛЬНЫХ ЗНАЧЕНИЙ. Для присваивания значений элементам массива очень удобно использовать цикл. Пусть объявлен массив В, состоящий из 5 элементов типа integer. Тогда значения могут быть заданы 2 способами:

а) с клавиатуры: For K:=1 to 5 do begin

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

Readln (B[k]) end;

б) с помощью генератора случайных чисел:

For K:=1 to 5 do begin

B[k] := Random (x1 - x0) + x0;

Write ('B[', k, ']=', B[k]) end;



3. РАБОТА С ЭЛЕМЕНТАМИ МАССИВА. В основной части программы решается поставленная задача. Все элементы массива перебираются в цикле, где происходит их сравнение, или изменение, или поиск большего ( меньшего ) элемента, или вычисление суммы, или другие заданные операции.

4. ПЕЧАТЬ ПОЛУЧЕННЫХ РЕЗУЛЬТАТОВ - заключительная часть программы. Если требовалось изменить элементы массива, то нужно напечатать их новые значения. Элементы одномерного массива можно распечатать в строчку или в столбик. Это делается в цикле. Рассмотрим вывод значений на примере массива В из 5 элементов:

а) в столбик - б) в строчку -

For K:=1 to 5 do For K:=1 to 5 do

Writeln ('B[', k, ']=', B[k]); Write (B[k]:6);



ЗАМЕЧАНИЕ. Если элементы массива задаются не с клавиатуры, то желательно распечатать их значения, прежде чем начать работать с ними. Для этого в цикле, где они задаются ( см. п. 1 ), надо вставить оператор печати.

САМОСТОЯТЕЛЬНО: Задать случайным образом 9 элементов массива - целые числа

- и напечатать их в строчку.



Д/З: Выучить конспект.


Достарыңызбен бөлісу:
  1   2




©dereksiz.org 2024
әкімшілігінің қараңыз

    Басты бет