РАБОЧАЯ ТЕТРАДЬ по информатике для 9 класса Введение в язык программирования



РАБОЧАЯ ТЕТРАДЬ
по информатике
для 8 класса

"Введение в язык программирования"
Turbo Pascal ВВЕДЕНИЕ В ЯЗЫК ПРОГРАММИРОВАНИЯ.
урока №1.

Тема: Знакомство со средой программирования Turbo Pascal.
Цель: Познакомиться со средой программирования Pascal, понять структурный подход в построении программы. Определить понятие переменной (идентификатора) и научиться отличать разность отводимой памяти, операций, доступных для данного типа данных.

Ход урока.

Язык программирования Pascal был создан как язык программирования специально для обучения программированию Николасом Виртом в 70 гг. 20 в. Программирование в нашей жизни используется гораздо чаще, чем вам кажется. Любой современный кассовый аппарат одержит элементарные программы, которые туда записали специалисты. Современные музыкальные центры, стиральные машины даже так и называются: программируемые. Вам нужны элементарные навыки программирования для того, чтобы пользоваться бытовыми предметами. В этом ничего сложного нет, надо только научиться применять уже имеющиеся вами знания и добавить к ним немного нового.
Итак, Pascal – язык программирования. И как любой язык он имеет свой алфавит. Алфавит языка Pascal - это все символы, использующиеся при написании программы. Алфавит языка Pascal состоит из русских и латинских больших и маленьких букв, цифр, знаков операций,(+,-,*,/), одинарные кавычки (') (в английской раскладке буква 'э'), знак пробела, знак подчёркивания (_-нажимается (Shift + "-")).
Теперь разберем, в каком порядке и что нам надо использовать, чтобы программа заработала
Структура программы языка Pascal.
Программа в Pascal состоит из двух разделов
1. Раздел описаний. – здесь указываются все необходимые компоненты для вашей программы.
Program
название программы

Uses
раздел подключения библиотек

Const
раздел описания постоянных величин

Var
раздел описания переменных

function procеdure
раздел описания функций и процедур.

2. Раздел операторов.
В этом разделе производятся все вычисления и выполняются все операции.
Begin - начало программы
Набор операторов
End. - конец программы
Хочется обратить внимания на то, что в конце каждой строки ставиться точка с запятой.
Для написания любой программы нам понадобятся переменные величины – ячейки памяти компьютера, в которых будут храниться какие-то значение. Даже для самого простого примера – сложить 2 числа – вам понадобятся 3 переменные!
Поэтому разберем более подробно раздел описания переменных, итак переменная описывается так:
Var <Идентификатор> : <тип>;
Идентификатор еще называют именем переменной, и он связывается с ячейкой памяти компьютера.
Правило построения идентификаторов: Идентификатор может состоять из латинских букв, цифр, знаков подчёркивания, и начинается с буквы, не содержит пробелов. Тип переменной определяет объём памяти отводимой для хранения переменной и какие операции с ней можно производить.
Какие же существуют типы данных?
Типы:
Integer
Тип данных ,содержащий целые числа из диапазона (-32767..32768)

Real
действительные числа (дробные) числа из диапазона (2,9*10-39..1,7*10 38)

Char
символьный тип данных, может содержать любой символ, один.

String
строковый тип данных, может содержать набор символов от 0 до 255

Boolean
- логический тип данных, переменные принимают значение (Истина или Ложь) (True или False)


Пример: опишем 4 переменные: 2 целого типа и 2 дробного и сложить их. Для этого нам надо знать не только, как описать переменные, но и как присвоить переменной какое-либо значение. Для этого нужен оператор, который так и называется: оператор присваивания. Он выглядит := используется а :=45; В начале просматривается выражение или значение справа, а потом результат или просто число записывается в переменную, стоящую слева.
Что же у нас получается:
Program e3;
Var
a, bro, sum1 : Integer;
t, juk22, sum2 : Real;
Begin
a := 4;
bro := 7;
sum1 := a+bro;
t:= 5.12;
juk22 ;= 8.76;
sum2 := t+juk;
End.
Осталась одна маленькая деталь. А как же увидеть результаты? Для этого нужен оператор вывода на экран. Сегодня разберем самый простой его вид: WriteLn ( идентификатор)
Следовательно в конце программы надо дописать вывод на экран значения переменных, которые вы вычислили в программе. (WriteLn(sum1)).
Запускаем Pascal и начинаем набирать программу.
Запустить программу для выполнения – Ctrl + F9.
Просмотреть результат – Alt + F5.





Домашнее задание:
Придумать 3 правильных и три неправильных идентификатора.
Правильные
Неправильные












Описать по две переменных каждого типа.
Integer
Real
Char
String
Boolean














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



Вопросы для проверки усвоенных знаний.
Являются ли идентификаторы правильными:
Идентификатор
Да
Нет

Dft



2kjg



hgf_mhg



jhj ln



ппkbf




К какому типу данных будут относиться переменные
Переменная
Тип

D := 77


F:=5.87


U:=true


Ju76:=’h’


Re ;= mhff’



урок №2.
Тема: Операторы вывода на экран и ввода с клавиатуры.

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

После того, как мы уже научились производить элементарные вычисления и в простой форме выводить их на экран, познакомимся с разными формами оператора вывода данных на экран.
Кроме формы Writeln оператора вывода на экран есть еще форма Write, того же оператора.
При помощи этой формы можно также вывести на экран значение переменной, например переменной х: Write(х);
Оператор выведет именно содержимое ячейки х, то есть на экране появится не x, а, например, 2, то есть то что лежит в переменной х. Понятно, что при необходимости вывода на экран нескольких переменных, пишем:
Write(a,b,c);
В чем же разница между формами оператора? При использовании оператора Writeln некоторая информация выводится на экран, а курсор переводится на следующую строку. То есть те данные которые мы будем выводить дальше будут выведены на следующей строке.
При использовании формы Write оператора вывода, после вывода на экран информации курсор останется на следующей позиции Например, рассмотрим фрагмент программы:
a:=2; b:=3;
Write(a); Write(b);
На экране появится:
23
- неудобно!
А если напишем:
a:=2; b:=3;
Writeln(a); Writeln(b);
На экране появится:
2
3
- уже намного приятней!
Иногда бывает нужно вывести на экран не значение переменной а просто какое-то слово или предложение. Фраза, которую надо вывести на экран, заключается в одинарные кавычки. Т.е.:
Writeln('Привет мир!');
На экране появится:
Привет мир!
Очень часто используется конструкция:
Writeln('a=' , a);
Если в переменной а хранится число 3, то на экране появится: а=3.
Между разными элементами вывода ставиться ,!

Оператор ввода переменных с клавиатуры.
Read (имя переменной);
В скобках мы указываем имя переменной, в которую мы хотим получить значение с клавиатуры.. Если необходимо считать значение в переменную "a" то будет написано Read(a); В конце строки стоит точка с запятой.
И ещё один оператор ввода с клавиатуры: Readln(x);
По аналогии с оператором вывода, заметим, что оператор считает значение в переменную х и переведет курсор на следующую строку.
После запуска программы, в которой присутствуют операторы Read или Readln, не пугайтесь, если перед Вами появится чёрный экран с моргающим курсором, это значит, что компьютер ждёт от вас ввода числа (чисел). Вам необходимо ввести число и нажать Enter.
Бывает нужно ввести несколько чисел при помощи одного оператора. Тогда используем:
Read(a,b,c); или Readln(a,b,c);
При этом числа вводятся через пробел, или же после каждого нажимается клавиша Entеr.
Задачи на урок:
Ввести с клавиатуры 3 переменные дробного типа и удвоив значение каждой из них, вывести на экран на одной строке через 3 пробела.



Ввести с клавиатуры 4 переменные, перед вводом переменной вывести на экран что именно вы хотите ввести.


Вопросы для проверки усвоенных знаний.
Что появится на экране при использовании операторов:
Write (я’);
WriteLn(люблю’);
Wirte(информатику’);
Что появится на экране при использовании операторов:
а:= 5.7; c := a+0.3;
Write(значение а’,с,’равно с’);

Ответ:


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


урок №3.

Тема: Формат вывода чисел на экран.

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

Для того, чтобы открыть созданную программу, надо в начале указать, в какой рабочей директории мы будем работать, т.е. в какую директорию будем записывать и из какой директории будем брать программы. Для нашего класса это:
Чтобы установить эту директорию, надо вызвать верхнее меню -> F10. В появившейся строке выбрать пункт File, в нем пункт Change Dir. В появившемся окне укажем нужную директорию, нажмем Enter.
Теперь, чтобы открыть нужный Вам файл, достаточно нажать F3.
Нам сегодня нужен файл lesson3.pas. Его нужно выбрать в самой большой части открывшегося окна. Для перемещения между фрагментами окна -> Tab. Выбрав, перемещаем курсор на кнопку Ок и нажимаем Enter.
Program z1;
Var
a, b, sum, chast : Integer;
Begin
a := 2;
ReadLn (b);
Sum := a + b;
chast := a / b;
WriteLn (' sum = ', sum );
WriteLn (' chast = ', chast );
End.


Откомпилируйте и запустите ее.
Просмотрите результат, Вы видите, что сумма вывелась нормально, а частное – непривычным для Вас числом.
Расшифровать результат можно так: число, которое стоит до Е надо умножить на 10 в такой степени, которая стоит после Е. В Вашем случае это будет
Чтобы каждый раз не проводить подобные вычисления в уме можно задать формат вывода числа. Для целых чисел можно задать, сколько позиций отводится для расположения числа на экране. Например, для нашего случая sum :5 – на вывод полученной суммы мы отводим 5 позиций. В начале будут пробелы, а потом само число.


Раз речь идет про формат вывода на экран, то, очевидно, что использоваться он будет в операторе вывода на экран.
Для дробного числа надо задать, сколько позиций отводится для расположения числа на экране, а затем, сколько из них позиций для дробной части. Например, для нашего случая chast :7:2 – 7 позиций для всего числа, а 2 из них для дробной части.
Чтобы сохранить измененную программу с Вашим именем, нужно выполнить следующую последовательность действий: F10->File->Save as-> указать имя, которое вы хотите дать программе. Чтобы не путаться будем называть программы по следующей схеме: l номер урока m номер машины z номер решаемой задачи.
Эту задачу сохраните : l3z1m*.
Запишите полученную программу:








урок №4.

Практическая работа №1 Создание простейших линейных программ.
Цель: закрепить полученные практические навыки, научиться корректно записывать арифметические выражения.
Задание на урок: Разобрать теоретическую часть, выполнить практическое задание и сохранить его в указанной директории.
Теоретическая часть.
Из математики Вы знаете, что не все арифметические операции имеют одинаковый приоритет. Например: d = h+t*m. Несмотря на то, что умножение записано вторым действием, выполняться оно будет первым.
В программировании все точно так же. Приоритеты операций не отличаются от математики. Однако отличие все же есть. Если в математике Вы могли не писать знак *, то в информатике этого сделать нельзя. При написании программы обязательно нужно указывать все знаки операций. Например, записанное математическое выражение f=5re+8un в программе будет записано f:=5*r*e+8*u*n.
Сложнее с использованием операции деление. Выражения справа и слева от знака делить необходимо заключать в скобки. Например: выражение 13EMBED Equation.31415 будет иметь вид: (f+k)/(r*n).
Задание для закрепления. Запишите в тетради как будут выглядеть следующие выражения: 2го+13EMBED Equation.31415; о+13EMBED Equation.31415
Практическое задание.
Открыть задачи lesson4.pas из Вашей рабочей директории.
Исправить ошибки в программе и сделать так, чтобы все значения выводились с новой строки. Сохранить задачу с именем, согласно шаблону, указав при этом в первой строке в фигурных скобках Ваши фамилии.
Домашнее задание:

Исправив сохраненную задачу, найти значение выражения a+13EMBED Equation.31415 где a, b, c, d, e, f ввести с клавиатуры. Результат вывести на экран, оформив при этом корректно формат вывода. Сохранить задачу с именем, согласно шаблону, указав при этом в первой строке в фигурных скобках Ваши фамилии.
Ввести число в переменную а. Найти пятую степень и вывести результат на экран. Сохранить задачу с именем, согласно шаблону, указав при этом в первой строке в фигурных скобках Ваши фамилии.
Домашнее задание:
Подготовиться к контрольной работе.
Решите задачу. Ввести с клавиатуры 4 числа (тип подобрать самостоятельно). Найти произведение первого на второе, частное третьего и четвертого, сумму полученных двух значений. Первые два результата вывести на экран в одной строке. Третий результат вывести с новой строке. При выводе на экран использовать формат вывода чисел.
ОПЕРАТОРЫ ВЕТВЛЕНИЯ.

урок №5.
Цель: Познакомиться с условным оператором, определить случаи его использования. Выяснить, всегда ли нужна полная форма условного оператора.
В нашей жизни часто возникают ситуации, которые разрешаются не однозначно. Самый простой пример: когда Вы подходите к перекрестку, Вы не сразу переходите дорогу. В начале Вы смотрите на светофор. Если у светофора зеленый сигнал, тогда Вы переходите дорогу, иначе ждете.
Для наглядности изобразим этот процесс в виде схемы. Из схемы видно, что в начале процесс линейный, т.е. есть только один путь. После того, как проверили сигнал, возможны 2 варианта дальнейших действий. Такой процесс, который имеет несколько возможных исходов, в зависимости от различных условий, называется ветвлением.
Рассмотренный сейчас пример – один из возможных операторов ветвления – условный оператор. В начале проверяется условие, а потом выполняется одно из 2-х возможных вариантов действий.
В первом примере не зря выделены 3 слова: если тогда иначе. Именно из этих слов и будет состоять условный оператор в Pascal. Только не на русском, а на английском языке – if then else.
Представим оператор в виде схемы.
Полная форма условного оператора записывается так:
If условие Then оператор_1 Else оператор_2.
Рассмотрим пример: вести с клавиатуры число. Определить, положительное оно или отрицательное, о чем вывести сообщение на экран.
В начале, перед тем как решать задачу на компьютере, составим схему:
Теперь можно составлять программу. Откройте файл lesson6.pas из Вашей рабочей директории. В нем пример этой рабочей программы.







Задание для закрепления. Ввести с клавиатуры 2 числа. Вывести на экран большее из чисел.
Блок-схема
Программа


Рассмотрим далее еще один пример. Вспомните сказку про русских богатырей. Когда они оказывались на перекрестке перед ними лежал камень с надписью: «Направо пойдешь – без коня останешься. Налево пойдешь – жизни лишишься. Прямо пойдешь – жену найдешь». Попробуйте представить эти условия в виде схем. Чем они отличаются от предыдущих примеров?
В этом случае в операторе ветвления нет оператора_2. Такая форма условного оператора называется сокращенной, записывается она так:
If условие Then оператор_1.
В виде схемы представляется так.
Решим задачу. Ввести два числа. Если первое больше второго, увеличить его в 2 раза и вывести его на экран.
В начале нарисуем схему.



Получается, что в этом случае, вместо оператора_1 нужно выполнить сразу 2 оператора. Как это сделать?
Если после Then или Else требуется выполнение более, чем одного оператора, их заключают в операторные скобки - Begin и End.
Решение нашей задачи:


Хочется обратить внимание на строку a := a*2. В математике такая запись имеет смысл, только при а = 0. В Pascal Вы рассматриваете не равенство, а оператор присваивания. В начале выполняются действия справа от знака :=, а затем результат кладется в ячейку, имя которой стоит слева от знака :=.
Задание для закрепления. Ввести 2 числа. Если они равны, то первое увеличить в 2 раза, а второе уменьшить в 2 раза. На экран вывести обе переменные.
Блок-схема
Программа

Домашнее задание:
Найти пример из любого стихотворения, в котором встречались бы обе формы условного оператора.
Нарисовать схемы и решить задачи:
Ввести 3 числа. Проверить, есть ли среди введенных чисел равные. Если есть – вывести на экран слово «Да» и значение равных чисел.
Блок-схема
Программа





урок №6.
Практическая работа №2 Условный оператор в Pascal. Логические операции. Стандартные функции Pascal.
Цель: Закрепить навыки работы с условным оператором. Познакомится с логическими операциями, научиться применять их в конкретно заданных ситуациях.
Теоретическая часть.
В начале вспомним некоторые операции сравнения, которые допустимы в Pascal. . По смыслу они совершенно не отличаются от известных из математики, однако отличаются записью.
<
меньше

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

>
больше

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

=
равно

<>
неравно

Используются эти операции также как принято в математике, например: 4<6 или 6>10. Разница только в том, что первое выражение верно, а второе – ложно.
Следует обратить внимание на то, что знак = это операция сравнения и назначение его отличается от назначения оператора := (присвоить). Операция “=” лишь сравнивает значение двух переменных (или чисел), а присвоить - заносит какое-либо значение в конкретную переменную.
Разберем некоторые стандартные функции Pascal.
Abs(x) –определяет модуль числа х Используется: а:= Abs(x).
Mod - определяет остаток от деления одного числа на другое. Используется a:= f mod g. Применяетcя чаще всего для определения делимости одного числа на другое. Например, если число w четное, то остаток от деления w на 2 = 0. При помощи оператора это равенство запишется: a :=w mod 2. Если а =0, то число w четное.
Div - определяет целую часть от деления одного числа на другое. Используется a:= f div g. Применяетcя чаще всего, В случае, когда не важна дробная часть от деления. При применении оператора div результат можно положить в переменную типа Integer.
Логические операции используются в Pascal для проверки более одного условия. Также как в жизни. Например: Вы говорите, я пойду в кино, если успею сделать домашнее задание и, если мама даст мне денег. В случае не выполнение одного из условий, в кино Вы не попадете. Или, иначе: я пойду в кино, если успею сделать домашнее задание другу и он мне заплатит или, если мама даст мне денег. В кино Вы попадете, когда одного из условий выполнится. Также и здесь.
Логическое «и». AND
Используется (логическое выражение 1) and (логическое выражение 2)
Результатом операции будет ИСТИНА, если истинны оба выражения и ЛОЖЬ в противном случае.
Пример: (а >5) and (a < 18).
3
ложь

5
ложь

15
истина

77
ложь

При a =




Логическое «или». OR
Используется (логическое выражение 1) or (логическое выражение 2)
Результатом операции будет ИСТИНА, если истинно хоть одно выражение и ЛОЖЬ в противном случае (т.е. если все выражения ложны).
Пример: (а >5) or (a mod 2 = 0).
3
ложь

4
истина

15
истина

77
истина

При a =




Логическое «не». NOT
Используется NOT(логическое выражение )
Изменяет значение выражения на противоположное.
Например: Not ( Abs (t) > 6).
3
истина

- 4
истина

15
ложь

-77
ложь

При t=




Вопросы для закрепления.
Запишите в тетради, как будет выглядеть условия
о делится на 3 без остатка и больше 46
Ответ:



с по модулю меньше 15 или по модулю больше 67.
Ответ:



Практическая часть.
Используя шаблон прошлого урока (lesson6.pas) решите следующие задачи.
Ввести с клавиатуры число. Если оно положительное и четное, разделить его на 2 и вывести на экран. В противном случае вывести на экран надпись «нечетное».
Блок-схема
Программа


Ввести 2 числа. Если модуль второго > 32, а первое делится на 3 без остатка- сложить числа. В противном случае вывести на экран «Ура!».
Блок-схема
Программа


Домашнее задание:
Ввести 2 числа, вычислить сумму чисел и их произведение вывести на экран большее значение.
Блок-схема
Программа


Ввести 2 числа, занести в ячейку max большее значение и вывести.
Блок-схема
Программа


Ввести 3 числа и найти большее из них.
Блок-схема
Программа



урок №7.
Оператор множественного выбора Case of.
Цель: Познакомиться с оператором множественного выбора, привести примеры использования и указать на отличия от условного оператора. Определить задачи, в которых удобнее использовать оператор множественного выбора.
Иногда приходится решать задачи, когда использовать условный оператор If Then Else не удобно. Например, в зависимости от введенной цифры (от 1 до 7) вывести на экран соответствующий день недели. Тогда, при помощи оператора If решение будет выглядеть следующим образом.
Program z1;
Var
r : Integer;
Begin
ReadLn (r);
If r = 1 Then WriteLn ('понедельник')
Else If r = 2 Then WriteLn ('вторник')
Else If k = 3 Then WriteLn ('среда')... и т. д.

End.
Это не удобно - очень много вложенных друг в друга условных операторов. Оператор Cаse - оператор выбора используется он следующим образом.
Case k of
символ1 : Begin <операторы1> End;
символ2 : Begin <операторы2> End;
символ3 : Begin <операторы3> End;
символ4 : Begin <операторы4> End;
.......
Else Begin <операторы> End;
End;
Где вместо символа стоит переменная перечисляемого типа (символьный - переменные этого типа содержат только один символ или типа Integer) а после : набор операторов, которые надо выполнить.
Обратите внимание. Что вместе с оператором Case of всегда используется окончание оператора – End. Часть после Else не обязательна, как и для оператора If Then Else.
Для нашего примера:
Program z1;
Var
t : Integer;
Begin
ReadLn(t);
Case t of
1 : WriteLn ('понедельник');
2 : WriteLn ('вторник');
3 : WriteLn ('среда');
4 : WriteLn ('четверг');
........
Else WriteLn ('такого дня недели нет');
End;
End.
Как видно из примера, оператор Case удобен, когда надо выбрать значение переменной из конечного набора каких-либо значений.
В случае если нужно указать не один символ, а несколько, их указывают через запятую.
Например: магазин работает в понедельник, среду и пятницу. В зависимости от введенного цифрой дня недели определить, рабочий день или выходной.
Program z1;
Var
w : Integer;
Begin
ReadLn(w);
Case w of
1, 3, 5 : WriteLn ('Рабочий день ');
2, 4, 6, 7 : WriteLn ('Выходной день ');
Else WriteLn ('такого дня недели нет');
End;

Задачи на урок:
Ввести номер месяца, на экран вывести, сколько дней в этом месяце.

Блок-схема
Программа


Напечатать расписание уроков на введенный Вами день.
Блок-схема
Программа


Домашнее задание.
Определите при помощи какого оператора ветвления удобнее решать задачи и решите их.
Известно, что доктор принимает пациентов в первой половине дня по четным числам месяца и во второй половине дня по нечетным числам месяца. Ввести с клавиатуры число и определить принимает ли сегодня доктор.
Ввести с клавиатуры дату, используя при этом 3 переменные: например 28.01.1997 (вводите в переменные a, b, c без точек!) Напишите программу вывода даты с написанием месяца прописью. Для нашего примера выведется: 28 января 1997 года.
1
2


урок №8.
Практическая работа №3. Создание программ при помощи операторов ветвления.
Цель: Научиться определять тип оператора ветвления, который лучше всего подходит к данной задаче, научиться упрощать запись операторов ветвления.
Теоретическая часть (первую половину заданий решаете в классе, вторую - дома).
Найдите и исправьте ошибку в записи операторов:
a)
If g :=8 then u:=99;

