Методическая разработка для учащихся Алгоритмизация и программирование на языке Pascal








Алгоритмизация
и
программирование
на языке Pascal

Методическая разработка для учащихся
62 часа





























2015 г.
13 TOC \o "1-4" \h \z \u 14
13 LINK \l "_Toc305517557" 14Урок 1 Язык программирования Паскаль 13 PAGEREF _Toc305517557 \h 1431515
13 LINK \l "_Toc305517558" 14Трансляторы: компиляторы и интерпретаторы 13 PAGEREF _Toc305517558 \h 1431515
13 LINK \l "_Toc305517559" 14Перевод программы с языка программирования на язык машинных кодов называется трансляцией, а выполняется специальными программами – трансляторами. 13 PAGEREF _Toc305517559 \h 1431515
13 LINK \l "_Toc305517560" 14Алфавит и словарь языка Паскаль 13 PAGEREF _Toc305517560 \h 1431515
13 LINK \l "_Toc305517561" 14Некоторые зарезервированные слова 13 PAGEREF _Toc305517561 \h 1441515
13 LINK \l "_Toc305517562" 14Правила написания идентификаторов 13 PAGEREF _Toc305517562 \h 1451515
13 LINK \l "_Toc305517563" 14Урок 2. Типы данных: константы и переменные 13 PAGEREF _Toc305517563 \h 1461515
13 LINK \l "_Toc305517564" 14Целочисленный тип 13 PAGEREF _Toc305517564 \h 1471515
13 LINK \l "_Toc305517565" 14Вещественный тип 13 PAGEREF _Toc305517565 \h 1471515
13 LINK \l "_Toc305517566" 14Символьный тип 13 PAGEREF _Toc305517566 \h 1481515
13 LINK \l "_Toc305517567" 14Строковый тип 13 PAGEREF _Toc305517567 \h 1481515
13 LINK \l "_Toc305517568" 14Булевский тип 13 PAGEREF _Toc305517568 \h 1491515
13 LINK \l "_Toc305517569" 14Урок 3. Решение задач 13 PAGEREF _Toc305517569 \h 14101515
13 LINK \l "_Toc305517570" 14Урок 4, 5. Среда программирования Turbo Pascal 13 PAGEREF _Toc305517570 \h 14121515
13 LINK \l "_Toc305517571" 14Правила пунктуации 13 PAGEREF _Toc305517571 \h 14131515
13 LINK \l "_Toc305517572" 14Форматы вывода 13 PAGEREF _Toc305517572 \h 14151515
13 LINK \l "_Toc305517573" 14Урок 6. Решение задач 13 PAGEREF _Toc305517573 \h 14171515
13 LINK \l "_Toc305517574" 14Урок 7. Этапы решения задач на компьютере 13 PAGEREF _Toc305517574 \h 14181515
13 LINK \l "_Toc305517575" 14Линейные алгоритмы 13 PAGEREF _Toc305517575 \h 14201515
13 LINK \l "_Toc305517576" 14Урок 8, 9, 10. Решение задач 13 PAGEREF _Toc305517576 \h 14221515
13 LINK \l "_Toc305517577" 14Урок 11. Контрольная работа №1 13 PAGEREF _Toc305517577 \h 14231515
13 LINK \l "_Toc305517578" 14Урок 12, 13. Разветвляющиеся алгоритмы. 13 PAGEREF _Toc305517578 \h 14241515
13 LINK \l "_Toc305517579" 14Оператор условия if 13 PAGEREF _Toc305517579 \h 14241515
13 LINK \l "_Toc305517580" 14Урок 14, 15, 16, 17, 18. Решение задач 13 PAGEREF _Toc305517580 \h 14281515
13 LINK \l "_Toc305517581" 14Урок 19. Контрольная работа №2 13 PAGEREF _Toc305517581 \h 14301515
13 LINK \l "_Toc305517582" 14Урок 20, 21, 22. Циклические алгоритмы. 13 PAGEREF _Toc305517582 \h 14311515
13 LINK \l "_Toc305517583" 14Организация циклов в Паскале 13 PAGEREF _Toc305517583 \h 14311515
13 LINK \l "_Toc305517584" 14Урок 23 - 33. Решение задач 13 PAGEREF _Toc305517584 \h 14361515
13 LINK \l "_Toc305517585" 14Урок 34. Контрольная работа №3 13 PAGEREF _Toc305517585 \h 14391515
13 LINK \l "_Toc305517586" 14Урок 35, 36. Массивы 13 PAGEREF _Toc305517586 \h 14401515
13 LINK \l "_Toc305517587" 14Урок 37-49. Решение задач 13 PAGEREF _Toc305517587 \h 14421515
13 LINK \l "_Toc305517588" 14Урок 50. Контрольная работа №4 13 PAGEREF _Toc305517588 \h 14471515
13 LINK \l "_Toc305517589" 14Урок 51. Строки 13 PAGEREF _Toc305517589 \h 14481515
13 LINK \l "_Toc305517590" 14Операции над строками 13 PAGEREF _Toc305517590 \h 14481515
13 LINK \l "_Toc305517591" 14Строковые процедуры и функции 13 PAGEREF _Toc305517591 \h 14491515
13 LINK \l "_Toc305517592" 14Урок 52 - 54. Решение задач 13 PAGEREF _Toc305517592 \h 14511515
13 LINK \l "_Toc305517593" 14Урок 55. Контрольная работа №5 13 PAGEREF _Toc305517593 \h 14521515
13 LINK \l "_Toc305517594" 14Урок 56-60. Решение задач 13 PAGEREF _Toc305517594 \h 14521515
13 LINK \l "_Toc305517595" 14Урок 61-62. Итоговая контрольная работа 13 PAGEREF _Toc305517595 \h 14521515
15 Урок 1 Язык программирования Паскаль
В общем смысле язык программирования – это фиксированная система обозначений и правил для описания алгоритмов и структур данных.
Язык программирования Паскаль (назван в честь французского учёного Блеза Паскаля), разработан в 1968-1971 годах Никлаусом Виртом для обучения программированию, но вскоре стал использоваться для разработки программных средств в профессиональном программировании.
Для повышения качества и скорости разработки программ в середине 80-х годов была создана система программирования Turbo Pascal. Слово Turbo – это отражение торговой марки фирмы-разработчика Borland International Inc. (США).
Систему программирования Турбо Паскаль называют интегрированной средой программирования, так как она объединяет в себе средства, используемые при разработке программ: редактор текстов, компилятор, компоновщик, отладчик.
Трансляторы: компиляторы и интерпретаторы
Перевод программы с языка программирования на язык машинных кодов называется трансляцией, а выполняется специальными программами – трансляторами.
Существует три вида трансляторов: интерпретаторы, компиляторы и ассемблеры.
Интерпретатор – это транслятор, производящий пооператорную (покомандную) обработку и выполнение программы.
Компилятор преобразует (транслирует) всю программу в модуль на машинном языке, после этого программа записывается в память компьютера и лишь потом исполняется.
Ассемблеры переводят программу, записанную на языке ассемблера, в программу на машинном языке.
Алфавит и словарь языка Паскаль
Для написания программ можно использовать:
Прописные строчные буквы латинского алфавита.
Цифры от 0 до 9.
Шестнадцатеричные цифры (строятся из десятичных цифр от 0 до 9 и латинских букв от A(a) до F(f)).
Специальные символы
+
плюс
#
номер

-
минус
=
равно

_
подчеркивание
;
точка с запятой

()
круглые скобки
,
запятая

[]
квадратные скобки
.
точка

{}
фигурные скобки
:
двоеточие

*
умножить

пробел

/
дробная черта
$
знак денежной единицы


апострофы
^
тильда

<
меньше
@
коммерческое а

>
больше



Комбинации специальных символов
:=
присваивание
>=
больше или равно

<>
не равно
..
диапазон значений

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



В программе эти пары символов разделять пробелами нельзя, если они используются как знаки операций.
Слова, используемые в Паскале, можно разделить на три группы: зарезервированные слова, стандартные идентификаторы и идентификаторы пользователя.
Идентификатор – имя, используемое для обозначения программ, а в программе переменных и постоянных величин, различных процедур, функций, объектов (identification – установление соответствия объекта некоторому набору символов).
Зарезервированные слова являются составной частью языка, имеют фиксированное начертание и определенный смысл. Они не могут изменяться программистом и использоваться в качестве имен, вводимых пользователем для обозначения величин.
Некоторые зарезервированные слова
Absolute
Абсолютный
Not
Логическое НЕ

