extracted_text:
МИНИСТЕРСТВО ОБРАЗОВАНИЯ  И МОЛОДЕЖНОЙ ПОЛИТИКИ
СТАВРОПОЛЬСКОГО КРАЯ
ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ПРОФЕССИОНАЛЬНОЕ
ОБРАЗОВАТЕЛЬНОЕ УЖРЕЖДЕНИЕ
БУДЕННОВСКИЙ  ПОЛИТЕХНИЧЕСКИЙ КОЛЛЕДЖ

УЧЕБНОМЕТОДИЧЕСКОЕ  ПОСОБИЕ

 Pascal
              Язык программирования Паскаль (

 )
          Методика решения задач

по учебной  дисциплине «Теория алгоритмов»
для специальности  09.02.03
 «Программирование в компьютерных системах»
1 Наиля Шарифулловна Тилиева
преподаватель высшей категории профессионального цикла
УЧЕБНОМЕТОДИЧЕСКОЕ  ПОСОБИЕ
 Язык программирования Паскаль (
 Pascal

 )
по учебной  дисциплине «Теория алгоритмов»
для специальности  09.02.03  «Программирование в компьютерных системах»
2 СОДЕРЖАНИЕ

 линейных алгоритмов.
Часть 1. Знакомство с языком программирования Паскаль (
 Pascal

 )
1. 1. Возникновение и назначение языка Паскаль;
1. 2. Структура программы на языке Паскаль;
1. 3. Операторы ввода, вывода, присваивания;
1. 4. Арифметические операции и основные математические функции;
     программ с помощью

Часть 2.   Составление
2. 1. Пунктуация Паскаля;
2. 2. Ввод и вывод данных. Форматы вывода;
2. 3. Составление программ с помощью линейных алгоритмов.
Часть 3.   Условный оператор. Решение задач на ветвление.
3.1.  Оператор ветвления на Паскале. Программирование полного и неполного ветвления;
3.2. Сложные ветвящиеся алгоритмы. Логические операции.

Часть   4.
Паскале.
4.1.  Понятие о циклах. Счётный цикл FOR;
4.2. Цикл с предусловием WHILE; Задача о перестановке букв.
4.3. Цикл с постусловием REPEAT…UNTIL;
4.4. Решения  задач с использованием  алгоритмов с повторениями.
Часть   5.
массивов.
5.1.  Понятие массива. Ввод массива различными способами.
5.2. Поиск в массиве элементов с заданными свойствами.
5.3. Двухмерные массивы: описание, ввод и вывод массивов по строкам.
5.4. Решение задач с использованием  массивов.
Часть 6. Образцы решения задач с помощью различных алгоритмических структур.

 Алгоритмы   с   повторениями.   Программирование   циклов   на
 Понятие   массива.   Примеры   решение   задач   с   использованием
3 Pascal
Язык программирования Паскаль (

 )
 Pascal
Часть 1. Знакомство с языком программирования Паскаль (

 )

 Основные темы:
1. 1. Возникновение и назначение языка Паскаль;
1. 2. Структура программы на языке Паскаль;
1. 3. Операторы ввода, вывода, присваивания;
1. 4. Арифметические операции и основные математические функции;
Цель занятия:
1. Сформировать первые сведения о языке Паскаль;
2. Сформировать первые сведения о структуре программы на языке Pascal;
3. Познакомиться   с   арифметическими   операциями   и   основными
функциями, с различными типами данных;
  математическими
1. 1 Возникновение и назначение языка программирования

 Паскаль
После   того,   как   построен   алгоритм   решения   задачи,   составляется   программа   на
определённом языке программирования.
Язык   программирования    это   фиксированная   система   обозначений   для   описания
алгоритмов и структур данных.
Среди   современных   языков   программирования   одним   из   самых   популярных   является
язык Паскаль. Своё название он получил в честь великого французского математика и физика
Блеза Паскаля, который в 1642г. изобрёл счётную машину для арифметических операций, так
называемое   "паскалево   колесо".   В   конце   1968   г.   профессор   Вирт   и   его   сотрудники   из
швейцарского федерального института технологии в Цюрихе разработали первую версию языка
Паскаль.  Спустя два года  первый вариант компилятора. В 1971 г. Вирт выпустил описание
своего языка.
Создавая  язык Паскаль Вирт преследовал две цели:
 вопервых,   разработать   язык   пригодный   для   обучения   программированию   как
систематической дисциплины;
 вовторых, реализация языка должна быть эффективной и надёжной.
Одним из достоинств языка Паскаль является то, что он полностью воплотил в себя идею
структурного программирования, суть которой заключается в том, что с помощью нескольких
конструкций можно выразить в принципе любые алгоритмы.
4 Язык   программирования   Паскаль это универсальный язык, позволяющий решать самые
разнообразные задачи обработки информации.
1. 2 Структура программы на языке

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

Программа на Паскале близка по своему виду к описанию алгоритма на алгоритмическом языке.
Сравните алгоритм решения  задачи деление простых дробей – с соответствующей программой
на Паскале:
 На  алгоритмическом языке:
алг                            Деление дробей;
цел                           a, b, c, d, m, n;
нач                           ввод (a, b, c, d);
                                m:= a*d;
                                n:=b*c;
                                вывод( m, n);
кон.
 На языке
 Паскаль:

Program      division;
Var             a, b, c, d, m, n: integer;
Begin        readln(a, b, c, d);
                                m:= a*d;
                                n:=b*c;
                  writeln(m, n);
End.
Даже не заглядывая в учебник по  Паскалю,  в этой программе мы можем все понять,
особенно помогает знание английского языка.
Алфавит языка состоит из букв латинского алфавита (русский алфавит используется только
Алфавит языка и действительные числа
для пометок и для задания литерных величин), арабских цифр, специальных символов:
+  * / = > <  [ ] {} ( ) ‘ . , : ; ^ @ $ #
Действительные числа изображаются в естественной и полулогарифмической форме. Число
135000 записано в естественной форме. Мы можем записать его так 1.35  .  105. Запись данного
числа в полулогарифмической форме выглядит следующим образом:  1.35Е+05.
Знак и число, стоящие после символа  E  указывают, на сколько знаков вправо или влево
необходимо сместить десятичную запятую.
Например:
85470  = 8.547Е+04
3.1415 = 3.1415E+00
0.0045 = 4.5E03
Часть 1. Задания для самостоятельной работы:
1. Переведите числа из  полулогарифмической формы в естественную форму записи:
а) 4,09Е+02;  б)7,802Е+01;  в)3,3Е02;  г)2,97Е03;  д)5,29Е+00;  е)2,03Е+05.
2. Переведите числа из  естественной формы записи в полулогарифмическую форму:
а) 234000;  б)0,0045;  в)6,78;  г)7,302;  д)4090;  е)0,0306.
3. Сравните числа:  а) 4,67Е01 и 0,0467;  б)9,21Е+04 и 9210.
Таким   образом,     программа   на   языке   Паскаль     состоит   из   заголовка,   описаний   и
операторов.
В заголовок входят: служебное слово program и перечень доступных программе файлов (input,
output)
Тело программы (блок) состоит из шести разделов:
раздел меток;
раздел констант;
раздел типов;

5

раздел переменных;
раздел процедур и функций;
раздел операторов.
Нарушать очерёдность нельзя.
Любой из разделов (кроме операторов) может отсутствовать.
Раздел меток
 label (служебное слово) за которым следует перечень меток разделённый запятыми
 Пример 3, 22 , 48, 7;
Раздел описания констант
 const (служебное слово)
Определение   каждой   константы   содержит   идентификатор   константы,   знак   равенства,   и
значение,   например:
 z=’252   группа’;   Константы   записываются   своими
десятичными значениями 2.3; 3.5 и т. д. Значение константы хранится в выделенной под нее
ячейке памяти и остается неизменной в течение работы программы.
 e=8,718281828;
Раздел описания типов
 tupe (служебное слово)
В работе чаще используются стандартные типы данных:
byte – целый (от 0 до 255);
integer  целый (от 32768 до 32767);
longint – (от –2147483648 до 2147483647);
real  вещественный (от 2,9Е39 до 1,7Е+38);
char  символьный (любой один символ. Например: f или №)
string  строковый (любой текст от 0 до 255 символов)
boolean  булевский {принимает два значения FALSE (ложь) и TRUE (истина)}
Интервальные типы: можно объявить новый тип так, что он будет частью упорядоченного
интервала
days =1..31      manth=1..12        z=’a’..’w’
Раздел описания переменных   var (служебное слово)
В   данном   разделе   должны   быть   перечислены   все   переменные,   используемые   в   программе,   с
указанием их типов. Идентификаторы переменных одного типа можно записывать через запятую.
 i, k, l: integer;
 a, b: real;
Идентификаторы   переменных   составляются   из   букв   латинского   алфавита   и   цифр.   Первым
символом обязательно должна быть буква.
Переменные в программировании обозначаются символическими именами. Эти имена называются
идентификаторами.
Например: А1; X; В3; prim; max и т. д.
Раздел операторов – основная часть программы
Begin
           <операторы>
End.
1. Ввод исходных данных с клавиатуры происходит по оператору read (read читать) или readln
(readln читать строку):
1.3 Операторы ввода, вывода, присваивания;
read  (  <список переменных>);
       readln  (  <список переменных>);
Значения переменных пользователь набирает на клавиатуре в том порядке, в каком они указаны в
списке, отделяя их друг от друга пробелами; одновременно они появляются на экране. В конце
нажимается клавиша   .
readln – экранный курсор перемещается в начало новой строки; read не перемещается.
6 2. Вывод результатов на экран компьютера происходит по оператору write (write – писать) или
writeln (writeln – писать в строку);
write (  <список  вывода>);
writeln (  <список  вывода>);
3. Арифметический оператор присваивания на Паскале имеет следующий формат:
  <числовая переменная>:= <арифметическое выражение>;
Например:  Y:= 5;  X:=sqr(Y) + 3;Это означает,что переменной  Y  присвоить значение 5, а
переменной X присвоить значение 52+3=28.
1.4 Арифметические операции и основные математические функции
В языке Pascal используется следующие арифметические операции:
арифметическая операция
(а=14, b=4)
результат
сложение
(+)
вычитание
()
умножение
(*)
деление
целочисленное деление
(/)
S:=a+b
S:=ab
S:=a*b
S:=a / b
S:=a div b
остаток   от
деления
  целочисленного
S:=a mod b
S=18
S=10
S=56
S=3.5
S=3
S=2
Нет возведения в степень. Если степень целая, её заменяют умножением: а3
S:=a*a*a.
 Для возведения числа в произвольную степень используется следующее соотношение:
 xy=exр(y*ln(x)), так как  xy=e ln(x ) =eylnx  .
  Основные математические функции
↔
sqr(x)
sqrt(x)
int(x)
 trunc(x)
round(x)
frac(x)
abs(x)
pi
sin(x)
возведение X в квадрат
корень квадратный из X
целая часть X (результат  вещественное число)
целая часть X (результат  целое число)
округляет число X до целого (результат  целое число)
дробная часть от X
модуль от X
выдаёт число 3.1415926…..  (19 знаков после запятой)
синус X
7 cos(x)
arctan(x)
 exp(x)
 ln(x)
косинус X
арктангенс X
возведение числа е=2.7183 в стерень X (ех)
логарифм числа X
 random(x)
 выбирается случайное число от 0 до X1 (целое)
