Как составить компьютерную программу по информатике 8 класс

Напишем программу, которая будет вычислять площадь и периметр прямоугольника со сторонами (5) см и (8) см.

Входные данные в задаче:

(a=5) см;

(b=8) см.

На выходе мы должны получить:

(S) — площадь прямоугольника;

(P) — периметр прямоугольника.

Для вычислений будем использовать формулы из курса математики:

S=a×b,P=2×(a+b)

.

Напишем программу:

Screenshot_1.png

С помощью данной программы мы найдем площадь и периметр прямоугольника. 

В окне вывода увидим следующее:

Screenshot_12.png

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

Урок №1    ЯЗЫКИ ПРОГРАММИРОВАНИЯ.     ЯЗЫК ПАСКАЛЬ.

ЯНУ

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

ЯВУ

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

ПАСКАЛЬ.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

C:PASCALturbo.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°,

pрад = 180°

Cos(X) – cos X

целый

дробный

дробный

Pi-число p

нет

дробный

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<X<9           Y =  X*10, если -9<X<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. Чем характеризуется массив?

3. Как объявляется массив?

4. Перечислить основные этапы работы с массивом.

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

6. В каком случае следует распечатывать
начальные значения элементов массива?

7. Как напечатать элементы массива “в  столбик”?  “В
строчку”?

Урок  №25          3
этап работы с массивами: решение задач.

На
3-ем этапе возможно решение различных задач. Рассмотрим простейшие из них.

1.     
Изменение элементов массива.

Общий вид:       For  k := 1  to  n  do

                                 a[k] := <новое значение>;

Пример: 
увеличить вдвое каждый элемент массива.

                           For 
k := 1  to  n  do

                                 a[k]
:= a[k] :* 2;

2.     
Вычисление суммы элементов.

Общий
вид:       Summa := 0;

                           For 
k := 1  to  n  do

                                 Summa
:= Summa + a[k];

3.     
Вычисление произведения элементов.

Общий
вид:       Proizv := 1;

                           For 
k := 1  to  n  do

                                 Proizv
:= Proizv * a[k];

4.     
.Нахождение количества элементов по условию.

Общий вид:       Kol := 0;

                           For 
k := 1  to  n  do

                                 If 
<условие для
a[k]>  then Kol :=Kol + 1;

Пример: 
найти количество чётных элементов массива.

                           Kol
:= 0;

                           For 
k := 1  to  n  do

                                 If
 a[k] mod 2 := 0  then Kol :=Kol + 1;

Cамостоятельно. Задать случайным образом 10 элементов массива: целые числа из
интервала от  -5 до 50. Найти:

1) сумму нечётных
элементов;

2) произведение
элементов, стоящих на чётных местах;

3) количество
отрицательных элементов.

Д/З  Ввести с клавиатуры 12 элементов числового массива. Все положительные
увеличить на 100, все отрицательные обнулить.

Урок №26.                    Решение задач.

I.       
В символьном массиве из 6 элементов, заданных с
клавиатуры:

1)
поменять все маленькие латинские буквы на большие;

2)
найти количество запятых;

3)
поменять все маленькие русские буквы на большие.

II.      
В числовом массиве из 10 элементов, заданных
случайным образом от -100 до 500:

1)
найти сумму положительных элементов, стоящих на чётных местах;

2)
найти произведение элементов массива, кратных 3 и стоящих на нечётных местах;

3)
найти количество двузначных чисел в массиве.

Д/З  Ввести с клавиатуры 15 элементов символьного массива. Заменить все
цифры на «звёздочки», а все «пробелы» на знаки подчёркивания.

Урок №27      Нахождение
максимального (минимального) элемента в

                        массиве.

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

Алгоритм можно записать так:

N_max := 1;

For  k := 1  to  n  do

      if  a[k] > a[N_max]  then  N_max := k;

После выполнения
цикла и выхода из него максимальный элемент – это  a[N_max].

Самостоятельно. Задать случайным образом 9 элементов числового массива – дробные числа
от 10 до 50. В этом массиве:

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

Д/З. Найти минимальный и максимальный элемент в числовом массиве из 10
элементов, заданных с клавиатуры. Поменять их местами.

Урок №28.             Удаление элементов из массива.

            Чтобы
удалить из массива элемент № р, нужно все элементы, начиная с (p+1)-ого,
передвинуть на 1 место к началу массива. Последний элемент следует «обнулить».
Пусть в константе zero записано нулевое значение (например, 0 – для числового
массива или пустая строка – для символьного). Тогда алгоритм удаления элемента
запишется так:

For  k := p  to  n-1  do

      a[k] := a[k+1];

a[n] := zero;

Самостоятельно. Задать случайным образом 13 элементов числового массива – числа от 10
до 50. Удалить из него:

а) 10-ый элемент;

б) минимальный
элемент.

Д/З. Из символьного массива, 7 элементов которого заданы с клавиатуры,
удалить максимальный элемент.

Урок №29.                 Решение задач.

1.                             
В символьном массиве из 6 элементов, заданных с
клавиатуры, удалить символы «=».

2.                             
В числовом массиве из 10 элементов, заданных
случайным образом от -100 до 100:

а)
удалить первый положительный элемент;

б)
удалить все отрицательные элементы.

Д/З  Ввести с клавиатуры 13 элементов числового массива. Удалить все
чётные элементы, стоящие на нечётных местах.

Урок №30                Вставка элементов в массив.

            Чтобы
вставить в массив новый элемент на место № р, нужно прежде всего предусмотреть
для него место в массиве. Поэтому объявление массива будет выглядеть так:       <имя>: 
array  [1..n+1]  of  <тип>;