And
Логическое И
Or
Логическое ИЛИ

Array
Массив
Of
Из

Begin
Начало блока
Procedure
Процедура

Case
Вариант
Program
Программа

Const
Константа
Record
Запись

Div
Деление нацело
Repeat
Повторять

Do
Выполнять
String
Строка

Downto
Уменьшить до
Then
То

Else
Иначе
To
Увеличивая

End
Конец блока
Type
Тип

For
Для
Until
До

Function
Функция
Uses
Использовать

If
Если
Var
Переменная

Label
Метка
While
Пока

Mod
Остаток от деления
xor
Исключающее ИЛИ

Стандартные идентификаторы используются для обозначения заранее определенных разработчиками языка типов данных, констант, процедур и функций. Пример: integer, cos, sin, sqrt, read, write и т.д.
Идентификаторы пользователя применяются для обозначения меток, констант, переменных, процедур и функций, определенных самим программистом. При этом идентификаторы в программе должны быть уникальными.
Правила написания идентификаторов
Можно использовать как прописные, так и строчные буквы латинского алфавита.
Идентификатор может начинаться только с буквы или знака подчеркивания.
Идентификатор может состоять из букв, цифр и знака подчеркивания (пробелы, точки и другие специальные символы запрещены).
Правильно выбранные идентификаторы значительно облегчают чтение и понимание программы.
Русские буквы в программе должны заключаться в апострофы!
Упражнение
1. Укажите неправильные пользовательские идентификаторы, объясните, почему они не верны:
Rezultat_1, rezultat 1, 1_Rezultat, rezultat1, <=, #Doma, NDoma, nomer dom, nomer_doma, +, Сумма, SummaЭлементов, Y, XY, R, div, program, 2222, _1, Vova4uma, программа’, Urok!, urok’.
Урок 2. Типы данных: константы и переменные
Любая программа имеет смысл, если она обрабатывает какие-либо данные. В Паскале данные разделяются на константы и переменные. В программе константы и переменные определяются идентификаторами (именами) пользователя. Каждая переменная и константа принадлежат к определенному типу данных.
Константы – данные, которые не меняют своего значения в процессе выполнения программы. Тип константы автоматически распознается компилятором. Все константы должны быть описаны в специальном разделе, который начинается зарезервированным словом const (constant – константа).
Формат: const
Имя = значение константы;
Пример: Const
MyName = Ваня Иванов’;
J=5;
Max=1000;
Min=2;
Center=(max-min)/2;
Переменные – данные, которые могут менять свои значения в процессе выполнения программы. Тип переменных должен быть описан перед тем, как с переменными будут выполняться какие-либо действия. Переменные описываются в специальном разделе, который начинается зарезервированным словом var (variable – переменная).
Формат:
Var
Имя : тип переменной;
Пример: Var
A, d, c, r: integer;
Summa: real;
Кроме констант и переменных существуют так называемые типизированные константы. Данные этого типа описываются в разделе const, и для них указывается тип, как у переменных.
Формат:
Const
Имя : тип = значение;
Пример: Const
K: word = $B800;
Ocenka: byte = 4;
Predmet: string=’информатика’;
Типы переменных
Целочисленный тип
Данные целочисленных типов могут быть представлены как в десятичной, так и в шестнадцатеричной системе. Если число представлено в шестнадцатеричной системе, перед ним без пробела записывается знак $. Диапазон изменений шестнадцатеричных чисел от $0000 до $FFFF.
Byte
0..255
1 байт

Word
0..65535
2 байта

Integer
-32768..32767
2 байта

longint
-2147483648.. 2147483647
4 байта


Арифметические операции над данными целого типа: +, -, *, /, div (деление нацело), mod (остаток от деления).
Операции отношения: =, <>, <, >, <=, =>.
Стандартные функции:
Abs (x)
Модуль х

Sqr (x)
Х2

Sqrt (x)
Квадратный корень из х

Sin (x)
Синус х

Cos (x)
Косинус х

Arctan (x)
Арктангенс х

Succ (x)
Следующее целое число (х+1)

Pred (x)
Предыдущее целое число (х-1)

Exp (x)
ex (e=2.7)

Ln (x)
Натуральный логарифм

Вещественный тип
Для записи вещественных чисел вместо запятой используется точка. Вещественные значения изображаются в форме с плавающей точкой, т.е. парой чисел вида <мантисса>Е<порядок>, и с фиксированной точкой. Например: 4.56Е-05, что означает 4.56*10-5
Real
2.9Е-39 .. 1.7Е+38
6 байт

single
1.5E-45 .. 3.4E+38
4 байта

double
5.0E-324 .. 1.7E+308
8 байт

extended
1.9E-4951 .. 1.1E+4932
10 байт

Арифметические операции над данными вещественного типа: +, -, *, /.
Операции отношения: =, <>, <, >, <=, =>.
Стандартные функции:
Abs (x)
Модуль х

Sqr (x)
Х2

Sqrt (x)
Квадратный корень из х

Sin (x)
Синус х

Cos (x)
Косинус х

Arctan (x)
Арктангенс х

trunc(x)
Отбрасывание дробной части

round(x)
Округление до целого

Exp (x)
ex (e=2.7)

Ln (x)
Натуральный логарифм

Выражение, составленное из переменного целого и вещественного типа, имеет вещественный тип. Допускается присваивание переменной вещественного типа значения выражения целого типа, но не наоборот.
Порядок выполнения операций: действия в скобках, *, /, div, mod; +, -; =, <>, <, >, <=, =>.
Символьный тип
Для данного, соответствующего одиночному символу, используется тип char. Значение символьного данного – любой символ клавиатуры компьютера. В программе значения переменных и констант типа char должны быть заключены в апострофы.
Строковый тип
Строка - последовательность любых символов, заключенных в апострофы. Для определения данных строкового типа используется идентификатор string.
Булевский тип
Булевский тип данных представляется двумя значениями True (истина) и False (ложь). Применяется в логических выражениях и выражениях отношения. При описании величин этого типа указывают слово boolean. Для размещения в памяти переменной булевского типа требуется 1 байт.
Урок 3. Решение задач
1. Запишите числа по правилам языка Паскаль:
2,14; 1,116; 7,09·10-8; 3С0А1; 3,98; -1,3·10-4; -461,05; 2,7·102; 0,5; 7,023; 8·505; 1,1·1010; -9,67·1040; -1,63·10-22; 2В; -5,42·10-6; 0,011; 0,74·108; 1АF; -871,43·1018; 6213175.
Запишите выражения по правилам языка Паскаль:
Пример: 13 EMBED Equation.3 1415= x/(1+sqr(x)/(5+x*sqr(x)))или x/(1+x*x/(5+x*x*x))
а) 13 EMBED Equation.3 1415
и) a+13 EMBED Equation.3 1415

б) sin2|x3|
к) x-13 EMBED Equation.3 1415

в) х4
л) |x|+|x+1|

г) mgcos x
м) x1x2+x1x3+x2x3

д) 13 EMBED Equation.3 1415
н) 13 EMBED Equation.3 1415

е) 13 EMBED Equation.3 1415
о) 13 EMBED Equation.3 1415

ж) 13 EMBED Equation.3 1415
п) |1-|x||

з) 13 EMBED Equation.3 1415
р) 13 EMBED Equation.3 1415

Запишите в обычном виде:
а) sqr(x+y)
б) sqr(sin(alfa))
в) х+1/sqr(x)/(sqrt(x)-1)
г) a*n*n*m/sqr(m-2)
д)4*a*x*sqr(x)+8/sqr(b)*sqr(b)+3*a*(b-5.2)/(7*x-0.5*sqrt(a))
e) sqrt(abs(sqr(cos(a+b*sqr(x)))))
ж) g*m1*m2/sqr(r)
з) sin(pi/8)*sqr(cos(pi/8))
Чему равно значение выражения:
а) 10+6*2/2;
д) 24/12;
и) 2 div 3;

б) (10+6)*2/2;
е) 11 div 5;
к) 15+21 div 2;

в) (10+6*2)/2;
ж) 10 div 3;
л) 14 mod (5+3);

г) 10+6*(2/2);
з) 11 mod 5;
м) Round (11/5)?

Какой тип подходит для данных диапазона
а) 1..200;
г) a’..’z’;

б) 0..7500;
д) -40..+45;