random
выбирается случайное число от 0 до 1 (вещественное)
 Операции отношения
=        равно
<        меньше
<=      меньше или равно
>=     больше или равно
< >        неравно
>            больше
1. Вычислите:
Часть 1. Задания для самостоятельной работы:
a) a:= 78 mod 5;  б)  b:=97 div 9; в) c:= 13 mod 7; г) z:= sqr(9); д)  w:=sqrt(9); е) x:= abs(7);
ж)  sl:= 2+pi; з) pr:= sqr(sqrt(8)).
2. Запишите арифметические выражения на языке Паскаль:
а)z=3+x23x3;
в) l = 2 π r;
б) d=x (sin x + cos(x2) + |x|);
г) k=1 + |yx|3 + |yx|/(x+1) ;
д)
;       е)
.
3. Даны числа a,b. Найдите:
а) S:=a div b;   б)S:=a mod b, если a=15; 13; 18 и  b=2; 6; 4.
4.  Вычислите:
а) (32 div5) mod 2=…
б) (168 mod 100) div 6=…;
в) (168 mod 100) mod 6=…
5. Проверьте равенство:  (264 mod 100) div 10=(368 div div 10) mod 10.
Часть 1. Вопросы для повторения:
1. В каком году появилась первая версия языка программирования Паскаль (Pascal)?
2. Какими достоинствами обладает язык Паскаль?
3. Существуют ли операторы языка Паскаль записанные русскими буквами?
4. В какой форме изображаются действительные числа в Паскале?
5. Из каких частей состоит программа на Паскале?
6. Назовите стандартные типы данных.
8 7. Чем отличается операция деления  / от операции div?
8. Существует ли в Паскале  операция возведения в степень?
9. Что должно быть записано слева от оператора присваивания?
10. Что может быть записано в правой части оператора присваивания?
11. Что такое переменная?
12. Что такое идентификатор?
Часть 2.   Составление
     программ с помощью

 линейных алгоритмов.

             Основные темы:
2. 1. Пунктуация Паскаля;
2. 2. Ввод и вывод данных. Форматы вывода;
2. 3.  Составление программ с помощью линейных алгоритмов.
Цель занятия:
1.Познакомиться   и научиться использовать   форматы команд ввода и вывода данных;
получить навыки использования  различных математических  операций;
2.   Самостоятельно   написать   несколько   простых   программ   с   помощью   линейных
алгоритмов;
3.Закрепить  знания и умения по работе в среде Паскаля.
Необходимо   строгое   соблюдение   правописания   (синтаксиса)   программы.   В   частности,   в
Паскале однозначно определено назначение знаков пунктуации.
2. 1 Пунктуация Паскаля
Знак  (;)  ставится в конце заголовка программы, в конце раздела описания переменных,
является разделителем операторов.
Перед словом

Знак     (,)  является   разделителем   элементов   во   всевозможных   списках:     списках
переменных в разделе описания; списках вводимых и выводимых величин.
  знак  (;) можно не ставить.
 end
Строгий синтаксис в языках программирования необходим потому. Что компьютер является
формальным исполнителем программы
В   программу   на   Паскале   можно   вставлять   комментарии.  Комментарий   это   пояснение   к
программе,   которое   записывается   в   фигурных   скобках.   В   них   можно   использовать   русские
буквы. На исполнение программы комментарии никак не влияют.
Заметим, что в Паскале нет различия между строчными и прописными буквами. Например, для
Паскаля тождественны следующие варианты записи: BEGIN, begin, BeGin и т. п. Использование
строчных или прописных букв дело вкуса программиста.
Если мы хотим при выводе на экран реальных чисел указать определённое число знаков
2. 2
 Ввод и вывод данных.Форматы вывода
после запятой, то можно воспользоваться форматом вывода writeln(a:n1:n2), где
n1  количество знакомест, выделенных под всё число;
n2  количество знакомест, выделенных под дробную часть числа.
Например, команда  writeln(pi)  выведет строку:   3.1415926536E+00,
а команда  writeln(pi:9:3) выведет строку:           3.142, пропустив перед выводимым числом
четыре пробела и выровняв 3.142 (всего 5 знаков) по правому краю девяти знакомест.
Задача1. Составим программу, выводящую на экран число
.π
program zadacha1;
Begin
writeln(pi:9:3);
9 Readln;
End.
Задание: Изменяя числа в формате вывода(:9:3, :9:2, :17:3, :17:7, :3:7 и т.д.),  просмотрите и
проанализируйте полученные результаты.
Задача 2. Заданы два числа. Найдем их сумму.
рrogram zadacha2;
var a,b,s:byte;
Begin
writeln('введите целое число a ');
read(a);
write('введите целое число b ');
read(b);
s:=a+b;
writeln('s =',s);
      Readln;
End.
Проанализируйте полученный результат при a+b>255. Поменяйте тип данных byte на integer. Что
получается   теперь?   Просмотрите,   до   какой   предельной   суммы  a+b  вычисления   происходят
верно? Установите тип данных longint. Просмотрите суммы.
Задача 3.Составим программу вычисляющую
program zadacha3;
var a,b,s,p:real;
s = а / b   и   p=a*b.
Begin
writeln('введите число a ');
readln(a);
writeln('введите число b ');
readln(b);
s:=a/b;
p:=a*b;
writeln('а/b =',s);
writeln('а*b =',p);
      Readln;
End.
В данном примере ввод и вывод данных для каждой переменной осуществляется отдельно.
А можно было записать и так:
program zadacha3а;
var a,b,s:real;
Begin  writeln('введите числа a и b');
readln(a,b);
s:=a/b;
p:=a*b;
writeln('а/b = ',s,' а*b = ',p);
      Readln;
End.
2. 3. 1Составление программ с помощью линейных алгоритмов
Рассмотрим несколько примеров:Задача 4. Заданы a, x, y.  Вычислите S=| a | +   x+ y 2
program zadacha4;
var a,x,y,s:real;
Begin  writeln('введите число x ');
10 readln(x);
writeln('введите число y ');
readln(y);
writeln('введите число a ');
readln(a);
s:=abs(a)+sqrt(x+sqr(y));
writeln('s =',s);
      Readln;
End.
Задача 5. Задана сторона куба. Вычислить объем куба и площадь боковой поверхности.
Begin  writeln('Введите сторону куба');
{ввод данных}
    {описание переменных}
program zadacha5;
var a,v,s:real;
read(a);
v:=a*a*a;
s:=6*a*a;
      Readln;
End.
(*вычисление объёма*)
{вычисление площади поверхности}
{вывод результатов}
writeln('Объём = ',v:8:3,'  Площадь поверхности = ',s:8:3);
Задача   6.  Дано   действительное   число   а.     Используя,   только   пять   операций
умножения   получить   а15  (блоксхема,   алгоритмический   язык,   программа   на
Паскале).
На алгоритмическом  языке
Блок – схема
Алг      задача6 (цел
  a, b, c, d, S);
арг a;
рез b, c, d, S;
нач      ввод (a);
b: = a*a;
c: =b*b;
d:= c*a;
s:= d*d*d;
        Вывод (S);
Кон.
Начало
Ввод a
b: = a*a; c: =b*b
d:= c*a;s:= d*d*d
На языке Паскаль:
program   z6;
var            a,b,c,d,s:longint;
Begin      writeln('введите число  a');
                 readln(a);
Вывод S
Конец
11 b:=a*a;
         с:=b*b;
         d:=c*a;
         s:=d*d*d;
       writeln('результат = ',s);
       Readln;
Еnd.
{вторая степень}
{4 степень}
{5 степень}
{15  степень}
2.3.2Составление линейных алгоритмов с использованием
арифметических операций. Операции

     div
      и

     mod

     .
Задача 7. Дано трёхзначное число. Чему равны его цифры?
program zadacha7;
var a,с1,с2,с3:integer;
Begin
writeln('введите трёхзначное число '); readln(a);
c1:=a div 100;
c2:=(a mod 100) div 10;
c3:=a mod 10;
writeln('первая цифра ',c1);
writeln('вторая цифра ',c2);
writeln('третья цифра ',c3);
  Readln;
{или    c2:=(a div 10) mod 10;}
Еnd.
Задача 8. Заданы два целых числа  k  и  d. Используя только арифметические операции,
найдите целую и  дробную части от деления k на d.
program    zadacha8;
var           a,drobn:real;
     k,d,cel:integer;