В
теле программы все элементы, начиная с n-ого и до p, следует передвинуть на 1
место к концу массива. После этого можно на p-ое место поставить значение,
заданное по условию задачи:

For  k := n  downto  p  do

      a[k+1] := a[k];

a[p] := <новое
значение>;

Самостоятельно. Задать случайным образом 8 элементов числового массива – числа от 100
до 200. Вставить в него:

а) число «-20»
перед 5-ым элементом.

б) число «0» перед
максимальным элементом;

Д/З. В символьный массив, 10 элементов которого заданы с клавиатуры,
вставить символ «м» перед 7-ым элементом.

Урок №31                       Решение задач.

1.                 
В символьный массив из 5 элементов, заданных с
клавиатуры, вставить символ «+» перед первым символом – цифрой.

2.                 
В числовой массив из 11 элементов, заданных
случайным образом от -70 до 70:

а)
вставить «400» перед первым положительным элементом;

б)
вставить перед каждым элементом, кратным 5, число «500».

Д/З  Ввести с клавиатуры 13 элементов числового массива. Вставить после
максимального и перед минимальным элементами по числу «100».

Урок № 32.          Сортировка элементов
массива.

Сортировка – это упорядочение
элементов по возрастанию или убыванию. Алгоритм сортировки состоит из двух
циклов:

1) Внешний – выбор места, на который нужно поставить максимальный
элемент.

2) Внутренний – поиск максимального элемента.

Рассмотрим алгоритм сортировки по убыванию:

for   i :=
1   to n-1   do                           {выбор места}

begin

max := i:

for  j :=
i+1   to n   do                      {поиск максимального}

if f[j]
>a [max] then max:=j;

x
:= a[i];                                           {перестановка элементов}

a[i] :=
a[max];

a[max] := x

end:

Самостоятельно. Задать
случайным образом 12 элементов числового массива. Упорядочить массив:

1) по убыванию;                            2) по
возрастанию.

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

текст программы:
var a:string;
begin
writeln(‘Введите Ваше имя’);
readln(a);
writeln(‘Здравствуйте, ‘,a);
end.

Напишите программу, запрашивающую Ваше имя, Ваш возраст и рост в см (ввод с клавиатуры) и выводящую на экран следующее сообщение:
Здравствуйте, …
Вам … лет
Ваш рост … см

текст программы

var a:string;
    v,r:integer;
begin
writeln(‘Введите Ваше имя’);
readln(a);
writeln(‘Сколько Вам лет’);
readln(v);
writeln(‘Введите Ваш рост в см’);
readln(r);
writeln(‘Здравствуйте, ‘,a);
writeln(‘Вам ‘,v,’ лет’);
writeln(‘Ваш рост ‘,r,’ см’);
end.

Вычисление математических выражений

Задача (урок )
Напишите программу для вычисления значение выражения y=5x+20 где x целое число, вводимое с клавиатуры. Вывод оформите следующим образом:
при x=…  y=…

Обратите внимание, что если x – цело число, то вычисляемый y тоже будет целым числом.
Математические выражения на Pascal расписываются со всеми математическими операциями и учитывая порядок действий: y:=5*x+20

текст программы:
var x,y:integer;
begin
writeln(‘введите целое число’);
readln(x);
y:=5*x+20;
writeln (‘при x=’,x,’ y =’,y);
end.

Задача (урок )

Программа демонстрирующая работу функций div и mod.

текст программы:
var a,b:integer;
begin
writeln(‘введите целое число a’);
readln(a);
writeln(‘введите целое число b’);
readln(b);
writeln (‘a mod b = ‘,a mod b);
writeln (‘a div b = ‘,a div b);
end.

Условный оператор if … then … else (если … тогда … иначе)

Задача  (урок )
Напишите программу для вычисления значение выражения  






где x целое число, вводимое с клавиатуры.
Пояснение.
В данной задаче используется условный оператор if для того, чтобы исключить деление на 0. Пример алгоритма с ветвлением (или разветвляющийся алгоритм).

блок-схема
текст программы:
var x:integer;
    y:real;
begin
writeln(‘введите целое число’);
readln(x);
if (x-3)<>0 then
begin
  y:=(x+5)/(x-3);
  writeln (‘при x=’,x,’ y =’,y);
end
else
writeln(‘значение выражения не определено’);
end.

Задача (урок )

Вычислите значение выражения 

x целое число, вводимое с клавиатуры.

Обратите внимание, что в данной задаче у нас идет ограничение на переменную x: под корнем выражение (5x-20) должно быть больше или равно 0 и (x-4) не равно 0. Задачу решаем с использование сложного условия.
Вариант 1 с “и”: (5*x-20>=0) and (x-4<>0)
Вариант 2 с “или”: (5*x-20<0) or (x-4=0)

блок-схема вариант 1

Задача (урок )

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

текст программы:
var x:integer;
begin
writeln(‘Ведите целое число’);
readln(x);
if x mod 2=0 then writeln(‘это четное число‘)
else writeln(‘это нечетное число‘);
end.

Задача (урок 
)

Составить программу, которая если вводимое с клавиатуры целое число больше 0 выводить на экран сообщение “это число положительное”, если число равно 0 – “это ноль”, если число меньше 0 – “это число отрицательное”.
var x:integer;
begin
writeln(‘Ведите целое число’);
readln(x);
if x>0 then writeln(‘это число положительное‘);
if x=0 then writeln(‘это ноль‘);
if x<0 then writeln(‘это число отрицательное‘);
end;