в)2.3476E-03..2.3475E+03;
е) +10..+65000?

Урок 4, 5. Среда программирования Turbo Pascal
















Строка статуса видна во время написания и редактирования программ. В ней отображается номер строки и номер позиции в строке, а также основные ошибки, обнаруженные при компиляции программы.
Строка меню является основным доступом ко всем командам меню.
Меню File:
New – создать новую программу
Open – открыть программу, записанную на диске
Save – сохранить программу
Save as – сохранить программу под другим именем/в другом месте
Exit – выход из среды Turbo Pascal for Windows
Меню Edit:
Undo – отменить последнее действие
Redo – вернуть последнее действие
Cut – вырезать выделенный фрагмент
Copy – скопировать выделенный фрагмент
Paste – вставить фрагмент из буфера обмена
Clear – удалить выделенный фрагмент
Меню Run:
Run – запустить программу
Меню Compile:
Compile – выполнить компиляцию программы
Структура программы
Программа на языке Паскаль состоит из строк. Набор текста программы осуществляется с помощью встроенного редактора текстов системы Турбо Паскаль. Строка может начинаться с любой колонки, т. е. величина отступа от левой границы экрана для каждой строки устанавливается таким образом, чтобы получить наиболее удобный для чтения текст программы. Количество операторов в строке произвольно, но если в строке записывается один оператор, то такая программа легче читается.
В начале программы находится заголовок, состоящий из зарезервированного слова program и имени программы, задаваемым программистом. После заголовка следует программный блок, состоящий в общем случае из четырех разделов: списка имен подключаемых библиотечных модулей, описания констант, описания переменных, операторов. Все описания объектов программы должны быть сделаны до того, как они будут использованы.
program Имя; {заголовок программы}
uses ; {список подключаемых библиотечных модулей}
const ; {описания констант}
var ; {описания переменных}
begin {начало программы}
операторы;
end. {конец программы}
Любой раздел, кроме раздела операторов, может отсутствовать.
Операторы выполняются строго последовательно в том прядке, в котором они записаны в тексте программы в соответствии с синтаксисом и правилами пунктуации.
Слова begin и end являются аналогом открывающей и закрывающей скобки.
Для лучшего понимания программы в ней записывается пояснительный текст – комментарий. Текст комментария ограничивается символами { } или (* *).
Правила пунктуации
При записи операторов необходимо соблюдать следующие правила пунктуации:
Точка с запятой не ставится в разделах описаний после зарезервированных слов uses, const, var и ставится после завершения каждого описания.
Точка с запятой не ставится после begin и перед end, т. к. эти слова являются операторными скобками, а не операторами.
Точка с запятой является разграничителем операторов, ее отсутствие между операторами вызывает ошибку компиляции.
В операторах цикла точка с запятой не ставится после while, repeat, do и перед until.
В условных операторах точка с запятой не ставится после then и перед else.
Оператор присваивания
Оператор присваивания (:=) предписывает выполнить выражение, заданное в его правой части, и присвоить результат переменной, идентификатор которой расположен в левой части. Переменная и выражение должны быть совместимы по типу.
Формат:
Имя переменной := выражение;
Пример: х:=2.7;
У:=a+b;
Вещественной переменной можно присвоить целое значение, но не наоборот!
Оператор вывода
Вывод данных на экран обеспечивает оператор Write (писать). Оператор может выводить значения констант, значения переменных, значения арифметических выражений, заключенные в апострофы тексты и символы, всевозможные комбинации из вышеперечисленного списка.
Формат:
Write (y1, y2, y3, , yn);
Пример: Write (a+b-2); {выводится результат выражения}
Write (Результат вычислений =’, Rezult);
Оператор вывода Writeln аналогичен оператору Write, но после вывода последнего значения из списка текущего оператора происходит перевод курсора на новую строку.
Оператор Writeln, записанный без параметров, вызывает перевод строки.
Форматы вывода
Значение I
Выражение
Результат

134
Write (I)
134

134
Write (I,I,I)
134134134

511.04
Write (I)
5.1104000000E+02

511.04
Write (I:15)
5.110400000E+02

-511.04
Write (I:15)
-5.11040000E+02

511.04
Write (I:8:4)
511.0400


Пример:
program DemoWrite; {заголовок программы}
uses wincrt; {подключение модуля очистки экрана}
const {описание констант a и b}
a=4; b=6;
var {описание переменных}
c, s: byte; {переменные c, s - целые}
begin {начало программы}
c:=5; {присваивание переменной с значения равного 5}
write (a:3); write (b:3); write (c:3); {вывод значений переменных a, b и c в каждую третью позицию строки экрана}
writeln; {перевод строки}
S:=a+b+c; {вычисление переменной S}
{вывод значений переменных a, b и c в столбик}
writeln (a=’, a);
writeln (b=’, b);
writeln (c=’, c);
writeln (Сумма ,a,’+’,b,’+’,c,’ равна ’, s) {вывод ответа}
end. {конец программы}
Результат выполнения:
4 6 5
a=4
b=6
c=5
Сумма 4+6+5 равна 15
Упражнение. Загрузите TPascal for Windows, введите текст программы, откомпилируйте и проверьте ее действие.
Оператор ввода
Обеспечивает ввод данных оператор Read (читать).
Формат:
Read (х1, х2, х3,, xn);
Оператор Read останавливает работу программы и ждет, пока пользователь не введет с клавиатуры столько значений, сколько имен переменных указано в операторе. Значения набираются через пробел, а после набора данных нажимается клавиша Enter.
Оператор Readln аналогичен оператору Read, только после считывания последнего значения из списка текущего оператора, курсор переведется на новую строку.
Пример:
program DemoRead;
uses wincrt;
var x: word;
y: real;
begin
write (Введите число х=’); {вывод на экран запроса о вводе числа}
readln (x); {ввод числа с клавиатуры}
y:=sqrt(x);
write (Квадратный корень из числа ’, x,’ равен ’, y)
end.
Упражнение. Загрузите TPascal for Windows, введите текст программы, откомпилируйте и проверьте ее действие.
Урок 6. Решение задач
Найдите ошибки в следующих программах:
а)program MyProgram
begin;
writeln (Здравствуй!’)
end.

б)program First;
begin
y:=x+100
end
г)program ошибки2;
var x: integer;
const v=4; j=5.6;
begin
x:=v*j;
write (x)
end.


д)program MyProgram 2;
begin
var y: real;
y:=2;
writeln (y в квадрате =, у*у)
end.

в)program ошибки1;
begin
summa:=6+8;
end;


Напишите программу для вычисления и печати на экране значений выражений:
y=13 EMBED Equation.3 1415, а=1, b=-1;
z=13 EMBED Equation.3 1415;
k=13 EMBED Equation.3 1415, x=13 EMBED Equation.3 1415, a=0,04, b=-1, c=a;
f=sin x cos y + sin y cos x, x=13 EMBED Equation.3 1415, y=13 EMBED Equation.3 1415.
Напишите программу, определяющую остаток от деления:
а) 45 на 13;
б) 123 на 14.
4. Напишите программу, определяющую целую часть от деления:
а) 125 на 12;
б) 24 на 5.
5. Программа запрашивает имя и затем приветствует его обладателя.
Урок 7. Этапы решения задач на компьютере
Процесс решения задач на компьютере – это совместная деятельность человека и ЭВМ. Этот процесс можно представить в виде нескольких последовательных этапов. На долю человека приходятся этапы, связанные с творческой деятельностью – постановкой, алгоритмизацией, программированием задач и анализом результатов, а на долю компьютера – этапы обработки информации в соответствии с разработанным алгоритмом.
Постановка задачи.
Определяется цель задачи, даётся словесное описание содержания задачи и предлагается общий подход к её решению.
Математическое или информационное моделирование.
Цель этого этапа – создать такую математическую модель решаемой задачи, которая может быть реализована на компьютере. Иногда математическая постановка сводится к простому перечислению формул.
Алгоритмизация задачи.
На основе математического описания разрабатывается алгоритм решения.
Программирование.
Программа – план действий, подлежащих выполнению некоторым исполнителем, например, компьютером.
V. Ввод программы и исходных данных в ЭВМ.
VI. Тестирование и отладка программы.
На этом этапе происходит исполнение алгоритма с помощью ЭВМ, поиск и исключение ошибок.
VII. Исполнение отлаженной программы и анализ результатов.
Для каждой задачи должны быть записаны:
Условие.
Переменные, используемые в программе с необходимыми пояснениями.
Математическое решение задачи.
Схема алгоритма.
Программа.
Алгоритмы
Алгоритм – точное предписание исполнителю выполнить последовательность действий, направленных на решение данной задачи.
Свойства алгоритма:
Однозначность, т.е. единственность толкования правил выполнения действий и порядка их выполнения.
Конечность, т.е. обязательность завершения каждого из действий, составляющих алгоритм, и завершаемость выполнения алгоритма в целом.
Результативность: выполнение алгоритма должно завершаться получением определённых результатов.
Массовость, т.е. возможность применения данного алгоритма для решения целого класса задач, отвечающих общей постановки задачи.
Правильность, т.е. способность алгоритма давать правильные результаты решения.
Типы алгоритмов
Линейный = алгоритм выполняется последовательно: один шаг за другим.
Разветвляющийся – содержит одно или несколько условий и имеет несколько ветвей выполнения.
Циклический – содержит повторяющиеся действия.
Способы задания алгоритмов
1. Словесный – с помощью слов.
2. Графический – из графических картинок – блоков.
3. Табличный – с помощью таблиц.
Графический способ задания алгоритмов