Begin      writeln('введите два числа');
                readln(k,d);
        cel:=k div d;
        a:=k/d;
       drobn:=acel;
    writeln('целая часть  ',cel);
     writeln('дробная часть  ',drobn);
     Readln;
{целочисленное деление}
{обычное деление}
Еnd.
Можно ли было в данной программе все переменные определить как  integer  или как  real?
Попробуйте и проанализируйте.
Задача 9.  Поезд перевозит  s  тонн груза. Сколько автомобилей грузоподъемностью  b
тонн (b<  then  <оператор 1 >  else  < оператор 2 >
неполная форма условного оператора
if  < условие>  then  <оператор >
if  then  else – зарезервированные слова (если, то, иначе)
  Оператор   ветвления   на   Паскале.   Программирование   полного   и   неполного
3.1
ветвления.
Рассмотрим несколько примеров:
Задача 1.  Даны  два  числа   х, у.  Найти большее  из  них.
program zadacha1;
var max,x,y:real;
Begin
writeln('Введите  число  x '); readln(x);
writeln(' Введите  число y '); readln(y);
if x>y then  max:=x  else  max:=y;
writeln('большее из двух чисел= ',max);
        readln;
End.
Задача 2.  Даны  три  числа x, y,z .  Найти  максимальное число из них.
program  zadacha2;
var max,x,y,z:real;
Begin
writeln(' Введите  три числа ');
readln(x,y,z);
if x>y then max:=x else max:=y;
if z>max then max:=z;
writeln('большее из трёх чисел =',max);
       readln;
End.
Задача 3.  Задано число a. Кратно ли оно 3.
program zadacha3;
var а:longint;
Begin
writeln(' Введите число');
readln(а);
if a mod 3 =0 then writeln(a,' кратно 3’)
else  writeln(a,' не кратно 3’);
                               readln;
End.
Задача  4.     Дано     число.     Дать     характеристику     числа:   положительное   оно   или
отрицательное.
program zadacha4;
var
 a:real;
k:string;
Begin
       readln;
writeln('Введите  число а');
readln(a);
if a<0    then k:='отрицательное' else k:=' положительное';
writeln('число  ',a,' ; ',k,');
17 End.
Задача 5.  Дано три числа x, y, z. Вычислить сумму только положительных чисел из
трех данных.
program zadacha5;
var
Begin
x,y,z,sum:real;
writeln('Введите три числа');
readln(x,y,z);
sum:=0;
if x>0   then  sum:=sum+x;
if y>0   then  sum:=sum+y;
if z>0   then  sum:=sum+z;
writeln('сумма положительных чисел = ',sum);
        readln;
End.
3.2 Сложные ветвящиеся алгоритмы.
Условия, которые мы до сих пор использовали, являются простыми. Если после служебного
слова  if  проверяется   только   одно   условие   (а  mod  3=0;  a>b;  k=1),   то   такое   условие   будем
называть простым условием.
Если   после   служебного   слова  if  возникает   необходимость   проверить   сразу   несколько
условий,   то   группу   таких   простых   условий   будем   называть  составным   условием.
  При
написании составных условий,   каждое из простых условий, входящих в составное, берётся в
скобки.
Можно использовать союзы and(и) или or(или).
Рассмотрим следующий пример:
Задача  6.   Дано   натуральное   число.   Проверить,   является   ли   число   двузначным,   у
которого первая цифра равна последней.
program zadacha6;
var a:integer;
Begin
writeln('Введите  натуральное число');
readln(a);
if (a mod 10=a div 10) and (a>9) and (a<=99)
then writeln('является') else writeln('не является');
readln;
End.
После  служебного  слова   then, или  после  служебного   else будет  выполняться  только
один оператор.  Если  необходимо,  чтобы  выполнялось  несколько  операторов их нужно  взять
в  операторные  скобки:
Операторные  скобки
Begin
                                       <последовательность операторов>
end;
Группу операторов находящуюся внутри операторных скобок будем называть  составным
оператором.  Фактически, весь раздел операторов, внутри операторных скобок, представляет
собой один составной оператор.
Для   того,   чтобы   при   большом   количестве   операторных   скобок,   программа   была   более
18 читаемая, end желательно записывать под begin.
Задача 7. Составить  программу  решающую  квадратное  уравнение вида  ax2+bx+c=0.
program zadacha7;
var  a,b,c:integer;
x,d,x1,x2:real;
Begin writeln('введите  коэффициенты  а,b,c');
readln(a,b,c);
d:=b*b4*a*c;
if d<0 then writeln('уравнение  не  имеет  корней');
if d=0 then

         {вычисление  дискриминанта}
begin
writeln('уравнение  имеет  1  корень');
x:=b/(2*a);
writeln('x= ',x);
end;
if d>0 then
begin
writeln('уравнение  имеет  2 корня');
x1:=(b+sqrt(d))/(2*a);
x2:=(bsqrt(d))/(2*a);
writeln('x1= ',x1);
writeln('x2= ',x2);
end;
End.
Задача 8. Даны два числа а,b (a,b≠0). Ответить одного ли знака введённые числа.
program zadacha8;
var a,b:real;
Begin  writeln('Введите  два числa');
readln(a,b);
if ((a>0)and(b>0)) or ((a<0)and(b<0))
then writeln('числа одного знака')
else writeln('числа разных знаков');
                                               readln;
End.
Задача  9. Дан треугольник  ABC  своими сторонами  a,  b,  c. Вычислить его площадь.
(Формула Герона :  S=√р(ра)(рв)(рс), где р=(а+b+с)/2 полупериметр.   Условие: длина
любой стороны треугольника должна быть меньше суммы длин двух других сторон.)
program Geron;
var a,b,c,p,s:real;
Begin
writeln('Введите  длины сторон треугольника');
readln(a,b,c);
if (a>0)and(b>0) and(c>0)
and(a+b>c) and(b+c>a) and(a+bc>b)
       then begin
р=(а+b+с)/2;
s:=sqrt(р*(ра)*(рв)*(рс));
writeln('Площадь треугольника равна',s)
end
19 else writeln('неверные исходные данные');
   readln;
End.
Часть 3.  Вопросы для повторения:
Вопросы для повторения:
1.Что такое составное условие?
2.В чём отличие составного условия от простого?
3.Объясните исполнение оператора if.
4.Какие союзы используются при написании составного условия?
5.В каких случаях после служебных слов then и else нужно писать begin … end,  а в каких нет?
6.Что представляет собой составной оператор?
7.Почему end желательно записывать под begin?
Часть 3.  Задания для самостоятельной работы:
1. Задано x.   Вычислить у:
        x25,
    y  =
                  |x3|,
если
x<0 ,
если
x>=0.
2. Даны  два  числа.  Найти меньшее число из  них.
3. Даны  три  числа.  Найти  минимальное число.
4. Задано натуральное число a. Является ли оно чётным?
5. Задано натуральное число a. Является ли оно кратным 7?
6. Задано натуральное число a. Заканчивается ли оно на 0?
7. Дано трехзначное число. Кратна ли сумма  его цифр шести?
8. Дано двузначное число. Является ли сумма его цифр
a) однозначным числом;
b)   двузначным числом.
9. Дано  двухзначное число. Являются ли обе цифры числа чётными?
10.Даны два вещественных числа. Уменьшить первое число в пять раз, если оно больше второго
по абсолютной величине.
11.Яявляется ли число трехзначным, у которого первая цифра равна последней.
12.Дано трехзначное число. Кратна ли сумма  его цифр семи?
20 ОБРАЗЕЦ РЕШЕНИЯ ЗАДАЧИ С ПОМОЩЬЮ ВЕТВЯЩЕГОСЯ  АЛГОРИТМА
Задача.   Даны два вещественных числа. Уменьшить первое число в пять раз, если оно
больше второго по абсолютной величине.
1 этап     Математическое решение
2 этап      Блок  схема
  Даны два вещественных числа х , у.
  Если  |x| >|y|, то Z:=x/5, иначе Z:=y.
Например:
1.Если   даны два числа  х= 25 и у= 8, то
|25|=25,   |8|=8, т. о. 25>8 и
Z=25:5=5.
2. Если   даны два числа   х=8 и  у= 25, то
   |8|=8,  |25|=25, т. о. 8<25 и
Z= 25.
+
Z:=x/5

Z:=y
Начало
Ввод x,y
|x| >|y|
Вывод  z
Конец
3   этап         На     алгоритмическом
языке:
4 этап      На языке

 Паскаль:
алг                           задача;
вещ                          х, у, Z ;
нач                           ввод (х,у);
если                         |x| >|y|
то Z:=x/5
                                   иначе Z:=y;
                                вывод(Z );
кон.
Program       zadacha;
Var             х, у, Z : real;
Begin          writeln('Введите  числа х, у’);
                    readln(х.у);
                    if  abs(x) >abs(y)
                     then Z:=x/5
                     else Z:=y;
                    writeln(‘z=’,z);
                   Readln;
End.
21 Алгоритмы   с   повторениями.   Программирование   циклов   на
Часть   4.

Паскале.
Основные темы:
4.1.  Понятие о циклах. Счётный цикл FOR;
4.2. Цикл с предусловием WHILE; Задача о перестановке букв.
4.3. Цикл с постусловием REPEAT…UNTIL;
4.4. Решения  задач с использованием  алгоритмов с повторениями.
 Цель занятия:
1.Сформировать понятие о циклах;
 2.Научиться использовать счётный цикл FOR;
 3.Познакомиться с циклами WHILE и REPEAT;
           4.Получить и закрепить навыки решения алгоритмов с повторениями.
           5.Закрепить знания по использованию различных типов циклов;
 FOR

 FOR;
 ...   UNTIL  c  постусловием.
4.1  Понятие о циклах. Программирование циклов на Паскале. Счётный цикл
  .

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

 цикл

 REPEAT
 цикл

Цикл   это   команда   исполнителю   многократно   повторить   указанную   последовательность
команд.
На первом нашем занятии постараемся познакомиться и научимся использовать  счётный
цикл FOR .
Переменная внутри цикла изменяется автоматически от k до n  (n>k)  с шагом 1.
Формат записи цикла:
или
от n до k  (n>k)  с шагом  1.
Формат записи цикла:
Если   в   цикле   должны   выполняться   несколько   операторов,   то   используем   операторные
скобки: begin …. end;
Цикл FOR удобно использовать тогда, когда точно известно количество повторений.
 for i:=n dawnto k do
 for i:=k to n do
Рассмотрим несколько примеров:
Задача 1.1. (счётный цикл FOR)  Найти сумму всех натуральных чисел от 1 до n.
program zadacha1_1;
 var i,n,s:integer;
Begin     writeln(' введите  натуральное n');
 readln(n);
s:=0;
for i:=1  to n do
 s:=s+i;
writeln('сумма  от  1  до',n,' = ',s);
Readln;
End.
В данном цикле переменная  i  автоматически изменяется от 1 до  n   с шагом 1. Поэтому к
переменной  s  прибавляется  i  вначале равная 1, потом 2, потом 3, и т.д. до  n, соответственно
переменная s принимает значении 1, 3, 6, 10, 15 ….…
Задача 2. Задано натуральное n.  Вычислить  сумму  ряда:
S=1  1/2 + 1/3  1/4 + 1/5........1/n
22 Program  zadacha2;
 var i,n,a:integer; s:real;
Begin   writeln('Введите  n');
             readln(n);
            s:=1;a:=1;
            for i:=2 to n do
            begin
            a:=(1)*a;
            s:=s+a/i;
            end;
           writeln('Сумма  ряда   S= ',s);
           Readln;
End.
Задача  3.   Определить   количество   трёхзначных   натуральных   чисел,   сумма   цифр
которых равна заданному числу N.
program zadacha3;
var с1,с2,с3,i,n,kol:integer;
Begin   writeln('Введите  n');
readln(n);
kol:=0;
for i:=100 to 999 do
begin
c1:=i div 100;
c2:=(i div 10) mod 10;
c3:=i mod 100;
if c1+c2+c3=n   then kol:=kol+1;
end;
 writeln('Количество таких чисел = ',kol);
Readln;
End.
4.1. Вопросы для повторения:
1. Для чего предназначен оператор цикла?
2. Какие существуют циклы в языке Паскаль?
3. Какой формат записи имеет оператор FOR?
4. Как работает оператор FOR?
5. В каких случаях применяется оператор FOR?
6. Сколько раз будет выполнен цикл, и чему будет равна переменная S после выполнения:
s:=0;  n=6;
for i:=3  to n do
                    s:=s+i;
7. Как в теле цикла выполнить несколько операторов?
4.1.  Задания для самостоятельной работы:
1. Найти сумму всех нечётных трёхзначных чисел.
2. Найти сумму положительных кратных 7 чисел, меньших 100.
3. Найти все числа, которые делятся на N среди:
a)
всех двухзначных чисел;
23 b) всех трёхзначных чисел.
4. Составить программу вычисления суммы квадратов чисел от 1 до  n.
5. Среди двузначных чисел найти те, сумма квадратов цифр которых делится на 13.
6. Найти все делители для заданного числа n.
7. Дано натуральное число n. Вычислить:
a)  2n;
c)   n!;
8. Среди четырёхзначных чисел выбрать те, у которых:
b)  3n
 все четыре цифры различны (например: 3167, 9012);
a)
b) имеются три одинаковые цифры (например: 1311, 7779);
c) цифры попарно различны (например: 1331, 7979, 2255);
d) цифры образую возрастающую последовательность (например: 1389, 4678);
4.2  Понятие о циклах. Программирование циклов на Паскале.
Цикл с предусловием

Этот цикл удобно использовать тогда, когда заранее неизвестно число повторений.
While <логическое выражение> do <оператор>;
     (       «цикл  пока»).
     WHILE

While – пока;    do делать.
Оператор, стоящий после слова do, называется телом цикла.
Тело цикла может быть простым или составным оператором, то есть последовательностью
операторов между служебными словами begin и end.
  Обратим  внимание,  что  на  Паскале  нет  специальных   служебных  слов   для  обозначения
конца цикла и конца ветвления. Во всех случаях, где это необходимо используются слова begin и
end.
Любой циклический алгоритм может быть построен с помощью команды «цикл
пока».
Рассмотрим пример 1, используя  цикл WHILE.
Задача 1.2. Найти сумму всех натуральных чисел от 1 до n.
program zadacha1_2;
 var i,n,s:integer;