b)
If r <99 then t=8765;

c)
If s = 55 then g:=0; else g:=98;

d)
If uu 13 EMBED Equation.3 141545 Then uu := 45;


a
b
c
d

Запишите одним условным оператором:
a)
if a>b then c:=11;
if a>b then d:=22;
if a<=b then c:=33;
if a<=b then d:=44;

b)
if a>b then c:=с div 6 ;
if a>b then d:=54;
if a<=b then c:=c mod 3;
if a<=b then d:=1;





Чему будет равно значение переменной z при рассмотрении следующих операторов:
a)
Begin
f := 4;
If (f
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
Чему будут равны результаты логических операций при приведенных значениях переменной n:
a) (n mod 2 = 0 ) Or (Abs(n) > 35)
N = 3; 4; 45, 35;
b) (n mod 2 = 0 ) And (Abs(n) > 5)
при N = 3; 4; 15, 22;





Практическая часть. Определите при помощи какого оператора ветвления лучше решить задачу и решите ее (при использовании условного оператора приведите блок-схему решения).
Ввести с клавиатуры 3 числа (a, b, с). Напишите программу для выяснения лежит ли число с между числами a и b.
Блок-схема
Программа


Обозначим 1-алг, 2 – геом, 3 – инф, 4 – русск, 5- укр, 6 – физра. По введенной цифре вывести на экран, в какие дни недели у Вас введенный предмет.
Блок-схема
Программа


