Книжная полка Сохранить
Размер шрифта:
А
А
А
|  Шрифт:
Arial
Times
|  Интервал:
Стандартный
Средний
Большой
|  Цвет сайта:
Ц
Ц
Ц
Ц
Ц

Алгоритмизация и программирование. Практикум

Покупка
Артикул: 801742.01.99
Доступ онлайн
235 ₽
В корзину
Основная задача учебного пособия — изучение основ алгоритмизации и программирования на практических примерах. Пособие представляет собой сборник задач для самостоятельного решения в среде разработки Pascal. Рассмотренные решения задач различной степени сложности демонстрируют возможности языка структурного программирования. Пособие предназначено для школьников, абитуриентов, студентов, преподавателей. Текст печатается в авторской редакции.
Нагаева, И. А. Алгоритмизация и программирование. Практикум / И. А. Нагаева, И. А. Кузнецов. - Москва : Директ-Медиа, 2019. - 167 с. - ISBN 978-5-4499-0314-3. - Текст : электронный. - URL: https://znanium.com/catalog/product/1984935 (дата обращения: 28.11.2024). – Режим доступа: по подписке.
Фрагмент текстового слоя документа размещен для индексирующих роботов
 
И. А. Нагаева, И. А. Кузнецов 
 
 
 
 
 
 
 
 
 
 
АЛГОРИТМИЗАЦИЯ 
И ПРОГРАММИРОВАНИЕ. 
ПРАКТИКУМ 

 
Учебное пособие 
 
 
 
 
 
 
 
 
 
 
 
 

 
Москва 
Берлин 
2019 

УДК 004.432(075) 
ББК 32.973.33я7 
 Н16 

Рецензенты: 
Неусыпин К. А. — профессор, доктор технических наук, профессор кафедры  
«Системы автоматического управления» МГТУ им. Н. Э. Баумана (г. Москва); 
Мешков Н. А. — доцент, кандидат технических наук, доцент кафедры управления 
качеством инновационных и наукоемких производств Института системной  
автоматизации, инновационных технологий и предпринимательства МГУТУ 
(г. Москва) 

Нагаева, И. А.

Н16
Алгоритмизация и программирование. Практикум : учебное 
пособие / И. А. Нагаева, И. А. Кузнецов. — Москва ; Берлин : 
Директ-Медиа, 2019. — 167 с. 

ISBN 978-5-4499-0314-3 

Основная задача учебного пособия — изучение основ алгоритмизации и программирования на практических примерах. Пособие представляет собой сборник 
задач для самостоятельного решения в среде разработки Pascal. Рассмотренные 
решения задач различной степени сложности демонстрируют возможности языка 
структурного программирования. 
Пособие предназначено для школьников, абитуриентов, студентов, преподавателей. 
Текст печатается в авторской редакции. 

УДК 004.432(075) 
ББК 32.973.33я7 

ISBN 978-5-4499-0314-3
© Нагаева И. А., Кузнецов И. А., текст, 2019
© Издательство «Директ-Медиа», оформление, 2019

ВВЕДЕНИЕ 

В предлагаемом учебном пособии рассматриваются вопросы 
использования изучаемого теоретического материала по курсу 
«Алгоритмизация и программирование» для решения на практических занятиях и при самостоятельном изучении. Настоящее пособие рекомендуется студентам при подготовке к занятиям, контрольным работам. 
Целью настоящего учебника является изложение базовых положений теории алгоритмов и основ программирования. Каждое 
практическое занятие содержит теоретический материал, решение 
основных задач и список задач для самостоятельного выполнения 
поданной теме. К основным алгоритмическим конструкциям и ряду 
решенных практических заданий приводятся блок-схемы. 
В результате изучения материала студент должен: 
знать 
— основные понятия теории алгоритмов, базовые алгоритмические конструкции; 
— методы построения и реализации алгоритмов; 
— основные конструкции и структуры данных языка Pascal; 
— основные подходы к организации сложных структурированных данных и способы их реализации; 
уметь 
— разрабатывать алгоритмы обработки данных на основе базовых алгоритмов, применяемых к данным различного типа; 
владеть 
— навыками практического программирования на языке высокого уровня Pascal; 
— методами декомпозиции сложных задач и реализацией отдельных элементов в виде подпрограмм. 
Фактический материал учебного пособия неоднократно апробирован автором, а также учениками и студентами, и как показала 
практика, дает хороший результат при применении его на первых 
курсах и в старших классах. 