Begin   writeln('введите натуральное n');
readln(n);
s:=0;    i: =1;
while i<=n do
begin
s:=s+i;
i:=i+1;
end;
 writeln('сумма от 1 до',n,'=',s);
Readln;
End.
Цикл  WHILE  будет  выполняться  до  тех  пор,  пока  выполняется  условие   i<=n.    Причем
переменную i изменяем внутри цикла.
Задача 4.Задано натуральное число n.  Вычислить  сумму  цифр числа.
program zadacha4;
 var n,sum,cif:integer;
Begin   writeln('Введите  n');
 readln(n);
sum:=0;
while n>0 do
24 begin
cif:=n mod 10;
sum:=sum+cif;
n:=n div 10;
 end;
writeln('Сумма  цифр введённого числа = ',sum);
 Readln;
End.
Задача  5. Найти минимальное натуральное число, которое при делении на 2 даёт   в
остатке 1, при делении на 3 даёт в остатке 2, при делении на 4  в остатке 3, при
делении на 5  в остатке 4, при делении на 6  в остатке 5 а при делении на 7 дают в
остатке 6.
program zadacha5;
 var i, kl:longint;
Begin  kl:=0;  i:=0
 while kl=0 do
 begin
i:=i+1;
if (i mod 2=1) and (i mod 3=2) and (i mod 4=3) and (i mod 5=4) and (i mod 6=5) and (i mod 7=6) then
kl:=1;
end;
 writeln(i);
Readln;
End.
Задача  6.  (Цикл   с   предусловием  WHILE,   с   вложенным   ветвлением)   Найти
наибольший общий делитель двух натуральных чисел, используя
 алгоритм Евклида  : Пусть M, N N. Если M>N, то НОД(M, N)= НОД(MN, N).
Program Evklid;
var M,N:integer;
begin writeln('Введите числа M,N');
readln(M,N);
while M<>N do
begin
if M>N then M:=MN else N:=NM;
end;
writeln('НОД=',M);
readln;
end.
Задача о перестановке букв.
Рассмотрим некоторые задачи из раздела математики, который называется комбинаторика.
 Количество различных комбинаций из N предметов, получаемых изменением их порядка,
называется  числом   перестановок.   Это   число   выражается   функцией   от  N,   которая
называется факториалом и записывается так:
N! = 1*2*3*…*n (читается – N факториал).
25 Например.  Сколько   различных   трехзначных   чисел   может   быть   получено   в   результате
перестановки цифр:  123.
Решение: 123; 132; 231; 213; 312; 321. То есть 3!=1*2*3=6.
Задача 7.  Дано   N кубиков, на которых написаны разные буквы. Сколько различных N
буквенных   слов   можно  составить  из   этих  кубиков.  (Слова  не  обязательно   должны
иметь смысл).
Решение. Пусть N – обозначает количество букв, F – количество слов из этих букв, то
F= N! =1*2*3*…*N
Program Words;
var F,N,R:integer;
begin writeln('Введите число букв');
readln(N);
F:=1; R:=1;
while R<=N do
begin
F:=F*R; R:=R+1;
end;
writeln('Из',N,’букв можно составить’,F,’слов’);
readln;
end.
4.3  Понятие о циклах. Программирование циклов на Паскале.
     REPEAT

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

Эти циклы также удобно использовать тогда, когда заранее неизвестно число повторений.
Repeat   повторять;
Until   до тех пор пока.
Рассмотрим пример 1, используя  цикл  с постусловием REPEAT…UNTIL.
Задача 1.3. Найти сумму всех натуральных чисел от 1 до n.
program zadacha1_3;
 var i,n,s:integer;
Begin    writeln(' введите  натуральное n');
 readln(n);
s:=0; i:=1;
repeat
 begin
s:=s+i;
i:=i+1;
end;
until i>n;
writeln('сумма от 1 до',n,' = ',s);
readln;
End.
Цикл  REPEAT  . . . UNTIL  будет выполняться до тех пор, пока не выполниться  условие
i>n.
Часть 4.  Вопросы для повторения:
1. Какие циклы существуют в языке Паскаль?
2. Какой формат записи имеют циклы WHILE и REPEAT?
3. В каких случаях удобно применять эти циклы?
4. Чем отличается  цикл WHILE от цикла REPEAT?
5. Будет ли остановлено выполнение данного цикла? Почему?
26 a) an;
b) a(a + 1) …(а + n – 1).
a)
b)

1
2
1
1
3
4
3
2
5
6
5
3

...
;


...
.
s:=0;   i: =1;
while i<=4 do
              s:=s+i;
Часть 4.  Задания для самостоятельной работы:
1. Дано натуральное число n. Вычислить:
 

1

1
2
2
 


1


1
2
2

 


1...


1
2
n



.
2. Даны действительное число a, натуральное число n. Вычислить:
3. Дано натуральное число n. Вычислить произведение первых n сомножителей:
4. Найти все двузначные числа, которые содержат цифру N.
5. Составьте   программу   возведения   натурального   числа   в   квадрат,   используя   следующую
закономерность:
12 = 1
22 = 1 + 3
32 = 1 + 3 + 5
42 = 1 + 3 + 5 + 7
. . .
n2 = 1 + 3 + 5 + 7 + 9 + … + (2n – 1).
6. Составить программу возведения заданного числа в третью степень, используя следующую
закономерность:
13 = 1
23 = 3 + 5
33 = 7 + 9 + 11
43 = 13 + 15 +17 + 19
53 = 21 + 23 + 25 + 27 + 29
7. Составьте программу нахождения НОД трех чисел:
НОД(А, В, С)= НОД(НОД(А, В), С).
8. Составьте программу нахождения НОК двух  чисел:
А*В= НОД(А, В)* НОК(А, В).
8. Найти сумму положительных нечётных чисел, меньших N.
9.   В  трёхзначном   числе   зачеркнули   старшую  цифру,   когда   полученное   двузначное   число
умножили на 7, то получили данное число. Найти это число.
10. Сумма цифр трёхзначного числа кратна 7, само число также делится на 7. Найти все
такие числа.
11. Среди четырёхзначных чисел выбрать те, у которых все четыре цифры различны.
12. Дано натуральное число. Найти все его делители и их сумму.
27 ОБРАЗЕЦ РЕШЕНИЯ ЗАДАЧИ С ПОМОЩЬЮ ЦИКЛИЧЕСКОГО  АЛГОРИТМА
Задача.   Дано   N  кубиков, на которых написаны разные буквы. Сколько различных  N
буквенных   слов   можно  составить  из   этих  кубиков.  (Слова  не  обязательно   должны
иметь смысл)
1 этап     Математическое решение
начало
2 этап      Блок  схема
  Пусть N – обозначает количество букв,
F – количество слов из этих букв,
то
F= N! =1*2*3*…*N
НЕТ
ДА
Ввод  N
F: =1
R: =1
R< =N
F: = F*R
R: =R+1
Вывод F
конец
28 3 этап    На  алгоритмическом языке:
4 этап      На языке

 Паскаль:
алг                          слова;
цел                        F,N,R ;
нач                        ввод ( N);
                                F:=1; R:=1;
                                пока R<=N
                        нц
                              F:=F*R; R:=R+1;
                       кц
                               вывод (F);
кон.

Program Words;
var  F,N,R:integer;
begin writeln('Введите число букв');
readln(N);
F:=1; R:=1;
while R<=N do
begin
F:=F*R; R:=R+1;
end;
writeln('Из',N,’букв можно составить’,F,’слов’);
readln;
end.
 Понятие   массива.   Примеры   решение   задач   с   использованием
Часть   5.
массивов.
Основные темы:
5.1.  Понятие массива. Ввод массива различными способами.
5.2. Поиск в массиве элементов с заданными свойствами.
5.3. Двухмерные массивы: описание, ввод и вывод массивов по строкам.
5.4.  Решение задач с использованием  массивов.
Цель занятия:
       1.Сформировать понятие табличной величины (массива);
       2. Получить навыки ввода массива различными способами;
           3.   Получить  навыки  разработки   программ  по  работе    с  элементами  двухмерного
массива.
5.1  Понятие массива. Ввод массива различными способами .
29 Массив   представляет   собой   таблицу   в   памяти   компьютера (имеющую название),
состоящую  из  некоторого  числа  ячеек (7,13, 50,100). К значениям, находящимся  в  ячейках
массива,   имеется   удобный   доступ,   необходимо   лишь   указать   имя   массива   и   индекс   ячейки
(a[1],a[3], a[7]).
Например, массив а состоит  из 10  ячеек (говорят, что размерность массива  равна  10)

1   2    3   4   5   6   7   8   9  10
a
   a[1]         a[4]                    a[9]
Попытаемся понять, как работать с массивом на примере следующей задачи:
Задача 1.Имеется 10 чисел. Необходимо найти их сумму.
program zadacha;
 const n=10;
 var     s,i:integer;
     a:array[1..n] of integer;                  {описание массива}
Begin
      for i:=1 to n do
       begin      writeln('Введите  a[',i,']');     {Ввод  элементов  массива}
       read (a[i]);
       end;
      writeln('Введённый массив');
      for i:=1 to n do                                         {Вывод  эл.  массива}
              write (a[i],’  ’);

      s:=0;
            for i:=1 to n do                                         {Нахождение суммы}
      s:=s+a[i];

      writeln;  writeln('Сумма элементов массива =', s );
      readln;
End.
В  данной задаче все элементы массива вводились с клавиатуры. Но ввод элементов массива
можно осуществлять и подругому: задавая  весь массив в разделе констант.
Решим  задачу  вторым  способом:
Массив
задан как
константа
program zadacha;
  const n=10;

var
 a:array[1..n] of integer=(1,0,2,7,8,9,9,4,0,4);
    s,i:integer;
Begin      writeln('Введённый массив');
      for i:=1 to n do                                           {Вывод  эл.  массива}
      write (a[i],’  ’);

      s:=0;
      for i:=1 to n do                                         {Нахождение суммы}
      s:=s+a[i];

      writeln;  writeln('Сумма элементов массива =', s );
      readln;
30 End.
5.2

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

1   2    3   4   5   6   7   8   9  10
a
   a[1]         a[4]
a[9]
1 4  9  6  7  13   19   12   5   8
k = 19 ;   k = 3
1 4 6 7 8 8 8 4 5 4        k = 8
Задача  2.   Имеется  n  целых   чисел.   Необходимо   найти   число   (элемент),   значение
которого равно К. Если такой элемент в последовательности есть, то указать его
порядковый номер.
program zadacha2;
 var     k,i,n,p:integer;
a:array[1..30] of integer;                   {описание массива}
 Begin     Write('Кол. элем. массива'); readln(n);
       for i:=1 to n do
       begin
      write('Введите  a[',i,']');                      {Ввод  элементов  массива}
readln (a[i]);
 end;
      writeln('Введённый массив');
 for i:=1 to n do                                    {Вывод  эл.  массива}
        write (a[i],’  ’);
       writeln;
 write('Введите К');readln(k);
      p:=0;
      for i:=1 to n do                                         {Нахождение суммы}
 if a[i]=k then p:=i;
      if p=0
            then writeln('элемента в табліце нет')
            else writeln('элемент найден, индекс =',p);
       readln;
End.
В   данной задаче в случае  наличия в таблице нескольких элементов, равных К будет выдан
наибольший индекс. Для поиска первого такого элемента  в таблице используют цикл:
i:=1;
While (i<=n) and (a[i]<>k) do
    i:=i+1;