Ввести с клавиатуры некоторый год. Определить, принадлежит ли этот год XX веку.
Блок-схема
Программа

Домашнее задание:
Подготовиться к тематической аттестации.
Решить задачу:
Ввести с клавиатуры 2 числа. Если первое и отрицательное, тогда найти разность чисел и удвоить ее, результат вывести на экран. Иначе – найти произведение модуля первого числа на целую часть от деления второго числа на 8, результат на экран.
Блок-схема
Программа


ЦИКЛЫ В ЯЗЫКЕ ПРОГРАММИРОВАНИЯ
урок №9.
Тема: Циклы в Pascal. Цикл с параметром.
Цель: Определить понятие цикла и определить применение конструкции цикла. Разные виды циклов в Pascal. Цикл с параметром.
Итак, переходим к изучению циклических процессов. Цикл – многократно повторяющийся процесс. Например, в жизни в течение 10 лет в вашей жизни 5 дней в неделю Вы каждое утро идете в школу и каждый вечер возвращаетесь домой. Уроки у Вас могут быть разные, но суть от этого не изменяется: Вы ходите в школу для выполнения одинаковых действий – показать выполненное домашнее задание, услышать объяснение нового материала, закрепить его и получить новое домашнее задание.
Так же и в Pascal (как, в общем - то в любом языке программирования). Есть несколько циклических конструкций. Вот, например: Вам надо подсчитать средний балл учеников по последней контрольной. Для этого Вам надо сложить все оценки, вводя из при этом с клавиатуры. В классе 40 учеников. Неужели придется 40 раз писать оператор ввода данных с клавиатуры? А если надо найти средний балл всей параллели? Вот для этого будем использовать оператор цикла. В Pascal Операторы цикла делятся на 2 группы: Циклы с параметром (используются когда заранее известно число повторений цикла), Циклы с условием (используются, когда циклический процесс закончится при выполнении условия. К примеру: пока идет дождь – я буду читать. Или так: я буду читать до тех пор, пока дождь не закончиться).
Мы с вами разберем сегодня цикл с параметром.
Конструкция:
Если нач. знач. < кон. знач.
Если нач. знач. > кон. знач.