Авторы 

Практическая работа № 1 

Структура программы. Процедуры ввода-вывода, 
оператор присваивания 

Структура программы на языке Pascal 

Структура программы на языке PASCAL состоит из следующих 
частей:  
1) заголовок;
2) описательный блок (раздел описаний):

раздел меток — label;

раздел констант — const;

раздел типов — type;

раздел переменных — var;
3) блок процедур и функций;
4) исполнительный блок (блок основных операторов).

Program <имя программы> (Input, Output); 
Uses <имя 1>[,<имя 2>...]; 
Label m1,m2,...; 
Const [<константа 1 = значение 1>,...,< константа n = значение n >]; 
Туре [<имя типа1 = тип>,...,< имя типа n = тип>]; 
Var <переменная 1> [,<переменная 2>,...,<переменная n>] 
:<тип>; 
Procedure <имя процедуры>[( параметры)]; 
Begin 
<тело процедуры>; 
End; 
Function <имя> (аргументы):<тип значения>; 
Begin 
<тело функции>; 
End; 
Begin 
<тело программы>; 
End. 

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

метки встречаются в разделе операторов, при этом любая метка 
в разделе операторов может быть указана только один раз. 
В разделе констант объявляемые константы — это переменные, 
которые не изменяются в процессе выполнения программы. Константе дается определенное имя, которое используется в качестве 
ее синонима. 
В разделе типов описываются создаваемые новые типы. Стандартные типы (integer, real, char и т. д.) считаются уже описанными. 
В разделе переменных объявляемые переменные — это величины, которые изменяются в процессе выполнения программы. 
Каждая переменная, до работы с ней должна быть описана, т. е. 
указан тип переменной. Попытка присвоить переменной значение 
иного типа в процессе выполнения программы считается ошибкой. 
Любая используемая ячейка памяти требует описания. При описании ячейке памяти дается имя (идентификатор), по которому с 
ячейкой работают, и тип, показывающий, какие значения могут 
находиться в данной ячейке. Когда объявлена переменная, то в ней 
изначально находиться произвольное значение. Для изменения 
значения переменной используется оператор присваивания. 
Блок процедур и функций содержит подпрограммы, оформленные специальным образом. 
В основном блоке программы (разделе операторов) задаются 
действия, которые должны быть выполнены по определенному алгоритму. Последовательность операторов программы заключается 
в операторные скобки: 
 
Begin 
 
Оператор1; 
 
Оператор2; 
 
Оператор3; 
 
…… 
 
ОператорN; 
End. 
 
Весь раздел операторов представляет собой один составной 
оператор.  
Составной оператор — последовательность произвольных 
операторов, заключаемых в операторные скобки Begin … End. Допускается произвольная глубина вложения составных операторов.  
 

Begin {начало раздела операторов} 
 
begin 
begin 
begin 
… 
end 
end 
end 
End. {конец программы} 
 
Существуют правила, по которым ставится точка с запятой: 
— точка с запятой разграничивает операторы; 
— точка с запятой не ставится перед else (трактуется как 
ошибка); 
— точка с запятой не ставится перед until (трактуется как пустой оператор); 
— точка с запятой не ставится перед end (в зависимости от 
версии языка программирования). 
Программы строятся на основе базовых структур: следование, 
ветвление и цикл. Особенность базовых структур заключается в 
том, что у каждой базовой структуры ровно один вход и ровно 
один выход. В результате структурная программа также имеет 
только один вход и один выход. 