Задача 3. Решим  задачу поиска наибольшего элемента в таблице А из N вещественных
чисел. Найти максимум и индекс этого элемента.
program zadacha3;
 var a:array[1..30] of real;
       max: real;
       j,i: integer;
Begin
     Write('Кол. элем. массива'); readln(n);
    {Ввод элементов массива}
1  4  9  6  7  13  19  12  5  8
1  4  6  7  8  8  8  4  5  4
31 …………………..
   {Вsвод элементов массива}
…………………..
      max:=a[1]; j:=1;
      for i:=2 to n do                                         {Поиск максимума}
          if max99)and(a<=999)
then writeln('является')
else writeln('не является');
readln;
end.
Program Evklid;
var M,N:integer;
begin writeln('Введите числа M,N');
readln(M,N);
while M<>N do
begin
if M>N then M:=MN else N:=NM;
end;
writeln('НОД=',M);
readln;
end.
50 ЗАДАЧА №4  Решить  квадратное уравнение
2
xa

xb
c
0
Program zadacha2;
 var a,b,c,x1,x2,d: real;
Begin    write('Введите коэффициенты a,b,c :');
 readln(a,b,c);
  d:=b*b4*a*c;
  if d<0 then writeln('Нет корней.')
            else begin
                     if d=0 then begin
                                         x1:=b/(2*a);
                                         x2:=x1
                                       end
                               else begin
                                        x1:=(b+sqrt(d))/(2*a);
                                        x2:=(bsqrt(d))/(2*a)
                                      end;
                    write('    x1=',x1:5:2,'     x2=',x2:5:2)
                  end;
readln;
End.
З А Д А Н И Я: Решить следующие уравнения:
      а)  3х²  +  6х  8 = 0;      б)   х²    2х  1 = 0;      в)  5х²    4х + 3 = 0;      г)  4х²  +  4х  1 = 0;
      д)  5х²    5х + 2 = 0
51 ЛИТЕРАТУРА
1  Карпиленко Е.В. Основы программирования: Учебник для СПО. – М.: Феникс,
2015 г
2  Лесневский. Объектноориентированное программирование для начинающих +
приложение. М.: Бином, 2014 г
3 Гуда А.Н., Колесников В.И. Информатика и программирование (компьютерный
практикум). М.: Издательский дом Дашков, 2015 г
4 Фаронов В.В. Turbo Pascal: Учебное пособие. СПб.: ПитерЮг, 2014 г
5  Баженова И.Ю., Сухомлин В.А. Введение в программирование: Учебное
пособие. М.: Бином, 2016 г
6. Материалы сайта http://www.metodkopilka.ru.
52

file_name: МЕТОДИКА решения задач.doc

description:
раздел переменных;
раздел процедур и функций;
раздел операторов.
Нарушать очерёдность нельзя.
Любой из разделов (кроме операторов) может отсутствовать.
Раздел меток
 label (служебное слово) за которым следует перечень меток разделённый запятыми
 Пример 3, 22 , 48, 7;
Раздел описания констант
 const (служебное слово)
Определение   каждой   константы   содержит   идентификатор   константы,   знак   равенства,   и
значение,   например:
 z=’252   группа’;   Константы   записываются   своими
десятичными значениями 2.3; 3.5 и т. д. Значение константы хранится в выделенной под нее
ячейке памяти и остается неизменной в течение работы программы.
 e=8,718281828;
Раздел описания типов
 tupe (служебное слово)
В работе чаще используются стандартные типы данных:
byte – целый (от 0 до 255);
integer  целый (от 32768 до 32767);
longint – (от –2147483648 до 2147483647);
real  вещественный (от 2,9Е39 до 1,7Е+38);
char  символьный (любой один символ. Например: f или №)
string  строковый (любой текст от 0 до 255 символов)
boolean  булевский {принимает два значения FALSE (ложь) и TRUE (истина)}
Интервальные типы: можно объявить новый тип так, что он будет частью упорядоченного
интервала
days =1..31      manth=1..12        z=’a’..’w’
Раздел описания переменных   var (служебное слово)
В   данном   разделе   должны   быть   перечислены   все   переменные,   используемые   в   программе,   с
указанием их типов. Идентификаторы переменных одного типа можно записывать через запятую.
 i, k, l: integer;
 a, b: real;
Идентификаторы   переменных   составляются   из   букв   латинского   алфавита   и   цифр.   Первым
символом обязательно должна быть буква.
Переменные в программировании обозначаются символическими именами. Эти имена называются
идентификаторами.
Например: А1; X; В3; prim; max и т. д.
Раздел операторов – основная часть программы
Begin
           <операторы>
End.
1. Ввод исходных данных с клавиатуры происходит по оператору read (read читать) или readln
(readln читать строку):
1.3 Операторы ввода, вывода, присваивания;
read  (  <список переменных>);
       readln  (  <список переменных>);
Значения переменных пользователь набирает на клавиатуре в том порядке, в каком они указаны в
списке, отделяя их друг от друга пробелами; одновременно они появляются на экране. В конце
нажимается клавиша   <Enter>.
readln – экранный курсор перемещается в начало новой строки; read не перемещается.
6

description:
b:=a*a;
         с:=b*b;
         d:=c*a;
         s:=d*d*d;
       writeln('результат = ',s);
       Readln;
Еnd.
{вторая степень}
{4 степень}
{5 степень}
{15  степень}
2.3.2Составление линейных алгоритмов с использованием
арифметических операций. Операции

     div
      и

     mod

     .
Задача 7. Дано трёхзначное число. Чему равны его цифры?
program zadacha7;
var a,с1,с2,с3:integer;
Begin
writeln('введите трёхзначное число '); readln(a);
c1:=a div 100;
c2:=(a mod 100) div 10;
c3:=a mod 10;
writeln('первая цифра ',c1);
writeln('вторая цифра ',c2);
writeln('третья цифра ',c3);
  Readln;
{или    c2:=(a div 10) mod 10;}
Еnd.
Задача 8. Заданы два целых числа  k  и  d. Используя только арифметические операции,
найдите целую и  дробную части от деления k на d.
program    zadacha8;
var           a,drobn:real;
     k,d,cel:integer;
Begin      writeln('введите два числа');
                readln(k,d);
        cel:=k div d;
        a:=k/d;
       drobn:=acel;
    writeln('целая часть  ',cel);
     writeln('дробная часть  ',drobn);
     Readln;
{целочисленное деление}
{обычное деление}
Еnd.
Можно ли было в данной программе все переменные определить как  integer  или как  real?
Попробуйте и проанализируйте.
Задача 9.  Поезд перевозит  s  тонн груза. Сколько автомобилей грузоподъемностью  b
тонн (b<<s) он способен заменить (блоксхема,  программа на Паскале)?
Блок  схема
На языке Паскаль
12

description:
Program     avto;
Var            f, ned: integer;
Begin        Writeln (‘Введите         грузоподъемность
поезда’);
      Readln (s);
           Writeln  (‘Введите   грузоподъемность
автомобилей’);
       Readln (b);
       kol:= s div b;
      Writeln (‘Колво автомобиль = ’, kol);
      Readln;
end.
Начало
Ввод
s,b
kol:= s div b
Вывод
kol
Конец
Часть 2. Вопросы для повторения:
1. Какая команда служит для ввода данных?  Для вывода данных?
2. Чем отличается вывод информации на экран компьютера оператором  write

 ( )  от вывода
оператором  writeln
 ( ) ?

3. Как вывести на экран текст?
4. Можно   ли   вывести   на   экран   несколько   переменных   или   текстов   одним   оператором
writeln()?
 Чем  отличается операция  / от операции div?
5. Какие символы используются для размещения комментариев в программе?
6.
7. Есть ли в Pascal операция возведения в степень?
8. Придумайте формулу для нахождения предпоследней цифры числа?
9. Можно ли производить операции mod и div над переменными, которые описаны как real?
Часть 2. Задания для самостоятельной работы:
1. Даны два действительные числа. Найти среднее арифметическое этих чисел.
2. Имеются три числа. Вычислите их произведение.
3. По заданным сторонам прямоугольника a и b вычислите его периметр и площадь.
4. Дана сторона a квадрата. Вычислите периметр, длину диагонали и площадь квадрата.
5. Даны стороны a и b прямоугольника.
6. Вычислите периметр, длину диагонали и площадь  прямоугольника.
7. Дана   сторона  a  равностороннего   треугольника.   Вычислите   периметр   и   площадь
треугольника.
8. Дана длина ребра куба. Вычислите диагональ куба, объём куба и площадь его боковой
9. Три   сопротивления  R1,
 R2,
 R3   соединены   параллельно.   Найдите   сопротивление
поверхности.
соединения.
10. Треугольник задан своими сторонами a, b, c. Используя формулу Герона
  (s  = √  p(pa)(pb)(pc), где  p   полупериметр  p=(a+b+c)/2 )   вычислите площадь
треугольника.
11. Вычислите расстояние d между двумя точками с координатами x1, y1, x2, y2 (расстояние
13

description:
d = √ (x1x2)2+(y1y2)2    ).
12. Дано   действительное   число  x.   Не   пользуясь   никакими   другими   арифметическими
операциями, кроме умножения, сложения и вычитания, вычислить 2x4  3x3 + 4x2  5x +
Разрешается использовать не более 4 умножений и 4 сложений и вычитаний.
13. Человеку   сегодня   исполнилось  R  лет.   Сколько   ему   дней?   Часов?   Минут?   Секунд?
(Високосные годы не учитывать)
14. После начала некоторого эксперимента прошло  t  часов  m  минут и  k  секунд. Сколько
всего секунд длится эксперимент?
15.  Задано двухзначное число. Чему равна последняя цифра числа?
16. Найдите сумму цифр заданного трёхзначного  числа.
17. Найдите цифры заданного четырёхзначного  числа.
18. С начала суток прошло k минут. Определите сколько сейчас часов и минут.
19. Идёт kая секунда суток. Определить который сейчас час (в часах, минутах и секундах).
20. Робинзон Крузо провёл на острове f дней. Сколько полных недель он пробыл на острове?
21. Поезд перевозит s тонн груза. Сколько автомобилей грузоподъемностью  b тонн (b<<s) он
способен заменить?
22. Дано   действительное   число   a.   Не   пользуясь   никакими   другими   операциями   кроме
умножения, получить:
a13 за пять операций;
a21 за шесть операций;
a3 и a10 за четыре операции.
23. Задано   вещественное   число  f.   Вычислите   разность   целой   и   дробной   части   числа  f.
24Даны числа n, k, m. Вычислите x и у, если:
а)x = n (sin k + cos(m2));               б)     x =2n4+6n3n2+3n9;           в)
y


kn

n
sin
k
1

x
         24. Вычислите площадь прямоугольной площадки для промышленного комплекса длиной
400 метров и шириной 80 метров.
25. Оборона занимает прямоугольный участок местности. Стороны прямоугольника равны
соответственно 12,5 км и 24 км. Одна из наибольшей  стороны прямоугольника является
передним краем обороны. Определить площадь участка обороны в гектарах.

 26. Найдите и исправьте ошибки в программе:
program    zadacha;
var             a,b:real; c,e:integer;
Begin        writeln('Введите два целых числа');
                 readln(a);
               c:=a/b;
     d:=a mod b;
     e:=c+d;
    writeln(c);writeln(d);writeln(e);
End.

 27. Чему равен результат работы программ при a = 253:
14