FOR переменная := нач. знач. TO кон. знач. DO
Begin
Набор операторов;
End.
FOR переменная := нач. знач. DOWNTO кон. знач. DO
Begin
Набор операторов;
End.

В начале работы цикла переменная примет значение = нач.знач. и, если выбрана правильная форма цикла с параметром, то первый раз выполниться набор операторов. После этого управление снова передается оператору For, только при этом значение переменной измениться (перейдет к следующему). Отсюда сразу имеем – переменная может быть только перечисляемого типа. (Integer, Char).
Этот процесс будет повторяться и прекратиться он в тот момент, когда значение переменной переместится за кон знач.
Пример 1: необходимо написать программу разгрузки строителем 25 мешков цемента из грузовика. Дадим рабочему указания:
For m :=1 to 25 do
Begin
Подойти к грузовику
Взять мешок;
Перенести мешок;
Положить мешок;
End;
Дав такую команду мы заставим грузчика не только переносить мешки, но и считать их.
В этом случае значение переменной увеличивается. Другой вид того же оператора, который не увеличивает значение переменной, а уменьшает его. Рассмотрим сразу на примере.
Пример2: попросим грузчика погрузить мешки обратно, начиная с последнего.
For m := 25 downto 1 do
Begin
Взять мешок;
Перенести мешок;
Подойти к грузовику;
Погрузить мешок на грузовик;
Вернуться;
End.
Пример 3: :вывести на экран все числа от 1 до 15.
Блок-схема
Программа

Что изменится если потребуется вывести на экран все числа от 6 до 88? Записать решения в тетради.
Разберем еще одну задачу.
Пример 4. Найти сумму 11 чисел введенных с клавиатуры.
В начале разберем алгоритм. Какие действия надо повторять? Вводить с клавиатуры число и добавлять его в общую сумму. (Вот здесь мы знакомимся с операцией увеличения переменной. Это сравнимо с тем, что вы покупаете разные продукты и складывать из одну и туже сумку.) И этот процесс вам надо повторять 11 раз. Перейдем к программе.
Строка sum := sum + a; как раз и осуществляет операцию добавления. В этом случае в начале выполняется действие справа от знака присваивания, а затем записывается в переменную, стоящую слева.


Program z;
Var
sum, a, i : Integer;
Begin
Sum := 0;
For i := 1 to 11 do
Begin
ReadLn (a);
sum := sum + a;
End;
WriteLn(сумма = ’, sum);
End.
Задачи на урок:
Найти среднее арифметическое 17 введенных с клавиатуры чисел.
Блок-схема
Программа

Найти среднее арифметическое чисел от 89 до113.
Блок-схема
Программа

Вывести на экран значения y, вычисляемого по формуле y = 3*x+18, если x изменяется от 5 до 12 с шагом 1.
Блок-схема
Программа

Домашнее задание:
Нарисовать схему примера 2.
Блок-схема
Программа

Найти произведение всех чисел от 1 до n. N вводится с клавиатуры.
Блок-схема
Программа

Вывести все четные числа их промежутка (100;300).
Блок-схема
Программа

знаний.
урок №10.
Практическая работа № 4. Создание программ при помощи оператора цикла for.
Цель: Научиться программировать циклические процессы с заданным числом повторений.
Теоретическая часть.
Найдите и исправьте ошибки в записи операторов:
a)
for g:=8 to u:=99 do;
b)
for i=1to 25 do

c)
for x:=2 and y:=1 to 10 do;

d)
N:=5
for r:=1 downto N do;







Проверьте правильность использования операторных скобок:
a)
for g:=8 to 12 do
writeln(шаг =’);
writeln(g);

b)
for i:=2 to 7 do
begin
end
readln(i);

c)
for x:=12 to 100 do
begin
writeln(privet’);
end;

d)
for r:=12 downto 2 do
writeln(введите число’);
readln(y);
end;







Сколько раз выполниться следующий цикл:
a)
for z:=3 to 12 do
writeln(z);

b)
for i=3 to 2 do
z:=z*2;

c)
for x:=3 downto 7 do
z:=z-1;

d)
for r:=6 downto 2 do
readln(a);
e)
for r:=1 to 1 do
z:=z+1;
d)
for r:=2 downto 2 do
b:=b/3;








Чему будет равна переменная z после выполнения следующих операторов:
a)
z:=1;
for z:=8 to 12 do
writeln(шаг =’);
writeln(z);

b)
z:=3;
for i=2 to 7 do
z:=z+1;

c)
z:=10;
for x:=1 to 6 do
z:=z-1;

d)
z:=2;
for r:=12 downto 2 do
z:=z+1;







Практическая часть. Решите задачу, приведите блок-схему решения.
Найдите сумму и произведение чисел от 1 до N, кратных 3.Ввести N с клавиатуры.
Блок-схема
Программа

Число а возводят в квадрат, а результат увеличивают на 1. Эту операцию производят 4 раза.
Блок-схема
Программа

Найдите среднее арифметическое суммы и произведения четных чисел от 1 до N. N=10.
Блок-схема
Программа

Домашнее задание:
Составьте таблицу умножения для числа N. N=7.
Блок-схема
Программа

Составьте программу вычисления факториала N! (N=5).
Блок-схема
Программа

Вычислите произведение первых 10 натуральных чисел.
Блок-схема
Программа


урок №11.
Тема: Циклы с условием. Случаи применения.
Цели урока: Определить различие циклов с параметром и условием в языке Pascal. Определить применение этой конструкции. Научиться применять правильную разновидность цикла
Итак, продолжаем изучение циклических процессов. Цикл – многократно повторяющийся процесс.
На предыдущих уроках были разобраны случаи, когда удобно применять цикл с параметром – случай, когда заранее известно количество повторений цикла.
Однако, в самом начале изучения мы говорили о том, что это самое число повторений не известно заранее. В этом случае пользуемся циклом с условием. Как в примере: пока дождь не закончится, я буду читать страницу целиком.
Давайте перестроим эту фразу и попробуем построить цикл. Итак, выполняемое действие – читать страницу. Когда надо прекратить чтение? В тот момент, когда прекратиться дождь. Иначе говоря, мы поставили условие – идет дождь. Пока это условие ИСТИННО (дождь будет идти) действие будет выполняться. А какое слово говорит о том, что используемая конструкция – цикл? Это слово ПОКА. Теперь осталось просто перевести в операторы Pascal.
Конструкция:
WHILE <условие> DO
ПОКА <условие истинно> ДЕЛАЙ
Begin
Набор операторов;
End.
В начале работа цикла проверяется истинность условия, входящего в описание оператора. Если это условие ИСТИННО – тогда операторы будут выполняться и после их выполнения управление снова передастся оператору WHILE и процесс повториться. Если же в какой-то момент условие станет ЛОЖНО – выполнение цикла прекратиться.
Внимание!!! В отличие от цикла For, цикл WHILE сам не изменяет значения переменных! Поэтому, если Вы хотите считать количество повторений цикла, нужна специальная переменная.
Пример1: сколько раз выполнится цикл
C := 8;
While C<13 do
WriteLn (C);
Этот цикл никогда не закончится, т.к. значение переменной с не будет изменяться. Для того, чтобы цикл прекратиться, необходимо запрограммировать увеличение переменой с.
C := 8;
While C <13 do
Begin
WriteLn (C);
C := C+1;
End;

Сразу замечаю, что изменять переменную с можно не только на 1.
Решить устно. Пример 2: вывести на экран квадраты всех числел от 1 до 4 с шагом 0,5.
Пример 3: Найти первое натуральное число, которое удовлетворяет условию.х3 – х2 + 3 = 103.
В начале разберем алгоритм. Какое условие для выполнения цикла? Надо что-то делать, ПОКА условие примера неверное. Какие действия надо повторять? Увеличивать число на 1. Возникает еще вопрос с какого числа надо начать? С 1. Получаем:
Program z;
Uses
Crt;
Var
С : Integer;
Begin
ClrScr;
С := 1;
while С*С*С – С*С + 3 <> 103 do
Begin
С := С + 1;
End;
WriteLn(С = ’, С);
End.
Второй цикл с условием несколько отличается от первого. В русском это сходно с следующей ситуацией: Повторяй пить лекарство до тех пор пока выздоровеешь.
Действия – пить лекарство. Ключевые слова – ПОВТОРЯЙ ДО ТЕХ ПОР ПОКА признак окончания – выполнилось условие. Перестроим эту фразу и попробуем построить цикл.
Конструкция:
REPEAT
Операторы;
UNTIL <условие>

