Программирование и алгоритмизация


Чтобы посмотреть этот PDF файл с форматированием и разметкой, скачайте его и откройте на своем компьютере.
��6 &#x/MCI; 0 ;&#x/MCI; 0 ;Раздел 1. Основы алгоритмизации
Понятие алгоритма. Свойства и виды алгорит
Алгоритм

четкое описание последовательности действий,
которые необходимо выполнить для получения результата.
Термин «алгоритм» происходит от латинской формы имени
среднеазиатского математика Аль
Хорезми

Algorithmi. Алгоритм
является одним из основных понятий информатики и математики.
К основным свойствам алгоритмов относятся:
дискретность
(прерывность, раздельность)

алгоритм должен
представлять процесс решения задачи как последовательное
исполнение простых (или ранее определенных) шагов (этапов);
определенность

каждое правило алгоритма должно быть
четким, однозначным и не оставлять места для произвола. Это
свойство обеспечивает выполнение алгоритма механически, не требуя
никаких дополнительных указаний или сведений о решаемой задаче;
результативн
ость
(или конечность)

алгоритм должен
приводить к решению задачи за конечное число шагов;
массовость

алгоритм решения задачи производится в общем
виде, т. е. его можно будет применять для некоторого класса задач,
различающихся лишь исходными данными. П
ри этом исходные
данные могут выбираться из определенной области, которая
называется областью применимости алгоритма.
На практике чаще всего встречаются следующие формы
представления алгоритмов:
словесная

записывается на естественном языке;
графическая

с помощью блок
схемы;
псевдокоды

полуформализованные описания алгоритмов на
некотором условном алгоритмическом языке, которые включают в
себя как элементы языка программирования, так и фразы
��7 &#x/MCI; 2 ;&#x/MCI; 2 ;естественного языка, общепринятые математические обозначения
др.
Рассмотрим пример алгоритма на естественном языке:
Ввести в компьютер числовые значения переменных
.
Вычислить дискриминант
по формуле
d =⁢눀
-
.
Если d < 0, то напечатать сообщение «Корней нет» и перейти к
п.4.
Иначе вычислить
−�+
2�
−�−
2�
и напечатать
значения
.
4. Прекратить вычисления.
Блок
схемой
называется наглядное графическое изображение
алгоритма, когда отдельные его этапы изображаются при помощи
различных геометрических фигур

блоков, а связи между этапами
(последовательность выполнения этапов) указываются при помощи
стрелок, соединяющих эти
фигуры. Блоки сопровождаются
надписями. Типичные действия алгоритма изображаются
следующими геометрическими фигурами:
Блок начала
конца
алгоритма. Надпись в блоке: «начало»
(«конец»).
Блок ввода
вывода
данных. Надпись в блоке: слово «ввод»
(«вывод» или
«печать») и список вводимых (выводимых)
переменных.
Блок решения
или
действия
. Надпись в блоке: конкретная
операция или группа операций.
��8 &#x/MCI; 0 ;&#x/MCI; 0 ;Условный блок
. Надпись в блоке: проверяемое условие.
В результате проверки условия осуществляется выбор одного из
зможных путей (ветвей) вычислительного процесса. Если условие
выполняется, то следующим выполняется этап по ветви «да», если
условие не выполняется, то выполняется этап по ветви «нет».


нет
В качестве примера приведем
блок
схему алгоритма решения
уравнения, описанного выше.
Рис. 1.1. Блок−схема алгоритма решения квадратного уравнения
Виды алгоритма:
Линейный алгоритм
. В котором
все операции выполняются
последовательно одна за другой
ис. 1.1)
.
��9 &#x/MCI; 0 ;&#x/MCI; 0 ;Рис. 1.2. Блок−схема линейного алгоритма
Рассмотрим пример линейного алгоритма.
Зная длины трех сторон треугольника, вычислить площадь и
периметр треугольника.
Пусть

длины сторон треугольника. Необходимо найти


площадь треугольника,

периметр. Для нахождения площади
можно воспользоваться формулой Герона:
⤀⠀
⠀r
c⤀
где

полупериметр.
Входные данные:
. Выходные данные:
Блок
схема алгоритма представлена на рис.
1.3
.
Внимание!
В этих блоках знак «=» означает не математическое
равенство, а операцию присваивания. Переменной, стоящей слева от
оператора, присваивается значение, указанное справа. Причем это
значение может быть уже определено или его необходимо вычислить
с помощью вы
ражения. Например, операция
r
a+b+c
)/2

имеет
смысл (переменной
присвоить значение
⠀a+b+c
)/2
), а выражение
⠀a+b+c
)/2=

бессмыслица.
��10 &#x/MCI; 0 ;&#x/MCI; 0 ; &#x/MCI; 1 ;&#x/MCI; 1 ;Рис.
1.3. Пример линейного алгоритма
Разветвленный алгоритм
. Алгоритмы разветвленной
структуры применяются, когда в зависимости от некоторого
условия необходимо выполнить либо одно, либо другое
действие.
В блок
схемах разветвленные алгоритмы изображаются так, как
показано на рис.
1.4
.
Рис.
1.4. Полный и
неполны
й разветвленный алгоритм
В качестве примера разветвленного алгоритма можно
рассмотреть блок
схему алгоритма решения квадратного уравнения
(см. рис.
��11 &#x/MCI; 0 ;&#x/MCI; 0 ;Рассмотрим еще один пример разветвленного алгоритма.
Даны три числа
. Найти наибольшее из них.
Блок
схема алгоритма представлена на рис. 1.5.
Рис. 1.5. Алгоритм поиска наибольшего из трех чисел
Циклический алгоритм
Циклом
называют повторение
одних и тех же действий (шагов). Последовательность
действий, которые повторяются в цикле, называют
телом
цикла
Существует два типа алгоритмов циклической структуры. На рис.
1.6
изображен
цикл с предусловием
, а на рис.
1.7 –
цикл с
постусловием
.
Эти циклы взаимозаменяемы и обладают некоторыми отличиями:
в цикле с предусловием условие проверяется до тела цикла, в
цикле с постусловием

после тела цикла;
��12 &#x/MCI; 2 ;&#x/MCI; 2 ;• в цикле с постусловием тело цикла выполняется хотя бы один
раз, в цикле с предусловием тело цикла может не выполниться
ни разу;
в цикле с предусловием проверяется условие продолжения
цикла, в цикле с
постусловием

условие выхода из цикла.
При написании условных циклических алгоритмов следует
помнить следующее. Во
первых, чтобы цикл имел шанс когда
нибудь
закончиться, содержимое его тела должно обязательно влиять на
условие цикла. Во
вторых, условие должно состоять из корректных
выражений и значений, определенных еще до первого выполнения
тела цикла.
Обязательные блоки
для организации цикла
:
Установка начального значения параметра цикла.
Проверка условия достижения конечного значения параметра
цикла.
Изменение параметра цикла.
Рассмотрим пример циклического алгоритма
ис. 1.8
��13 &#x/MCI; 0 ;&#x/MCI; 0 ; &#x/MCI; 1 ;&#x/MCI; 1 ;Рис. 1.8. Пример циклического алгоритма
Контрольные вопросы
Что такое алгоритм
?
Свойства алгоритма.
Формы представления алгоритма. Перечислить и зарисовать
блоки
алгоритма.
Перечислить виды алгоритма. Примеры.
Что такое цикл? Типы циклов. Привести блок схемы. Назвать
отличия.
��14 &#x/MCI; 0 ;&#x/MCI; 0 ;Раздел 2. Языки и методологии программирования
Классификация языков программирования
В настоящее время в мире существует несколько сотен реально
используемых языков программирования. Для каждого есть своя
область применения.
Любой алгоритм, есть последовательность предписаний,
выполнив которые можно за конечное число шагов перейти от
исходных данных к результату. В зависимости
от степени
детализации
предписаний обычно определяется уровень языка
программирования

чем меньше детализация, тем выше уровень
языка.
По этому критерию можно выделить следующие уровни языков
программирования:
машинные;
машинно
оpиентиpованные (ассемблеры);
машинно
независимые (языки высокого уровня).
Машинные языки и машинно
ориентированные языки

это
языки низкого уровня
, требующие указания мелких деталей
процесса обработки данных. Языки же
высокого уровня
имитируют
естественные языки, используя некоторые слова ра
зговорного языка и
общепринятые математические символы. Эти языки более удобны для
человека.
На заре компьютерной эры
машинный код
был единственным
средством общения человека с компьютером. Огромным
достижением создателей языков программирования было то, ч
то они
сумели заставить сам компьютер работать переводчиком с этих
языков на машинный код.
Существующие языки программирования можно разделить на
две группы:
процедурные
непроцедурные
(рис.
2.1
Процедурные (или алгоритмические) языки позволяют создавать
программы, представляющие собой систему предписаний для
решения конкретной задачи (выполнение команд программы
определяется их последовательностью, командами перехода, цикла
или обращениями к процедурам). Роль компьютера сводится к
механическому выполнению этих предписаний.
Рис. 2.1. Общая классификация языков программирования
Процедурные языки разделяют на
языки низкого
высокого
уровня
.
Разные типы процессоров имеют разные наборы команд. Если
язык программирования ориентирован на конкретный тип процессора
учитывает его особенности
, то он называется
языком
программирования низкого уровня
Имеется в виду, что операторы
языка близки к маши
нному коду и ориентированы на конкретные
команды процессора.
С помощью
языков низкого уровня
создаются очень
эффективные
(работают быстрее) и
компактные программы
(занимают меньше места в памяти), так как разработчик получает
доступ ко всем возможностям пр
оцессора. С помощью этих языков
Языки программирования
Непроцедурные
Высокого
уровня
(машинно
независимые)
Объектн
ориентированные
Декларативные
Процедурные
Низкого
ровня
(машинно
зависимые)
Ассемблер
Фортран,
Бейсик,
Паскаль,
машинно
ориентированный)
Си++,
Visual
Basic, Delphi,
Java
Логические
Функцио
нальные
Лисп
Пролог
��16 &#x/MCI; 0 ;&#x/MCI; 0 ;удобнее разрабатывать системные программы, драйверы (программы
для управления устройствами компьютера), некоторые другие виды
программ.
Языком низкого уровня (машинно
ориентированным) является
Ассемблер
, который просто предс
тавляет каждую команду машинного
кода, но не в виде чисел, а с помощью условных символьных
обозначений, называемых мнемониками.
Языки программирования
высокого уровня
значительно ближе
понятнее человеку
, нежели компьютеру.
Особенности
конкретных
компьюте
рных архитектур
в них
не учитываются
, поэтому
создаваемые
программы
на уровне исходных текстов легко
переносимы на другие платформы
, для которых создан транслятор
этого языка. Разрабатывать программы на языках высокого уровня с
помощью понятных и мощных команд значительно проще, а
ошибок
при создании программ допускается гораздо
меньше
. Для перевода
исходных программ с языка высокого
уровня на машинный язык
используются специальные программы

трансляторы
.
Работа всех трансляторов строится по одному из двух принципов:
интерпретация
или
компиляция
.
Интерпретация
подразумевает пооператорную трансляцию и
последующее выполнение оттранслиро
ванного оператора исходной
программы. В связи с этим можно отметить
два недостатка
метода
интерпретации: во
первых, интерпретирующая программа должна
находиться в памяти ЭВМ в течение всего процесса выполнения
исходной программы, т. е. занимать определенный объем памяти; во
вторых, процесс трансляции одного и того же оператора повторяется
столько раз, сколько раз должна исполняться эта команда в
программе, что резко снижает производительность работы
программы.
��17 &#x/MCI; 0 ;&#x/MCI; 0 ;Несмотря на указанные недостатки, трансляторы
−и
нтерпретаторы
получили достаточное распространение, так как они
удобны
при
разработке
отладке исходных программ
.
При
компиляции
процессы трансляции и выполнения разделены
во времени:
сначала исходная программа полностью переводится
на машинный язык (посл
е чего наличие транслятора в оперативной
памяти становится ненужным), а
затем оттранслированная
программа может многократно исполняться
. Следовательно, для
одной и той же программы трансляция методом компиляции
обеспечивает более
высокую производительность
вычислительной
системы
при
сокращении требуемой оперативной памяти
.
Компиляция
программы включает два действия:
анализ
, т. е.
определение правильности записи исходной программы в
соответствии с правилами построения языковых конструкций
входного языка, и
синтез