Задача (урок )
Составить программу-тест по арифметике, состоящую из 5 примеров. Программа должна работать следующим образом: на экран выводится пример (вопрос) и пользователь вводит ответ с клавиатуры. За 5 правильных ответов ставиться оценка “5”, за 4 – “4”, за 3 – “3”, за 2, 1, 0 правильных ответов оценка “2”.
Пояснение. 
При написании программы по данной задаче нам потребуется 5 переменных числового типа (лучше использовать тип real, но если оговорить, что ответами на примеры должны быть целые числа, ведь примеры подбирает сам учащийся, то используем тип integer). Назовем наши переменные для хранения ответов ot1, ot2, ot3, ot4, ot5, для оценки – oz. 
Подсчет и выставление оценки: через оператор if за каждый правильный ответ будем прибавлять 1 бал, а чтобы баллы накапливались используем формулу oz:=oz+1. Таким образом, в переменной oz будет храниться правильное количество ответов, но оценки 0 и 1 нет по условию задачи, следовательно нужно через if поставить “2” если oz<=2.

текст программы
var ot1,ot2,ot3,ot4,ot5:real;
    oz:integer;
begin
writeln(‘Вычислите’);

writeln(’12-4=?’);
readln(ot1);
if ot1=8 then oz:=oz+1;

writeln(‘3*15=?’);
readln(ot2);
if ot2=45 then oz:=oz+1;

writeln(‘8+13=?’);
readln(ot3);
if ot3=21 then oz:=oz+1;

writeln(‘7/2=?’);
readln(ot4);
if ot4=3.5 then oz:=oz+1;

writeln(‘9*7=?’);
readln(ot5);
if ot5=63 then oz:=oz+1;

if oz<=2 then oz:=2;
writeln(‘Ваша оценка ‘,oz); 
end.

Задача (урок )

Напишите программу для нахождения корней квадратного уравнения
текст программы
var a,b,c,D:integer;
    x1,x2:real;
begin
writeln(‘Решение квадратного уравнения a*x*x+b*x+c=0’);
writeln(‘введите a’);
readln(a);
writeln(‘введите b’);
readln(b);
writeln(‘введите c’);
readln(c);  
D:=b*b-4*a*c;
if D>=0 then
begin
x1:=(-b+sqrt(D))/2*a;
x2:=(-b-sqrt(D))/2*a;
writeln(‘x1=’,x1,’ x2=’,x2);
end
else writeln(‘нет корней’);
end.

Задача (урок )
Напишите программу нахождения наибольшего числа из трех случайных чисел от 1 до 10.
Для нахождения наибольшего числа из трех, нужно сначала сравнить два числа и выбрать наибольшее из них через оператор if, затем сравнить полученное наибольшее с третьим числом, если третье число больше, то переприсваиваем.

текст программы
var a,b,c,max:integer;
begin
a:=random(20)+1;
writeln(a);
b:=random(20)+1;
writeln(b);
c:=random(20)+1;
writeln(c);
readln(c);
if a>b then max:=a else max:=b;
if max<c then max:=c;
writeln (‘наибольшее из трех чисел ‘,max);
end.

Задача (урок )
Напишите программу которая “умеет” определять четное число вводиться с клавиатуры или нечетное.
Пояснение: четные числа делятся на 2 с остатком 0, поэтому нужно использовать в качестве условия функцию mod (x mod 2=0).
var m:integer ;
begin
writeln(‘введите число’);
readln(m);
if m mod 2=0 then writeln(‘число четное’)
else writeln(‘число нечетное’);
end.

Работа со строковыми функциями copy и length 
Задача (урок )
Напишите программу, которая у любого введенного с клавиатуры слова, длинной не более 15 символов вырезает подстроку с 5-го символа длинной в 5 символов.
текст программы
var sl:string[15];
begin
writeln(‘Ведите слово длинной не более 15 символов’);
readln(sl);
writeln(‘Результат – ‘,copy(sl,5,5));
end.

Задача 10 (урок 09.03.21)

Напишите программу, которая у любого введенного с клавиатуры слова меняет местами 1-ю и последнюю буквы.
Пояснение.
Пусть исходная строка храниться под именем s, тогда последний символ нового слова он же первый символ исходного подстрока – copy(s,1,1).
Как узнать номер последнего символа исходного слова? У нас есть функция вычисляющая длину строки length, количество символов в слове и номер последнего символа это одно и то же число. Получаем первый символ нового слова – copy(s,length(s),1).
Осталось найти середину: нам нужно вырезать со второго символа строчку длинной на 2 символа меньше, чем длинна исходного слова (первый и последний символу уже использованы) – copy(s,2,length(s)-2)

Чтобы было проще записывать выражение, присвоим значение функции переменной n:=length(s)

текст программы
var s:string;
    n:integer;
begin
writeln(‘Ведите слово’);
readln(s);
n:=length(s);
writeln(‘Результат -‘, copy(s,n,1)+copy(s,2,n-2)+copy(s,1,1));
end.



Задача (урок )
Напишите программу, которая получает с клавиатуры слово и если количество букв в слове четное выводит половинку слова (например: дорога – дор), если количество букв в слове нечетное, тогда часть слова до центральной буквы и последнюю букву (например: ромашка – рома).
текст программы

var
s:string;

    k:integer;

begin

writeln(‘введите слово‘);

readln(s);

k:=length(s);

if k mod 2=0 then writeln(copy(s,1,k div 2))

else

writeln(copy(s,1,k div 2)+copy(s,k,1));

end.

Задача (урок )

Напишите программу, которая получает с клавиатуры слово и если количество букв в слове кратно 4 выводит вторую половинку слова (например: крокодил – одил), если количество букв в слове не кратно 4, тогда последние 2 буквы (например: ромашка – ка).
текст программы