начало/конец алгоритма;


выполнение вычисления, действия


Ввод исходных данных, вывод результата


проверка условия


начало цикла

Линейные алгоритмы
Линейный алгоритм – алгоритм, состоящий из команд, выполняемых последовательно друг за другом. Без выполнения предыдущего шага нельзя перейти к следующему.
Пример: Составить алгоритм нахождения суммы двух чисел.
I этап: Исходные данные: a, b – числа;
Результат: S – сумма чисел
II этап: S=a+b;
III этап:









IV этап:
program Summa;
uses wincrt;
var S, a, b: real;
begin
write (Введите два числа’);
readln (a, b);
S:= a+b;
Write (Сумма чисел ’, a,’ и ’, b,’ равна ’, s)
end.
Упражнения:
Составьте алгоритм и программу нахождения полупроизведения двух чисел.
Составьте алгоритм и программу для вычисления длины диагонали квадрата площадью S.
Составьте алгоритм и программу вычисления площади и периметра прямоугольника.
Найдите расстояние между двумя точками. Координаты точек ввести с клавиатуры по запросу программы.
Урок 8, 9, 10. Решение задач
Программа запрашивает четыре числа и выводит их в обратном порядке.
На площади S км2 проживает N тысяч человек. Какова плотность населения? Значения S и N ввести с клавиатуры по запросу программы. Результат округлить.
Программа вычисляет периметр квадрата по введенному значению его площади.
Розничная цена мужского костюма составляет Х рублей. Торговая наценка в пользу магазина N% розничной цены. Какова оптовая цена костюма?
Программа вычисляет среднее арифметическое трех натуральных чисел.
Программа подсчитывает размер оплаты за электроэнергию по введенным значениям расхода электроэнергии и тарифа (тариф – стоимость 1 КВт).
Напишите программу, вычисляющую идеальный вес человека. Результат вывести в виде:
Для человека ростом <результат> см, идеальный вес = <результат> кг.
Вычислите диаметр, длину и площадь окружности. Радиус запросить с клавиатуры.
Рассчитать стоимость путевки на три недели в рублях. Стоимость путевки на 1 неделю – 200$, вторая неделя на 10% дешевле, третья – еще на 10% дешевле. Значение курса доллара вводится с клавиатуры по запросу программы.
Фирма приглашает сотрудника на работу с окладом 400$. За знание ПК к окладу прибавляется 15%, за знание иностранного языка – 20%. Какова зарплата в рублях?
Вы положили деньги в банк на N месяцев из расчета 60% годовых. Напишите программу, которая вычислит причитающуюся вам через N месяцев сумму.
Вычислите произведение цифр введенного с клавиатуры натурального двузначного числа
Вычислите сумму цифр введенного с клавиатуры натурального трехзначного числа.
Дано натуральное трехзначное число. Определите число, которое получится при перестановке цифр в обратном порядке.
Составьте программу нахождения площади поверхности куба.
Определите процентное соотношение мальчиков и девочек в классе.
С клавиатуры по запросу программы вводятся оценки ученика по пяти предметам (математика, русский язык, физика, литература, информатика). Вычислите средний балл ученика.
Программа запрашивает имена, вес и рост трех ваших друзей, находит их суммарный вес и рост и выводит результат в виде:
Имя1+Имя2+Имя3=<результат> кг
Имя1+Имя2+Имя3=<результат> см
Треугольник задан координатами своих вершин. Найти его периметр.
Найдите длину гипотенузы и площадь прямоугольного треугольника по известным значениям катетов.
Соотношение температур по Фаренгейту (F) и Цельсию (С) следующее F=1,8С +32, по Кельвину и Цельсию следующее К=С + 273. Подсчитать какова температура по Фаренгейту и Кельвину сегодня. Результат на экран вывести в виде:
температура по С = <результат>,
температура по F = <результат>,
температура по К = <результат>
Урок 11. Контрольная работа №1
Урок 12, 13. Разветвляющиеся алгоритмы.
Оператор условия if
Разветвляющийся алгоритм – это алгоритм, содержащий хотя бы одно условие и обеспечивающий в зависимости от результата проверки условия (да или нет) выбор одного из альтернативных путей работы алгоритма. Каждый из путей ведет к общему выходу, так что работа алгоритма будет продолжаться независимо от того, какой путь будет выбран. Структура ветвления существует в двух вариантах: полная и неполная.
Для программирования условий в Паскале используется оператор if. Он также существует в двух формах: полной и неполной.
Полная

Неполная


Формат полного условного оператора:
if условие then оператор1 else оператор2;
Перед словом else точка с запятой не ставятся!
Формат неполного условного оператора:
if условие then оператор;
Условие – выражение логического типа.
Правила записи условий
Математическая запись
Запись на Паскале

xx
x>a
x>a

x=a
x=a

x
·a
x<=a

x
·a
x>=a

x
·a
x<>a

ax>a and x>b

xb
x
b


Пример: Программа вычисляет частное двух чисел.
Исходные данные: a – делимое, b – делитель;
Результат: c – частное.
Если b=0, то решений нет, иначе c=a/b
III.
IV. program DemoIf;
uses wincrt;
var a, b: integer; c: real;
begin
write (Введите два числа: ’);
readln (a, b);
if b=0 then writeln (Нет решения’)
else
begin
c:=a/b;
writeln (Частное чисел ’,a,’ и ’,b,’=’, c)
end
end.


Упражнения.
1. Напишите условный оператор к фрагменту блок-схемы:
а)

б)

в)

2. Составьте программу по схеме алгоритма:
а)
б)