Процедуры ввода/вывода языка Pascal 

Для выполнения ввода/вывода информации существуют четыре 
стандартные процедуры: 
Read (x1, x2, x3); — ввод переменных x1, x2, x3, которые последовательно принимают значения, вводимые с клавиатуры. 
Readln (x1, x2, x3); — ввод переменных x1, x2, x3, которые последовательно принимают значения, вводимые с клавиатуры, и после этого происходит переход на новую строку. 
Readln; — процедура задержки экрана. 
Write (x1, x2, x3); — вывод на экран значения переменных х1, 
х2, х3. 
Writeln (x1, x2, x3); — вывод на экран значения переменных х1, 
х2, х3 с переходом курсора на новую строку. 
Writeln; — осуществляется переход на новую строку. 
 

Например: 

Write ('x1='); — процедура вывода выводит на экран комментарий. 

Write ('x1=', x); — процедура вывода выводит на экран
комментарий (текст, заключённый в апострофах) и значение переменной x. 

Write (х1+х2); — процедура вывода выводит на экран результат вычисления арифметического выражения, заключённого 
в скобках. 

Оператор присваивания 
Оператор присваивания — это один из основных операторов 
языка Turbo Pascal. В левой части указывается имя переменной, 
правая часть — это выражение того же типа, что и переменная. 
Символы «:=« связывают левую и правую части оператора присваивания и означают «присвоить значение». Данные символы рассматриваются как один специальный символ и пишутся слитно. 
Например: а := b + c; 
Оператор присваивания работает следующим образом: сначала 
вычисляется выражение в правой части, а затем результат вычисления кладется в переменную, стоящую в левой части. 

Примеры 
1. Составить программу «Приветствие».
Program example_1_1; 
begin 
writeln (‘Здравствуй, компьютер!’); 
write (‘Привет,’); writeln (‘студент.’) 
end. 

2. Найти сумму двух чисел
Program example_1_2;

Var X,Y, Sum: Real; 
Begin 
Write (‘Введите числа X и Y’); 
Readln (X,Y); 

Sum:=X+Y; 
Writeln (‘Сумма чисел X и Y 

равна’, Sum) 
End. 

{заголовок программы}
{раздел объявления переменных} 
{начало основного блока программы} 
{вывод сообщения на экран} 
{чтение значений двух чисел с клавиатуры} 
{определение суммы} 
{вывод результата} 

{конец программы} 

Практическая работа № 2 

Простые типы данных. 
Линейные алгоритмические конструкции 

Тип
Описание

Shortint, Integer, 
Longint, Byte, Word
Целочисленные данные 

Real, Single, Double, 
Extended, Comp
Вещественные данные 

Char
Символьные данные. Символ занимает 1 байт

Boolean 
Логические данные. Занимает 1 байт, имеет два значения: 
false (ложь) и true (правда).

 
В целочисленном типе данных существует пять подтипов, различающихся: 
— множеством значений; 
— количеством занимаемой памяти. 
 
Тип
Название
Диапазон значений
Размер

Shortint
Короткое целое
–128,127
8 бит

Integer
Целое
–32768, 32767
16 бит

Longint
Длинное целое
–2147483648, 2147483647
32 бита

Byte
Байт
0, 255
8 бит

Word
Слово
0, 65535
16 бит

 
Типы данных для представления вещественных чисел: 
 

Тип
Название
Диапазон значений
Размер

Real
Вещественный
2.9E–39, 1.7E+38
6 байт

Single
Одинарный
1.5E–35, 3.4E+38
4 байта

Double
Двойной
5.0E–324, 1.7E+308
8 байт

Extended
Расширенный
3.4E–4932, 1.1E+4932
10 байт

Comp
Комплексный
–9.2E+18, 9.2E+18
8 байт

 