var
s:string;

    k,n:integer;

begin

writeln(‘введите слово‘);

readln(s);

k:=length(s);

if k mod
4=0 then

begin

n:=k div 2;

writeln(copy(s,n+1,n))

end

else

writeln(copy(s,k-1,2));
end.



Задача (урок )
Напишите программу, которая для любого вводимого с клавиатуры трехзначного числа вычисляет и выводит на экран количество сотен, десятков и единиц (например, для числа 741 результат будет: сотен – 7, десятков, – 4, единиц – 1)
текст программы
var x:integer;
    e,d,s:integer;
begin
writeln(‘введите 3-х значное число’);
readln(x);
s:=x div 100;
e:=x mod 10;
d:=x div 10 mod 10;
writeln(‘сотен – ‘,s,’ десятков – ‘,d,’ единиц – ‘,e);
end.

Задача (урок)

Составить программу, в которой стороны прямоугольника (a – ширина, b – высота) задаются двумя случайных числа в диапазоне от 5 до 20 и если a больше b, то вычисляется площадь прямоугольника,  иначе – периметр. Вывод данных оформить следующим образом:
ширина …
высота …
площадь (или периметр) …
блок-схема
текст программы
var a,b,s,p:integer;
begin
a:=random(16)+5;
writeln(a);
b:=random(16)+5;
writeln(b);
if a>b then
begin
s:=a*b;
writeln(‘площадь ‘,s);
end
else
begin
p:=2*(a+b);
writeln(‘периметр ‘,p);
end;
end.

Оператор цикла с известным количеством повторений for i:=начальное значение to конечное значение do оператор

Задача (урок )
Составьте программу, которая из 10 случайных чисел из промежутка от 10 до 20 находит количество чисел меньших 17. Оформите вывод следующим образом: вывод чисел через пробел в строчку, на следующей строке количество чисел меньших 17.
блок-схема
текст программы
var i,x,k:integer;
begin
k:=0;
for i:=1 to 10 do
begin
x:=random(11)+10;
write(x,’ ‘);
if x<17 then k:=k+1;
end;
writeln;
writeln(‘Количество меньших 17 ‘,k);
end.


Задача (урок )
Составьте программу, которая выводит на экран в строчку 15 случайных чисел из промежутка от 1 до 30 и подсчитывает количество четных чисел.
Пояснение. 
Обратите внимание, что переменная k – счетчик, поэтому начальное значение переменной обнуляем. Условие для подсчета четных: if a mod 2 =0 then k:=k+1, т.е. если  число четное, то k увеличивается на 1.
Текст программы
var i,a,k:integer;
begin
k:=0;
for i:=1 to 15 do
begin
a:=random(30)+1;
if a mod 2=0 then k:=k+1;
write(a,’ ‘);
end;
writeln;
writeln(‘Количество четных ‘,k);
end.

Задачи из ОГЭ по информатике на циклы:

Что будет напечатано в результате работы следующей программы?

var s,k:integer;

begin
s:=50;
for k:=1 to 6 do s:=s-4;
write(s);
end.

Работа программы:
var s,k:integer; – описание переменных целого типа s и k
s:=50; – s=50
for k:=1 to 6 do s:=s-4;
    k=1 s=50-4=46
    k=2 s=46-4=42
    k=3 s=42-4=38
    k=4 s=38-4=34
    k=5 s=34-4=30
    k=6 s=30-4=26
write(s); – вывод на экран значение переменной s равное 26

Можно решить данную задачу выражением.

Цикл выполняется 6 раз, следовательно  s = 50 – 6*4 = 26

Оператор цикла while (цикл ПОКА)

while <условие> do оператор;

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


Задача (урок )
Составьте программу,которая для введенного с клавиатуры целого числа выводит на экран в столбик число единиц, десятков, сотен и т.д.
Пример: 742
результат
2
4

7
Текст программы
var x,a:integer;
begin
readln(x);
writeln(‘результат’);
while x<>0 do
begin
a:=x mod 10;
writeln(a);
x:=x div 10;
end;
end.

Задача (урок 27.04.2021)
Составьте программу, которая пока не будет введен 0 запрашивает целые положительные числа с клавиатуры и находит среди них наибольшее. Результат выводится на экран.

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

Условие для нахождения максимального элемента if a>max then max:= a.
блок-схема
Текст программы
var x,max:integer;
begin
max:=0;
readln(x);
while x<>0 do
begin
if x>max then max:=x;
readln(x);
end;
writeln(‘max=’,max);
end.

Задача (урок )
Составьте программу, которая пока не будет введен 0 запрашивает целые положительные числа с клавиатуры и находит среди них количество двузначных чисел, оканчивающихся на цифру 3. Среди вводимых чисел обязательно есть такое число. Результат выводится на экран.
Пояснение. 
Для подсчета количества используем накопитель, переменную k. 
Обратите внимание, что переменная k – счетчик, поэтому начальное значение переменной обнуляем. Условие для подсчета: (x mod 10=3) – окончание на 3, (x>9) and (x<100) – двузначное число, k:=k+1, т.е. если  число удовлетворяет условию, то k увеличивается на 1.

Текст программы
var x,k:integer;
begin
k:=0;
readln(x);
while x<>0 do
begin
if (x mod 10=3)and(x>9)and(x<100) then k:=k+1;
readln(x);
end;
writeln(‘результат’,k);
end.

