Алгоритмизация и программирование. Практикум
Покупка
Тематика:
Информатика. Вычислительная техника
Издательство:
Директ-Медиа
Год издания: 2019
Кол-во страниц: 167
Дополнительно
Вид издания:
Учебное пособие
Уровень образования:
ВО - Бакалавриат
ISBN: 978-5-4499-0314-3
Артикул: 801742.01.99
Основная задача учебного пособия — изучение основ алгоритмизации и программирования на практических примерах. Пособие представляет собой сборник задач для самостоятельного решения в среде разработки Pascal. Рассмотренные решения задач различной степени сложности демонстрируют возможности языка структурного программирования. Пособие предназначено для школьников, абитуриентов, студентов, преподавателей.
Текст печатается в авторской редакции.
Тематика:
ББК:
УДК:
ОКСО:
ГРНТИ:
Скопировать запись
Фрагмент текстового слоя документа размещен для индексирующих роботов
И. А. Нагаева, И. А. Кузнецов АЛГОРИТМИЗАЦИЯ И ПРОГРАММИРОВАНИЕ. ПРАКТИКУМ Учебное пособие Москва Берлин 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.