description:
program zadacha2_12a;
var a,x,y,z,b:integer;
Begin
readln(a);
x:=a div 100;
y:=(a div 10) mod 10;
z:=a mod 10;
b:=x*100+z;
writeln(b);
Readln;
End.
program zadacha2_12b;
var a,x,y,z,b:integer;
Begin
readln(a);
x:=a div 100;
y:=(a div 10) mod 10;
z:=a mod 10;
b:=y*z;
writeln(b);
Readln;
End.
Сократите длину записанных выше программ, сохранив их назначение.
ОБРАЗЕЦ РЕШЕНИЯ ЗАДАЧИ С ПОМОЩЬЮ ЛИНЕЙНОГО АЛГОРИТМА
Задача.  По   заданным   сторонам   прямоугольника  a  и  b  вычислите   его   периметр   и
площадь.
1 этап     Математическое решение
2 этап      Блок  схема
15

description:
P=(a+b)*2; S=a*b
a
b
Начало
Ввод
a,b
S=a*b;
P=(a+b)*2
Вывод  S,P
Конец
 этап         На     алгоритмическом
3

языке:
4   этап      На языке

 Паскаль:
алг                            прямоугольник;
цел                           a, b,S,P;
нач                           ввод (a, b,);
           S=a*b; P=(a+b)*2;
                                вывод(S,P );
кон.

 writeln('Введите   стороны

Program      pryamoygolnik;
Var              a, b,S,P: integer;
Begin

прямоугольника’);
                    readln(a, b);
                    S=a*b; P=(a+b)*2;
                    writeln(S,P);
                   Readln;
End.
Часть 3.    Условный оператор. Решение задач на ветвление.
 Основные темы:
3.1.  Оператор ветвления на Паскале. Программирование полного и неполного ветвления;
3.2. Сложные ветвящиеся алгоритмы. Логические операции.
Цель занятия:
1. Сформировать понятие о полном и неполном условном операторе;
2. Получить навыки  использования условного оператора;
4. Сформировать понятие о составном операторе;
5. Получить навыки использования операторных скобок;
6. Закрепить знания и умения по составлению программ на ветвления.
Если в зависимости от первоначального условия задачи, должны выполняться различные
выражения, то мы будем использовать  условный оператор оператор ветвления.  Условный
оператор может быть записан в полной и неполной форме.
16

description:
полная форма условного оператора
if  < условие>  then  <оператор 1 >  else  < оператор 2 >
неполная форма условного оператора
if  < условие>  then  <оператор >
if  then  else – зарезервированные слова (если, то, иначе)
  Оператор   ветвления   на   Паскале.   Программирование   полного   и   неполного
3.1
ветвления.
Рассмотрим несколько примеров:
Задача 1.  Даны  два  числа   х, у.  Найти большее  из  них.
program zadacha1;
var max,x,y:real;
Begin
writeln('Введите  число  x '); readln(x);
writeln(' Введите  число y '); readln(y);
if x>y then  max:=x  else  max:=y;
writeln('большее из двух чисел= ',max);
        readln;
End.
Задача 2.  Даны  три  числа x, y,z .  Найти  максимальное число из них.
program  zadacha2;
var max,x,y,z:real;
Begin
writeln(' Введите  три числа ');
readln(x,y,z);
if x>y then max:=x else max:=y;
if z>max then max:=z;
writeln('большее из трёх чисел =',max);
       readln;