Задача (урок)
Составьте программу, которая выводит на экран в строчку 10 случайных чисел из промежутка от 2 до 7 и подсчитывает количество чисел равных 2.
Пояснение. 
Для подсчета количества двоек используем накопитель, переменную k. 
Обратите внимание, что переменная k – счетчик, поэтому начальное значение переменной обнуляем. Условие для подсчета 2: if a=2 then k:=k+1, т.е. если  число равно 2, то k увеличивается на 1.
Текст программы
var i,a,k:integer;
begin
k:=0;
for i:=1 to 10 do
begin
a:=random(6)+2;
if a=2 then k:=k+1;
write(a,’ ‘);
end;
writeln;
writeln(‘Количество двоек ‘,k);
end.


Задача (урок)
Составьте программу, которая выводит на экран в строчку 10 случайных чисел из промежутка от 1 до 30 и находит наибольшее число.

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

Условие для нахождения максимального элемента if a>max then max:= a.
Текст программы
var i,a,max:integer;
begin
max:=0;
for i:=1 to 10 do
begin
a:=random(30)+1;
if a>max then max:=a;
write(a,’ ‘);
end;
writeln;
writeln(‘Максимальное ‘,max);
end.

Задача (урок)
Составьте программу, которая выводит на экран в строчку 10 случайных чисел из промежутка от 1 до 30 и находит наименьшее число.

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

Условие для нахождения наименьшего if a<min then min:= a.
Текст программы
var i,a,min:integer;
begin
min:=31;
for i:=1 to 10 do
begin
a:=random(30)+1;
if a<min then min:=a;
write(a,’ ‘);
end;
writeln;
writeln(‘Наименьшее ‘,min);
end.

Задача (урок)
Составьте программу, которая выводит на экран в строчку 10 случайных чисел из промежутка от 1 до 10 и находит сумму чисел <=3.
var i,a,s:integer;
begin
s:=0;
for i:=1 to 10 do
begin
a:=random(10)+1;
if a<=3 then s:=s+a;
write(a,’ ‘);
end;
writeln;
writeln(‘Сумма чисел <=3 ‘,s);
end.


Задача (урок)
Составьте программу, которая из 5, вводимых с клавиатуры целых чисел, находит максимальное число, оканчивающееся на цифру “5” (среди вводимых чисел обязательно есть такое число).
Текст программы


var i,a,max:integer;
begin
max:=0;
for i:=1 to 5 do
begin
readln(a);
if (a mod 10=5) and (a>max) then max:=a;
end;
writeln(‘Максимальное число оканчивающееся на 5: ‘,max);
end.


Задача (урок)
Составьте программу, вычисляющую значение выражения f=1+2+3+4+ …+n, где n – целое положительное число, вводимое с клавиатуры.
Пояснение 
Обратите внимание, что в формуле складываются числа с 1 и по порядку до n. Мы знаем, что переменная цикла for i, тоже принимает значения с начального до конечного по порядку. Если n будет конечным значение переменной цикла, то i будет принимать нужные нам слагаемые: 1, 2 ,3, 4 … n.
Остается понять как организовать сложение, здесь и в подобных случаях используется формула f:=f+i и в самом начале программы или перед циклом переменной f присваивается значение 0 (f:=0)
Ход программы (пример):
пусть f=0, n=4

работа оператора for i:=1 to n do f:=f+i
шаг 1: i=1 f=0+1=1, в ОП (оперативной памяти) f=1
шаг 2: i=2 f=1+2=3, в ОП f=3
шаг 2: i=3 f=3+3=6, в ОП f=6
шаг 2: i=4 f=6+4=10, в ОП f=10

Проверка: f=1+2+3+4=10

Текст программы

var i,f,n:integer;

begin

f:=0;

writeln(‘введите целое число < 100’);

readln(n);

for i:=1 to n do f:=f+i;

writeln(‘f=’,f);

end.


Задача (урок)
Составьте программу, вычисляющую значение выражения f=1*2*3*4* …*n, где n – целое положительное число, вводимое с клавиатуры.
Пояснение 
В данной программе мы используем тот же прием, что и в примере 8, но в данной ситуации нам не подходит начальное значение f=0 (при умножении на 0 произведение равно 0). Нам нужно число не влияющее на результат умножения, т.е. начальное значение f=1.
Получаем: for i:=1 to n do f:=f*i

Текст программы
var i,f,n:integer;
begin
f:=1;
writeln(‘введите целое число < 100’);
readln(n);
for i:=1 to n do f:=f*i;
writeln(‘f=’,f);
end.

Задача  (урок)
Составьте программу, вычисляющую значение выражения 


где n – целое положительное число, вводимое с клавиатуры.
Пояснение
В данной программе целесообразно отдельно посчитать в цикле числитель (например, f1=1+2+3+…+n) и знаменатель (f2=1*2*3*…*n), а после цикла вычислить все выражение f=f1/f2.
Обратите внимание, что в данной программе знаменатель никогда не будет равным 0, поэтому исключать деление на 0 через оператор if не нужно.

Текст программы
var i,f1,f2,n:integer;
    f:real;
begin
f1:=0;
f2:=1;
writeln(‘введите целое число < 100’);
readln(n);
for i:=1 to n do
begin
f1:=f1+i;
f2:=f2*i;
end;
f:=f1/f2;
writeln(‘f=’,f);
end.

Задача (урок)
Составьте программу, вычисляющую значение выражения 







где x – целое число, n – целое положительное число, вводимые с клавиатуры.
Пояснение
В данной задаче на каждом шаге цикла нам нужно получить соответствующую степень числа x. На первом – 1-ю, на втором – 2-ю и т.д. Мы не можем использовать переменную цикла i в формуле, так как в pascal нет функции степень с произвольным показателем. Если взять переменную p с начальным значением 1 (p:=1) и в цикле использовать формулу для подсчета степени числа x p:=p*x, то получим:
шаг 1: i=1 p=1*x=x
шаг 2: i=2 p=x*x
шаг 3: i=3 p=x*x*x и т.д.