Определим основные отличия от цикла while.
Когда условие становится ИСТИННО выполнение цикла repeat until прекратиться, а выполнение цикла while будет продолжаться.
Для цикла while в начале проверяется условие, и только затем выполняется действие. Для цикла repeat until выполняется действие и только потом проверяется условие.
Операторы цикла repeat until хотя бы один раз выполнятся до проверки условия.
для цикла repeat until не нужно операторных скобок.
Разберем как будет выглядеть программа примера 3 с использованием второго цикла:
Program z;
Uses
Crt;
Var
С : Integer;
Begin
ClrScr;
С := 0;
Repeat
С := С + 1;
Until С*С*С –С*С + 3 = 103;
WriteLn(С = ’, С);
End.

Определить 2 основных отличия и определим причину этих отличий.



Задачи на урок решить при помощи обоих циклов:
Вывести на экран все четные числа от 3 до 35.

Блок-схема
Программа

Определить первое целое число после 145, которое делится на 13 и 23.
Блок-схема
Программа

Домашнее задание:
Начертить по 2 варианта блок-схем для всех задач из текущего урока.
Блок-схема
Программа

Вывести на экран значение функции y = x*x+3*Sqrt(x), если х изменяется от 4.2 до 7 с шагом 0,4. (Функция Sqrt(x) вычисляет квадратный корень из х)
Блок-схема
Программа

Вывести все четные числа их промежутка (100;300).
Блок-схема
Программа


урок №12.
Комплексная практическая работа №6 по теме «Циклы в языке программирования».
Цель: Закрепить пройденную тему, закрепить полученные навыки переходить от блок-схем к программам и наоборот. Научиться «читать» программы. Решение задач при помощи наиболее подходящего типа цикла.
Теоретическая часть.
Модуль Crt - модуль управления экраном в текстовом режиме
ClrScr - Оператор очистки экрана – все что было на экране до использования этого модуля стирается.
При использовании оператора ReadKey осуществляется задержка в работе до нажатия произвольной клавиши. Будем использовать как паузу в работе программы для просмотра результата.
«Прочитать» программу и определить результат.
Program z5_86v;
Uses
Crt;
Var
n, i : Integer;
Begin
ClrScr;
Write('Введите n ');
ReadLn(n);
i := n;
While i >=10 do
i := i div 10;
WriteLn (' Первая цифра числа ', n , ' = ',i );
ReadKey;
End.
Program z1_17;
Uses
Crt;
Var
n, k : Integer;
s: Real;
Begin
ClrScr;
WriteLn(' Введите n ');
ReadLn(n);
s := 0;
For k := 1 to n do
s := s + (1 / k);
WriteLn(' S = ', s:5:4);
ReadKey;
End.
Program z2_3;
Uses
Crt;
Var
x, x1, x2, y, dx :Real;
Begin
ClrScr;
WriteLn(' Input x1, x2, dx');
ReadLn(x1, x2, dx);
ClrScr;
x :=x1;
Repeat
y := x*x - Sqrt(x)/Sin(x);
If y >= 0 Then
WriteLn (' x = ', x:5:2, ' y = ', y:5:2);
x := x + dx;
Until x >= x2;
ReadKey;
End.





По заданным блок-схемам написать программы.
1
2
3

Для заданных программ пункта 1 нарисовать блок-схемы.
1
2
3

Практическая часть:
Выбрать наиболее подходящий цикл и решить предложенные задачи (каждая задача – новым циклом)
Замечание: Помните, что в минуте – 60 секунд, в часе – 60 минут. Поэтому в начале надо вычислить общее время, которое затрачено в задаче на действие в наименьших упомянутых в задаче единицах времени. Внимательно следите, совпадают ли единицы времени в задачах!
Задание №1
Мечтая выкопать клад, Петр Петрович выкопал на улице яму, в которую, начиная с 8 утра, начали падать пешеходы. Второй упал через 13 минут после первого, а каждый следующий падал через интервал на 3 минуты больший предыдущего. Заметил это безобразие Петр Петрович в 14.30. Определить, сколько пешеходов упало в яму за это время.
Задание №2
Увидев, что в яме находятся люди, Петр Петрович пошел за лестницей, по которой пешеходы из ямы выбирались. Причем, первый пешеход выбрался из ямы за 12 минут, а каждый следующий выбирался на 28 секунд быстрее предыдущего. Зная из результатов задания 1 количество человек в яме, определить, за сколько минут поднимется из ямы последний пострадавший.
Задание №3
Строгая учительница всех не аттестованных по теме «Циклы в языке Pascal» отправляет на пересдачу. На опрос первого должника она потратит столько времени, за сколько выбрался из ямы последний пешеход, а на беседу с каждым следующим должником вдвое больше времени, чем на беседу с предыдущим. Определить, сколько двоек должна поставить учительница, чтобы с последним двоечником беседовать целые сутки.
1
2
3

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

Найти наименьшее натуральное х для которого выполняется х*х-15*х=120
Блок-схема
Программа

Найти значение выражения y = 34*x+26, если х изменяется от 25 до 88 с шагом 3.8.
Блок-схема
Программа

2.a
2.b
2.c
































МАССИВЫ В ЯЗЫКЕ ПРОГРАММИРОВАНИЯ.
урок №13.
Цель: Познакомится с понятием «массив». Определить случаи, в которых необходим этот тип данных. Научится описывать его и пользоваться им.
Что такое массивы и для чего они нужны? Представьте, что Вы продаете билеты на поезд №167, в котором 10 вагонов. В каждом вагоне 40 мест. Чтобы продать следующий билет, Вам надо знать, сколько свободных мест осталось к каждом вагоне. А если таких поездов у Вас более десятка. Как все запомнить? Давайте представим информацию о каждом поезде в следующем виде:

Вагон
1
2
3
4
5
6
7
8
9
10

поезд №167
12
5
40
27
34
4
11
19
33
7


Получаем, набор объектов одинакового типа (сколько свободных мест в вагоне), связанных между собой, и имеющих свой порядковый номер (номер вагона) и общее имя (номер поезда).
Массив – набор объектов одного типа, имеющих одно имя, но у каждого из которых есть порядковый номер.
В Pascal массивы описываются при помощи зарезервированного слова Array. При этом количество элементов в массиве должно быть определено заранее. Обязательно указывается тип элементов, из которых состоит массив и от какого до какого значения изменяются индексы.
Несколько примеров описания одномерных массивов (массивов имеющих только один индекс):

Type
Mas = Array[1..10] of Real;
Var
f, y : Mas;
Const
nn = 50;
Var
r, t : Array[1..nn] of Integer;
Var
a, b : Array[1..17] of Real;

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


Теперь давайте разберемся как же заполнить массив значениями, как обратиться к конкретному элементу массива? Для обращения к конкретному элементу мы указываем имя массива и в квадратных скобках порядковый номер элемента массива.
Пример№1 Опишем массив h из 5 элементов целого типа и введем с клавиатуры значения всех элементов.
Const
nn = 5;
Var
h : Array[1..nn] of Integer;
Begin
WriteLn (Введите 5 значений’);
ReadLn (h[1]);
ReadLn (h[2]);
ReadLn (h[3]);
ReadLn (h[4]);
ReadLn (h[5]);
WriteLn (Вы ввели значения’);
WriteLn (h[1]:6, h[2]:6, h[3]:6, h[4]:6, h[5]:6);
End.

Удобно ли так работать с массивом. А если в массиве 100 элементов? 100 раз подряд писать ReadLn и WriteLn? Нет ли способа проще - ведь мы много раз повторяем одни и те же действия? Оператор, который позволяет многократно повторять одни и те же действия- оператор цикла. Работа с массивами значительно упрощается при использовании циклов. Например решение примера №1 с использованием цикла будет выглядеть так:


Const
nn = 5;
Var
h : Array[1..nn] of Integer;
t : Integer;
Begin
WriteLn (Введите 5 значений’);
For t : =1 to nn do
ReadLn (h[t]);
WriteLn (Вы ввели значения’);
For t : =1 to nn do
WriteLn (h[t]);
End.

Вопрос: почему в данном фрагменте использовался именно цикл с параметром?
Задания для закрепления:
Опишите массив m из 35 элементов целого типа. Присвойте 5-му элементу значение 55, 12-му элементу значение 6. Первому элементу присвойте значение = сумме 5-го и 12-го элементов. Последнему – значение их разности, во второй элемент положите среднее арифметическое первого и последнего элементов.
Введите с клавиатуры массив из 16 элементов дробного типа. Выведите на экран сумму первого и 15-го элементов.
1
2