3. Составьте алгоритмы и программы для вычисления значения функции:
а) f=13 EMBED Equation.3 1415;
б) f=13 EMBED Equation.3 1415; m=7,5; y=3,2;
в) f=13 EMBED Equation.3 1415;
г) f=13 EMBED Equation.3 1415;
д) f=13 EMBED Equation.3 1415;
е) f=13 EMBED Equation.3 1415;
ж) y=13 EMBED Equation.3 1415;
з) y=13 EMBED Equation.3 1415, при x=cos3a2+sin2a3;
и) y=13 EMBED Equation.3 1415, где х=13 EMBED Equation.3 1415;
к) у=13 EMBED Equation.3 1415, где m=2ax, T=13 EMBED Equation.3 1415;
л) у=13 EMBED Equation.3 1415;
м) z=13 EMBED Equation.3 1415.
Урок 14, 15, 16, 17, 18. Решение задач
Выяснить, принадлежит ли число промежутку (-1;1).
Выяснить, принадлежит ли число промежутку [0;5].
Даны два числа х и у. Если х<у, то z присвоить их сумму, иначе присвоить абсолютное значение их разности.
Выбрать из двух чисел наименьшее.
Выбрать из трех чисел наибольшее.
Даны три числа. Вывести те из них, которые принадлежат отрезку [-1;3].
Верно ли, что введенное вами целое число является четным?
Верно ли, что введенное вами целое число делится на 3 без остатка? Если не делится, то вывести остаток.
Рис расфасован в два пакета. Вес первого – n кг, второго – m кг. Составьте программу, определяющую, какой пакет тяжелее – первый или второй и вес более тяжелого пакета.
Составьте программу, определяющую, пройдет ли график функции у=5х2-7х+2 через точку с координатами (a,b).
Составьте программу, определяющую, пройдет ли график функции у=х3-2х2 через точку с координатами (a,b).
Составьте программу, реализующую эпизод применения компьютера в книжном магазине. Компьютер запрашивает стоимость книг, сумму денег, внесенную покупателем. Если сдачи не требуется, печатает на экране «Спасибо»; если денег внесено больше, то печатает «Возьмите сдачу» и сумму сдачи; если денег недостаточно, то печатает об этом сообщение и указывает размер недостающей суммы.
Программа запрашивает два расстояния: одно - в километрах, другое – в футах. Какое из расстояний меньше?
Даны радиус круга и сторона квадрата. Площадь какой фигуры больше и на сколько?
Даны три числа. Вывести на экран только отрицательные.
Проверить, верно ли, что при делении неотрицательного целого числа А на положительное целое число В получается остаток, равный одному из заданных чисел С или D.
Учащийся сдал пять экзаменов (оценки ввести с клавиатуры). Родители обещали ему, что если средний балл будет
·4,5, то подарят плеер и роликовые коньки; если средний балл будет в пределах от 3,5 до 4,5, то подарят только плеер. В других случаях подарков не будет. Какой подарок получит учащийся?
Выяснить, пройдет ли кирпич с ребрами a, b, c в квадратное отверстие со стороной x.
Выяснить, есть ли в трехзначном числе одинаковые цифры.
Выяснить, есть ли в трехзначном числе данная цифра.
Три точки плоскости заданы своими координатами. Выяснить, какая точка расположена ближе к началу координат.
Для определения нормального веса человека из величины его роста вычитают 100. Вес считается нормальным, если он отличается от этой разности не более чем на 5 кг. Составить программу для определения находится ли вес обследуемого в пределах нормы или же является недостаточным или избыточным. Рост и вес ввести с клавиатуры.
Программа анализирует человека по возрасту (вводится с клавиатуры) и относит его к одной из четырех групп: дошкольник, учащийся, работник, пенсионер.
Программа для целого числа К (от 1 до 99), введенного с клавиатуры, печатает фразу «Мне К лет». При этом в нужных случаях слово «лет» заменяет на «год» или «года».
Составьте программу решения полного квадратного уравнения ax2+bx+c=0, a
·0, b
·0, c
·0. Проверьте случаи, когда d>0, d=0 и d<0.
Определите, является ли введенное вами число нечетным двузначным.
Из трех введенных с клавиатуры чисел возведите положительные в квадрат.
Сравнить длины двух отрезков, если известны координаты их концов.
Если целое число M делится без остатка на целое число N, то вывести на экран частное от деления, в противном случае вывести сообщение об ошибке.
Введите с клавиатуры два числа. Если их сумма положительна, то найдите сумму их квадратов, если отрицательна или равна нулю, то найдите квадрат суммы этих чисел.
Прием на работу идет на конкурсной основе. Условия приема требуют 20 лет стажа и возраста не более 45 лет. Будет ли человек принят на работу?
В баскетбольную секцию принимаются юноши, достигшие возраста 13 лет и ростом не ниже 165 см. Составьте программу зачисления юношей в секцию. Результат выдавать в виде: «Принят», «Не принят».
Составьте программу для определения, кто из двух учащихся учится лучше. Фамилии учащихся и их оценки по трем предметам вводить с клавиатуры. Предусмотрите вариант, когда средние баллы одинаковы.
Программа запрашивает три числа и выводит на экран разность между максимальным и минимальным числами.
Составьте программу, реализующую эпизод из сказки. Программа спрашивает героя: «Куда пойдешь?» (налево, направо, прямо) и, в зависимости от ответа, печатает, что ждет героя выбранном пути. Тексты придумайте самостоятельно.
Определите, какой четверти координатной плоскости принадлежит точка Т (х, у).
Программа запрашивает два числа и выводит их в порядке возрастания. Затем меньшее число заменяет удвоенным произведением введенных чисел, а большее число полусуммой этих чисел.
Составить программу, которая уменьшает первое введенное число в два раза, если оно больше второго введенного числа.
Ввести две скорости. Одну в километрах в час, другую - в метрах в секунду. Какая из скоростей больше и на сколько?
Дискета 3,5 дюйма вмещает 1,44 Мбайт информации. Рукопись содержит 450 страниц текста. На каждой странице 60 строк по 80 символов. Поместится ли рукопись на дискету? Сколько дискет потребуется?
Урок 19. Контрольная работа №2
Урок 20, 21, 22. Циклические алгоритмы.
Организация циклов в Паскале
Циклический алгоритм – алгоритм, содержащий повторяющиеся действия, - цикл. Цикл состоит из условий и тела цикла.
Условие цикла – логическое выражение, от значения которого зависит принятие решения о следующем выполнении цикла.
Тело цикла – набор действий (команд, операторов), которые выполняются несколько раз.
Параметр цикла – переменная, которая меняется от известного начального до известного конечного значения с известным шагом.
Существует несколько видов циклов: пока, до, для. В Паскале им соответствуют операторы while, repeat и for.
Цикл пока

Оператор while

while условие do
begin
тело цикла;
end;

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

Оператор repeat

repeat
тело цикла;
until условие;

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

Оператор for
Прямой формат:
for i:=n1 to n do
begin
тело цикла;
end;

Обратный формат:
for i:=n1 downto n do
begin
тело цикла;
end;

i – переменная – параметр цикла; n1 и n2 – выражения, определяющие соответственно начальное и конечное значение параметра цикла.
Параметр цикла принимает начальное значение и затем сравнивается с конечным значением. Если конечное значение меньше значения параметра цикла, то происходит выполнение тела цикла, иначе цикл завершается и выполняется следующий за циклом оператор. Шаг изменения параметра цикла равен 1(to)или -1(downto).
Оператор for обеспечивает выполнение тела цикла до тех пор, пока не будут перебраны все значения параметра цикла от начального до конечного. Начальное и конечное значения диапазона должны иметь тип, совместимый с типом параметра цикла. При этом допустим любой скалярный тип, кроме вещественного. В теле цикла запрещается явное изменение значения параметра цикла.
Пример: Программа суммирует n-е количество вводимых с клавиатуры чисел.
С – параметр цикла (подсчитывает количество вводимых чисел); n – количество чисел; x – вводимое число; S – сумма чисел.

program DemoWhile;
var c, n: integer;
x, s: real;
begin
write (Введите к-во чисел n=’);
readln (n);
c:=0;
s:=0;
while c<=n do
begin
c:=c+1;
write (c,’-е число:’);
readln (x);
s:=s+x
end;
write (Сумма чисел =’,s)
end.


program DemoRepeat;
uses wincrt;
var c, n: integer;
x, s: real;
begin
write (Введите к-во чисел n=’);
readln (n);
c:=0;
s:=0;
repeat
c:=c+1;
write (c,’-е число:’);
readln (x);
s:=s+x
until c=n;
write (Сумма чисел =’,s)
end.


program DemoFor;
uses wincrt;
var c, n: integer;
x, s: real;
begin
write (Введите к-во чисел n=’);
readln (n);
s:=0;
for c:=1 to n do
begin
write (c,’-е число:’);
readln (x);
s:=s+x
end;
write (Сумма чисел =’,s)
end.