генерирование эквивалентной программы
в машинных кодах.
Объектно
ориентированный язык
создает окружение в виде
множества независимых объектов. Каждый объект ведет себя
подобно отдельному компьютеру, их можно использовать для
решения задач как «чер
ные ящики», не вникая во внутренние
механизмы их функционирования. Из языков объектного
программирования, популярных среди профессионалов, следует
назвать прежде всего
Си++
, для более широкого круга
программистов предпочтительны среды типа
Delphi
Visual
Basic
.
При использовании
декларативного языка
программист
указывает
исходные
информационные структуры,
взаимосвязи
между ними
и то, какими
свойствами должен обладать результат
При этом процедуру его получения («
алгоритм
»)
программист не
строит
(по крайней
мере, в идеале). В этих языках отсутствует
понятие «оператор» («команда»). Декларативные языки можно
��18 &#x/MCI; 0 ;&#x/MCI; 0 ;подразделить на два семейства

логические
(типичный
представитель

Пролог
) и
функциональные
(
Лисп
С развитием глобальной сети было создано много
языков
программирования
, адаптированных специально
для Интернета
Характерные особенности: языки являются интерпретируемыми,
интерпретаторы для них распространяются бесплатно, сами
программы

в исходных текстах. Такие языки называются
скрипт
языками
.
Язык
и веб
программирования

это языки, которые в основном
предназначены для работы с веб
технологиями. Языки веб
программирования можно условно разделить на две пересекающиеся
группы:
клиентские
серверные
.
Как следует из названия, программы на
клиентских
языках
обрабатываются на стороне пользователя, как правило их выполняет
браузер. Это и создает главную проблему клиентских языков

результат выполнения программы (скрипта) зависит от браузера
пользователя. То есть если пользователь запретил выполнять
клие
нтские программы, то они исполняться не будут, как бы ни желал
этого программист. Кроме того, может произойти такое, что в разных
браузерах или в разных версиях одного и того же браузера один и тот
же скрипт будет выполняться по
разному. С другой стороны,
если
программист возлагает надежды на серверные программы, то он
может упростить их работу и снизить нагрузку на сервер за счет
программ, исполняемых на стороне клиента, поскольку они не всегда
требуют перезагрузку (генерацию) страницы. Самыми
распростране
нными клиентскими языками программирования
являются:
HTML
CSS
JavaScript
��19 &#x/MCI; 2 ;&#x/MCI; 2 ;• VBScript
ActionScript
Java
Серверные языки
. Когда пользователь дает запрос на какую
либо страницу (переходит на неё по ссылке или вводит адрес в
адресной строке своего браузера), то вызванная страница сначала
обрабатывается на сервере, то есть выполняются все программы,
связанные со страницей, и только потом возвращается к посетителю
по сети в виде файла. Этот файл может иметь расширения: HTML,
PHP, ASP, ASPX, Perl, SSI, XML, DHTML, XH
TML.
Работа программ уже полностью зависима от сервера, на котором
расположен сайт, и от того, какая версия того или иного языка
поддерживается.
К серверным языкам программирования можно отнести:
PHP
Perl
Python
Ruβy
любой .NET язык программирования
(технология ASP.NET)
Java
Groovy
Охарактеризуем наиболее известные языки программирования.
Фортран
(FORmula TRANslating system

система
трансляции формул); старейший и сегодня активно используемый в
решении
задач математической
ориентации язык. Является
классическим языком для программирования на ЭВМ
математических и инженерных задач.
Бейсик
(Beginner's All
purpose Symβolic Instruction Code

универсальный символический код инструкций для начинающих);
несмотря на многие недостатки и изобилие плохо совместимых
��20 &#x/MCI; 2 ;&#x/MCI; 2 ;версий

самый популярный по числу пользователей. Широко
употребляется при написании простых программ.
Паскаль
(Pascal

назван в честь ученого Блеза Паскаля);
чрезвычайно популярен как при изучении программирования, так и
реди профессионалов. Создан в начале 70
х годов швейцарским
ученым Никлаусом Виртом. Язык Паскаль первоначально
разрабатывался как учебный, и, действительно, сейчас он является
одним из основных языков обучения программированию в школах и
вузах. Однако качества его в совокупности оказались столь высоки,
что им охотно пользуются и профессиональные программисты.
Не менее впечатляющей, в том числе и финансовой, удачи
добился Филип Кан, француз, разработавший систему Турбо
Паскаль.
Суть его идеи состояла в объединении последовательных этапов
обработки программы

компиляции, редактирования связей, отладки
и диагностики ошибок

в едином интерфейсе. Версии Турбо
Паскаля
заполонили практически все образовательные учреждения,
программистские центры и частные фирмы
. На базе языка Паскаль
созданы несколько более мощных языков (Модула, Ада, Дельфи).
АДА
; является языком, победившим (май 1979 г.) в
конкурсе по разработке универсального языка, проводимым
Пентагоном с 1975 году. Разработчики

группа ученых во главе с
ном Ихбиа. Победивший язык окрестили АДА, в честь Огасты
Ады Лавлейс. Язык АДА

прямой наследник языка Паскаль. Этот
язык предназначен для создания и длительного (многолетнего)
сопровождения больших программных систем, допускает
возможность параллельной обработки, управления процессами в
реальном времени и многое другое, чего трудно или невозможно
достичь средствами более простых языков.


«си»); широко используется при создании
системного программного обеспечения. Наложил большой отпечаток
��21 &#x/MCI; 2 ;&#x/MCI; 2 ;на современное программирование (первая версия

1972 г.), является
очень популярным в среде разработчиков систем программного
обеспечения (включая операционные системы). Си сочетает в себе
черты как языка высокого уровня, так и машинно
ориентированного
языка, допуская программиста ко всем машинным ресурсам, чего не
обеспечивают такие языки, как Бейсик и Паскаль.
Си++
(С++); объектно
ориентированное расширение языка
Си, созданное Бьярном Страуструпом в 1980 году. Множество новых
мощных возможностей, позволивших резк
о повысить
производительность программистов, наложилось на унаследованную
от языка Си определенную низкоуровневость.
Дельфи
(Delphi); язык объектно
ориентированного
«визуального» программирования; в данный момент чрезвычайно
популярен. Созданный на базе языка Паскаль специалистами фирмы
Borland язык Delphi, обладая мощностью и гибкостью языков Си и
Си++, превосходит их по удобству и простоте интерфейса при
разработке приложений, обеспечивающих взаимодействие с базами
данных и поддержку различного рода работ
в рамках корпоративных
сетей и сети Интернет.
Ява
(Java); платформенно
независимый язык объектно
ориентированного программирования, чрезвычайно эффективен для
создания интерактивных веб
страниц. Этот язык был создан
компанией Sun в начале 90
х годов на ос
нове Си++. Он призван
упростить разработку приложений на основе Си++ путем исключения
из него всех низкоуровневых возможностей.
(произносится си шарп)

объектно
ориентированный
язык программирования. Разработан в 1998
2001 годах группой
инженеров под р
уководством Андерса Хейлсберга в компании
Microsoft как язык разработки приложений для платформы Microsoft
.NET Framework и впоследствии был стандартизирован как ECMA
��22 &#x/MCI; 2 ;&#x/MCI; 2 ;334 и ISO/IEC 23270. C# относится к семье языков с C
подобным
синтаксисом, из них его син
таксис наиболее близок к C++ и Java.
С тех пор язык сильно вырос в плане популярности и стал чуть
ли не самым предпочитаемым языком среди разработчиков
Windows

Weβ
приложений, которые используют .
NET
Framework
Отчасти
привлекательность языка С#
связана с его понятным синтаксисом,
который происходит от синтаксиса
C/C
++, но упрощает некоторые
вещи. Несмотря на это упрощение, язык С# обладает той же мощью,
что и
Оберон
(Oβeron)

язык общего назначения, созданный
автором Pascal и Modula
2 Никл
аусом Виртом (Niklaus Wirth) и его
коллегами из Швейцарского федерального технического института г.
Цюрих (ETH Zurich) в ходе разработки одноименной операционной
системы для однопользовательской рабочей станции Ceres. Язык и
операционная система названы им
енем одного из спутников планеты
Уран

Оберона. Имеет долгую историю создания, является
наследником Algol 60 (1960), Pascal (1970) и Modula (1979). Oβeron
синтезировал более четверти века исследований Н.Вирта по
методологии и языкам программирования. Ему с учениками удалось
добиться точного синтеза
старых
»
достижений структурного и
модульного программирования с
«новыми»
объектными методами.
Вот, что говорил сам Вирт о своем
детище
Он (Оβeron) включает
в себя средства, необходимые для объектно
ориентир
ованного
программирования, сохраняя стиль Паскаля, и является результатом
моего стремления к простоте без потери выразительности. В этом
должна состоять сущность языка, равно пригодного как для учебной
аудитории, так и для профессиональной деятельности.
»
Неслучайно,
что в качестве эпиграфа к сообщению о языке Oβeron Н. Вирт выбрал
высказывание А.Эйнштейна:
Сделай так просто, как возможно, но не
проще того
. Наращивание мощи языка без его усложнения

��23 &#x/MCI; 2 ;&#x/MCI; 2 ;принцип, которому неуклонно следует Н. Вирт. В 1992 году
сотрудничество Н.Вирта с Ханспетером Мёссенбёком (Hanspeter
Mössenβöck) привело к добавлению в язык ряда новых средств. Новая
версия получила название Оβeron
2. Оберон
2 представляет собой
почти прав
ильное расширение Оберона и является фактическим
стандартом языка, который поддерживается большинством
современных Оберон
систем.
Лисп
(Lisp)

функциональный язык программирования.
Ориентирован на структуру данных в форме списка и позволяет
организовать э
ффективную обработку больших объемов текстовой
информации.
Пролог
(PROgramming in LOGic

логическое
программирование). Главное назначение языка

разработка
интеллектуальных программ и систем. Пролог

это язык
программирования, созданный специально для р
аботы с базами
знаний, основанными на фактах и правилах (одного из элементов
систем искусственного интеллекта). В языке реализован механизм
возврата для выполнения обратной цепочки рассуждений, при
котором предполагается, что некоторые выводы или заключени
истинны, а затем эти предположения проверяются в базе знаний,
содержащей факты и правила логического вывода. Если
предположение не подтверждается, выполняется возврат и
выдвигается новое предположение. В основу языка положена
математическая модель теории
исчисления предикатов.
HTML
(HyperText Markup Language). Общеизвестный
язык для оформления документов. Не является алгоритмическим
языком программирования, а язык разметки гипертекста. Очень
прост, содержит элементарные команды форматирования текста,
доба
вления рисунков, задания шрифтов и цветов, организации ссылок
��24 &#x/MCI; 2 ;&#x/MCI; 2 ;и таблиц. Все Weβ
страницы написаны на языке HTML или
используют его расширения.
PHP

скриптовый язык программирования,
применяющийся для создания сайтов. Важное его достоинство языка

это
создания динамических веб
сайтов, работа с базами данных
(mysql).
Методологии программирования
Большая часть работы программистов связана с написанием
исходного кода, тестированием и отладкой программ на одном из
языков программирования. Исходные тексты и исполняемые файлы
программ являются объектами авторского права и являются
интеллектуальной собственностью их авторов и правообладателей.
Различные языки программирования поддерживают различные
стили программирования (методологии или парадигмы
программиро
вания). Отчасти искусство программирования состоит в
том, чтобы выбрать один из языков, наиболее полно подходящий для
решения имеющейся задачи.
Разные языки требуют от программиста различного уровня
внимания к деталям при реализации алгоритма, результатом чего
часто бывает компромисс между простотой и производительностью
(или между временем программиста и временем пользователя).
Методология программирования

это совокупность идей,
понятий, принципов, способов и средств, определяющая стиль
написания, отладк
и и сопровождения программ.
Перечислим основные методологии (парадигмы)
программирования вместе с присущими им видами абстракций:
процедурно
ориентированные

алгоритмы;
объектно
ориентированные

классы и объекты;
��25 &#x/MCI; 2 ;&#x/MCI; 2 ;− логически
ориентированные

цели, выраженные в
исчислении предикатов, правила «если…, то…»;
параллельное программирование

потоки данных.
Существуют и другие парадигмы.
Структурное программирование
Классическое
процедурное программирование
требует от
программиста
детального описа
ния
того, как решать задачу, т. е.
формулировки
алгоритма
и его специальной записи. При этом
ожидаемые свойства результата обычно не указываются.
Основные
понятия
языков этих групп