Программа

Опишите массив из 7 элементов целого типа. Введите с клавиатуры первые 4 элемента. В 5-ый элемент положите значение, равное сумме первого и второго элементов, в 6-ой – сумму третьего и четвертого, в 7-ой – произведение 5-го и 6-го.
Однако, не нужно считать, что индексы в массиве могут нумероваться только с 1. Например, представьте, что Вам надо хранить среднее значение количества атмосферных осадков за период с 1993 по 2003 год. Нумеровать элементы массива от 1 не удобно. В этом случае можно описать массив: Var os : Array [1993..2003] of Real;
Индексы в массиве будут изменяться от № 1993 до №2003. В этом случае надо быть внимательным при указании индекса массива. Если Вы захотите выполнить операцию os[23] :=6; Pascal укажет Вам, что в массиве os нет элемента с номером 23.
Есть еще один способ заполнить массив значениями. Он используется, в случае, когда Вам не нужны конкретные значения элементов или просто лень вводить числа с клавиатуры.
Для этого используется генератор случайных чисел. Этот оператор находится в модуле Crt, поэтому при его использовании Вам необходимо подключить этот модуль.
Пример №2. Сгенерировать случайным образом массив w из 33 элементов целого типа.
Uses
Crt;
Const
nn = 33;
Var
w: Array[1.. nn] of Integer;
t : Integer;
Begin
Randomize;
For t : =1 to nn do
w[t] := Random(100);
WriteLn (Получен массив:’);
For t : =1 to nn do
Write (w[t]:4);
End.

ГСЧ (генератор случайных чисел) состоит из двух операторов. В начале нужно сделать его «активным» для того, чтобы при новом запуске можно было получать разные числа. Для этого в начале программы используется оператор Randomize – он «включает» ГСЧ.
Чтобы непосредственно получить некоторое число, используется оператор Random(100). Он «выбирает» произвольное число из диапазона 0-99.
Т.о., можно не вводить числа с клавиатуры, а задавать из при помощи генератора случайных чисел.

Домашнее задание:
Дан массив из g 26 элементов Var g : Array [11..36] of Integer;
Какие из следующих действий можно выполнить, если нельзя выполнить, почему?:
Действия
Да
Нет
Почему

g[6] := 8




g[6.8] := 43




d[26] : =5




g[17] := g[18]+g[19]




g [22] := 5.7




g[31] := g[15]/g[19]




Опишите массив v из 65 элементов целого типа. Присвойте 8-му элементу значение 155, 28-му элементу значение 37. Первому элементу присвойте значение = сумме 8-го и 128-го элементов. Предпоследнему – значение их разности. В 15-ый элемент положите среднее арифметическое первого и предпоследнего элементов.
Блок-схема
Программа

Сгенерируйте случайным образом массив из 55 элементов целого типа. Выведите на экран удвоенные значения каждого элемента.
Блок-схема
Программа

Сгенерируйте случайным образом массив из 19 элементов целого типа. Выведите на экран только четные элементы.
Блок-схема
Программа

урок №14.
Тема: Вычисление суммы и среднего арифметического всех элементов массива и элементов из заданного диапазона.
Цель: Закрепить основные навыки работы с массивами. Научиться вычислять среднее арифметическое всех элементов и найти особенность при вычислении среднего арифметического из заданного диапазона.
Итак, представьте себе, что Ваш начальник требует от вас сдать сведения: сколько в каком поезде в целом осталось свободных мест. Что для этого Вам надо сделать? Сложить все значения элементов в таблице.
Скажем тоже самое, но для массива: просматривать все элементы массива и добавлять их в сумму. Операция добавления к сумме слагаемого уже известна, а просмотреть элементы массива можно при помощи цикла.
Пример№1 Найти сумму элементов массива h из 5 элементов целого типа, введенного с клавиатура.
Const
nn = 5;
Var
h : Array[1..nn] of Integer;
sum, t : Integer;
Begin
WriteLn (Введите 5 значений’);
For t : =1 to nn do
Begin
ReadLn (h[t]);
sum := sum + h[t];
End;
WriteLn (Sum =’, sum :6);
End.

Обратите внимание на то, что в этом случае можно вводить и суммировать элементы, используя при этом один и тот же цикл.
Вопрос: что измениться в задаче, если надо будет найти сумму не всех элементов, а только с №3 по №5.
Теперь представьте, что завуч требует от учителя сдать данные о среднем арифметическом балле за последнюю контрольную. Что изменится в программе? Наде всего лишь в конце сумму элементов разделить на их количество. Т.е. Перед выводом на экран добавиться строка sum : =sum / nn;
Вопрос: какого типа в таком случае должна быть переменная.sum?
Пример №2. Теперь представьте, что Вам надо найти количество учеников, которые написали контрольную на оценку выше 6.
Uses
Crt;
Const
nn = 16;
Var
w: Array[1.. nn] of Integer;
k, t : Integer;
Begin
Randomize;
For t : =1 to nn do
w[t] := Random(13);
WriteLn (Получен массив:’);
For t : =1 to nn do
Write (w[t]:4);
k := 0;
For i := 1 to nn do
If w[i]>6 Then k := k+1;
Writeln ('Хорошистов ', k:5);
End.

Давайте зададим массив из 16 элементов целого типа случайным образом. Однако при этом надо учитывать, что оценка не может быть больше 12!
У оператора Random есть возможность выбирать числа из определенного диапазона. Например, если применить его в виде w:= Random(100); - то в переменную w может попасть значение от 0 до 99. Еcли нужно значение до 12? Что будет стоять в скобках? w:= Random(13);
После того, как массив получен определим, сколько же учеников написали на оценку выше 6. Просмотрим массив от 1 элемента до последнего и будем смотреть на значение элемента. Если значение больше 6 ,увеличим счетчик на 1. А чему должен быть равен счетчик в начале работы программы?
Теперь попробуем усложнить задачу.
Пример №3. Найти среднее арифметическое тех элементов массива, значение которых превосходит 6.
Вернемся к тому, что же такое среднее арифметическое. Это сумма элементов, деленная на их количество. Как найти количество элементов ,удовлетворяющих условию, мы уже разобрали. Остается только найти их сумму. Какие элементы надо суммировать? Только те, которые удовлетворяют указанному условию Следовательно суммировать их надо при выполнении условия, а значит в условном операторе.
Решение останется такое же как в предыдущей задаче, за исключением строки с условием. Она будет выглядеть так:
If w[i]>6 Then Begin k := k+1; sum : =sum + w[i]; End;
Задача на урок.
Сгенерировать случайным образом массив y из 15 элементов целого типа. При этом значение элементов массива не должно превосходить 16. Найти среднее арифметическое всех элементов массива ,среднее арифметическое элементов от №6 до №11. Среднее арифметическое элементов массива, значение которых меньше 5.

Блок-схема
Программа

Домашнее задание:
Считать с клавиатуры массив из 45 элементов дробного типа. Найти среднее арифметическое четных элементов массива.
Блок-схема
Программа

Задать случайным образом массив из 24 элементов, значение которых не превосходит 86. Найти среднее арифметическое элементов, которые кратны 3 и больше 18.
Блок-схема
Программа


Задать случайным образом массив из 41 элемента, значение которых не превосходит 8. Найти количество четных элементов от № 6 до № 33.
Блок-схема
Программа

урок №15.
Практическая работа № 8 по теме "Вычисление суммы и среднего арифметического элементов массива из определенного интервала и диапазона"
Теоретическая часть.
Ранее разобраны случаи использования оператора Random, когда есть ограничения на большее значение. А как быть, если есть ограничение на нижнее значение.
Допустим, учительнице не разрешили ставить оценки ниже 4. Как использовать Random?
Рассмотрим пример w:= Random (13); Минимальное значение, которое принимает переменная w = 0, а максимальное значение =12. Как увеличить минимальное значение – прибавить то число, на которое надо увеличить минимальное значение, значит w:= Random (13)+4; Однако в этом случае на 4 увеличиться и максимальное значение. Чтобы максимальное значение не увеличилось, надо отнять 4 от того, что мы указали в скобках, т.е. w:= Random(13-4)+4;
В результате, w может принять значения от 4 до 12.
А как быть, если нужно получать значения из промежутка (-5, 16)? В этом случае минимальное значение надо уменьшить на 5. А как быть с максимальным значением? Укажем w:= Random(17)-5. Тогда минимальное значение действительно будет –5. А максимальное? 16-5! Следовательно, максимальное значение надо увеличить на 5. Получим w:= Random(17+5)-5.
Получите значения р из промежутка
(-3, 7)
(5, 77)
(4, 35)
(-4, -1)
(44, 77)
Практическая часть:
Задать случайным образом массив из 5 элементов, значения которых находятся в промежутке (-4, 7). Найти среднее арифметическое элементов массива, кратных 5.
Блок-схема
Программа