End.
Задача 3.  Задано число a. Кратно ли оно 3.
program zadacha3;
var а:longint;
Begin
writeln(' Введите число');
readln(а);
if a mod 3 =0 then writeln(a,' кратно 3’)
else  writeln(a,' не кратно 3’);
                               readln;
End.
Задача  4.     Дано     число.     Дать     характеристику     числа:   положительное   оно   или
отрицательное.
program zadacha4;
var
 a:real;
k:string;
Begin
       readln;
writeln('Введите  число а');
readln(a);
if a<0    then k:='отрицательное' else k:=' положительное';
writeln('число  ',a,' ; ',k,');
17

description:
…………………..
   {Вsвод элементов массива}
…………………..
      max:=a[1]; j:=1;
      for i:=2 to n do                                         {Поиск максимума}
          if max<a[i] then
                 begin
                    max:=a[i];
                     j:=i;
                  end;
      writeln;
      writeln('Макс. элемент массива =', max );
      writeln('Индекс макс. элемента =', j );
 readln;
End.
    Алгоритм:
1. Условно считаем первый элемент наибольшим (максимальным). Запоминаем его значение
(a[1]) и его индекс (=1).
2. Cравниваем  значение максимального с очередным элементом таблицы (i), начиная  со
второго элемента и до последнего.
3. При   нахождении   элемента   с   большим   значением   меняем   значение   максимального   на
найденный элемент и запоминаем его индекс.
4. При наличии в таблице нескольких минимальных и при условии  max<a[i] будет найден
максимальный элемент с наименьшим индексом (первый встретившийся в таблице), а
если условие будет max<=a[i], то  с большим индексом.
5.2  Задания для самостоятельной работы:
1. Имеется целочисленный массив, состоящий из 15 элементов
      найти минимальный элемент и его индекс.
2. В массиве хранится информация о количестве осадков (целые  числа), выпавших за каждый
день прошедшей недели. Вывести   номера дней, когда осадков не было.
3. Дан   массив   целых   чисел   из  n  элементов.   Найти   и
заканчивающихся цифрой 0.
  вывести   номера   элементов,
4. Рост  N  учеников класса  представлен в виде  массива.  Найти   количество  учеников, рост
которых не превышает значения R.
5. В   массиве   записаны   результаты  N  игр   футбольной   команды   (если   игра   закончилась
выигрышем   данной   команды,   то   записано   число   3,   проигрышем      число   2,   вничью      1).
Определить количество выигрышей, проигрышей, ничьих.
6. В массиве хранится информация о росте  N  человек. Определить, на сколько рост самого
высокого человека превышает рост самого низкого.
7. В массиве хранится информация о стоимости 1 кг N видов конфет. Определить порядковый
номер самого дешевого вида конфет. Если таких несколько, то должен быть найден индекс:
           А) первого из них;
           Б) последнего из них.
8. В массиве хранится информация о стоимости каждой из  M  книг. Определить количество
самых дешевых книг (с одинаковой минимальной ценой).
5.3 Двухмерные массивы: описание, ввод и вывод массивов по строкам.
32

description:
Двухмерные массивы имеют строки и столбцы. Элемент массива задается номером строки и
номером столбца, на пересечении которых он находится
А
А[2, 3]
Строки (1, 2, 3)
Описание  А: array [1..3, 1..6] of тип
Столбцы
(1,2,3,4,5,6)
Если  количество строк = количеству  столбцов массив  называется  квадратной матрицей, в
противном случае  прямоугольной.
Задача 4. Задана прямоугольная матрица размера n  строк и m столбцов.
Заполнить ее целыми числами. Распечатать по строкам. Найти и вывести сумму всех
элесментов и их среднее арифметическое значение.
program zadacha4;
var     i, j, s,m,n : integer;
     sr : real;
     a:array[1..10, 1..20] of integer;
Begin

Write('Кол. строк, кол. столбцов?');
     readln( n,m);
     for i:=1 to n do
     for j:=1 to m do
     begin
      write('Введите  a[', i , ',' , j , ']');
      readln (a[ i, j ]);
      end;
      writeln('Введённый массив');
      for i:=1 to n do
      begin
      for j:=1 to m do
      write (a[ i, j ],’  ’);
      writeln;
      end;
      s:=0;
      for i:=1 to n do
     for j:=1 to m do
     s:=s + a[ i , j ];
     writeln('Сумма =', s);
     sr:=s / (n*m);
      writeln('Средее =', sr:8:3);
      readln;
End.
33

description:
5.3 Задания для самостоятельной работы:
1. Имеется целочисленный массив n*m элементов. Найти номер строки с минимальной суммой
модулей элементов.
2. Имеется целочисленный массив  n*m  элементов. Найти     индексы максимального элемента
таблицы и значение   максимума.
3.Имеется   целочисленный   массив  n*m  элементов.   Каких   элементов   в   массиве   больше
отрицательных или положительных?
4. Имеется целочисленный массив n*m элементов.  Сообщить есть ли в таблице отрицательные
элементы.
Часть 5.   Вопросы для повторения:
1.Что такое массив?
2. Что такое элемент массива?
3. Что такое индекс массива?
4.Что такое размерность массива?
5.Зачем  нужны  массивы?
6. Как можно обратиться к ячейке массива?
7. Какого типа могут быль элементы массива?
8. Какого типа может быть индекс массива?
9. Как можно осуществить ввод элементов массива?
Часть 6. Образцы решения задач с помощью различных алгоритмических структур.
Задача 1.  Робинзон Крузо провел на острове f дней. Сколько полных недель он пробыл на
острове?  (блоксхема, программа на Паскале).
1.Блоксхема
Начало
Ввод f
ned:= f div 7
Вывод ned
Конец
34

description:
2. Программа на Паскале.
Program Z1;
var f, ned: integer;
begin Writeln (‘Введите количество дней’);
Readln (f);
ned:= f div 7;
Writeln (‘Колво недель = ’, ned);
Readln;
end.
Задача 2.  Вычислить площадь треугольника по двум заданным сторонам a, b и углу
между ab. Для вычисления площади треугольника S воспользуемся формулой: S=1/2ab
sin ab.
.
 Программа на Паскале.
 program Str;
 var  a, b, ab: real;
 begin   writeln (‘Введите стороны треугольника  a,b и угол  ab:’);
           readln (a,b,ab);
 S:=a*b*sin(ab*pi/180)/2;
           writeln (‘S=‘,S:8:2);
readln ;
end.
Задача 3.  Вычислить значение функции при условии, что:
Программа на Паскале.
program  Z3;
var x, y : real;
          begin      write(‘Vvedite x:  ‘);
          readln(x);
          if  ( x <= 0 ) then  y: = exp(x)
35

description:
else if ( x > 1 ) then y:= ln(x)
                                                   else y:=0;
          writeln(‘результат:’);
          write(‘pri x= ‘, x:7:2,’  y= ‘, y:7:2);
readln ;
          end.
  Задача   4.   Дано   двухзначное   число.   Дайте   характеристику   числа   по   следующему
плану:
          сумма цифр числа;
         число четное (нечетное);
         число больше (меньше) пятидесяти;
         первая цифра равна (неравна) второй цифре.
 Написать программу на Паскале.
 Программа на Паскале.
Program Z4;
var a, des, ed, s: integer;
begin Writeln (‘Введите число’);

Readln (a);
des: = a div 10;
ed: = a mod 10;
s:= des + ed;
Writeln (‘s=’, s);
if a mod 2 = 0  then Writeln (‘четное’) else Writeln (‘ нечетное’);
if a > 50  then Writeln (‘больше 50’) else Writeln (‘ меньше 50’);
if a mod 2 = 0  then Writeln (‘1 цифра = 2ой’) else Writeln (‘1 цифра ≠ 2ой’);
Readln;
end
Задача   5.   Дано   трехзначное   число.   Входит   ли   в   него   цифра   4   (блоксхема,
алгоритмический язык, программа на Паскале)?
1. Алгоритмический язык
алг задача 5 (цел  a, sot, des, ed)
арг a
рез
нач  ввод a
        sot:= a div 100
       des: = a div 10
       ed: = a mod 10
если

  sot = 4 или des = 4 или ed = 4
то входит
иначе не входит
36

description:
все
кон
2.  Блок – схема
3. Программа на Паскале.
Program Z5;
var a, sot, des, ed: integer;
begin Writeln (‘Введите число’);
Начало
Ввод a
sot:= a div 100
des: = (a mod 100)
div 10
ed: = (a mod 100)
mod 10

sot = 4
или
des = 4
или
ed = 4
Конец
Не входит
+
входит
Readln (a);
            sot:= a div 100;
des: = a div 10;
ed: = a mod 10;
if (sot = 4) or (des = 4) or (ed = 4) then Writeln (‘входит ’) else Writeln (‘ не входит ’);
Readln;

начало
end.
Ввод n
 Задача 6. Найти все числа, которые делятся на N среди всех двухзначных чисел (блок
схема, алгоритмический язык, программа на Паскале)
1. Алгоритмический язык
алг задача6 (цел   n, I)
I mod n = 0
+
I: = 10, 99

арг n
рез
нач ввод n
нц для I от 10 до 99
если I mod n =0
то вывод I
все
Вывод I
37
конец

description:
кц
кон
         2.  Блок – схема
3. Программа на Паскале.
 Program Z6;
var  I, n: integer;
begin Writeln (‘Введите n’);
Readln (n);
For I:=10 to 99 do
begin
end;
if I mod n =0 then  Writeln (‘I’);
Readln;
end.
Задача   7.   Даны   действительные   числа  a,b  (a  ≠  b).   Меньшее   из   этих   двух   чисел
заменить их полусуммой,  а большее  – их удвоенным  произведением (блоксхема,
алгоритмический язык, программа на Паскале)
1. Алгоритмический язык
алг задача7 (цел  a, b, sa, sb)
арг a, b
рез a, b
нач ввод a
       sa:= a
       sb:=b
если a > b
38

description:
то b:= sa +sb, a:= sa*sb
иначе a:= sa +sb, b:= sa*sb
все
вывод a,b
кон
2. Блок  схема
+
b:= sa +sb
a:= sa*sb
Начало
Ввод a, b
sa:= a, sb:=b
a > b

a:= sa +sb
b:= sa*sb
Вывод a,b
Конец
3. Программа на Паскале
Program Z7;
var a, b, sa, sb: integer;
begin Writeln (‘Введите 2 числа’);
Readln (a,b);
          sa:= a;
          sb:=b;
39

description:
if a > b then

else
begin
end
begin
end;
b:= sa +sb;
a:= sa*sb;
a:= sa +sb;
b:= sa*sb;
Writeln (‘первоначальное числа а = ', sa, 'b=',sb);
Writeln (‘полученные числа а = ', a, 'b=', b);
Readln;
end.
 Задача 8. Найти сумму положительных кратных 7 чисел, меньших 100.
 Программа на Паскале.
Program Z8;
var  I, S: integer;
begin
clrscr;
S: = 0;
For I:=7 to 100 do
begin
end;
Writeln (‘S=’, S);
Readln;
end.
if I mod 7 =0 then S: = S + I;
 Задача 9. Вычислить сумму всех нечетных чисел от нуля до 100.
program summa;
var i,s:byte;
begin
i:=1;
s:=0;
while i<=100 do begin
                                 s:=s+i;
                                 i:=i+2
                                end;
writeln(‘Сумма нечетных чисел от 1 до 100=’,s);
Readln;
end.
40

description:
1     для любого Х, с проверкой корректности ввода.
Y
X
Задача  10.Вычислить
    Program Z10;
    var x,y: real;
    Begin     repeat  write('X='); readln(x);
                  until (x<>0);
                  y:=1/x;
                 writeln('x=',x,' y=',y);
Readln;
End.
Задача  11.Найти произведение чисел делящихся на 2 от 10 до 20.
Program Z11;
  var x:integer; P:real;
Begin
  p:=1;                  { начальное значение произведения }
  for x:=10 to 20 do
    if x mod 2=0 then p:=p*x;
  write('Произведение чисел, делящихся на 2 от 10 до 40 равно P=',p);
Readln;
End.
Задача  12.Найти сумму ряда для i от 1 до 15, каждый элемент которого выражается
по формуле
, то есть найти сумму: 6+9+14+...
2 i
5
1 способ: Счётный цикл FOR.
Program Summa1;
  var s,i,n: integer;
Begin
   s:=0; i:=1; n:=15; h:=1;
  FOR i:=1 TO n DO s:=s+(i*i+5);

  write('Сумма числового ряда S=',s);
Readln;
End.
2 способ: Цикл с предусловием WHILE.
Program Summa2;
 var s,i,n,h: integer;
Begin
    s:=0; i:=1; n:=15; h:=1;
WHILE i<=n DO
 begin
s:=s+(i*i+5);
41

description:
i:=i+h;
 end;
End.
write('Сумма ряда S=',s);
Readln;

3 способ: Цикл с постусловием REPEAT…UNTIL.
Program Summa3;
  var s,i,n,h: integer;
Begin
  s:=0; i:=1; n:=15; h:=1;
  REPEAT
    s:=s+(i*i+5);
    i:=i+h;
  UNTIL i>n;

  write('Сумма числового ряда S=',s);
Readln;
End.
Задача 13. Дан одномерный массив, содержащий  семь целых чисел. Найти значение
максимального элемента.
             program massiv1;
mas  :array[1..7] of integer;
i, max,  n: integer; {mas – массив чисел; n – размер массива,
i – переменная цикла,
max – значение наибольшего элемента}
begin          n:=7;
          write(‘ВВЕДИТЕ ЭЛЕМЕНТ МАССИВА:’);
          for i: = 1 to n do  readln(mas[i]);
          max: = mas[1];            { устанавливаем начальное значение max
равное значению первого элемента массива}
          for i: = 2 to n do if max < mas[i] then max: = mas[i];
{последовательно просматриваем элементы, и если очередной mas[i]
оказывается больше max, следовательно max: = mas[i]}
          writeln(‘max=’, max:4);
Readln;
end.
42

description:
Задача 14. Дан двумерный массив 2х3. Найти значение минимального элемента.
program massiv2;
mas  :array[1..2, 1..3] of real;
                min: real; i, n, m: integer;            {mas – массив чисел; n,m – размеры массива,
i, j – переменные цикла,
min – значение наименьшего элемента}
begin          n:=2; m:=3;
          write(‘ВВЕДИТЕ ЭЛЕМЕНТЫ  МАССИВА:’);
          for i: = 1 to n do
         for j: = 1 to m do  readln(mas[i]);
          min: = mas[1,1];           { устанавливаем начальное значение min
равное значению первого элемента массива}
          for i: = 1 to n do
for j: = 1 to m do if min > mas[i,j] then min: = mas[i,j];
{последовательно просматриваем элементы, и если очередной min[i]
оказывается меньше min, следовательно min: = mas[i,j]}
          writeln(‘min=’, min:8:2);
Readln;
end.
Приложение 1.
Тестовые разноуровневые  задания  по теме:
  Тестовые разноуровневые  задания  по теме:
«Язык программирования Паскаль»
«Язык программирования Паскаль»
43

description:
Вариант 1
Выполните задания № 1 и 2, по технологии решения задач с помощью компьютера.
№1 2 .◦  Дана сторона квадрата a. Найти его площадь S = a2.
№2f1.  Дано   целое   число.   Если   оно   является   положительным,   то   прибавить   к  нему 1;  в
противном случае не изменять его. Вывести полученное число.
№3      Какое значение будет принимать переменная Х, после выполнения фрагмента программы:
f:=5; d:=7;
If   f>=d   then   x:=f   else  x:=d
1) 5;
2) 6;
3) 7;
4) 1
Выполните задания № 1 и 2, по технологии решения задач с помощью компьютера.
№112. Даны катеты прямоугольного треугольника a и b. Найти его периметр P:
Вариант 2
P = a + b + c.
№2f2.  Дано   целое   число.   Если   оно   является   положительным,   то   прибавить   к  нему 1; в
противном случае вычесть из него 2. Вывести полученное число.
№3      Какое значение будет принимать переменная Х, после выполнения фрагмента программы:
f:=17; d:=5;
If   f>=d   then   x:=f   else  x:=d
1) 5;
2) 12;
3) 2;
4) 17
Вариант 3
Выполните задания № 1 и 2, по технологии решения задач с помощью компьютера.
№1n3 .◦  Даны стороны прямоугольника a и b. Найти его периметр P = 2∙(a + b).
№2f6 .◦  Даны два числа. Вывести большее из них.
№3      Какое значение будет принимать переменная Х, после выполнения фрагмента программы:
f:=10; d:=10;
If   f>=d   then   x:=f   else  x:=d
1) 10;  2) 20;  3) 30;  4) 1
Вариант 4
π
 Какое   значение   будет   принимать   переменная   Х,   после   выполнения   фрагмента
 использовать 3.14.
Выполните задания № 1 и 2, по технологии решения задач с помощью компьютера.
№1n4 .◦  Дан диаметр окружности d. Найти ее длину L = π∙d.
           В качестве значения
№2If7. Даны два числа. Вывести порядковый номер меньшего числа из них.
№3
программы:
a:=3; b:=4;
If   a>b   then   x:=a*b   else  x:=ab
1) 12;
2) 1;
3) 3;
4) 4
Выполните задания № 1 и 2, по технологии решения задач с помощью компьютера.
№1 12. Даны катеты прямоугольного треугольника a и b. Найти его гипотенузу:
Вариант 5
с =
2
а 
b
2
.
 Какое   значение   будет   принимать   переменная   Х,   после   выполнения   фрагмента
№2If8. Даны два числа. Вывести меньшее число  из них.
№3
программы:
a:=4; b:=4;
If   a>b   then   x:=a*b   else  x:=ab
44

description:
1) 1;
2) 1;
3) 0;
4) 2
Вариант 6
Выполните задания № 1 и 2, по технологии решения задач с помощью компьютера.
№1n 6 .◦   Даны длины ребер  a, b, c  прямоугольного параллелепипеда. Найти  его объем  V  =
a∙b∙c
№2f10. Даны две переменные целого типа: A и B. Если их значения не равны, то присвоить
каждой переменной сумму этих значений, а если равны, то присвоить переменным нулевые
значения. Вывести новые значения переменных A и B.
№3    Какое значение будет принимать переменная Х, после выполнения фрагмента программы:
a:=6; b:=4;
If   a>b   then   x:=a*b   else  x:=ab
1) 20;
3) 26;
2) 24;
4) 10
Вариант 7
Выполните задания № 1 и 2, по технологии решения задач с помощью компьютера.
№1  6 .◦   Даны   длины   ребер  a,   b,   c  прямоугольного   параллелепипеда.   Найти  площадь   его
поверхности S = 2(а∙b + b∙c + a∙c).
№211. Даны две переменные целого типа: A и B. Если их значения не равны, то присвоить каждой
переменной большее из этих значений, а если равны,  то присвоить переменным нулевые значения.
Вывести новые значения переменных A и B.
№3      Какое значение будет принимать переменная Х, после выполнения фрагмента программы:
a:=53; b:=14;
If   a<=b   then   x:=a+b   else  x:=2*a4*b
1) 53;
3) 106;
2) 67;
4) 50
Вариант 8
Выполните задания № 1 и 2, по технологии решения задач с помощью компьютера.
№15 .◦  Дана длина ребра куба a. Найти объем куба V = a3
№2 . ◦  Даны три числа. Найти наименьшее из них.
№3     Какое значение будет принимать переменная Х, после выполнения фрагмента программы:
a:=13; b:=13;
If   a<=b   then   x:=a+b   else  x:=2*a4*b
1) 26;
3) 26;
2) 50;
4) 62
Вариант 9
Выполните задания №1 и 2, по технологии решения задач с помощью компьютера.
№1n5 .◦  Дана длина ребра куба a. Найти площадь его поверхности  S = 6∙a2.
№2 14. Даны три числа. Вывести наименьшее из данных чисел.
№3
программы:
a:=14; b:=53;
If   a<=b   then   x:=a+b   else  x:=2*a4*b
1) 53;
2) 67;
3) 50;
4) 106
 Какое   значение   будет   принимать   переменная   Х,   после   выполнения   фрагмента