Операции, используемые для работы с целыми переменными 

Знак операции
Назначение
Приоритет

+
Сложение
2

–
Вычитание
2

×
Умножение
1

Div
Целая часть от деления
1

Mod
Остаток от деления
1

 

M mod N = M – ((M div N) × N), если M >= ((M div N) × N) 
M mod N = M – ((M div N) × N) + N, если M < ((M div N) × N) 
 
Примеры: 

9 div 2 = 4
(–9) div 2 = –3

3 div 5 = 0
(–7) div (–2) = 3

9 mod 2 = 1
(–14) mod 3 = 1

3 mod 5 = 3
(–10) mod 5 = 0

Операции, используемые для работы  
с вещественными переменными 

Знак операции
Назначение
Приоритет

+
Сложение
2

–
Вычитание
2

×
Умножение
1

/
Деление
1

 
Арифметические операции применимы только к величинам целых и вещественных типов. При выполнении операции деления 
целых или вещественных чисел получаем вещественное число. 
Значения в переменных вещественного типа хранятся приближенно. При задании вещественного числа отдельно задаются мантисса и порядок. Такой способ задания вещественного числа называется экспоненциальным форматом. 
Например: A := 5.46E12; 
Вещественной переменной разрешено присваивать значения 
целого типа. Целой переменной нельзя присваивать значения вещественного типа. 

Стандартные функции и операции 

Функция Тип аргумента Тип функции
Назначение

Abs (x) 
целое

вещественное

целое

вещественное
|x| — абсолютная величина x 

Sqr (x) 
Целое

вещественное

целое

вещественное

x2 — возведение величины x в 
квадрат

Trunc (x) 
вещественное 
целое 
Выделение целой части величины x

Round

(x)
вещественное 
целое 
Округление величины x до целого числа

Succ (x) 
порядковое 
порядковое 
Следующее за величиной x
число

Pred (x) 
порядковое 
порядковое 
Предыдущее перед величиной x число

Int (x)
вещественное
вещественное Выделение целой части 

величины x

Продолжение табл. 

Функция Тип аргумен
та

Тип функ
ции
Назначение 

Frac (x) 
вещественное вещественное Выделяет дробную часть 

величины x

Random

(x)
Целое 
целое 
Случайное число от 0 до 
x – 1

Randomize
 
 

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

Ln (x) 
Вещественное Вещественное ln(x) — натуральный ло
гарифм величины x

Cos (x) 
Вещественное Вещественное cos(x) — косинус величи
ны x

Sin (x) 
Вещественное Вещественное sin(x) — синус величины 

x

Exp (x) 
Вещественное Вещественное ex — экспонента величи
ны x

ArcTan (x) Вещественное Вещественное arctg(x) — арктангенс 

величины x

Sqrt (x) 
Вещественное Вещественное
x — корень квадратный 

величины x

 
Round (x) = Trunc (x + 0,5), если x >= 0 
Round (x) = Trunc (x – 0,5), если x < 0 
 
Примеры: 

trunk (5,234) = 5
round (5,234) = 5

trunk (–5,234) = –5
round (–5,234) = –5

trunk (–5,934) = –5
round (–5,934) = –6

frac (123,456) = 0,456
int (123,456) = 123,0

frac (–123,456) = –0,456
int (–123,456) = –123,0

 
Для 
получения 
случайных 
чисел 
используют 
функцию 
Random (x). Данная функция формирует случайное число от 0 до X 
целого или вещественного типа. Перед обращением к функции ее 
целесообразно инициализировать, используя процедуру Randomize. 
X — параметр, указывающий диапазон значений случайного числа. 
Оно изменяется в пределах от 0 до X. Результат в этом случае имеет тип Word (диапазон значений: 0 … 65535). Если параметр X не 
задан, то результат будет типа Real в пределах 0,0 ≤ X < 1,0. 

Доступ онлайн
235 ₽
В корзину