Задать случайным образом массив из 14 элементов, значение которых находятся в промежутке (-14, 71). Найти среднее арифметическое элементов, которые кратны 7 и меньше 18.
Блок-схема
Программа

Задать случайным образом массив из 12 элементов, значение которых находятся в промежутке (14, 19). Найти количество четных элементов от № 3 до № 10.
Блок-схема
Программа


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

Задать случайным образом массив из 15 элементов, значения которых находятся в промежутке (-6, 17). Определите, какой из элементов больше, элемент №5 или элемент №14. Выведите на экран номер большего элемента.
Блок-схема
Программа

урок №16.
Тема: Поиск минимального (максимального) элементов массива.
Замена переменных.
Цели урока: Научится определять минимальный и максимальный элементы массива.
Программа имеет вид:
Program maximum;
Const n=17;
Var a: array[1..n] of integer;
Max, i : integer;
Begin
For i:=1 to n do
Begin
Write('a[',i,']=');
Readln(a[i]);
End;
Max:=a[1];
For i:=2 to n do If max< a[i] then max:=a[i];
Writeln('наибольший элемент массива max =',max);
End.

Урок начнем с задачи. Предположим, что у вас уже есть свой массив семестровых оценок. Оценки разные, от 1 до 12. Ваши родители решили поинтересоваться Вашими оценками. При этом их интересует, по какому предмету Вы успеваете лучше всего, т.е., по какому предмету у Вас лучшая (максимальная) оценка. Как же ее найти?
Чтобы найти наибольшее число среди совокупности чисел, нужно последовательно пересматривать и сравнивать между собой числа, записанные в памяти. Вообразите, что каждое число записано на карточке. А карточки сложены стопкой. Первое число запомним сразу как наибольшее и перевернем карточку. Теперь в нашем распоряжении два числа: одно - видим, другое - помним. Сравнивая их между собой, запомним большее (если запомненное раньше число больше, то запоминать новое не следует, просто переходим к следующей карточке). Если второе число больше первого, первое помнить уже не требуется, мы запоминаем лишь второе. Таким образом, на каждом этапе сравнения необходимо помнить большее из просмотренных чисел, тогда в конце мы найдем наибольший элемент, то есть решим поставленную задачу.
Записав этот алгоритм в виде соответствующих операторов, получим программу нахождения наибольшего значения. Промежуточные значения искомой величины и окончательный результат содержит переменная max.
Таким образом, мы выполнили просьбу родителей: показали наилучшую оценку.
А теперь представьте, что родители переходят к не очень приятной для Вас процедуре. Они желают найти минимальную оценку, чтобы улучшить Вашу успеваемость.
Вопрос: какие изменения надо внести в алгоритм?
Если в Вашем массиве будет несколько элементов, имеющих максимальное значение, то с помощью этой программы вы найдете только первый из них.
А теперь представьте, что Вы ошиблись при заполнении массива оценками. Переставили местами оценки по двум разным предметам. Всем сразу понятно, что нужно поменять местами эти две оценки. А как же это сделать. Будем считать, что это ячейки Т (труд) и А (алгебра). Первое, что хочется сделать, это ячейке А присвоить значение Т.
А:=Т;
Что же получится в этом случае? В ячейке А будет теперь лежать настоящая оценка по алгебре, но ведь и в ячейка Т будет лежать та же оценка по алгебре. А как быть с оценкой по трудам?
Одна оценка потерялась. Мы ее не запомнили, а уже заменили. В этом случае нам удобно использовать так называемый метод третьего стакана.
Суть метода рассмотрим на простом жизненном задании. Есть чашка с молоком и бокал с минеральной водой. Требуется, чтобы в чашке была минеральная вода, а в бокале - молоко. Берем третий стакан и переливаем в него молоко (освободилась чашка), в чашку переливаем минеральную воду (освободился бокал), из стакана в бокал переливаем молоко. Всё.
Аналогично поступаем с оценками. Заводим третью переменную (она у нас будет вспомогательной).
Задание: поменять местами первый и последний элементы массива. Программа будет выглядеть так:
Program obmen;
Const n=17;
Var a: array[1..n] of integer;
k, i : integer;
Begin
For i:=1 to n do
Begin
Write('a[',i,']=');
Readln(a[i]);
End;
K:=a[1];
A[1]:=a[n];
A[n]:=k;
End.

Задание на урок.
Поменяйте местами 30 и 6 элементы массива f.
Переделайте программу 1 таким образом, чтобы можно было найти последний из элементов с максимальным значением.
Найдите номера минимального и максимального элементов.
В массиве, из 21 элемента, заданных случайным образом со значениями из диапазона (8, 18) поменять местами первый и последний элементы.
1
2

3
4


Домашнее задание.
Задать случайным образом массив h из 15 целых чисел из диапазона (-4, 5). Найти наибольший элемент среди первых пяти элементов массива. Поменять местами последний и найденный максимальный элемент.
Задать случайным образом массив j из 19 целых чисел из диапазона (0, 15). Найти среднее арифметическое минимального и максимального элементов. Записать его в 19 элемент.
1
2

K:=a[1];
A[1]:=a[n];
A[n]:= a[1];


Что будет, если мы произведем замену следующим образом:
Поменять местами 19 и 5 элементы массива r.


СТРОКОВЫЙ ТИП ДАННЫХ
урок №17.
Тема: Строковый тип данных. Операторы для работы со строковым типом данных.
Цель: Познакомиться со строковым типом данных. Научиться применять основные операторы работы со строковыми данными.
Строковый тип данных – это тип данных, содержащий в себе набор символов.
Var
S, S1 : String;
Begin
S := hhhjjjrin’;
S1 := 3+5’;
End.

Переменные строкового типа не могут содержать в себе более 255 символов. При этом символы могут содержаться совершенно произвольные. Единственное обязательное условие – при присваивании определенного значения переменной строкового типа, значение переменной указывается в одинарных кавычках. Пример:
В этом примере в ячейку s положили набор букв, а в ячейку S1 – написанное выражение 3+5, однако его значение вычисляться не будет. Раз тип переменной s1 String, то для Pascal это всего лишь набор символов.
Кроме того, каждая буква переменной типа string имеет свой порядковый номер. К любой букве можно обратиться по ее номеру.
Рассмотрим основные операторы, для работы со строковым типом данных.
q:=Length(s)
Определяет длину строки s, то есть количество символов в ней.
k : Integer; Пример s := ’моя_мама_-_лучшая_мама_в_мире!’; k := Length(s); k=30.

w:=Pos(s1,s)
Если слово s1 входит в слово s, определяет номер позиции, с которой начинается первое вхождение, если вхождений несколько, остальные определить пи помощи этой функции нельзя. Если же вхождений нет – w=0. w: Integer.
Пример: S1:=’мама’ ; S:=’моя_мама_-_лучшая_мама_в_мире!’; W:= Pos(s1,s); Результат - w=5.

Insert(s1,s,k)
Вставляет строку s1 в строку s, начиная с номера k строки s.
Пример: S1:=’мама’ ; S:=’моя_мама_-_лучшая_в_мире!’; Insert(s1,s,19). Начиная с 19-ой позиции слова s будет добавлено слово s1. Остальной текст не потеряется, а отодвинется. Результат – s= ’моя_мама_-_лучшая_мама_в_мире!’;
При использовании этого оператора, будет изменяться только значение переменной s.

Delete(s,n,k)
Используется в случае, когда из строки надо удалить некоторый символы. Удаляем из строки s, начиная с символа № n, k символов подряд.
Пример: S1:=’мама’ ; S:=’моя_мама_-_лучшая_мама_в_мире!’; Delete(s,19,5). Из строки s, начиная с позиции №19 будет удалено 5 символов, это символы мама_’ Результат - s:=’моя_мама_-_лучшая_в_мире!’.
При использовании этого оператора, будет изменяться только значение переменной s.

S1:=Copy(s,n,k)
Используется в случае, когда из строки надо скопировать некоторую часть для работы с этой частью. Копируем из строки s, начиная с символа № n, k символов подряд.
Пример: S:=’моя_мама_-_лучшая_мама_в_мире!’; s1:= Copy (s,6,8). Находим в строке s 6-ой символ. И копируем, начиная от него 8 символов подряд. Результат - s1= ама_–_лу’. Значение переменной s не изменяется!