Но нам нужно подсчитывать и сумму степеней f=x+x*x+x*x*x+…. В этом же цикле будем считать сумму по формуле f:=f+p, задав начальное значение f=0.
шаг 1: i=1 p=1*x=x, f=0+p=x
шаг 2: i=2 p=x*x, f=x+p=x+x*x
шаг 3: i=3 p=x*x*x, f=x+x*x+x*x*x и т.д.

Текст программы
var i,f,p,n,x:integer;
begin
f:=0;
p:=1;
writeln(‘введите целое число < 100’);
readln(n);
writeln(‘введите число x’);
readln(x);
for i:=1 to n do 
begin
p:=p*x;
f:=f+p;
end;
writeln(‘f=’,f);
end.

Задача (урок)

Составьте программу, вычисляющую значение выражения f= x+2x+3x+…+nx
где x – целое число, n – целое положительное число, вводимые с клавиатуры.
Пояснение
В этой программе будем использовать переменную цикла i как коэффициент для переменной x: 

for i:=1 to n do f:=f+i*x

Текст программы
var i,f,n,x:integer;
begin
f:=0;
writeln(‘введите целое число < 100’);
readln(n);
writeln(‘введите число x’);
readln(x);
for i:=1 to n do f:=f+i*x;
writeln(‘f=’,f);
end.

Просмотров 11.7к. Обновлено 23 ноября 2020

Урок из серии: «Язык программирования Паскаль»

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

На первом занятии вы узнаете:

  1. Какова структура программы на языке Паскаль.
  2. Как написать простейшую программу.

Для создания программ можно использовать среду программирования Pascal ABC.

Если Паскаль на компьютере не установлен:   Скачать PABCDistr.rar .

Содержание

  1. Структура программы
  2. Как написать простейшую программу
  3. Коротко о главном
  4. Проверь себя!

Структура программы

Программа на языке Паскаль начинается с заголовка, имеющего следующий вид:

program <имя программы>;

За ним идет раздел описаний, в котором должны быть описаны все идентификаторы (константы, переменные, типы, процедуры, функции, метки), которые будут использованы в программе.

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

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

Общий вид программы:

program <имя>; {заголовок программы}
uses      ...;       {раздел описания модулей}
var       ...;       {раздел объявления переменных}
label     ...;       {раздел объявления меток}
const     ...;       {раздел объявления констант}
type      ...;       {раздел объявления типов}
function  ...;       {раздел объявления функций}
procedure ...;       {раздел объявления процедур}

begin
   {последовательность  операторов}
end. {конец программы}

В разделе описаний не обязательно должны быть все разделы.

В наших первых программах будет только один раздел — раздел Var (variable — переменная), в котором мы будем объявлять те переменные, которые будем использовать в разделе операторов.

Как написать простейшую программу

Рассмотрим простейшую задачу с линейным алгоритмом.

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

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

Программа на Паскаль

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

Имя этой программы example_1.

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

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

В нашем примере описаны три переменные: все они (a, b и rez) имеют целый тип (integer).

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

Первый встречающийся оператор — это writeln(‘текст’); — записать (вывести) на экран текст, заключенный между апострофами, ln добавляется в конце этого оператора для того, чтобы курсор автоматически переходил на следующую строку при выводе на экран текстов или результатов выполнения программы.

Следующий оператор — это readln(a,b); — читать данные с клавиатуры.

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

Например, вы ввели числа 12 и 45, тогда a = 12, а b = 45. В конце этого оператора также можно ставить ln.

После этих двух операторов стоит оператор присваивания: rez := a * b; (:= — это знак присваивания в языке Паскаль). Переменная rez получит значение, равное произведению числа a на число b .

Следующий оператор — это снова оператор writeln(‘текст’,rez) — он выведет на экран текст, заключенный между апострофами, а за ним значение переменной rez.

Затем следующий оператор writeln выведет на экран сообщение: »Нажмите <Enter>», а оператор readln будет ожидать этого нажатия в окне выполнения.

Завершает раздел операторов  end с точкой.

Выполнение программы

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

Введите два целых числа через пробел

Курсор мигает в следующей строке, вводим два целых числа через пробел и нажимаем <Enter>, после этого появляется сообщение:

произведение равно...

Нажмите <Enter>.

Коротко о главном

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

Урок 1. Первая программа на языке ПаскальЕсли программа содержит несколько операторов, то они разделяются знаком точки с запятой.

Урок 1. Первая программа на языке ПаскальНачало и конец раздела операторов обозначаются ключевыми словами begin и end. После слова end в конце текста программы всегда ставиться точка. Она означает, что программа закончена.

Урок 1. Первая программа на языке ПаскальКоманда вывода на экран — write(‘текст’) и writeln(‘текст’) отличаются положением курсора после выполнения команды. Команда write(‘текст’) оставляет курсор на той же строке, что и текст, а writeln переводит курсор на новую строку.

Урок 1. Первая программа на языке ПаскальКомпиляция выполняется клавишей F9. Для выполнения программы надо нажать Ctrl+9.

ТестПроверь себя!

Если Паскаль на компьютере не установлен:   Скачать PABCDistr.rar .
До встречи в следующем уроке.
В уважением, Вера Господарец.

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

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

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

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

Содержание

  • Кратко о языке программирования Pascal
  • Знакомство со средой PASCALABC.NET и написание первой программы