Упражнения
Загрузите Turbo Pascal, введите текст программы, откомпилируйте и проверьте ее действие.
Напишите программу, которая 10 раз печатает ваше имя.
Составьте программу, выводящую на экран все числа первой сотни, оканчивающиеся на 5.
Программа запрашивает возраст, а затем печатает на экране «Здравствуй!» столько раз, сколько лет введено.
Составьте программу для вывода на экран таблицы значений функции:
а) у = х13 EMBED Equation.3 1415 с шагом 0,2;
б) у = sin x, x13 EMBED Equation.3 1415 с шагом 13 EMBED Equation.3 1415;
в) у = 13 EMBED Equation.3 1415 с шагом h;
г) у=3х2+х-4, х13 EMBED Equation.3 1415[a, b] с шагом 0,1;
д) у=13 EMBED Equation.3 1415, х13 EMBED Equation.3 1415[0; 5] с шагом 0,5.
Урок 23 - 33. Решение задач
Вычислить значения пути, пройденного телом за каждую из 12 секунд. Скорость тела запросить с клавиатуры. Результат представить в виде таблицы.
Расход бензина на 100 км пути в среднем составляет 9 л. Определить стоимость бензина для расстояния 200 км, 400 км, 600 км, 800 км, 1000 км, если цена одного литра равна х руб.
Цена 1 кг сыра К рублей. Распечатать таблицу стоимости порций сыра по 100 г, 200 г, 300 г, 400 г, 500 г, 600 г, 700 г.
Напечатать таблицу перевода температуры из градусов по шкале Цельсия (С) в градусы по шкале Фаренгейта (F) для значений температуры от 250С до 400С с шагом 10С. Формула перевода F=1,8С+32.
Напечатать таблицу перевода миль в километры для расстояний от 5 до 75 миль с шагом 5. если 1 миля составляет 1,609 км.
Напечатать таблицу соответствия между весом в фунтах и весом в килограммах дл значений от 1 до 10 фунтов с шагом 1 фунт, если 1 фунт=400 г.
Составить программу, показывающую, как меняется объем вещества массой 0,45 кг при изменении его плотности от 0,5 до 1 кг/м3 с шагом 0,1 кг/м3.
Составить программу, находящую значение произведения:
а) а(а+1)(а+2)(а+3)(а+n);
б) (х-1)(х-2)(х-3)(х-n).
Напишите программу, выводящую на экран все
а) четные числа из диапазона (m, n);
б) нечетные числа из диапазона (m, n);
в) отрицательные числа из диапазона (m, n).
Программа вычисляет n факториал (n!). факториалом натурального числа n называется произведение всех чисел от 1 до n, включая n
Составьте программу, вычисляющую an, где n – любое натуральное число.
Для вводимых с клавиатуры произвольного количества целых чисел найти сумму положительных и их количество.
Программа находит сумму чисел от 1 до 100 кратных 3, но не кратных 6.
У школьников было S рублей. Бутылка с соком стоит Р рублей, пустая бутылка – В рублей. Сколько бутылок сока выпили школьники, если они сдавали пустые бутылки и на вырученные деньги покупали новые?
Для N, вводимого с клавиатуры (2
·N
·9), распечатать соответствующий столбик таблицы умножения.
Распечатать все натуральные числа кратные 7 и не превосходящие 200.
Найдите произведение всех положительных двузначных чисел.
Спортсмен в первый день пробежал 10 км. Каждый следующий день он увеличивал дневную норму на 10% от нормы предыдущего дня. Найти: а) какой путь пробегал спортсмен за каждый день в течение недели; б) какой суммарный путь он пробежал за эту неделю?
В первый час лыжник прошёл 8км. Каждый последующий час его скорость снижалась на 10%. Через какое время он преодолеет 33км?
Росток появляется из земли, начинает расти, прибавляя в росте 40% от роста в предыдущий день. Нормальный рост равен 32см. Успеет ли росток за 13 дней набрать нормальный рост, если в первый день его высота 0,5см. Если не успеет, то посчитайте, за сколько дней он вырастет до нормы.
Дано натуральное число n. Вывести на экран все его натуральные делители.
Напишите программу печати таблицы перевода расстояний из дюймов в сантиметры (1 дюйм=2,5 см) для значений от 20 до 1 дюйма.
Составьте программу, определяющую максимальное из 10 введенных вами чисел.
Составьте программу, которая печатала бы последовательности:
а) 10, 9, 8,, 1;
б) 1, 1, 2, 3, 5, 8,, 233;
в) 100, 81, 64,, 1.
Вычислите:
а) 22+24+26++210;
б) (2t+3)+(2t+6)+(2t+9)++(2t+30), где t – целое число;
в) 1
·2
·3+4
·5
·6+7
·8
·9++43
·44
·45;
г) 1+13 EMBED Equation.3 1415;
д) 13 EMBED Equation.3 1415;
е) 13 EMBED Equation.3 1415.
Каждая бактерия делится на две в течение одной минуты. В начальный момент имеется одна бактерия. Составьте программу, которая рассчитывает количество бактерий на заданное вами целое значение момента времени (5 мин, 7 мин, 10 мин и т. п.).
Составьте программу для проверки справедливости формул:
а) 1+2+3++n=13 EMBED Equation.3 1415;
б) 1+3+5++(2n-1)=n2;
в) 12+22+32++n2=13 EMBED Equation.3 1415;
г) 12+32+52++(2n-1)2=13 EMBED Equation.3 1415.
Последовательно вводятся N целых чисел. Определите, каких среди них больше – положительных или отрицательных.
Составьте программу, вычисляющую сумму наибольшего и наименьшего чисел из 15 введенных вами.
В бригаде имеется n косилок. Первая из них работала m часов, а каждая следующая на 10 минут больше, чем предыдущая. Сколько часов проработала вся бригада?
Составьте программу определения наибольшего общего делителя двух натуральных чисел.
Составьте программу, которая печатает все натуральные числа меньше 100, для которых количество букв в записи числа русскими буквами равно его числовому значению. Например: 3 – три, 11 – одиннадцать и т. д.
Найти все натуральные числа, меньшие 200, у которых сумма цифр равна 13.
Вывести на экран все целые числа от 30 до 350, у которых сумма цифр равна 15.
Чтобы сделать бусы, ювелир взял нить длиной D и жемчужины радиусом R. Определить, сколько жемчужин он сможет нанизать на эту нить.
Вычислить площади N прямоугольных треугольников, катеты которых а и b водятся с клавиатуры. N ввести с клавиатуры.
Составьте программу, вычисляющую сумму факториалов: 1!+2!++n!
Урок 34. Контрольная работа №3
Урок 35, 36. Массивы
Массив – именованный набор с фиксированным количеством однотипных данных.
В массиве могут быть одинаковые данные, поэтому элементы массива различаются по своим порядковым номерам (индексам).
Если элемент имеет один порядковый номер, то такой массив называется одномерным. Например:
Ai = (a1, a2, , an).
Если элемент массива имеет два порядковых номера, то такой массив называется двумерным:
Aij=13 EMBED Equation.3 1415.
Массив имеет три характеристики:
Имя (формируется по правилам языка Паскаль);
Тип (выбирается программистом в зависимости от типа величин, которые будут храниться в массиве);
Размерность (количество элементов в массиве).
Не используйте в программе одинаковые имена для простых переменных и для массивов.
Так как массив – это одна переменная, в ячейках массива может храниться информация только одного типа.
Чтобы получить доступ к любой ячейке массива, необходимо указать имя массива и индекс нужной ячейки в квадратных скобках, например, R[6].
Для описания массива используется зарезервированное слово array (массив). Массив может быть описан как типизированная константа:
Имя массива: array [диапазон изменения индекса] of тип данных = (х1, х2, , хn);
или как переменная:
Имя массива: array [диапазон изменения индекса] of тип данных;
Пример:
const
V: array [1 .. 5] of byte=(6, 0, 4, 12, 4);
var
A: array [1 .. 100] of real;
Если массив описан как переменная, то ввод элементов массива производится поэлементно с помощью оператора read или readln с использованием цикла (удобнее использовать оператор цикла for):
for i:=1 to 5 do readln (a[i]);
или задавая значение каждого элемента результатом случайной функции random:
Randomize;
for i:=1 to 10 do a[i]:=random(n);
Вывод элементов массива выполняется также в цикле, но с использованием операторов write или writeln:
for i:=1 to 5 do writeln (a[i]);
Упражнения:
Программа запрашивает элементы массива М(15) и выводит их на экран в обратном порядке в строку.
Программа запрашивает 6 фамилий и выводит их на экран столбиком, начиная с последней.
Дан массив Е(11, -3, 0, -1, -5, 0, 67, -3, -504, 43, 11). Составьте программу, выводящую на экран только положительные элементы массива.
Составьте программу, выводящую на экран абсолютные значения отрицательных элементов.
Дан массив из 20 чисел. Расположите элементы массива с 1 по 10 в порядке убывания их мест, а с 11 по 20 в порядке возрастания их мест. Выведите на экран полученный массив.
Дан массив А(10). Образуйте массив В, состоящий из утроенных элементов массива А, и массив С, состоящий из увеличенных на 2 элементов массива А.
Введите с клавиатуры пять целочисленных элементов массива Х. выведите на экран значения коней и квадратов каждого из элементов массива.
Урок 37-49. Решение задач
При обработке массивов решения многих задач основываются на следующих задачах: вычисление суммы (произведения) элементов массива, нахождение наибольшего (наименьшего) элемента массива, упорядочивание элементов по возрастанию (убыванию) и т. п.
Пример 1: Вычисление суммы элементов массива.
program SummaElementov;
const n=7;
var A: array [1..n] of integer;
S, i: integer;
begin
writeln (Введите элементы массива А’);
for i:=1 to n do readln {a[i]);
s:=0;
for i:=1 to n do s:=s+a[i];
write (Сумма элементов массива =’,s)
end.
Если требуется выполнить какое-либо действие над всеми элементами массива, то это действие выполняется со всеми элементами массива по очереди, т. е. в цикле.
Пример 2: Программа формирует одномерный массив случайными числами, выполняет поиск наибольшего элемента массива, а затем выводит на экран его значение и порядковый номер.
program Max_Element;
var M: array [1..20] of byte;
max, i, n: byte;
begin
randomize;
for i:=1 to 20 do
begin
m[i]:=random(40);
write (m[i],’ );
end;
writeln;
max:=m[1]; {считать 1-й элемент максимальным}
n:=1; {запомнить номер максимального элемента}
for i:=2 to 20 do {проверить все элементы, начиная со второго}
begin
if m[i]>max then {если очередной (i-й) элемент массива больше чем max}
begin
max:=m[i]; {то считать максимальным i-й элемент}
n:=i; {и запомнить его порядковый номер}
end;
end;
writeln (Максимальный элемент: ,max);
writeln (Он расположен на ,n,’ месте)
end.
Пример 3: Упорядочивание массива.
Имеется последовательность чисел, которую надо упорядочить по возрастанию. Зафиксируем первый элемент и будем последовательно сравнивать его со стоящим справа. Если какой-то из элементов справа окажется меньше первого, то этот элемент меняется местами с первым и т. д. В результате такого перебора на первом месте окажется минимальный элемент. Далее фиксируем второй элемент последовательности и просмотр повторяется.
i – индекс фиксируемого элемента; изменяется от 1 до (n-1);
j – индекс элементов, стоящих справа от фиксируемого и их всегда на 1 больше; изменяется от (i+1) до n;
с – переменная, используемая при перестановке двух элементов.
program Sortirovka;
const n=30;
var T: array [1..n] of integer;
c, i, j: integer;
begin
randomize;
for i:=1 to n do
begin
t[i]:=random(50);
write (t[i],’ );
end;
writeln;
for i:=1 to n-1 do
for j:=i+1 to n do
if t[i]>t[j] then
begin
c:=t[i];
t[i]:=t[j];
t[j]:=c;
end;
write (Упорядоченный массив: );
for i:=1 to n do write (t[i],’ );
end.
Пример 4: В баскетбольную команду могут быть приняты ученики, рост которых превышает 170 см. Вывести на экран список учеников, принятых в команду.
program Bascetball;
var Name: array [1..30] of string;
h: array [1..30] of word;
Cand: array [1..30] of string;
i, k: integer;
begin
writeln (Введите фамилии и рост учеников);
for i:=1 to 30 do
begin
write (i,’. );readln (Name[i]);
write (Рост: ); readln (h[i]);
end;
k:=0;
for i:=1 to 30 do
if h[i]>170 then
begin
k:=k+1;
Cand[k]:=Name[i];
end;
if k=0 then writeln (Кандидатов нет)
else
begin
writeln (Кандидаты в команду:);
for k:=1 to k do writeln (Cand[k])
end
end.
В массиве С(14) найти сумму отрицательных и среднее арифметическое положительных элементов.
В массиве Т(15) найти количество положительных, отрицательных и нулевых элементов.
Определите, есть ли в массиве элементы с одинаковыми значениями.
В массиве Х(13) положительные элементы уменьшить вдвое, а отрицательные увеличить на 5. Вывести на экран полученный массив. В полученном массиве найти наименьший элемент.
В массиве А(20) найти сумму наибольшего и наименьшего элементов.
В массиве У(n) найдите количество элементов кратных 6 и их произведение.
Даны два массива: А(10) и В(10). Образуйте массив С, состоящий из сумм корней соответствующих элементов массивов А и В.
В одномерном массиве найти количество четных и нечетных элементов.
Вычислите сумму квадратов всех элементов массива, исключая элементы кратные 5.
Программа находит количество элементов одномерного массива, больших числа х (вводится с клавиатуры), и вычисляет среднее арифметическое найденных элементов.
Массив R состоит из 20 целых положительных чисел. Образуйте массив R1 из четных элементов массива R, а массив R2 из нечетных элементов массива R.
Дан массив Х(15). Образуйте массив У, в котором сначала идут отрицательные элементы, затем нулевые и затем положительные элементы из массива Х.
Даны два массива А(10) и В(10). Создать массив С, в котором элементы из массива А стоят на четных местах, а элементы из массива В на нечетных местах.
Вычислите сумму элементов массива, индексы которых составляют в сумме заданное число К.
Ведомость по заработной плате содержит фамилии работников и их зарплату за текущий месяц. Выведите на экран список работников, чья заработная плата выше среднего, и фамилию работника, чья заработная плата является наименьшей.
Дан список из 15 футбольных команд и количество очков, набранных каждой командой. Нет команд с равным количеством очков. Требуется:
а) вывести список команд, набравших более 15 очков;
б) вывести название команды-чемпиона;
в) вывести название команды-аутсайдера.
Дан список класса и отметки каждого за контрольную работу. Требуется:
а) подсчитать количество работ, выполненных на «5», и вывести список этих учащихся;
б) подсчитать количество работ, выполненных на «4», и вывести список этих учащихся;
в) подсчитать количество работ, выполненных на «3», и вывести список этих учащихся;
г) подсчитать количество работ, выполненных на «2», и вывести список этих учащихся;
д) подсчитать успеваемость по формуле: 13 EMBED Equation.3 1415.
Найти и напечатать номера элементов и элементы массива М(12), большие переменной R, вводимой с клавиатуры. Массив заполнить числами 33, 45, 12, 47, 21, 78, 43, 67, 26, 94, 80, 16
Заполнить массив Р(15) с клавиатуры. Составить программу, которая:
а) печатает положительные элементы массива;
б) печатает номера положительных элементов массива;
в) заменит все отрицательные элементы нулями;
г) разделит на 5 все элементы массива;
д) удвоит элементы, меньшие 7.
Имеется два массива: X и Y. Упорядочить их по убыванию и объединить в один массив Z.
Сортировать массив: список участников соревнований ранятся в двух массивах FIO(10), REZ(10). Расположить участников в соответствии с занятыми местами.
Вводится массив – список участников конференции. Расположить фамилии участников в алфавитном порядке.
Результаты переписи населения хранятся в массивах F и GR. Составьте программу для вывода на экран фамилий людей, старше 50 лет. Для проверки работоспособности программы использовать 10 вымышленных фамилий. Годы рождения указать следующие: 1989, 1978, 1955, 1976, 1951, 1990, 1980, 1974, 1953, 1960.
Составьте программу для вычисления функции:
z (x, y)=(2x2+3)13 EMBED Equation.3 141513 EMBED Equation.3 1415,
если ряду значений х: 0,003; 0,51; 1,39; 2,99; 3,05 соответствует ряд значений у: 0,63; 5,81; 4,79; 0,55; 1,01. Результат вывести на экран в виде таблицы соответствия значений переменных значению функции.
Составьте программу, которая формирует одномерный массив вводом с клавиатуры, находит в массиве элементы, заданные пользователем, подсчитывает их количество и выводит на экран номер первого найденного элемента.
Урок 50. Контрольная работа №4
Урок 51. Строки
Строка - последовательность любых символов кодовой таблицы персонального компьютера. При использовании в выражениях строка заключается в апострофы. Для определения данных строкового типа используется идентификатор string, за которым может следовать в квадратных скобках значение длины строки. Если это значение не указано, то по умолчанию длина строки равна 255 байт.
Переменную строкового типа можно определить через описание в разделе описания переменных.
Строковые данные могут использоваться в программе также в качестве констант.
К любому символу в строке можно обратиться, указав имя строки и номер символа в квадратных скобках.
Операции над строками
Над строковыми данными допустимы операции сцепления и операции отношения.
Операция объединения (+) применяется для объединения нескольких строк в одну, присоединяя начало второй строки к концу первой, начало третьей строки к концу второй и т. д. Для данной операции существует нейтральный элемент, не влияющий на ее результат, - это строка нулевой длины (пустая строка), обозначаемая двумя рядом стоящими апострофами ( ). Такую строку можно присоединить к любой строке справа или слева и строка не изменится. В операциях сцепления длина результирующей строки не должна превышать 255. Операция объединения строк некоммутативная, т. е. a+b
·b+a.
Операции отношения (=, <>, >, <, >=, <=) проводят сравнение двух строковых операндов и имеют приоритет более низкий, чем операция сцепления. Сравнение строк происходит слева направо до первого несовпадающего символа, и та строка считается больше, в которой первый несовпадающий символ имеет больший номер в стандартной таблице обмена информацией. Например, program’>’PROGRAM’, MS-DOS’<’MS-Dos’. Если строки имеют различную длину, но в общей части символы совпадают, то короткая строка меньше, чем длинная. Строки считаются равными, если они полностью совпадают по длине и имеют одни и те же символы.
Для присваивания строковой переменной результата строкового выражения используется оператор присваивания (:=). Если значение переменной после выполнения оператора присваивания превышает по длине максимально допустимую при описании величину, все лишние справа символы отбрасываются.
Для обработки строковых данных можно использовать специальные процедуры и функции.
Строковые процедуры и функции
Length (S) – вычисляет текущую длину в символах строки S. Результат имеет целочисленный тип, например:
Значение S
Выражение
Результат