Пример 1. У Вас есть набор данных про учеников класса в следующем виде: Фамилия Имя Отчество. Надо исправить данные, представив их в виде Фамилия И.О.
Данных об учениках много и поэтому еще раз набирать с клавиатуры не хочется. Разберем, как эту операцию можно проделать для одного ученика, для того, чтобы потом ее автоматизировать.
Разберем на конкретном примере: s := Petrov Petr Petrovich’.
В новой переменной s1 должна содержаться часть строки s от первого символа, до символа после первого пробела, то есть Petrov Petr. Чтобы скопировать эту часть из строки s надо определить позицию первого пробела в строке s – это оператор POS. После того, как позиция определена, надо скопировать в s1 часть строки s от начала до следующей после пробела буквы, это оператор COPY. Далее, надо добавить в конец строки s1 точку – это оператор INSERT. Для этого надо определить длину строки s – это оператор LENGTH. В результате этих операций мы получим s1=’Petrov P.’.
Program ff;
Uses
Crt;
Var s, s
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
Чтобы теперь добавить в конец полученной строки инициал отчества, надо найти второй пробел строки s. Используя функцию POS, мы можем найти только первый пробел. Чтобы второй пробел стал первым, надо удалить из строки s часть строки от начала до первого пробела – это оператор DELETE.
Теперь находим первый пробел, добавляем символ после него к концу строки s1 и добавляем после него точку. Перейдем к программе.
Задание на урок.
Ввести с клавиатуры переменную строкового типа. Определить: Сколько в ней символов, Есть ли пробел: если есть ,то какая позиция у первого пробела. Есть ли латинские буквы h’, j’. Получить новую строку, состоящую из 2-х первых и 2-х последних символов исходной строки. Результат на экран. У исходной строки удалить 3-ий, 4-ый, 5-ый символы.
Домашнее задание:
Ввести с клавиатуры переменную строкового типа. Определить: Сколько в ней символов, Есть ли пробел: если есть, то какая позиция у первого пробела. Есть ли латинские буквы е’, t’. Получить новую строку, состоящую из символов исходной строки до первого пробела. Результат на экран. У исходной строки удалить все символы после первого пробела.
Задание на урок





Домашнее задание


урок №18.
Тема: Строковый тип данных. Решение типовых задач.
Цель: Закрепить основные навыки работы со строковым типом данных. Научиться различать разные типы задач и применять соответствующий метод решения.
Рассмотрим несколько типовых задач, возникающих при работе со строковым типом данных.
Пример №1. Дана переменная s строкового типа данных (в дальнейшем будем называть строка). Надо определить, сколько слов в предложении (словом считать набор символов, разделенных пробелами. Исключения составят первое и последнее слова). При этом считается, что подряд не может идти боле одного пробела. В конце и в начале строки пробелов нет.
Решение. Т.к. слово заканчивается пробелом, то для того, чтобы определить количество слов, достаточно подсчитать количество пробелов в строке
Program String21;
Uses Crt;
Var s : String;
k, q : Integer;
Begin
ClrScr;
Write (' Input string ');
ReadLn(s);
s := s+' ';
k := 0;
For q := 1 to Length (s) do
If s[q] = ' ' Then k := k+1;
WriteLn(k, ' words');
ReadKey; End.


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


Пример №2. Как измениться в программе подчеркнутая строка, если в задаче будет требоваться заменить все буквы f’ на буквы g’. Когда при наборе текста может понадобиться такая операция?


Program String23;
Uses Crt;
Var s : String;
k, q : Integer;
Begin
ClrScr;
Write (' Input string ');
ReadLn(s);
While Pos('r', s)<>0 Do
Begin
q := Pos ('r', s);
Delete(s,q,1);
End;
WriteLn('New string ', s);
ReadKey;
End.

В рассмотренных выше примерах, при работе со строкой не изменялось количество символов в ней. Поэтому при работе можно было использовать цикл с параметром. Иная ситуация, если потребуется удалять или добавлять в строку символы. При этом количество символов в строке будет постоянно изменяться, и использовать цикл с параметром уже нельзя. (При использовании цикла for to do оператор цикла один раз в начале работы определяет сколько раз ему надо повторять действия и больше не «перепроверят» данные.)
Поэтому, при решении задач, в которых нужно изменять длину строки, используются циклы с условиями.
Пример № 3. Удалить из строки все буквы r’.
Решение: Распишем действия.
Пока в строке есть буквы r’, делай
1) найди, на какой позиции стоит буква r’; 2) удали из строки букву r’.
Пример № 4. Удалить из строки все слова qwe’.
Пример № 5. В строке, после каждой буквы a’ добавить букву h’.
Program String25;
Uses
Crt;
Var
s : String;

·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
·
Решение. В этой строке буквы a’ не удаляются, поэтому нельзя воспользоваться тем же циклом. Попробуем снова расписать действия. При этом надо учесть, что нужные буквы могут находиться в строке где угодно, поэтому просмотреть надо всю строку.
Поставим указатель на первый символ (i:=1).
Пока просматриваемый символ не перешел за последний, делай:
1) если просматриваемый символ равен a’, тогда А) добавь h’ в строку после него;
В) передвинь указатель с a’ на h’, то есть увеличь его на 1.
2) перейди к следующему символу, то есть увеличь указатель на 1.
Домашнее задание:
Ввести с клавиатуры строку. Удалить из нее все слова мама’.
Ввести с клавиатуры строку. Добавить в нее после каждой буквы п’ буквосочетания апа’.
Ввести с клавиатуры строку. Заменить в строке все буквы ’р’ на Р’.
(*) Ввести с клавиатуры строку. Заменить все буквы У’ на слово студент’.
1
2

3
4


урок № 19.
Практическая работа №11 "Решение задач с использованием операций над строками."
Теоретическая часть.
Проверьте себя, запишите результат для каждого оператора.




Program str1;
Var s, s1,s2 : String;
k, u, m : Integer;
Begin
s:=’мама мыла раму’;
s1 := кошка моется сама’;
k := Length (s);
Delete (s,5,6);
u:= pos (м’,s1);
Insert( ’+s1[5]+s1[2]+’ ,s,u);
m := length (s);
s2:=Copy (s,3,2);
End.
Program str2;
Var s, s1, s2 : String;
k, u, m : Integer;
Begin
s:=’мама мыла раму’;
s1 := кошка ленивая, поэтому спит’;
k := Length (s);
Delete (s,6,5);
u:= pos (л’,s1);
Insert( ’+s1[5]+s1[2]+’ ,s, u);
m := length (s);
End.
Program str3;
Var s, s1, s2 : String;
k, u, m : Integer;
Begin
s:=’мама мыла раму’;
s1 := дождик ее испортил’;
k := Length (s);
Delete (s,5,6);
u:= pos (е’,s1);
Insert ( ’+ s1[5]+s1[2]+’ ,s, u);
m := length (s);
s2:=Copy (s,3,5);
End.





Практическая часть.
Решите задачи.
Удалить из строки, введенной с клавиатуры все точки.
Удалить из строки, введенной с клавиатуры все точки, перед которыми стоят пробелы.
Вставить в строку, введенную с клавиатуры, пробелы после запятых.
Удалить из строки, введенной с клавиатуры, пробелы, если перед ними стоит еще по одному пробелу.
1
2

3
4

Домашнее задание:
Повторить все операторы.
Ввести с клавиатуры строку s. Получить еще 2 строки s1 и s2, в которых будут храниться вторая и третья трети строки s. в первой строке оставить первую треть строки.
Ввести с клавиатуры строку s. Получить еще 2 строки s1 и s2, в которых будут храниться первой и второе слова строки s. В строке s этих слов содержаться не должно.
3
4



13PAGE 15


13PAGE 145915



Подойти к перекрестку

Цвет зеленый

Проверить сигнал светофора

Переходить дорогу

Ждать зеленого сигнала

+

-

+

?

оператор 1

оператор 2

- Else

IF

Then

+

a>0

Выведем: а - положительное

Выведем: а - отрицательное

- Else

IF

Then

Ввести число в переменную а

+

?

оператор 1

- Else

IF

Then

Ввести 2 числа a, b

+

a>b

Удвоить а


- Else

IF

Then

Вывести а



Begin
ReadLn(a,b);
If a>bThen
Begin
a := a*2;
WriteLn (New a ’, a);
End;
End.

Перенести мешок;

Положить мешок

m=1..25

Подойти к грузовику;

Взять мешок

Изменив to на downto мы изменили направление изменения переменной.


Вывести полученный результат

i =1..11

Ввести число в переменную а

Добавить его в сумму

Sum := 0

конец

начало

Условие истинно

условие

операторы

Условие ложно

Условие ложно

Условие истинно

условие

операторы

Вывод k

начало

Введите n

s : =0

k : =1 .. n

k mod 3 = 0

s : =s+k

конец

начало

конец

a –нечетное и больше 19

s : =0

Ввести a

s : =s+a

Ввести a

Вывод s

начало

h : =1000

h : =h-1

S1 : =h div10

S2: =h div100

S3: =h mod100

(s1+s2+s3=17) или (h<100)

Вывод h

h<100

Нет таких чисел

конец