оператор
данные
При процедурном подходе операторы объединяются в груп
пы –
процедуры.
Структурное программирование
в целом не выходит за
рамки этого направления, оно лишь дополнительно фиксирует
некоторые полезные приемы технологии программирования.
Структурное программирование, наиболее отчетливо
выраженное в языке Паскаль
(PASCAL), возникло в ходе развития
процедурно
ориентированного подхода, заложенного в исторически
первом из языков программирования Фортране (FORTRAN).
Основу технологии
структурного программирования
составляют следующие
положения
:
Сложная задача разбивает
ся на более мелкие
функционально лучше управляемые
задачи
. Каждая задача
имеет один вход и один выход. В этом случае управляющий
поток программы состоит из совокупности элементарных
подзадач с ясным функциональным назначением.
Простота управляющих структу
р, используемых в задаче.
Логическая структура программы может быть выражена
комбинацией
трех базовых структур: следования,
ветвления и цикла
.
��26 &#x/MCI; 2 ;&#x/MCI; 2 ;3. Детально проработанные алгоритмы изображаются в виде
блок
схемы
.
Используя базовые структуры, можно полностью
исключить
использование безусловного перехода
, что является важным
признаком структурного программирования
Три базовые структуры были рассмотрены в разделе «Основы
алгоритмизации
» (линейный алгоритм, разветвленный алгоритм,
циклический алгоритм). Здесь лиш
ь напомним их.
Следование

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

это структура, обеспечивающая выбор между двумя
альтернативами. Выполняется проверка, а затем выбирается один из
путей.
Эта структура называется также «ЕСЛИ

ТО

ИНАЧЕ», или
«развилка». Каж
дый из путей (ТО или ИНАЧЕ) ведет к общей точке
слияния, так что выполнение
программы продолжается независимо от
того, какой путь был выбран.
Может оказаться, что для одного из результатов проверки ничего
предпринимать не
надо. В этом случае можно применять только один
обрабатывающий блок
(структура
«ЕСЛИ

ТО»
).
Цикл «Пока» (цикл с предусловием) начинается с проверки
логического выражения. Если
оно
истинно
, то выполняется тело цикла,
затем все повторяется снова, пока логическое выражение сохраняет
значение «истина». Как только оно становится
ложным
управление
передается по программе дальше
(см. рис. 1.6
).
В цикле «До»
(цикл с постусловием)
проверка условия выполняется
после операторов тела цикла. Цикл повторяется, если условие
ложно
Как только оно становится
истинным
управление передается по
программе дальше
(см. рис. 1.7
��27 &#x/MCI; 0 ;&#x/MCI; 0 ;Пожалуй, самым важным достижением
структурного подхода
разработк
е алгоритмов является
нисходящее проектирование
программ
.
Этот метод основан на идее уровней абстракции, которые
становятся уровнями
модулей
в разрабатываемой программе. Это
позволяет программисту сначала сконцентрировать внимание на
определении того, что надо сделать в программе, а лишь затем
решать, как это надо делать. При нисходящем проектировании
исходная, подлежащая решению задача разбивается на ряд подзадач,
подчиненных по своему содержанию главной задаче. Такое разбиение
называется детализацией или декомпозицией.
На следующем этапе эти задачи, в свою очередь, разбиваются на
более мелкие подчиненные подзадачи и так далее, до уровня
относ
ительно небольших подзадач, которые требуют для решения
небольших модулей.
Модуль

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

возможность создания программы несколькими
программистами;

простота проектирования и последующих модификаций
программы;

упрощение отладки программы

поиска и устранения в ней
ошибок;

возможность использования готовых библиотек наиболее
употребительных модулей.
Сегодня дополняющим структурное программирование,
создающим основу для разработки современных программных
комплексов стало объектное
объектно
ориентированное
��28 &#x/MCI; 0 ;&#x/MCI; 0 ;программирование
, а противостоящим
ему при решении
определенных классов задач является
декларативное
программирование
, выраженное двумя разными подходами

функциональным
логическим
.
бъектно
ориентированное программирование
Концепция ООП возникла в середине 80
х годов. Главная ее идея
том, что программное приложение, как и окружающий нас мир,
должно состоять из
объектов
, обладающих собственными
свойствами и поведением. Каждый объект объединяет данные и
процедуры обработки этих данных и относится к определенному
классу. Объектно
ориентированный подход основан на:
выделении классов объектов;
установлении свойств и методов обработки;
создании иерархии классов, наследов
ании свойств объе
тов
и методов их обработки.
ООП позволяет резко сократить объем и трудоемкость
разработки программ,
имеющих дело с множеством связанных друг с
другом объектов.
При объектно
ориентированном подходе программные задачи
распределяются между объектами программы. Объекты обладают
определенным набором свойств, методов и способностью реагировать
на события (нажа
тие кнопок мыши, интервалы времени и т.д.).
В отличие от процедурного программирования, где порядок
выполнения операторов программы определяется порядком их
следования и командами управления,
в ООП
порядок выполнения
процедур и функций определяется
, прежд
е всего,
событиями
.
Чтобы проект можно было считать объектно
ориентированным,
объекты должны удовлетворять некоторым требованиям. Этими
требованиями являются инкапсуляция, наследование и полиморфизм.
��29 &#x/MCI; 0 ;&#x/MCI; 0 ;Инкапсуляция

это механизм, который объединяет данные и
код, манипулирующий этими данными, а также защищает и то, и
другое от внешнего вмешательства или неправильного
использования. В объектно
ориентированном программировании код
и данные могут быть объединены вместе; в этом случае говорят, что
создаётся так называемый
рный ящик
. Когда коды и данные
объединяются таким способом, создаётся объект.
Наследование

свойство объектов порождать своих
«потомков», означает, что новый объект можно определить на основе
уже существующих объектов, при этом он будет содержать все
свойства и методы родительского. Наследование полезно, когда
требуется создать новый объект, обл
адающий дополнительными
свойствами по сравнению со старым.
Полиморфизм

многие объекты могут иметь одноименные
методы, которые могут выполнять разные действия для разных
объектов. Например, оператор
«+»
для числовых величин выполняет
сложение, а для текст
овых –
склеивание. Выполнение каждого
конкретного действия будет определяться типом данных.
В ООП центральным является понятие класса.
Класс

это
шаблон, по которому создаются объекты определенного типа. Класс
объединяет в себе данные и методы их обработк
Объекты

это экземпляры определенного класса. Например,
кнопки или текстовые поля, устанавливаемые на форме являются
экземплярами соответствующих стандартных классов.
Декларативное программирование
Направлен на относительно узкий круг задач искусственного
интеллекта.
��30 &#x/MCI; 0 ;&#x/MCI; 0 ;Программист описывает свойства исходных данных, их
взаимосвязи, свойства, которыми должен обладать результат, а не
алгоритм получения результата.
Разумеется, для получения результата этот алгоритм все равно
нужен, но он должен порождаться автоматически той системой,
которая поддерживает декларативно
ориентированный язык
программирования.
При
логическом
варианте такого подхода (прежде всего это
относится к языку
Пролог
PROLOG
) задача описывается
совокупностью фактов и правил в некотором фор
мальном логическом
языке, при
функциональном
варианте

в виде функциональных
соотношений между фактами (язык
Лисп
LISP
Языки логического программирования базируются на
классической логике и применимы для систем логического вывода, в
частности, для так
называемых
экспертных систем
.
На языках логического программирования естественно
формализуется логика поведения, и они применимы для описаний
правил принятия решений.
Важным преимуществом такого подхода является достаточно
высокий уровень машинной независ
имости, а также возможность
откатов

возвращения к предыдущей подцели при отрицательном
результате анализа одного из вариантов в процессе поиска решения
(скажем, очередного хода при игре в шахматы), что избавляет от
необходимости поиска решения путем полного перебора вариантов и
увеличивает эффективность реализации.
Функциональный подход к программированию появился в
результате проведения фундаментальных математических
исследований.
Важнейшей характеристикой функционального подхода является
то обстоятельство, что всякая программа, разработанная на языке
��31 &#x/MCI; 0 ;&#x/MCI; 0 ;функционального программирования, может рассматриваться как
функция, аргументы которой, возможно, также являются функциями.
Функциональный подход породил целое семейство языков,
родоначальником которых стал язык программирования
LISP
.
Параллельное программирование
Используется для распараллеливания обработки информации в
многопроцессорных и мультипрограммных ЭВМ с целью ускорения
вычислений и эффективного использования ресурсов ЭВМ.
В отличие от программирова
ния последовательных вычислений,
концептуальную основу которого составляет понятие алгоритма,
реализуемого по шагам строго последовательно во времени, в
параллельном программировании программа порождает совокупность
параллельно протекающих процессов обрабо
тки информации,
полностью независимых или связанных между собой статическими
или динамическими пространственно
временными или причинно
следственными отношениями.
Контрольные вопросы
Что такое системы программирования и к какому
классу
программ они относятся?
Что входит в состав систем программирования?
На каком языке программирования создавались первые
программы?
Приведите классификацию языков программирования.
Охарактеризуйте языки низкого уровня. Приведите пример языка
низкого уровня. Достоинства языков низкого уровня.
Охарактеризуйте языки высокого уровня. Назовите языки
высокого уровня.
Для чего предназначены трансляторы? Назовите отличие
компиляции от интерпретации.
��32 &#x/MCI; 2 ;&#x/MCI; 2 ;8. Недостатки интерпретации (как вид транслятора).
Какие действия выполняются при компиляции?
собенность декларативных языков
.
Охарактеризуйте кратко языки программирования: Фортран,
Бейсик, Паскаль
,
Оберон.
Охарактеризуйте кратко языки программиро
вания: Ада, Си,
Си++, Си#,
Delphi
Java
.
Приведите примеры объектно
ориентированных языков.
Перечислите методологии программирования.
Назовите положения структурного программирования.
Назовите и зарисуйте три базовые структуры структурного
программировани
На чем основано нисходящее проектирование? Что вы можете
сказать о концепции модульного проектирования? Перечислите
преимущества использования модулей.
Что такое объект в о
бъектно
ориентированном
программировании?
Три принципа о
бъектно
ориентированного
программирования.
Особенность декларативного программирования.
Что такое параллельное программирование?
��33 &#x/MCI; 0 ;&#x/MCI; 0 ;Раздел 3. Раз
работка программ для компьютера
Этапы создания программ
Программа

это последовательность команд компьютера,
приводящая к решению задачи. Программа является результатом
интеллектуального труда, для которого характерно творчество.
Хотя программирование в значительной степени искусство, тем
не менее можно систематизироват
ь и обобщить накопленный
профессиональный опыт. Проектирование и разработку программ
целесообразно разбить на ряд последовательных этапов:
постановка задачи;
проектирование программы;
построение модели;
разработка алгоритма;
написание программы;
отладка пр
ограммы;
тестирование программы;
документирование.
Кратко остановимся на каждом из этих этапов.
Чтобы приступить к решению задачи необходимо
точно ее
сформулировать
. В первую очередь, это
означает определение
исходных и выходных данных
, т. е. ответы на воп
росы: а) что дано;
б) что нужно найти. Дальнейшая детализация постановки задачи
представляет собой ответы на серию вопросов такого рода:
как определить решение;
каких данных не хватает и все ли они нужны;
какие сделаны допущения и т. п.
Таким образом, кратко можно сказать, что на этапе
постановки
задачи
необходимо:
описание исходных данных и результата;
формализация задачи;
��34 &#x/MCI; 2 ;&#x/MCI; 2 ;− описание поведения программы в особых случаях (если
таковые есть).
В ходе этой работы выявляются свойства, которыми
должна
обладать система в конечном виде (замысел), описываются функции
системы, характеристики интерфейса.
Проектирование программы
Сначала производится
проектирование архитектуры программной системы. Следующим
шагом является детальное проектирование. На
этом этапе происходит
процедурное описание программы, выбор и оценка алгоритма для
реализации каждого модуля. Входной информацией для
проектирования являются требования и спецификации системы.
Для проектирования программ существуют различные подходы и
мето
ды. Современный подход к проектированию основан на
декомпозиции, которая, в свою очередь, основана на использовании
абстракции. Целью при декомпозиции является создание модулей,
которые взаимодействуют друг с другом по определенным и простым
правилам. Декомпозиция используется для разбиения программы на
компоненты, которые затем могут быть объединены.
Построение модели
в большинстве случаев является непростой
задачей. Чтобы приобрести опыт в моделировании, необходимо
изучить как можно больше известных и уда
чных моделей.
При построении моделей, как правило, используют два принципа:
дедуктивный (от общего к частному) и индуктивный (от частного к
общему).
Разработка алгоритма

самый сложный и трудоемкий процесс,
но и самый интересный в творческом отношении. Вы
бор метода
разработки зависит от постановки задачи, ее модели.
При построении алгоритма для сложной задачи используют
системный подход с использованием декомпозиции (нисходящее
��35 &#x/MCI; 0 ;&#x/MCI; 0 ;проектирование сверху
вниз) и синтеза (программирование снизу
вверх).
Одним из
системных методов разработки алгоритмов является
структурное программирование
, которое мы рассмотрели
в
предыдущем разделе
На этапе
написания программы
по разработанному алгоритму
на выбранном языке программирования составляется программа.
Отладка прогр
аммы

это процесс обнаружения и исправления
ошибок. Программные ошибки можно разделить на два класса:
синтаксические
(синтаксис языка программирования) и
алгоритмические
(логические). Синтаксические ошибки выявляются
в процессе компилирования программы