Выполните задания №1 и 2, по технологии решения задач с помощью компьютера.
Вариант 10
45

description:
Какое   значение   будет   принимать   переменная   Х,   после   выполнения   фрагмента
№1n8 .◦  Даны два числа a и b. Найти их среднее арифметическое: (a + b)/2.
№2   4. Даны три числа. Вывести наибольшее из данных чисел.
№3
программы:
a:=5; b:=4; c:=3;
If   a>b   then   x:=a+b
else  begin a:=b+c;  x:=a  3*b  end;
1) 10;       2) 9;
3) 7;
4) 12
Вариант 11
Выполните задания №1 и 2, по технологии решения задач с помощью компьютера.
№1n  9.  Даны два неотрицательных числа  a и b.  Найти их  среднее геометрическое,  то есть
квадратный корень из их произведения: a∙b.
№223 .◦   Даны целые положительные числа  A и B.  Найти их  наибольший  общий делитель
(НОД), используя алгоритм Евклида:
НОД(A, B) = НОД(B, A mod B),    если В ≠ 0;        НОД(A, 0) = A
№3
программы:
a:=7; b:=5; c:=5;
If   a>b   then   x:=a+b
else  begin a:=b+c;  x:=a  3*b  end;
1) х=10;
 Какое   значение   будет   принимать   переменная   Х,   после   выполнения   фрагмента
3) х=12;
2) х=5;
4) х=6
Вариант 12
Выполните задания №1 и 2, по технологии решения задач с помощью компьютера.
№110 .◦  Даны два ненулевых числа. Найти частное их квадратов.
№2  1 .◦   Даны   положительные   числа  A  и  B   (A   >   B).  На   отрезке   длины  A  размещено
максимально   возможное   количество   отрезков   длины  B  (без  наложений).   Не   используя
операции умножения и деления, найти длину незанятой части отрезка A.
№3
программы:
a:=4; b:=5; c:=3;
If   a>b   then   x:=a+b
else  begin a:=b+c;  x:=a  3*b  end;
1) 9;
 Какое   значение   будет   принимать   переменная   Х,   после   выполнения   фрагмента
3) 12;         4) 7
2) 7;
Вариант 13
Выполните задания №1 и 2, по технологии решения задач с помощью компьютера.
№1   . Даны два ненулевых числа. Найти разность их квадратов.
№2 .◦   Даны положительные числа  A  и  B (A>B).  На отрезке длины  A  размещено максимально
возможное количество отрезков длины B (без наложений). Не используя операции умножения и
деления, найти количество отрезков B, размещенных на отрезке A.
№3     Какое значение будет принимать переменная Х, после выполнения фрагмента программы:
a:=9; b:=8; c:=2;
If   (a>b) and (b>c)   then   x:=2*a+b+c   else  x:=ab+c
1) 40;
2) 22;
3) 28;
4) 16
Вариант 14
Выполните задания №1 и 2, по технологии решения задач с помощью компьютера.
№10 .◦  Даны два ненулевых числа. Найти произведение их квадратов.
46

description:
№23.  Даны   целые   положительные   числа  N   и   K.  Используя   только   операции  сложения   и
вычитания, найти частное от деления нацело N на K, а также остаток от этого деления.
№3    Какое значение будет принимать переменная Х, после выполнения фрагмента программы:
a:=12; b:=10; c:=6;
If   (a>b) and (b>c)   then   x:=2*a+b+c   else  x:=ab+c
1) 22;      2) 40;
3) 16;
4) 28
Вариант 15
Выполните задания №1 и 2, по технологии решения задач с помощью компьютера.
№1  16 .◦   Найти   расстояние   между   двумя   точками   с   заданными   координатами  x1  и  x2  на
числовой оси: |x2 − x1|.
№2ile5.  Дано целое число  N  (>0), являющееся некоторой степенью числа 2:  N = 2K. Найти
целое число K — показатель этой степени.
№3      Какое значение будет принимать переменная Х, после выполнения фрагмента программы:
a:=10; b:=8; c:=9;
If   (a>b) and (b>c)   then   x:=2*a+b+c   else  x:=ab+c
1) 16;
2) 22;
3) 5;
4) 11
Критерии оценки знаний учащихся при выполнении тестовых заданий
Критерии оценки знаний учащихся при выполнении тестовых заданий
по теме:   «Язык программирования Паскаль»
   «Язык программирования Паскаль»
по теме:
% выполнения
% выполнения
задания
задания
98  100
98  100
76  977
76  9
5075
5075
< 50< 50
Оценка
Оценка
55
44
33
22
Итоговый тест  по теме:   «Язык программирования  Паскаль»
Выберите правильный ответ
1. Алгоритм в котором блоки выполняются последовательно друг за другом, в порядке
заданной схемы называется
1)  Алгоритмом циклической структуры;
47
Приложение 2

description:
2) Алгоритмом линейной структуры;
3) Алгоритмом со структурой вложенных циклов;
4) Алгоритмом разветвляющейся структуры .
2. Какие функции выполняет оператор в языках программирования?
1)  Описывают процедуры;
2) Описывают действия над операндами;
3) Описывает действия, которые будут выполняться при реализации алгоритма;
4) Описывает переменные, которые применяются в программе.
3. Что является разделителем операторов в Pascal ?
1) Точка с запятой;
2) Пробел;
3) Идентификатор;
4) Арифметические операции.
4. На какие группы делятся операторы языка  Pascal ?
1)  Простые, составные;
2)  Простые, условные;
3)  Простые, структурные;
4)  Простые, структурные, составные.
5. Какие различия между операциями / и div?
1)  По характеру выполняемых действий относятся к разным группам операций;
2) Тип результата у (/) всегда будет вещественный, а результатом операции div всегда будет
целочисленное значение;
3) Тип результата у (/) всегда будет целочисленный, а результатом операции div всегда будет
вещественное значение;
4)  Ничем.
6. Ввод данных в языке  Pascal представляет собой
1)  Определенную команду;
2) Передачу данных после обработки из оперативной памяти на внешний носитель;
3) Передачу информации от внешнего носителя в оперативную память для обработки;
4) Передачу информации от внешнего носителя на монитор.
7. Вывод данных в языке  Pascal представляет собой
1)  Передачу данных после обработки из оперативной памяти на внешний носитель;
2) Передачу информации от внешнего носителя в оперативную память для обработки;
3) Определенную команду;
4) Передачу информации от внешнего носителя на монитор;
8. Какой тип подходит для данных диапазона 10..65000?
1) Только integer;
2) Только word;
3) longint и word;
4) integer и word.
9. Какой результат будет после выполнения выражения 11 div 5?
1)2.2;      2)1;     3) 2;       4) Нельзя найти результат
10. Какой результат будет после выполнения операции  11 mod 5?
1)  2.2;       2) 1;      3) 2;      4) Нельзя найти результат.
11. Какие служебные слова необходимы для записи полного разветвляющего алгоритма на
языке Паскаль?
1) if, then;     2) if, then, else;     3) then, else;     4) if.
12. Какие служебные слова необходимы для записи неполного ветвления на языке
Паскаль?
1)  if, then;       2) if, then, else;     3) then, else;      4)  if.
48

description:
13. После слова if в программе записывается:
1) список команд, которые выполняются если условие ложно;
2) список команд, которые выполняются если условие истинно;
3)  условие;
4)  любые команды пользователя.
14. После слова then в программе записывается:
1)  список команд, которые выполняются если условие ложно ;
2)  список команд, которые выполняются если условие истинно;
3)  условие;
4)  любые команды пользователя.
15. После слова else в программе записывается:
1)  список команд, которые выполняются если условие ложно;
2)  список команд, которые выполняются если условие истинно;
3)  условие;
4)  любые команды пользователя.
16. Если известно число повторений некоторых действий используют цикл ...
1)  Repeat;      2)  While;     3)  For.
17. Для записи цикла с параметром с уменьшением счетчика используют следующий набор
служебных слов:
1)  while, do;
2)  for, downto,  do;
3)  for, to, do;
4)  repeat, until.
18. Для записи цикла с параметром с увеличением счетчика используют следующий набор
служебных слов:
1)   while, do;
2)   for, downto, do;
3)   for, to, do;
4)   repeat, until.
19. Чему будет равно значение переменной s после выполнения фрагмента программы:
y:=1; s:=0;
 while y <= 2 do
   begin
     s:=s+y;
     y:=y+1;
   end;
1)   1;       2)   2;     3) 3;      4) 4.
49

description:
ПРАКТИЧЕСКАЯ РАБОТА
Приложение 3.
ПО РЕШЕНИЮ ЗАДАЧ НА КОМПЬЮТЕРЕ
Язык программирования

 PASCAL
1. Запустить программу Pascal ABC
2.Ввести решение задачи №1. Нажать
3.Устранить имеющиеся ошибки;
;
;
3.Ввести данные последовательно через пробел;
4.ENTER.
5. Аналогично пропустить на компьютере задачи
№2, 3.
ЗАДАЧА №1
Найти площадь S и периметр P прямоугольника,
если известны его стороны a и b.
ЗАДАЧА №2
Проверить,является ли  число трехзначным, у
которого первая цифра равна последней.
ЗАДАЧА №3
Найти наибольший общий делитель (НОД) двух
натуральных чисел M, N, используя
Алгоритм  Евклида:
Если даны натуральные числа  M, N и M>N,
то НОД(M, N)= НОД(MN, N)
Program zadacha1;
var a,b,s,p:integer;
begin  writeln('Введите стороны a и b');
readln(a,b);
s:=a*b; p:=(a+b)*2;
writeln('s=',s,',','p=',p);
readln;
end.
Program zadacha2;
var a:integer;
begin  writeln('Введите число a');
readln(a);
if (a div 100=a mod 10)and(a>99)and(a<=999)
then writeln('является')
else writeln('не является');
readln;
end.
Program Evklid;
var M,N:integer;
begin writeln('Введите числа M,N');
readln(M,N);
while M<>N do
begin
if M>N then M:=MN else N:=NM;
end;
writeln('НОД=',M);
readln;
end.
50

intro:
УЧЕБНО-МЕТОДИЧЕСКОЕ  ПОСОБИЕ

              Язык программирования Паскаль (Pascal)
          Методика решения задач
по учебной  дисциплине «Теория алгоритмов»
для специальности  09.02.03
 «Программирование в компьютерных системах»
Язык программирования - это фиксированная система обозначений для описания алгорит-мов и структур данных.
	Среди современных языков программирования одним из самых популярных является язык Паскаль. Своё название он получил в честь великого французского математика и физика Блеза Паскаля, который в 1642г. изобрёл счётную машину для арифметических операций, так называемое "паскалево колесо".

информатика

group: Дисциплины