1234567’
Length (S)
7

system 370’
Length (S)
10

Delete (S, P, N) – удаление N символов строки S, начиная с позиции Р. Если значение Р>255, возникает программное прерывание.
Значение S
Выражение
Результат

абвгде’
delete (S, 4, 2)
абве’

река Волга’
delete (S, 1, 5)
Волга’

Concat (S1, S2, , SN) – выполняет сцепление строк S1, S2, , SN в том порядке, в каком они указаны в списке параметров. Сумма всех сцепленных строк не должна превышать 255.
Insert (S1, S2, P) – вставка строки S1 в строку S2, начиная с позиции Р, например:
S1:=’че’;
S2:= ’знание’;
Insert (S1, S2, 4);
В результате выполнения последнего выражения значение строки S2 станет равным значение’.
Copy (S, P, N) – выделяет из строки S подстроку длиной N, начиная с позиции Р. Если Р>length(S), то результатом будет пробел. Если Р>255, возникнет ошибка при выполнении. P, N – целочисленные выражения.
Pos (S1, S2) – обнаруживает первое появление строки S1 в строке S2. Результат имеет целочисленный тип и равен номеру той позиции, где находится первый символ строки S1.
Значение S2
Выражение
Результат

abcdef’
pos (de’, S2)
4

abcdef’
pos (r’, S2)
0