это наиболее простые с
точки зрения исправления ошибки. Алгоритмические ошибки
программы выявить гораздо труднее: программа работает, а результат
выдает неправильный. Для
обнаружения ошибок этого класса
требуется этап тестирования программы.
Тестирование

это процесс исполнения программ с целью
выявления (обнаружения) ошибок.
Существуют различные способы тестирования программ.
Тестирование программы как «черного ящика» (
стратегия
«черного ящика» определяет тестирование с анализом входных
данных и результатов работы программы). Критерием
исчерпывающего входного тестирования является использование всех
возможных наборов входных данных.
Тестирование программы как «белого ящика» заключается в
стратегии управления логикой программы, позволяет использовать ее
внутреннюю структуру. Критерием выступает исчерпывающее
тестирование всех маршрутов и управляющих структур программы.
Разумная и реальная стратегия тестирования

сочетание
моделей
«черного» и «белого ящиков».
При проектировании процедуры тестирования предусматривают
серии тестов, имеющих наивысшую вероятность обнаружения
большинства ошибок. Для целей исчерпывающего тестирования
создают эквивалентные разбиения входных параме
тров, причем
предусматривают два класса: правильные входные данные и
неправильные (ошибочные входные значения). Для каждого класса
эквивалентности строят свой тест. Классом эквивалентности тестов
можно назвать такое множество тестов, что выполнение алгоритма на
одном из них гарантирует аналогичный результат прогона для других.
Из всего выше сказанного следует, что тестирование заключается
в составлении наборов тестов (входные данные

ожидаемый
результат), которые бы охватывали все ветки прохождения
алгорит
ма.
Есть золотое правило программистов

