МИНИСТЕРСТВО ОБРАЗОВАНИЯ И МОЛОДЕЖНОЙ ПОЛИТИКИ
СТАВРОПОЛЬСКОГО КРАЯ
ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ПРОФЕССИОНАЛЬНОЕ
ОБРАЗОВАТЕЛЬНОЕ УЖРЕЖДЕНИЕ
БУДЕННОВСКИЙ ПОЛИТЕХНИЧЕСКИЙ КОЛЛЕДЖ
УЧЕБНОМЕТОДИЧЕСКОЕ ПОСОБИЕ
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. Образцы решения задач с помощью различных алгоритмических структур.
Алгоритмы с повторениями. Программирование циклов на
Понятие массива. Примеры решение задач с использованием
3Pascal
Язык программирования Паскаль (
)
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 не перемещается.
62. Вывод результатов на экран компьютера происходит по оператору 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
7cos(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. Назовите стандартные типы данных.
87. Чем отличается операция деления / от операции 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);
9Readln;
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 ');
10readln(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
Конец
11b:=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,');
17End.
Задача 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
19else 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
22Program 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)
всех двухзначных чисел;
23b) всех трёхзначных чисел.
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
24begin
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. Будет ли остановлено выполнение данного цикла? Почему?
26a) 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
конец
283 этап На алгоритмическом языке:
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;
30End.
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 max 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все
кон
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
конецкц
кон
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то 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;
39if 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.
401 для любого Х, с проверкой корректности ввода.
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);
41i:=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Задача 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Вариант 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
441) 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Какое значение будет принимать переменная Х, после выполнения фрагмента
№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№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
Приложение 22) Алгоритмом линейной структуры;
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.
4813. После слова 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ПРАКТИЧЕСКАЯ РАБОТА
Приложение 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ЗАДАЧА №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