Val (S, i, c) – преобразует строковое значение S в величину целочисленного или вещественного типа и помещает результат в i. Значение S не должно содержать незначащих пробелов в начале и в конце. Если во время преобразования ошибки не обнаружено, значение с (целочисленная переменная) равно 0., если ошибка обнаружена (например, литерное значение переводится цифровое), с будет содержать номер позиции первого ошибочного символа, а значение i будет не определено.
Значение S
Выражение
Результат

1450’
val (S, i, c)
i=1450 c=0

’14.2E+02’
val (S, i, c)
i=14.2E+02 c=0

’14.2A+02
val (S, i, c)
i=0 c=5

UpCase (S) – преобразует строчные буквы в прописные. Обрабатывает буквы только латинского алфавита.
Урок 52 - 54. Решение задач
Используя строковые процедуры и функции, исправьте слово «вылысыпыдысты».
Используя строковые процедуры и функции, преобразуйте слово «достопримечательность» в слово «мечта».
Составьте программу, которая после ввода строки строчных латинских букв заменяет их на прописные.
Программа во введенном слове заменяет буквы «а» на «о».
Исправьте программу №4 так, чтобы она заменяла один символ заданный пользователем на другой символ заданный пользователем.
Является ли количество букв во введенном слове четным или нечетным?
Во введенном тексте подсчитать количество слов. (Слова разделяются одним пробелом).
Заданную последовательность слов переупорядочить в алфавитном порядке.
Определите количество предложений во введенном тексте.
Определите долю гласных букв во введенном тексте на русском языке.
Каков процент пробелов во введенном тексте?
Программа запрашивает строку на русском языке и определяет, каких букв в ней больше – гласных или согласных.
Удалите из введенной строки все буквы «а».
Программа вычеркивает те буквы в строке, которые стоят на четных местах.
Составьте программу, которая обращает введенное слово, т е. переставляет символы в обратном порядке, например, мама – амам, папа – апап.
Составьте программу, определяющую, является ли слово перевертышем. Перевертышем называется слово, которое одинаково читается как слева направо, так и справа налево, например, шалаш, казак.
Напишите программу, которая запрашивает строку и выводит ее, сокращая каждый раз на 1 символ до тех пор, пока в строке не останется 1 символ.
Составьте программу, определяющую, является ли введенное слово числом.
Составьте программу, которая запрашивает две строки по четыре символа, состоящие из цифр. Если в строках введены не цифры, то выдает соответствующее сообщение. Программа склеивает введенные строки, преобразует исходные строки в числа и затем подсчитывает их сумму.
Вычислите длину самого короткого и самого длинного слова в предложении из трех слов.
Выясните, какая из букв первая или последняя встречается во введенном слове чаще.
Программа запрашивает существительное первого склонения, оканчивающееся на «а», и выводит это слово во всех падежах.
Сколько букв «у» стоит на четных местах?
Составьте программу, выясняющую, на гласную или согласную букву оканчивается слово.
Вычеркните из заданного слова все буквы, совпадающие с его последней буквой.
Даны два слова. Составьте программу подсчета одинаковых букв, стоящих на одних и тех же местах в словах.
Составьте программу, вычеркивающую каждую третью букву в слове.
Составьте программу, вычеркивающую все согласные буквы в строке.
Сложное слово состоит из двух частей одинаковой длины и соединительной гласной. Найдите обе части этого слова.
Урок 55. Контрольная работа №5
Урок 56-60. Решение задач
Урок 61-62. Итоговая контрольная работа








13PAGE 15


13PAGE 14215


Гресева Т.В. МБОУ СОШ №22 г. Владикавказ

13 PAGE 14115


Строка заголовка

Строка меню

Рабочая область

Полосы прокрутки

Строка статуса

S=a+b

Вывод S

Ввод a, b

конец

начало

нет

да

да

условие

Действие 1

Действие 2

да

нет

нет

да

z=8

0·4

нет

Вывод: решений нет

b=0

c=a/b

начало

ввод a, b

Вывод с

конец

нет

да

Действие

условие

f=5

e=6
g=9

нет

да

f=-5
z=|f|

b<0

p
·0

да

нет

p>3

p<0

нет

нет

да

да

m=4
n=5

m=2
n=1

m=14
n=15

S=m*n

S=m+n

начало

Ввод х

х
·0

да

нет

Вывод у

Вывод: решений нет

y =13 EMBED Equation.3 1415

конец

конец

Вывод: корней нет

D=0

да

нет

да

D<0

Ввод a, b, c

начало

D=b2-4ac

нет

Вывод: корней один

Вывод: два корня

да

Тело цикла

Условие продолжения цикла

нет

условие выхода из цикла

тело цикла

да

нет

параметр цикла = начальное значение; конечное значение

Тело цикла

начало

c=0
s=0

ввод n

c
·n

да

ввод х

s=s+x

c=c+1

нет

вывод s

конец

конец

вывод s

c=c+1

s=s+x

ввод х

c=n

ввод n

c=0
s=0

начало

да

нет

начало

ввод n

S=0

c=1;n

ввод x

S=s+x

вывод s

начало



Root EntryEquation NativeEquation NativeEquation NativeEquation NativeEquation NativeEquation NativeEquation NativeEquation NativeEquation NativeEquation NativeEquation NativeEquation NativeEquation NativeEquation NativeEquation NativeEquation NativeEquation NativeEquation NativeEquation NativeEquation NativeEquation NativeEquation NativeEquation NativeEquation NativeEquation NativeEquation NativeEquation NativeEquation NativeEquation NativeEquation NativeEquation NativeEquation NativeEquation NativeEquation NativeEquation NativeEquation NativeEquation NativeEquation NativeEquation NativeEquation NativeEquation NativeEquation NativeEquation NativeEquation NativeEquation NativeEquation NativeEquation NativeEquation NativeEquation Native Заголовок 115