оформляй свои
программы в том виде, в каком бы ты хотел видеть программы,
написанные другими. К каждому конечному программному продукту
необходимо
документированное сопровождение
в виде помощи
help
), файлового текс
та (readme
txt
Контрольные вопросы
Перечислите и охарактеризуйте этапы создания программ.
Что представляет собой декомпозиция?
Что такое отладка программы?
Какие классы программных ошибок вы знаете и когда они
выявляются?
Назначение тестирования программ
ы.
Какие способы тестирования вы знаете?
��37 &#x/MCI; 0 ;&#x/MCI; 0 ;Раздел 4. Основы структурного языка
программирования Паскаль
В 1970 г. профессор Никлаус Вирт из Швейцарии обосновал и
разработал язык высокого уровня

Паскаль
. Этот язык отличается
простотой и стройностью,
качествами, которые обеспечивают
Паскалю популярность уже на протяжении нескольких десятилетий.
Паскаль

это процедурный язык, имеющий блочную структуру.
Набор операторов языка отражает принципы структурного
программирования.
Паскаль
программа
является текстовым файлом с собственным
именем и с расширением
.
Структура программы
В целом программа на языке Паскаль состоит из двух основных
частей: описания всех данных, с которыми производятся действия и
описания самих действий. Кроме этого, в самом начале п
рограммы
может присутствовать ее название

заголовок. В самом конце
программы ставиться точка «.».
Правила языка Паскаль предусматривают единую для всех
программ форму основной структуры:
ЗАГОЛОВОК
program
<Имя программы>;
Содержит служебное слово
program
РАЗДЕЛ
ОПИСАНИЙ
Раздел
внешних модулей, процедур и функций
Uses
Пример:

uses
Crt
;
Раздел констант

const
Константа

переменная, которая не изменяется в
процессе выполнения программы.
Под константу не
выделяется память
. Тип константы
определяется ее значением.
Пример:

const

=10;
=0.14;
РАЗДЕЛ
ОПИСАНИЙ
Раздел типов
type
В Паскале существуют стандартные типы, которые
описывать не надо (они считаются уже описанными:
integer
real
char
Boolean
и т.д.)
В Паскале есть возможность создать свой новый тип
данных.
Раздел переменных

var
Переменная

это величина способная изменяться в
процессе выполнения программы. Под переменную
выделяется память. Каждая переменная, до
работы с
ней должна быть описана, т.е.
указан тип
переменной.
Попытка в процессе выполнения программы
присвоить переменной значение иного типа
расценивается как ошибка
в программе.
Пример

I, j, r: integer;
X, h, sum: real;
D, f, r: string;
Раздел процедур и функций

procedure


function
Раздел процедур и функций не начинается каким
то
специальным служебным словом

начало данного
раздела
легко определяется по служебным словам
procedure
или
function
БЛОК
ОСНОВНЫХ
ОПЕРАТОРОВ
begin
Оператор 1;
Оператор 2;
Оператор
N
end
Это основной раздел программы

именно здесь задаются
те действия, которые должны быть выполнены в данной
программе.
Имена программы и используемых величин (констант,
переменных) выбираются программистом самостоятельно в
соответствии с правилами построения идентификаторов:

идентификатор должен быть уникаль
ным, то есть одним и тем
же именем разные объекты не могут быть названы;
��39 &#x/MCI; 0 ;&#x/MCI; 0 ;•
идентификатор имеет ограничение по длине (зависит от
конкретной реализации языка на компьютере);

идентификатор может состоять только из символов латинского
алфавита, цифр и знака подчеркивания («_»);

идентификатор не может начинаться с цифры.
Данные. Типы данных
Совокупность величин, с которыми работает компьютер, принято
называть
данными
. У всякой величины имеются три основных
свойства: имя, значение и тип. В алгоритмах и языках
программирования величины делятся на
константы
переменные
Константа

это величина
, которая не изменяется в процессе
выполнения программы. Под константу не выде
ляется память. Тип
константы определяется ее значением. Объявляется в разделе
Const
(примеры смотри в следующем разделе).
Переменная

это величина способная изменяться в процессе
выполнения программы. Под переменную выделяется память.
Каждая
переменная, д
работы с ней должна быть описана в разделе
Var
т.е. указан тип
переменной
(примеры смотри в следующем разделе)
.
Все данные характеризуются своим
типом
Тип данных
определяет множество значений, допустимых для
переменной, операции выполняемые на этих значениях, количество
выделяемой памяти. То есть переменная может принимать только
значения, определяемые ее типом и участвовать только в тех
операциях, которые допусти
мы для этого типа.
В языке Паскаль тип величины задают заранее. Все переменные,
используемые в программе, должны быть объявлены в разделе
описания с указанием их типа. Обязательное описание типа приводит
к избыточности в тексте программ, но такая избыточность является
важным вспомогательным средством разработки программ и
��40 &#x/MCI; 0 ;&#x/MCI; 0 ;рассматривается как необходимое свойство современных
алгоритмических языков высокого уровня.
В языке Паскаль существует пять п
остых типов данных:
Integer
Целочисленные
данные, во внутреннем
представлении
занимают 2 байта
Real
Вещественные
данные, занимают 6 байтов
Char
Символ
, занимает 1 байт
String
Строка
символов, занимает
МАХ+1
байт, где
МАХ

максимальное число символов в
строке
Boolean
Логический
тип, занимает 1 байт и имеет
два значения:
false
(ложь) и
true
(истина)
Целый и вещественный тип имеют подтипы.
В таблице приведем
подтипы целого типа:
Название
Кол
во памяти
(байт)
Диапазон значений
Byte
ShortInt
128…
+127
Word
0 …
65535
Integer
32768 …
+32767
LongInt
2147483648 …
+2147483647
Над данными
целого типа
определены следующие
арифметические операции:
Знак
операции
Назначение
Приоритет
Сложение
Вычитание
Умножение
Деление
div
Целая часть
от деления
mod
Остаток от деления
��41 &#x/MCI; 0 ;&#x/MCI; 0 ;Результат выполнения этих операций над целыми операндами
получается также целого типа (исключение составляет операция

результат всегда вещественное число
Над данными целого типа определены следующие операции
отношения: =, <>, <, >, <=, >=. Результат выполнения этих операций

логический тип.
Приоритет

это последовательность выполнения действий в
строке операций. Если приоритет = 1, то эти действия выполняются в
первую очередь, если приоритет = 2, то эти дейс
твия выполняются во
вторую очередь. Для изменения приоритета используются круглые
скобки.
Пример выполнения операций div и
mod
:
7 div 2 = 3
div
5 = 0
mod
2 = 1
mod

5=3
Список стандартных функции, дающие
целый результат
:
Функция
Тип
аргумента
Назначение
Abs(x⤀
целое
Абсолютная величина
Sqr (x⤀
целое
Возведение
в квадрат
Trunc (x⤀
веществ.
Выделение целой части
числа
Round (x⤀
веществ.
Округление
до целого
числа
Succ (x⤀
целое
Следующее за
число
Pred (x⤀
целое
Предыдущее перед
число
Random (x⤀

целое
Случайное число от 0 до х
1 .
Если
функция не содержит аргумента, то
генерируется случайное число от 0 до 1.
Randomize
Оператор, позволяющий генерировать
новую последовательность
случайных
чисел при новом
запуске программы
��42 &#x/MCI; 0 ;&#x/MCI; 0 ;Вещественные числа
могут быть представлены в форме с
фиксированной точкой и в форме с плавающей точкой:
С фиксированной
очкой
С плавающей точкой
Математическая.
запись
Запись на
языке
Паскаль
5600
0.56 * 10
0.56Е
0.023
23 *10
− 3
570
0.57 *10
0.57Е
+03
0.26

* 10
−2
0.003
3 *10
−3
−3Е−
Над данными вещественного типа определены следующие
арифметические операции:
Знак
операции
Назначение
Приоритет
Сложение
2
Вычитание
2
*
Умножение
1
/
Деление
1
Операции div и
mod
над вещественными величинами не
допус
имы!
Список стандартных функции, дающие
вещественный
результат
:
Матема
тическая
запись
Запись на языке
Паскаль
Назначение
sin x
sin (x)
Синус числа
os
cos (x⤀
Косинус числа
arctg x
arctan (x)
Арктангенс числа
n (x⤀
Натуральный
логарифм числа
exp (x)
Экспонента числа
sqrt (x⤀
Корень
квадратный
числа
Функция
ln (x)
exp (x)

используются для возведения в степень
по правилу:
ln(
xn
. Например, выражение
вычисляется по
формуле
exp⠀9*ln(x)⤀
.
Логический тип
данных имеет всего два значения
True
(истина),
False
(ложь) и является упорядоченным типом
True

False
.
В программе логический тип переменной задается служебным
словом
Boolean
.
Существуют следующие
логические операции
:
Операции сравнения:

больше;

меньше;

равно;

не равно;

больше либо равно;

меньше либо равно.
��44 &#x/MCI; 2 ;&#x/MCI; 2 ;2. or
(или)

логическое сложение (дизъюнкция).

В физическом смысле логическое сложение

это объединение
двух областей.
A =True
B =False
A = True
B = True
A = True
B = False
Логическое сложение дает ложный результат только в том
случае,
когда оба операнда ложные.
and (и)

логическое умножение (конъюнкция).
В физическом смысле логическое умножение

это пересечение
двух областей.
A =True
B =False
and
A =
True
and
B = False
and
A = False
and
B =
False
Логическое умножение
дает истинный результат только в том
случае, когда оба операнда истинны.
not
(не)

логическое отрицание.

огическое
отрицание

это
унарная операция, то есть операция,
выполняемая над одним операндом
.
A =True
B =False
not
A = B
not
B
= A
Операция отрицания дает ложный результат, если операнд
истинный, и, наоборот, истинный результат, если операнд ложный.
Практикум
Задание 1.
Определите тип величины, если её значение равно:
25;
36,6;
'нет';
48,2;
'число';
'29';
't'
'147';
16,01.
Задание 2.
Выберите значения, допустимые для величин целого
типа.
'три'
20,2
'23'
6,0
Задание 3.
Выберите значения, допустимые для величин
вещественного типа.
'есть решение';
4,
E−2
3,45;
23,79;
47;
29;
87,05;
��46 &#x/MCI; 2 ;&#x/MCI; 2 ;9) −946,9;
99;
'38,762';
0,007;

2,4;
'27';
Задание 4.
Сопоставьте величинам, подходящие им типы.
Величина
Тип
Число квартир в доме
real (вещественный)
Название месяца
string (строковый)
Название города
char (символьный)
Арифметический знак
real (вещественный)
Число p
string (строковый)
Масса
Земли
integer (целый)
Задание 5.
Определите тип для величин.
Высота здания
Число этажей в здании
Количество игроков в команде
Температура человека
Название вида дерева
Скорость машины
Название
фильма
Кличка собаки
Вес контейнера
Количество книжных полок
Результат прыжка в длину
Год вашего рождения
Марка автомобиля
��47 &#x/MCI; 0 ;&#x/MCI; 0 ;Задание 6.
Правильно ли определен тип величины?
Количество тетрадей
тип
Real
Кличка собаки
тип
Char
Вес контейнера

тип
nteger
;
Название хоккейной команды

тип
String
Объем шара

тип
Integer
Количество книжных полок

тип
Integer
.
Название месяца

тип
Char
Количество раб. дней в месяце

тип
Integer
Скорость велосипеда

тип Real;
Количество планет в солн. системе

тип
Real
Название континента

тип
Char;
Площадь земной поверхности

тип
Integer
.
Расстояние между городами

тип
Real
Марка стали

тип Integer;
Количество букв в слове

тип
Char
;
Масса воды в сосуде

тип
Integer
Количество слов в телеграмме

тип
Integer
Порода собаки

тип
String.
Задание 7.
Для величины КОЛИЧЕСТВО СТРАНИЦ В КНИГЕ
выберите допустимое значение:
'двести';
137,5;

18;
243;
46,3;
девяносто
175;
65,1;

187
567;
148;
двадцать пять
1481;
��48 &#x/MCI; 2 ;&#x/MCI; 2 ;15) 314,2;
Шесть
'
Задание 8.
Переменные Х, У, Z имеют соответственно тип целый,
вещественный, строковый. Из приведенных ниже значений укажите
запись с допустимыми значениями для х, у, z:.
15,3; 6; 'пять'

38; 26,04; 'семь'
'да'; 18; 10.3
'нет'; 13; 'один'
27,6; 13; 'один'
3; 37,77; 'Азия'
Задание 9.
Определите
,
является ли величина константой или
переменной.
Расстояние от дома до школы
Время, за которое вы добираетесь до школы
Количество дней в недели
Количество дней в январе
Количество дней в месяце
Стоимость билета в кино
Температура воздуха
Скорость света
Скорость ракеты
Ваше имя
Задание 10.
Сопоставить тип переменной, объем памяти,
выделяемой для переменной этого типа и диапазон чисел,
соответству
ющий этому типу:
ShorInt
байт
0…255
Integer
1 байт
0…65535
LongInt
2 байта
32768…32767
Byte
2 байта
2147483648… +2147483647
Word
4 байта
128…127
Задание 11.
Вычислите значение выражений там, где это
возможно:
20 div
6
20 mod 6
500 div 10
500 mod 100
2 div 5
2 mod 5
div
0
2.
0 mod
3
Задание 12.
Запишите числа в форме с фиксированной точкой:
2.3
E+05
1.5E+02
5.7E+00
4.4E
Задание 13.
Запишите числа в форме с плавающей точкой:
35050
.7
0.
034
��50 &#x/MCI; 0 ;&#x/MCI; 0 ;Выражения
Арифметические выражения
Выражения строятся из
операндов
(переменные, константы,
вызовы функций),
знаков операций
круглых скобок
.
При составлении выражений необходимо знать следующие
правила:
все выражение записывается в строку, то есть двухэтажные
выражения, а также верхние и нижние индексы не
допускаются. Например:
⠀a1*x1
-
a2*x2⤀/⠀x1
x2⤀
;
в выражении можно использовать только круглые скобки.
Примеры арифметических выражений:
b+a*x
sin
⠀x
)+2*
x
При составлении выражения следует учитывать приоритет
операций:
*,/,div, mod

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

наличие операции
деления (/)

всегда вещественный тип.
Например, если переменная
имеет вещественный тип, а
переменные

целый тип, то тип выражений будет определен
следующим образом:
��51 &#x/MCI; 0 ;&#x/MCI; 0 ;2*x+3 –
вещественный тип (т.к.

вещественный тип);
a-3

целый тип
(т.к. все операнды

целые);
a/b

вещественный тип (т.к., хотя все операнды

целые, но
есть операция деления).
Логические выражения
При решении задач часто возникают ситуации, когда
последующие действия зависят о
т выполнения некоторого условия,
например, вычислять корни квадратного уравнения можно только в
случае, когда дискриминант положителен. Для этого используется
структура
ветвления, которая реализуется в языке
Паскаль
условным
оператором. В качестве условия
такого оператора используется
логическое выражение. Логическое выражение дает либо истинное,
либо ложное значение (
true
false).
В логическом выражении могут учувствовать несколько
логических операций, приоритет выполнения операций следующий:
огическое
отрицание;
онъюнкция;
изъюнкция;
перации сравнения.
Для изменения очередности предназначены круглые скобки.
Примеры
. Записать логические выражения, истинные при
соблюдении следующих условий:
В волейбольную секцию примут детей не старше 13 лет и с
ростом
не ниже 160 см.
Ответ:
⠀x
=13) and
⠀y
�=160)
, где

возраст ребенка, а

его
рост.
В кружок английского языка примут
школьников
младше 5
класса или старше 8 класса.
Ответ:
⠀x
5)
⠀x
�8)
, где

класс, в котором учится школьник.
��52 &#x/MCI; 0 ;&#x/MCI; 0 ;Примеры записи логических выражений:
(a>3) and (a<5) or (β>2) and (β<10)
not (a<15) or (β>30)
c or d and (β=10)
Приоритет всех операций (от высшего к низшему):
операции и функции в скобках;
not;
*, /, and, div, mod;
+,
, or;
=, <>, <, >, <=, >=.
Сведем о
сновные
математические функции в Паскале
в одну
таблицу:
Функция
Назначение
Тип
аргумента
Тип
функции
ABS(X)
числение абсолютного
значения Х
real
integer
real
integer
SQR(X)
Вычисление квадрата Х
(X*X)
real
integer
real
integer
SQRT(X)
Вычисление
квадратного
корня X
real
integer
real
real
COS(X)
Вычисление COS(X)
real
integer
real
real
SIN(X)
Вычисление SIN(X)
real
integer
real
real
ARCTAN(X)
Вычисление ARCTANG (X)
real
integer
real
real
EXP(X)
Вычисление экспоненты X
real
integer
real
real
LN(X)
Вычисление натурального
логарифма Х
real
integer
real
real
TRUNC(X)
Нахождение целой части Х
(отбрасывание дробной)
integer
integer
integer
FRAC(X)
Выделение дробной части
числа
real
integer
real
real
INT(X)
Нахождение целой части Х
(меньшее число)
real
integer
integer
integer
ROUND(X)
Округление
Х в сторону
ближайшего целого
real
integer
integer
integer
RANDOM(X)
Нахождение случайного
числа от 0 до Х
integer
integer
ODD(X)
TRUE, если Х
нечетное,
FALSE, если Х
четное
integer
βoolean
Практикум
Задание 1.
Назовите
константы и переменные
в выражениях :
2 +


1.7
2 * xy
2 + a4

1 / 3 * z2
⠀1 / x+1 / y) * 0.2 / 0.5
Задание 2.
Записать на
Паскале
следующие выражения:
-1
-2
√2
1+x
Задание
3.
Записать на
Паскале
следующие выражения
:
22
yx
yx
5.0
7.1
++
−+
fe
ba
��54 &#x/MCI; 0 ;&#x/MCI; 0 ;Задание 4.
Укажите порядок выполнения операций при
вычисления выражения:
⠀x-
1/2)*
y-
3/10+4/⠀5
-x⤀
Задание 5.
Записать на
Паскале
следующие выражения:
[(ax
b⤀x+c]x
-d
yx
yx
βa
Задание 6.
Вычислить выражение:
24/⠀3*4)
24/3/4+24/3*4
Задание 7.
Записать на
Паскале
следующие выражения:
1+x
|a+bx|
sin8
cos
tg x
log
arctg 10
Задание 8.
Записать на
Паскале
следующие выражения:
3.3
+−
yxxyz
log
)1
ln(
yx
++
��55 &#x/MCI; 0 ;&#x/MCI; 0 ;Задание 9.
Вычислить значения выражений:
trunk(6.9)
round(6.9)
trunk(6.2)
round(6.2)
trunk(
1.8)
round(
1.8)
round
(0.
5⤀
round
⠀-
5⤀
Задание 10.
Вычислить значения выражений:
div
mod7/3
trunc
(9.7⤀
succ(round(5/2)
pred(3⤀⤀
Задание 1
1.
Определить тип выражений:
1+0
.0
20/4
sqr(4⤀
sqr⠀5.0)
sqrt⠀16)
sin(0⤀
succ(
trunk(
3.14)
Задание 1
2.
Запишите логические выражения, определив их
истинность при
=10
z=-5
.

четное число;

неотрицательное число;
больше
y;
в сумме с
y
больше 12;
разность

отрицательное число;
произведение

нечетное число;
произведение

отрицательное число;
имеют одинаковую четность.
Задание 1
3.
Среди следующих выражений выберите логические:
x=3

or (x�4⤀
2*x+5
x mod 2 =0
x div 5
��56 &#x/MCI; 2 ;&#x/MCI; 2 ;5) x+y=10
x+y
⠀x+y2⤀ and x
⠀x⠀3⤀ and (x10⤀
Задание 1
4.
Укажите порядок выполнения операций при
вычисления выражения
:
⠀x⠀=0⤀ or true and ⠀x=3⤀ or ⠀x*y瀀4⤀
Задание 1
5.
Вычислить
:
not⠀odd(n⤀⤀
при
n=0
;
t and (p mod 3=0⤀
при
t=true
p=333
;
⠀x*y&#x-100;0⤀ and ⠀y⠀x)
при
x=2
y=1
;
⠀x*y&#x-900;0⤀ or ⠀⠀yx⤀
при
x=2
y=1
;
f or not b
при
a=false
b=true
.
Задание 1
6.
Вычислить:
sqr
⠀x
)+
sqr
⠀y
) = 4
при
=0.3
y=-
1.6
;
k
mod 7 = k div 5
1,
при
k=15
;
odd(trunk⠀10*p)⤀
при
p=0.182
.
Задание 1
7.
Запишите на
Паскале
выражения
:
целое
делится на 7 нацело;
целое
не кратно 5.
Задание 18.
Вычислить выражения при
a=
true
b=
false
:
a or β and not a;
(a or β) and not a;
not a and
not (a and β).
��57 &#x/MCI; 0 ;&#x/MCI; 0 ;Задание 19.
Запишите на
Паскале
выражения:
принадлежит отрезку [0;1];
лежит вне отрезка [0;1] ;
принадлежит отрезку [2;5] или [
1;1] ;
лежит вне отрезков [2;5] и [
1;1] ;
каждое из чисел
положительно;
хотя бы одно из чисе
положительно;
ни одно из чисел
не является положительным;
только одно из чисел
положительно.
Задание 20.
Найдите значение выражения:
A mod ⠀B div C⤀ +4
при
=40,
=13,
=6 (4)
при
=17,
=42,
=13 (10)
Основные операторы языка
Оператор присваивания
Оператор используется, чтобы явно присвоить переменной
результат вычисления выражения.
Формат оператора:
<Имя переменной> := <Выражение>;
Примеры
:
S:=0;
Name:=’Оля’;
S:=S+1;
Выполнение оператора присваивания заключается в следующем:
сначала вычисляется результат выражения, затем полученное
значение записывается в переменную, имя которой стоит слева от
знака присваивания.
��58 &#x/MCI; 0 ;&#x/MCI; 0 ;Оператор присваивания считается верным, если тип выражения
соответствует или может быть приведен к типу переменной слева от
знака присваивания.
Переменной
вещественного
типа можно присвоить выражение
вещественного
или
целочисленного
типов. Переменной
целочисленного
типа можно присвоить значение выражения
только
целочисленного
типа.
Например, если объявлены следующие переменные
Var
, n : integer;
D : real;
то операторы присваивания
:
/10;


неправильный,
:=1.0;


неправильный,
i;

правильный.
Если тип выражения не соответствует типу переменной, то
компилятор выдает сообщение об ошибке.
Практикум
Задание 1.
Переменной
присвоить дробную часть
положительного числа
.
Задание 2.
Если

вещественная переменная, а

целая, то
какие из следующих операторов присваивания правильные, а какие
нет и почему:
;
y-1
;
4.0
;
trunc⠀y)
;
n:=n div 2
;
y:=y mod 2
;
n:=n/2
;
n:=sqr(sqrt⠀n⤀⤀
;
Задание 3.
Поменять местами значения целых переменных
.
��59 &#x/MCI; 0 ;&#x/MCI; 0 ;Задание 4.
Какое значение будет иметь переменная
после
выполнения операторов:
:=10;
+3;
Задание 5.
Записать оператор присваивания, который меняет знак
у переменной
.
Задание 6.
Записать
ему равны значения переменных
после
выполнения операторов:
:=2;
:=5;
y;
x;
Задание 7.
Правильны ли следующие операторы присваивания?
Ответ обосновать.
k
mod
k*
cos
⠀0);
div
/4;
Задание 8.
Найдите ошибку в программе:
program a1;
var
a: integer;
b: real;
begin
a:=100;
b:=2.5;
writeln⠀a,b⤀;
a:=a+b/3.5;
��60 &#x/MCI; 0 ;&#x/MCI; 0 ; writeln⠀a⤀
end.
Задание 9.
Найдите ошибку в программе:
program a1;
var
x: integer;
y: real;
z: char;
begin
z:=鈱00鈻
y:=2.5;
x:=10.5;
y:=x+y;
writeln⠀'x=',x, 'y=',y, 'z=',z⤀
end.
Задание 10.
Какие из следующих последовательностей символов
являются операторами присваивания:
a:=b;
a=c+1;
a:b
sqr(2);
a*x+b:=0;
z:=0;
z:=z+1;
z:=z+1,2;
y:=
y;
y:=y
Задание 11.
Пусть значения переменных
равны,
соответственно,
0.3
0.2
. Какие значения будут иметь эти
переменные после выполнения операторов присваивания:
x:=x+2*y; y:=y/2;
y:=
y; x:=x+y; y:=y+1;
��61 &#x/MCI; 2 ;&#x/MCI; 2 ;3) x:=1; y:=x+y
.
Задание
12.
Задать в виде оператора присваивания следующие
действия:
переменной
присвоить значение, равное полусумме
значений переменных
;
удвоить значение переменной
;
значение переменной
увеличить на
0.1
;
изменить знак значения переменной
.
Задание 13.
Написать оператор присваивания, в результате
выполнения которого переменная
получает значение, равное
значению переменной
, возведенному в пятую степень.
:
Задание
Две последовательности операторов отличаются
только порядком следования операторов:
:=u+v; v:=2*v;
и
v:=2*v; u:=u+v
.
Верно ли, что для любых начальных значений
выполнение
этих последовательностей операторов приводит к одинаковому
изменению значений переменных
Задание
Какие значения будут получены в переменных
в
результате выполнения последовательности операторов
x+y
x-y
x-y
если последовательность исходных данных была составлена из
двух чисел: а) 3.5 и 2.4; б) 6.7 и
10.1
��62 &#x/MCI; 0 ;&#x/MCI; 0 ;Задание 16.
Даны
. Записать оператор присваивания для
вычисления
переменных
а)
)|yx
x/(
|x
y)(x
+−+
++
22
122
(arctg
;
/xz
)(x|x||(ya
−−=
xb
53
52
+−=
.
Составной оператор
Этот оператор, строго говоря, оператором не является. Дело в
том, что также как арифметические действия иногда
необходимо
заключать в скобки, последовательности команд (операторов) тоже
иногда требуют объединения. Это позволяют сделать так называемые
операторные скобки.
Формат оператора:
Begin
<Оператор 1>;
<Оператор 2>;
......
<Оператор
N>
End
Составной
оператор предоставляет возможность выполнить
произвольное количество команд там, где подразумевается
использование только одного оператора. Такая необходимость
встречается довольно часто.
Оператор ввода
Оператор ввода позволяет вводить данные в переменные
во
время выполнения программы с клавиатуры. Элементами списка
ввода являются переменные, которые должны быть заполнены
значениями, введенными с клавиатуры.
��63 &#x/MCI; 0 ;&#x/MCI; 0 ;Формат оператора:
Read(<Список ввода>);
Readln(<Список ввода>);
Например,
read
(x,y
Выполнение оператора ввода происходит следующим образом:
ход программы приостанавливается, на экран выводится курсор,
компьютер ожидает от пользователя набора данных для переменных,
имена которых указаны в списке ввода. Пользователь с клавиатуры
вводит нео
бходимые значения в том порядке, в котором они
требуются списком ввода, нажимает клавишу Enter
После этого набранные данные заносятся в соответствующие им
переменные, и выполнение программы продолжается.
Практикум
Задание 1.
Какие из следующих последовательностей символов
являются операторами ввода:
read(x, y, z);
read x, y, z;
);
read(x);
read(a; β);
x:=read(x);
read(a, β+c)
Задание 2.
Какие значения будут иметь переменные
в
результате выполнения последовательности операторов, если
последовательность исходных данных была составлена из чисел
5.2
18.7.
read(x, y);
t:=x;
x:=y;
t;
��64 &#x/MCI; 0 ;&#x/MCI; 0 ;Оператор
вывода
Оператор вывода позволяет выводить на экран монитора данные
из списка
вывода.
Формат оператора:
Write
(<Список вывода>);
Writeln
(<Список вывода>);
Например:
Write
(‘Результат=’,
*r*r
Элементами списка вывода могут являться имена переменных,
констант, выражения (которые предварительно вычисляются), текст,
заключенный в
апострофы. Элементы списка, также как и в
операторах ввода, разделяются запятыми.
Различие между операторами
Write
Writeln
: после выполнения
оператора
Writeln
(от
Write
line
) курсор переходит на новую строчку,
а после выполнения оператора
Write
курсор ос
тается на текущей
строке вывода, и следующий оператор вывода начинает вывод
именно с этой позиции.
Оператор
Writeln
без параметров (
Writeln
;) реализует переход к
началу следующей строки.
После имени переменной или выражения через двоеточие можно
указать
рмат числа
, который задает ширину поля вывода. Для
переменной целого типа

это одно число, указывающее число
позиций, отводимых под целое значение (например,
write
(x
:10);). Для
переменной
вещественного типа

это два числа,
первое
из которых
указывает чис
ло позиций, отводимых под
все число
, включая
десятичную точку,
второе

число позиций, отводимых под
дробную часть числа
(например,
write
(y
:7:2);). Если для
вещественных величин формат вывода не задан, то значение
выводится в форме с плавающей точкой.
��65 &#x/MCI; 0 ;&#x/MCI; 0 ;Приведем примеры использования форматированного вывода.
Пусть имеется фрагмент программы:
a := 3;
b :=
15;
c := 10;
Write ⠀a : 5, b : 5, c : 5);
На экране монитора данные будут расположены таким образом:
Пусть имеется фрагмент программы:
a := 52.6;
Write (a);
На экране будет отражена запись 5.2600000000Е+01, т.е.
5.2600000000*10
Для вывода значения вещественного типа с фиксированной
точкой используем форматированный вывод:
a := 52.6;
Write ⠀a : 10 : 3⤀;
После выполнения оператора вывода на экране будет отражена
запись:
��66 &#x/MCI; 0 ;&#x/MCI; 0 ; Сведем полученные знания в таблицу:
Целый тип
Вещественный тип
Неформатный
вывод
Форматный вывод
Неформатный
вывод
Форматный вывод
A,B,C:Integer;
A:=1; B:=2;
C:=3;
Write(A,B,C);
экране
A:n,B:m,C:k),
где n,m,k –
ширина
поля вывода
Write(A:3,B:3,C:3);
экране
: _ _1_ _2_ _3
A:Real;
A:=12.56;
Write (A);
экране
1.2560000000E+01
WRITE(A:n:m), где
ширина поля
вывода,
m−
количество
знаков после
запятой
Write (A:7:2);
экране
: _ _12.56
Практикум
Задание 1.
Какие из следующих последовательностей символов
являются операторами вывода:
write(x, y);
write(x, x+1, x+2);
read(a);
write(100);
print(y, z);
print y, z
write (x; y; z);
write(x+2.2);
write(x+2,2)
Задание
2.
Какие числа будут выведены в результате выполнения
последовательности операторов:
read(x);
x:=x
1.2;
x:=sqrt⠀x
1⤀*x+1;
write
⠀x
x⤀;
если в качестве исходного
данного использовалось число:
а) 1.2;

б) 2.2;

в) 5.2;

г) 10.2
��67 &#x/MCI; 0 ;&#x/MCI; 0 ;Условный оператор
Условный оператор позволяет проверить некоторое условие и в
зависимости от результатов проверки выполнить то или иное
действие. Таким образом, у
словный оператор
используется для
реализации
ветвлений в программе, которые происходят при
выполнении некоторого условия.
Формат условного оператора:
If <условие>
Then <оператор 1>
Else <оператор 2>;
Работа оператора может быть выражена простыми словами:
Если <условие>

{Если выполняется условие}
то <
оператор
1> {то выполнить
оператор
№ 1}
иначе <
оператор
2> {иначе
– выполнить
оператор
№ 2}
Условный оператор работает по следующему алгоритму. Вначале
вычисляется условное выражение, если результат вычисления имеет
значение ИСТИНА, то выполняется оператор или группа операторов
следующих за словом
then
, если же выражение имеет значение
ЛОЖЬ, то выполняется оператор следующий после слова
else
.
Следует обратить ваше внимание на т
о что после <оператора 1>
перед словом
else
не ставится точка с запятой.
Существуют конструкции когда условный оператор записывается
без слова
else
, т.е.
If <условие> then <о
ператор 1>;
В таких случаях при вычислении логического выражения, когда
результат
имеет значение ЛОЖЬ, выполняется оператор следующий
за оператором условия.
После
слов
hen
lse
стоит только один оператор. Но что делать,
если требуется по выполнению или невыполнению условия
совершить не одно, а несколько действий? Здесь приходит на помощь
��68 &#x/MCI; 0 ;&#x/MCI; 0 ;уже составной оператор. В операторные скобки можно заключить
любое количество операторов.
риант условного оператора в этом случае:
If <условие>
Then Begin <группа операторов 1> end
Else Begin < группа операторов 2> end;
Пример
. Заданы целые значения
. Определить

z = max (x
Program primer1;
Var

z, x, y : integer;
Begin
Readln (x, y);
If sqr(x⤀ ⤀ sqr(y⤀ then z := sqr(x⤀

else z := sqr(y⤀;
Write ⠀'Z = ', z⤀;
End.
Практикум
Задание
1
(с решением)
Составить программу для вычисления
составной (сложной) функции, имеющей различный вид на разных
участках аргумента:
Функция
Участки аргумента
y=x

y=x

y=4ln(x)
10(x
1.6)
2<=x<0
0<= x<1
1<= x<1.5
1.5<= x<=2
Порядок выполнения
в системе
Pascal ABC
(см. раздел
«Система программирования Pascal ABC»
:
��69 &#x/MCI; 0 ;&#x/MCI; 0 ;1. Активизируйте пункт
Файл
и создайте новый файл (
Новый
2. Наберите текст программы (см. ниже). При наборе текста
программы соблюдайте позиционирование (отступы) строк. Это не
влияет на работу программы, но делает ее читабельной и облегчает
поиск ошибо
program
Lab1;
uses
crt;
var
x, y:real;
begin

writeln(’Введите значение аргумента’);
read(x);
if (x�=
2) and (
x0
⤀ then y:=sqr⠀x)*x;
if (x�=0⤀ and (
⤀ then y:=sqr⠀x);
if (x�=1⤀ and (
1.5
⤀ then y:=4*ln(x);
if (x�=1.5) and (
⤀ then
y:=
10*sqr⠀x
1.6);
if (x�=
2) or ⠀
⤀ then writeln(鄀Y=鈀,y:7:2)
else
writeln
(‘Функция не определена’);
end.
3. Запустите программу на выполнение. Введите значение
переменной
, лежащее в рабочем диапазоне (
2<=
X<
=2). На экране
увидим результат вычисления
Y (Y
= ).
4. Еще раз запустите программу на выполнение. Введите
значение переменной
, не лежащее в рабочем диапазоне (
2 или
>=2). На экране увидим сообщение «Функция не определена».
5. Рассмотрим, что де
лает программа.
В разделе
var
объявили две переменные
X
Y
вещественного
типа.
теле программы
: вначале запрашиваем значение аргумена
X
(оператор вывода

writeln, который выводит приглашение для ввода,
��70 &#x/MCI; 0 ;&#x/MCI; 0 ;оператор ввода

read(x); , который вводит зачение с клавиатуры в
переменную
Затем следуют четыре условных операторов, проверяющих в
какой диапазон попадает введенное значение
X
и вычисляет
соответствующее выражение.
Пятый условный оператор нужен для корректного вывода
результатов работы программы: есл
X
попадает в один из четырех
заданных в условии задачи диапазонов (т.е. лежит в отрезке [
2;2]), то
выводится подсчитанное значение
. В противном случае (else

выводится сообщение «Функция не определена».
6. Сохраните программу в своей папке.
Задание
Заданы два целых числа, если первое число больше
второго, то вывести на экран текст
Первое число больше
, в
противном случае
Второе число больше
».
Задание 3.
Заданы три целых числа
. Найти максимальное
из них.
Задание
4.
Заданы четыре переменные
целого типа.
Вычислить
по правилу:
axz
=+
, при
010
Задание
5.
Является ли условным оператором последовательность
символов:
if x < y then x :=0 else y :=0;
if x > y
then x :=0 else read( y );
if x >= y then x :=0; y :=0 else write( z );
if a < β then 100 else z :=5;
��71 &#x/MCI; 2 ;&#x/MCI; 2 ;5) if a < β < c then z :=z+1;
if sqrt( z ) <= 3.17 then z :=z+1;
if a <> β then z :=z+1; a :=β+1
Задание
6.
Даны действительные числа
. Получить:
max(x+y+z, xyz);
min(x, y, )
Задание 7.
Дано действительное число
. Вычислить
f(a
), если
а)
++
≤++
случае
противном
54xx
2,xпри54xx
;
≤<
случаях
остальных
вπx
1,x0приxx
0,хпри
f(x)
.
Задание 8.
Вычислить значение функции:
Задание 9.
Проверьте, делится ли набранное с клавиатуры число
на 5,
на 11 или 13.
Операторы цикла
В Паскале существует три оператора цикла. Эти операторы
имеют собственные условные названия: «Пока», «До» и «С
параметром».
Формат цикла «Пока» (цикл с предусловием):
While <условие> Do <оператор>;
��72 &#x/MCI; 0 ;&#x/MCI; 0 ;По−русски можно прочитать так: «Пока истинно условие,
выполнять оператор».
Работает оператор следующим образом. Вначале вычисляется
условие, если результат вычисления имеет значение ИСТИНА, то
выполняется оператор в цикле, после чего вычисление выражения
<условие> и его проверка повторяются. Если логическое выражение
имеет значение ЛОЖЬ, оператор
While
прекращает свою работу.
Здесь, так же, как в формате условного оператора,
подразумевается выполнение только одного оператора. Если
необходимо выполнить неск
олько действий, то используется
составной оператор. Тогда формат оператора принимает такой вид:
While <условие> Do Begin
<оператор 1>;
<оператор 2>;
<оператор 3>;
End;
Пример
. Дана последовательность целых чисел за которой
следует ноль. Вычислить сумму элементов последовательности.
Program
primer
;
Var
i
s
integer
;
Begin
s := 0;
Read (a);
While a 瀀 0 do begin

s := s + a;

Read (a);
end;
Write
Сумма
элементов
равна
',
End
.
��73 &#x/MCI; 0 ;&#x/MCI; 0 ;Формат цикла «До» (цикл с постусловием):
Repeat
<оператор 1>;
<оператор 2>;
<оператор 3>;
Until <условие>;
Читается так: «Выполнять оператор 1, оператор 2. и т. д. до
выполнения условия».
Здесь не требуется использование составного оператора, потому
что сами слова Repeat и Until являются операторными скобками.
Оператор
Repeat

Until
работает следующим образом. В начале
выполняется тело цикла, после чего вычисляется логическое
выражение следующее за словом
Until
, если результатом вычисления
выражения является ЛОЖЬ, то операторы в теле цикла будут
выполнены повторно. в противном случае, если логическое
выражение имеет значение ИСТИНА, оператор цикла с постусловием
прекратит свою работу.
Пример
. Дана последовательность целых чисел, последним
элементом которой является число 100. Вычислить среднее
арифметическое элементов этой последовательности.
Program
primer
;
Var
i
x
integer
;
Begin
s := 0;
x := 0;
Repeat

Read (a);

s := s + a;

x := x + 1;
Until a = 100;
��74 &#x/MCI; 0 ;&#x/MCI; 0 ; s := s / x;
Write
('среднее арифметическое: ', s);
End.
Цикл «С параметром»
В данном случае параметром будет являться целочисленная
переменная, которая будет изменяться на единицу при каждой
итерации цикла. Таким образом, задав начальное и конечное значения
для такой переменной, можно точно установить количество
выполнений тела цикла.
Форматов у этого вида цикла предусмотрено два:
For <П.Ц>:=<Н.З.> To <К.З.> Do <оператор>;
For <П.Ц>:=<Н.З.> Downto <К.З.> Do <оператор>;
Здесь П.Ц

параметр цикла, Н.З.

его начальное з
начение, К.З.

соответственно конечное значение параметра.
В первом случае параметр с каждой итерацией увеличивается на
единицу, во втором

уменьшается на единицу.
Читается данная структура так: «Для переменной (далее следует
ее имя) от начального значе
ния до конечного выполнять оператор
(являющийся телом цикла)». Иногда цикл с параметром называют
«Для» («For»).
Выполняется этот цикл по следующему алгоритму:
параметру цикла присваивается начальное значение;
проверяется условие, лежит ли значение параметра цикла
между начальной и конечной величинами. Если оно лежит внутри
интервала, то выполняется тело цикла, иначе работа цикла
прекращается;

выполняется тело цикла;
переменная
параметр автоматически увеличивается на 1
(или
1).
��75 &#x/MCI; 0 ;&#x/MCI; 0 ;Для работы цикла
For
требуется, чтобы начальное значение
параметра цикла было меньше или равно конечному значению, а для
цикла
For
Downto

начальное значение параметра цикла было
больше или равно конечному значению.
Отметим два обстоятельства. Во
первы
х, условие, управляющее
работой оператора
For
, проверяется перед выполнением оператора
<оператор>: если условие не выполняется в самом начале работы
циклического оператора, исполняемый оператор не будет выполнен
ни разу. Другое обстоятельство

шаг наращивания параметр строго
постоянен и равен +1 или
В случае использования в цикле не одного, а нескольких
операторов, следует заключать эти группы операторов в логические
скобки
begin
end
.
Пример
. Дана последовательность целых чисел, состоящая из 25
элементов. Вычислить сумму элементов последовательности.
Program
primer
1;
Var
i
s
integer
;
Begin
x := 0;
For i := 1 to 25 do begin

Read (a);

x := x + a;
end;
Write
Сумма
элементов
равна
',
);
End
.
Решим задание из
примера
используя конструкцию оператора
For
Downto
, в которой шаг наращивания будет равен
��76 &#x/MCI; 0 ;&#x/MCI; 0 ;Program primer2;
Var i, a, s : integer;
Begin
x := 0;
For i := 25 downto 1 do begin

Read (a);

x := x + a;
end;
Write ('
Сумма
элементов
равна
', x);
End
.
Практикум
Задание 1 (с решением).
Составить программу расчета конечной
суммы и сравнения
полученного результата с контрольным
значением. Число членов суммы вводится с клавиатуры:
вид суммы
контрольное
значение
+++++
...4321
)1(
NN
Порядок выполнения в системе
Pascal ABC
(см. раздел
«Система программирования Pascal ABC»)
:
1. Активизируйте пункт
Файл
и создайте новый файл (
Новый
2. Наберите текст программы (см. ниже). При наборе текста
программы соблюдайте
позиционирование (отступы) строк. Это не
влияет на работу программы, но делает ее читабельной и облегчает
поиск ошибок.
program
Lab2;
uses
crt;
var
n, S, i: integer;

real
;
��77 &#x/MCI; 0 ;&#x/MCI; 0 ;begin

writeln
(’Введите число членов суммы’);
read(n);
S:=0;
i:=1;
while i=n do begin
S:=S+i;
i:=i+1;
end;
writeln⠀鄀S =ₒ, S⤀;
+1)/2;
writeln
(‘Контрольная сумма = ’,
end
3. Запустите программу на выполнение. Введите число членов
суммы (значение переменной
). На экране увидим результат
вычисления суммы
ряда (
= ) и контрольного значения
(Контрольная сумма = ). Эти значения должны совпадать. При
несовпадении результатов суммы и котрольной суммы, делаем вывод
о наличии
ошибки
в
программе.
Следует
найти ошибку и
исправить ее.
4. Рассмотрим, что де
лает программа.
В разделе
var
объявили три переменных
i
целого типа и одна
переменная
K
вещественного типа (поскольку при ее вычислении
используется операция деления /).
теле программы
: вначале запрашиваем число членов суммы
n
(оператор вывода

iteln, который выводит приглашение для ввода,
оператор ввода

read(
); , который вводит зачение с клавиатуры в
переменную
Затем обнуляем начальное значение суммы (
:=0) и присваиваем
параметру цикла начальное значение (в нашем задании это 1).
��78 &#x/MCI; 0 ;&#x/MCI; 0 ;Использу
ем цикл
while
. Задаем условие: пока
n
(то есть
ссуммируем все члены ряда) вычисляем сумму (
S+i
) и
увеличиваем параметр на шаг (в нашем задании шаг равен 1).
Вместо цикла
while
можно было использовать цикл
repeat
:
i:=1;
Repeat
S:=S+i;
+1;
Until
i�n
;
Обратите внимание, как изменилось условие!
Можно было использовать и оператор
For, поскольку по заданию
шаг изменения параметра цикла равен 1! В этом случае цикл
выглядит следующим образом:
For
i
:=1
n
S+i;
После оператора цикла в программе следует оператор вывода на
экран вычисленной суммы (
writeln
S
= ’,
) ), вычисление
котрольной суммы по заданной формуле (
+1)/2) и вывод ее на
экран (
writeln
(‘Контрольная сумма = ’,
) ).
6. Сохраните программу в своей папке.
Задание 2.
Является
ли оператором цикла:
while x<0 do x:=x+0.5;
while x<0 do x:=x
100;
while 0while a>0 do y:=2*y;
while a>β do a:=a
1; β:=β+1
��79 &#x/MCI; 0 ;&#x/MCI; 0 ;Задание 3.
После выполнения фрагмента программы
C:=0; A:=17; B:=13; D:=2*A+3;
while D�=B do begin

C:=C+1; D:=D
end;
значения переменных
равны
a)
=3, D=8, β) C=3, D=9, c) C=2, D=9, d) C=2, D=11, e) C=2, D=8
Задание 4.
Вычислить n! (n

факториал; n!=1*2*3*…*n).
Задание 5.
После выполнения фрагмента программы
:=0;
:=1;
repeat

y:=y+x*x;

x:=x+1
until x�=4;
переменная
примет значение:
а) 5; б) 14; в) 16; г) 30.
Задание 6.
Протабулировать (Построить таблицу соответствия
«Аргумент
» и «Функция
») функцию
y=
sin
(x
), при х
изменяющемся от
5 до 5 с шагом
0.6.
Задание
7.
Используя цикл с постусловием, найдите сумму и
призведение целых положительных чисел больших 13 и меньших 100
и кратных 4.
Задание 8.
Напечатать таблицу перевода миль в километры для
расстояний от 5 до 75 миль с
шагом
5,
если
миля составляет
1,609 км.
��80 &#x/MCI; 0 ;&#x/MCI; 0 ;Задание 9.
Написать программу, которая выводит на экран
таблицу умножения, например, на 7.
Массивы
Рассмотренные выше простые типы данных

логический
(βoolean), целый (integer , word , βyte , longint), вещественный (real),
символьный (char)
позволяют работать с одиночными объектами.
В языке Паскаль могут использоваться также объекты, содержащие
множество однотипных элементов. Массив

это упорядоченная
последовательность однотипных данных, рассматриваемых как одно
целое. Упорядоченность данных в массиве позволяет обращаться к
любому элементу массива по его
порядковому
номеру (
индексу
).
Элементы массива расположены последовательно в непрерывной
области памяти.
Нужно четко понимать, что индекс ячейки массива не является ее
содержимым. Содержимым являются хранимые в ячейках данные, а
индексы только указывают на них. Индексы элементов массива
обычно целые числа, однако могут быть и символами, а также
описываться другими порядковыми типами.
Зачастую для задания
количества элементов массива используется тип
диапазон. Тип
диапазон задается левой и правой границами изменения индекса
массива.
Описание массива
Перед использованием массив, как и любая переменная, должна
быть объявлена (описана).
Описание типа массива задается следующим
образом:
type
имя типа = array[ список индексов ] of тип;
��81 &#x/MCI; 0 ;&#x/MCI; 0 ;Здесь
имя типа

правильный идентификатор;
список индексов

список одного или нескольких индексных типов, разделенных
запятыми;
тип

любой тип данных.
Пример
const
n
= 5;
type
mas
array
[1..
integer
;{
Объявлен
тип
mas,
являющийся
массивом

array
целых
чисел
integer
),
границы
изменения
индекса
массива

1蔠
n}
var
mas
;
Определить переменную как массив можно и непосредственно
при ее описании
в разделе
var
, без предварительного описания типа
массива, например:
var

a,b,c
: array
[1..10]
integer
;{Объявлены три массива
состоящие из десяти целых
элементов}
Обращение к определенному элементу массива осуществляется
путем указания имени переменной массива и в квадратных скобках
индекса элемента, например
[3]

обращение к третьему элементу
массива
a[i]

обращение к
му элементу массива
.
Простой массив является одномерным. Он представляет собой
линейную структуру.
Основные действия с массивами
Единственное действие, которое можно выполнять над
массивами целиком, причем только при условии, что массивы
��82 &#x/MCI; 0 ;&#x/MCI; 0 ;однотипны,

это присваивание. Если в программе описаны две
переменные одного типа, например,
Var

a
b
: array
[1..10]
real
;
то можно переменной
присвоить значение переменной
(
).
При этом каждому элементу массива
будет присвоено
соответствующее значение из массива
. Все остальные действия над
массивами Паскаля производятся поэлементно (это важно!).
Ввод массива
Для того чтобы ввести значения элементов массива, необходимо
последовательно изменять значение индекса, начиная с первого до
последнего, и вводить соответствующий элемент. Для реализации
этих действий удобно использовать цикл с заданным числом
повторений,
где параметром цикла будет выступать переменная

индекс массива. Значения элементов могут быть введены с
клавиатуры или определены с помощью оператора присваивания.
Пример фрагмента программы ввода массива с клавиатуры:
Var
A : array [1..10] of int
eger;
i
byte
переменная
i
как
индекс
массива
}
Begin
For
i
:=1
10

Read
⠀a[i
]);
{
ввод
i-
элемента
производится
клавиатуры
}
Рассмотрим теперь случай, когда массив заполняется
автоматически случайными числами. Для этого будем использовать
генератор случайных чисел

random ( N ).
Пример фрагмента программы заполнения массива случайными
числами:
��83 &#x/MCI; 0 ;&#x/MCI; 0 ;Var
A: array [1..10
] of integer;
i : byte ;
Begin
For
i
:=1


A [ i ]:= random (50
⤀-
; {i
му элементу массива
присваивается «случайное» целое
число в диапазоне от 0 до 49 с
вычетом 25, т.е. окончательный
диапазон от
25 до 24
Вывод массива
Вывод массива в Паскале осуществляется также поэлементно, в
цикле, где параметром выступает индекс массива, принимая
последовательно все значения от первого до последнего.
Пример фра
гмента программы вывода массива:
Var
A: array [1..10] of integer;
i
byte
переменная
i
как
индекс
массива
}
Begin
Writeln⠀鄀
Массив
鈀);
For i :=1 to 10 do

Write ⠀ a [ i ]:5
); {вывод массива осуществляется в строку,
од каждый элемент выделяется 5
позиций, иначе элементы массива будут
выведены
слитно
Writeln
; (Для перевода курсора на следующую строку)
��84 &#x/MCI; 0 ;&#x/MCI; 0 ;На экране мы увидим, к примеру, следующие значения:
Массив А
_ _ _ _ 5_ _ _
-
2_ _ 1 1 5

и т.д.
Вывод можно осуществить и в столбик (использовать оператор
Writeln
. Но в таком случае нужно учитывать, что при большой
размерности массива все элементы могут не поместиться на экране и
будет происходить скроллинг, т.е. при заполнении всех строк экрана
будет печататься очередной элемент, а верхний смещаться за пределы
экр
ана.
Пример программы вывода массива в столбик
:
Var
A: array [1..10] of integer;
i
: byte ;
Begin
For i:=1 to 10 do

Writeln
[鄀,
Ⲓ]=鈀,
a[i
]); {
вывод
элементов
массива
столбик
На экране мы увидим, к примеру
, следующие значения:
a [1]=2
a [2]=4
a [3]=1
и т.д.
Алгоритмы обработки
Поиск минимального элемента:
min:=a[1];
For i:=2 to 10 do
If a[i] min then min:= a[i];
��85 &#x/MCI; 2 ;&#x/MCI; 2 ;2. Замена наибольшего элемента массива на 0:
max:=a[1]; imax:=1;
For i:=2 to 10 do
If a[i] � max then begin

max:= a[i];

imax:=i;
end
;
a[
imax
]:=0;
В переменной
max
получаем наибольший элемент массива, а в
переменной
imax

индекс наибольшего элемента.
Удаление
наибольшего элемента из массива:
max:=a[1]; imax:=1;
For i:=2 to 10 do
If a[i] � max then begin

max:= a[i];

imax:=i;
end
;
For
i
:=
imax
{сдвиг элементов, начиная с наибольшего и
a[i]:=a[i+1];
до конца массива}
Перенос наибольшего элемента в начало массива:
max:=a[1]; imax:=1;
For i:=2 to 10 do
If a[i] � max then begin

max:= a[i];

imax:=i;
end
;
For
i
:=
imax
downto
2 do
{сдвиг элементов в противоположную
a[i
]:=
a[i-
1];

сторону, начиная с наибольшего и до

первого элемента массива}
[1]:=
max
;
��86 &#x/MCI; 2 ;&#x/MCI; 2 ;5. Поиск суммы четных элементов массива:
S:=0;
For i:=1 to 10 do
If a[i] mod 2 = 0 then S:=S+ a[i];
Рассмотрим
пример пр
ограммы
целиком.
Задача: Сформировать массив
из нечетных элементов массива
, состоящим из
n
элементов.
Program massiv;
Const n=10;
Var
a, b: array [1..n] of integer;
i, k: byte;

{i –
индекс
массива
a, k

индекс
массива
Begin

For
i
:=1
n

{Заполнение массива числами в диапазоне
от
25 до 24 случайным образом}

a[i]:= random ⠀50⤀
25;
writeln⠀鄀
Массив
A鈀);
For i:=1 to k
1 do

write (a[i]:5); {
вывод
массива
строку
}
writeln;
k:=1;
For i:=1 to n do

If a[i] mod 2 瀀 0 then begin {
Проверка
нечетность

b[k
]:=
a[i
]; {Запись нечетного элемента в
массив
b}

+1; {Подготовка индекса для
следующего элемента}

end;
writeln⠀鄀
Массив
B鈀);
��87 &#x/MCI; 0 ;&#x/MCI; 0 ; For i:=1 to k
-1
do

write
⠀b[i
]:5
);
{вывод массива
b
строку
}
end
.
Система
программирования
Pascal
В настоящее время удобной в учебном процессе является система
программирования Pascal
ABC
(Паскаль АВС). Система
предназначена для обучения программированию на языке Паскаль и
ориентирована на школьников и студентов младших курсов. Кроме
того, в пакете имеется Электронный задачник.
Эта система призвана осуществить переход от простейших
програм
м к модульному, объектно
ориентированному, событийному
и компонентному программированию.
Система Pascal
ABC
3.0 &
Programming
Taskβook
4.5
Mini
Edition
(называемого в дальнейшем системой
PABC
) является
бесплатной и распространяется свободно при услов
ии, что настоящий
дистрибутив не изменен. Скачать программный комплекс можно в
интернете совершенно бесплатно и установить на свой компьютер.
В скачанном пакете для установки запустите файл
PABCInstall
в появившемся окне нажмите кнопку
Установка
После установки автоматически запускается программа
регистрации и настройки
PABCSetup. В дальнейшем эту программу
можно запустить повторно с помощью команды
PABC
Setup

Регистрация и настройка
пункта
Pascal
ABC
в группе
Программы
главного меню
Windows
.
Знакомство с системой программирования
Паскаль АВС
Для запуска Паскаль АВС необходимо запустить ярлык
Pascal
ABC
. На экране появится среда программирования Паскаль АВС
(оболочка). Среда программирования

это пакет взаимосвязанных
��88 &#x/MCI; 0 ;&#x/MCI; 0 ;файлов, которые позволяют
набирать, редактировать, запускать и
отлаживать программы.
После запуска ярлыка на рабочем столе открывается окно:
Первая строка экрана

строка
заголовка, вторая

меню
интегрированной среды, следующая строка

панель инструментов,
нижняя строка экрана

строка состояния интегрированной среды.
Между ними расположено окно редактирования

рабочее поле, в
котором можно открывать несколько вкладок для разных программ.
Окно редактирования предназначено для ввода и редактирования
текста программы. Место ввода информации обозначено курсором.
В верхней левой части окна редактирования выводится служебное
имя редактируемого файла, например: Program1.pas.
накомство с меню
Паскаль АВС
Поочередно войдите в указанные ниже разделы
Меню
(активизируйте Меню мышью).
В меню Файл
Новый – создать новый фал
Oткрыть – открыть файл
Сохранить

сохранить файл
Сохранить как…

сохранить под новым именем
Создать новый
файл
Запустить
программу на
выполнение
Остановить
программу
��89 &#x/MCI; 0 ;&#x/MCI; 0 ;Выход
– выйти
из Паскаля
В меню Правка
Отменить

отменить изменение
Восстановить

вернуть изменение
В меню Программа
Выполнить

выполнить программу
Остановить

остановить программу.
Ввод текста программы
1. Набрать простейшую программу, соответствующую условию
зада
Ввести в компьютер два целых числа, найти их сумму,
результат вывести на экран с поясняющим текстом.
Внимание!
Две косые черты (//) отделяют комментарии, их
набирать не нужно.
program
��90 &#x/MCI; 0 ;&#x/MCI; 0 ;program

...;
заголовок программы и ее имя

...;
блок объявления переменных и их типа
begin

начало исполнительной части программы

...;
операторы, обеспечивающие

...;
выполнение

...;
программы
end.

конец программы (точка обязательна)
В Паскале текст программы обычно начинается заголовком.
В качестве имени программы можно применять комбинацию
английских букв и цифр (пер
вый символ –
буква), без пробелов и
нельзя применять служебные слова языка.
Каждый оператор языка заканчивается точкой с запятой ( ; ).
Обычно каждый раздел программы и оператор записывается с
новой строки для наглядности и более легкого понимания те
кста. Для
этих же целей используют отступы и выравнивания.
Комментарии предназначены для пояснения задачи и для
временного исключения из текста программы некоторых операторов.
В тексте они выделяются фигурными скобками { } или отделяются
двумя косыми черта
ми //. Комментарии игнорируются компьютером
при выполнении.
Под именем программы располагается ее
декларативная часть
в которой компьютеру сообщается обо всех именах констант и
переменных, определяемых программистом.
За декларативной частью следует
исполнительная
часть
программы, обрамляемая словами
ограничителями (логическими
скобками): βegin и end. Между указанной парой слов и размещаются
операторы, выполняющие в программе те или иные действия.
Исполнительную часть программы называют
телом программы
.
��91 &#x/MCI; 0 ;&#x/MCI; 0 ;Запуск программы на выполнение
1. Запустите набранную программу на выполнение (кнопка
Выполнить
на панели инструментов). Если после запуска программы
внизу окна появляется красная строчка с сообщением (рис.
4.1
), то в
строке, где находится курсор или в предыдущей (но не всегда, это
зависит от ошибки!) имеется ошибка. Внимательно просмотрите всю
строчку, найдите и исправьте ошибку.
Рис. 4.1. Пример о
шибки, обнаруженной Паскаль АВС
2. После исправления ошибки, вновь запустите программу.
3. После исправления всех ошибок и появления в новом окне
начала работы программы, введите нужные данные (если в программе
подразумевается ввод нескольких значений переменных, то это
следует делать через
Enter
или
пробел
!), получите результат работы
и пров
ерьте его на правильность. Так как текст программы и ее
работа показываются в разных окнах (если подключен модуль Crt),
можно сопоставить программные строки и ее выполнение
(рис.
4.2
).
��92 &#x/MCI; 0 ;&#x/MCI; 0 ; &#x/MCI; 1 ;&#x/MCI; 1 ;Рис. 4.2. Пример работы программы
4. Сохраните набранную программу в
своей папке.
5. Разберитесь с работой программы и измените ее так, чтобы она
вычисляла не сумму, а разность чисел. Проверьте правильность
работы измененной программы. Сохраните программу под новым
именем в своей папке.
Контрольные вопросы
Приведите структуру программы на языке Паскаль.
Константы и переменные. Где и как объявляются. Их отличия.
Перечислите базовые типы данных в языке Паскаль. Формы
представления вещественных чисел. Какие арифметические
операции невозможны над данными вещественного типа
?
иведите таблицы стандартных функций возвращающих целый
и вещественный результат.
Приведите форматы оператора ввода и оператора присваивания.
Приведите примеры операторов ввода и присваивания.
��93 &#x/MCI; 2 ;&#x/MCI; 2 ;6. Приведите формат оператора вывода. Приведите примеры
оператора. Для чего нужно указание формата числа в операторе
вывода.
Приведите примеры. Отличия операторов Writeln и
Write.
Приведите форматы полного и неполного условного оператора.
Приведите примеры.
риведите форматы операторов цикла
While
Repeat. Приведите
пример оператора. Их отличия.
Приведите форматы оператора цикла
Приведите примеры
оператора.
Что называется массивом?
Как объявить одномерный массив?
Приведите фрагмент ввода одномерного масс
ива с клавиатуры.
Приведите фрагмент формирования одномерного массива
случайными числами и укажите, какой диапазон чисел будет
использован.
Приведите фрагмент вывода одномерного массива в строку.

Приложенные файлы

  • pdf 8820616
    Размер файла: 1 MB Загрузок: 0

Добавить комментарий