Язык Pascal – это относительно доступный и несложный язык программирования. Его изучают часто в школе в старших классах и на первых курсах высших и средних учебных заведениях. Этот язык программирования был разработан Никлаусом Виртом еще в 70-х годах прошлого века, а назван в честь французского математика Блеза Паскаля. Если вам интересно узнать подробнее об истории создания и развития данного языка программирования, вы можете найти эту информацию в Интернете, на той же самой Википедии. А мы не будем сильно на этом останавливаться.

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

Мы привыкли, что, когда мы заходим в любую программу, перед нами появляется окно, в котором есть области для ввода информации, ее вывода, какие-то красиво оформленные таблички, кнопочки и многое другое. Тот же самый привычный нам MS Office Word. Консольное же приложение, если говорить простыми словами, представляет собой окно, в котором просто написаны буквы или цифры на одноцветном фоне, чаще всего на черном. Если вы видели хоть раз в своей жизни командную строку в Windows или операционную систему DOS, то вы представляете себе, что такое консоль. Но, как говориться, лучше один раз увидеть, чем сто раз услышать. В дальнейшем вы увидите, как это все выглядит.

Итак, что нам понадобится, чтобы написать свою первую программу? Естественно, компьютер, клавиатура, мышь (но можно на самом деле и без нее), немного желания и времени, ну и среда разработки. Последнее словосочетание, наверное, для большинства покажется незнакомым. Давайте же выяснять, что это за зверь такой – среда разработки. Это программный комплекс, используемый разработчиком для написания программ на конкретном языке программирования. Простым языком – это программа для написания программ. Она, чаще всего, включает в себя следующие компоненты:

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

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

Знакомство со средой PASCALABC.NET и написание первой программы

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

Для начала необходимо установить на свой компьютер среду разработки. На просторах Интернета можно найти различные вариации сред разработки, но я буду работать со средой разработки PASCAL ABC.NET. Эту среду вы можете найти в Интернете. Я бы рекомендовал вам использовать именно ее, так как по сравнению, например, с Turbo Pascal – в данной среде есть возможность копирования и вставки текста, а также поддерживается русский язык.

Кроме того, он более приятен и понятен в использовании, а также присутствует библиотека с задачником. Вы можете использовать и простой PASCAL ABC, но в версии .NET вы можете скомпилировать программу в файл с расширением .exe, то есть можете ей пользоваться полноценно, а в обычном PASCAL ABC вы можете запустить свою программу только непосредственно в самой среде разработки.

После того, как вы скачаете и установите среду разработки перед вами должно появиться примерно такое окно, которое изображено на рисунке 1. Место, в котором моргает курсор – это тот самый редактор кода, в который мы и будем вписывать команды для исполнения. В окне вывода, которое находится ниже, вы будете видеть результат выполнения программы, а также ошибки, которые могут возникать в процессе выполнения программы. Ну что-же, приступим к процессу программирования.

Рис.1. Среда разработки

Рис.1. Среда разработки

Для начала давайте придумаем название нашей программе. Я не буду долго думать и назову ее просто – “первая программа”. Но называть программу можно только на английском языке, так как это не просто имя программы, а кусочек кода, а весь код пишется только на английском языке. Поэтому я ее буду называть “first_program”. Обратите внимание, что вместо пробела я написал нижнее подчеркивание, так как Pascal понимает пробел как окончание команды. Теперь нам нужно объяснить языку что first_program – это именно название нашей программы, а не что-то другое (вы, кстати, можете придумать свое имя для вашей первой программы). Для этого нам нужно использовать команду (или по-научному оператор) Program. Эта команда говорит компьютеру, что через пробел будет указано название для программы. Итак, первая строчка кода у нас будет выглядеть так:

Program first_program;

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

Теперь давайте выведем текст: «Я написал первую программу! Ура!».

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

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

  • строковый (хранит любые символы),
  • целые числа (Integer),
  • вещественные числа (real).

Целые числа – это числа для счета, без запятой. Вещественные числа, хотя это не совсем так, но все-же – это числа с плавающей точкой, например – 3.1, 5.2 и так далее. Строковый тип данных – это как раз то, что нам нужно. В строковой переменной хранятся любые символы: буквы, цифры, знаки… За объявление переменных отвечает ключевое слово var. Конструкция выглядит следующим образом:

var [название переменной на англ. языке] : тип данных;

В нашем случае это будет выглядеть следующим образом:

var s: string;

После объявления переменной начнем писать основной код программы. Он записывается в так называемых операторных скобках (begin и end). Это означает, что начинается основной код программы с ключевого слово begin, а заканчивается ключевым словом end. В конце программы после последнего ключевого слова end ставится точка (после слова begin точка с запятой не ставится).

Итак, после объявления переменных на следующей строчке пишем слово begin и переходим на следующую строчку. Начнем писать текст программы. Сперва в объявленную переменную s (можно было назвать и по-другому) нужно занести наше предложение «Я написал первую программу! Ура!», которое мы хотим вывести. Пока в нашей переменной (баночке) ничего нет. Чтобы ее заполнить – ей нужно присвоить какое-либо значение. Процесс, при котором мы помещаем в нашу банку (переменную) какого-либо значения (в нашем случае это предложение), называется присвоение и обозначается таким символом (:=) – двоеточие и равно. Выглядит это следующим образом:

s := 'Я написал первую программу! Ура!';

Текст, который мы вводим в строковую переменную записывается в одинарных кавычках. Теперь компьютер знает, что в баночке (переменной) под именем s хранится набор символов – наше предложение. Теперь нам необходимо вывести содержимое переменной на экран. Для этого в языке Паскаль предусмотрены операторы (команды) write и writeln. Первая команда выводит на экран содержимое переменной или текст, а вторая делает тоже самое, только с переходом на другую строку, то есть начинает выводить значение с новой строки. Запишем это:

write(s);

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

Program first_program;
var s: string;
begin
s := 'Я написал первую программу! Ура!';
write (s);
end.

Проверьте, правильно ли у вас все получилось. После этого нам необходимо запустить программу и проверить ее на работоспособность. Найдите на панели инструментов вверху кнопочку с зеленым треугольником или нажмите на кнопку в меню: Программа -> Выполнить. После этого, если все было правильно переписано, в Окне вывода должно появиться предложение «Я написал первую программу! Ура!». Как это должно выглядеть вы можете видеть на рисунке 2.

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

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

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

Program first_program;
begin
write ('Я написал первую программу! Ура!');
end.

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

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

Сперва напишем программу для целых чисел – чисел, используемых при счете (число 2 – целое число в программировании, тип данных Integer, а 2.3 – число с плавающей точкой, тип данных real). При сложении двух целых чисел получается целое число, значит и входные числа, и результат будут типа данных Integer.

Для начала к нашей объявленной переменной добавим еще три, назовем их: celoe1 для первого числа, celoe2 для второго числа и celoe3 для хранения результата сложения двух чисел. Получим баночки (переменные), в которых будут хранится целые числа. Измененная часть программы будет выглядеть так:

var celoe1, celoe2, celoe3: integer;
s: string;

Теперь переходим к изменению тела программы (кода, находящегося между begin и end). Для начала нужно инициализировать ввод с клавиатуры двух чисел. Сначала выведем подсказку: введите первое число. Для вывода текста у нас, как вы помните, используется оператор (команда) write(), но нам нужно выводить каждую подсказку с новой строки, поэтому будем использовать оператор writeln(). Получим следующий код:

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

Теперь при запуске программы на дисплей монитора будет выведена просьба ввести первое число. Далее необходимо организовать ввод с клавиатуры. Нужно, чтобы при нажатии на цифру на клавиатуре в переменную заносилось значение, равное числу, изображенному на клавиатуре. Для этого в языке Паскаль был придуман оператор read() и readln(). В первом случае оператор присваивает введенное с клавиатуры значение переменной (ввод значения заканчивается нажатием на клавишу Enter), записанной в скобочках и оставляет курсор сразу после введенного числа, а во втором случае переводит курсор на новую строку.

После первой подсказки на новой строке пишем:

read (celoe1); 

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

celoe3 := celoe1 + celoe2;

Выведем результат. Для вывода текста или содержания переменной у нас используется оператор write() и writeln(). Для красоты выведем результат на новой строке. Для этого будем использовать writeln(). Получим:

writeln ('Сумма чисел = ', celoe3);

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

Program first_program;
var celoe1, celoe2, celoe3: integer;
s: string;
begin
writeln ('Введите первое число');
read (celoe1);
writeln ('Введите второе число');
read (celoe2); 
celoe3 := celoe1 + celoe2;
writeln ('Сумма чисел = ', celoe3);
s := 'Я написал первую программу! Ура!';
write (s);
end.

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

Рис. 3. Сложение двух чисел

Рис. 3. Сложение двух чисел

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

На первый взгляд нужно поменять лишь формулу для расчета, но нужно вспомнить, что не все числа будут делиться нацело, может оставаться остаток и число будет уже не целое, а с десятичной дробью, а это значит, что тип данных Integer нам уже не подойдет. Нужно использовать тип данных Real. При этом представим, что нам неизвестно, какое число будет введено с клавиатуры – целое или же дробное, поэтому и для введенных с клавиатуры чисел мы будем использовать тип данных Real. Перепишем строку, где мы объявляли целые числа. Назовем наши вещественные переменные v1, v2 и rez. Тогда получим:

var v1, v2, rez: real;
s: string;

Переходим в тело программы. Подсказки о вводе первого и второго числа мы оставляем как есть, а вот в операторе ввода read изменяем название переменных на v1 и v2. Теперь вместо формулы сложения напишем другую формулу:

rez := (v1 / v2) * 3; 

Обращаю ваше внимание, что мы умножаем на три результат деления первого числа на второго, поэтому мы записали деление в скобках (вспоминаем правила очередности операций с числами в математике). Давайте изменим еще и вывод получившейся информации на экран, выведем все в красивом виде. Для этого будем использовать вывод нескольких операндов в удобном для нас порядке через запятую, о котором мы говорили выше. Вначале выведем знак открытой скобочки, затем выведем значение первой переменной, затем выведем символ знака деления, после этого значение второй переменной, затем символы «) * 3 = » и, наконец, значение переменной с результатом. Звучит сложно, но попробуйте вникнуть в это:

writeln ('(', v1, ' / ', v2, ') * 3 = ', rez);

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

Program first_program;
var v1, v2, rez: real;
s: string;
begin
writeln ('Введите первое число');
read (v1);
writeln ('Введите второе число');
read (v2); 
rez:= (v1 / v2) * 3;
writeln ('(', v1, ' / ', v2, ') * 3 = ', rez);
s := 'Я написал первую программу! Ура!';
write (s);
end.

Ну что же, запускаем программу и получаем результат (я ввел первое число = 8.2, второе число = 2), изображенный на рисунке 4.

Рис. 4. Числа с дробью

Рис. 4. Числа с дробью

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

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

16 января 2019 в 00:48
| Обновлено 7 ноября 2020 в 01:20 (редакция)
Опубликовано:

Статьи

Добавить комментарий