Главная страница
Навигация по странице:

  • . . . . . . . . . . . . . . . . . . . . . . . . . 245 12.3 Строки или массивы символов

  • Лекциям по курсу Информатика


    Скачать 3.84 Mb.
    НазваниеЛекциям по курсу Информатика
    Анкорlekcii_shiryaevoy.pdf
    Дата11.07.2018
    Размер3.84 Mb.
    Формат файлаpdf
    Имя файлаlekcii_shiryaevoy.pdf
    ТипЛекция
    #19640
    страница1 из 9
      1   2   3   4   5   6   7   8   9

    Е. В. Ширяева
    1
    Материалы к лекциям по курсу «Информатика»
    2 2010/2011 учебный год
    15.12.2010
    Рабочий вариант
    Разделы (* см. конспект *) посвящены
    «особо трудолюбивым» студентам
    1
    Кафедра вычислительной математики и математической физики факультета математики, механики и компьютерных наук Южного федерального университета.
    2
    Созданы средствами L
    A
    TEX 2ε и pdfL
    A
    TEX.
    1

    Оглавление
    1
    Введение
    10 1.1
    Этапы решения задачи с использованием компьютера
    10 1.2
    Математическая модель (продолжение)
    15 2
    Основы алгоритмизации
    18 2.1
    Свойства алгоритмов
    19 2.2
    Способы описания алгоритмов
    19 2.3
    Форма Бэкуса—Наура
    22 2.3.1
    Терминальные и нетерминальные символы
    22 2.3.2
    Выражения
    24 2.4
    Синтаксические диаграммы
    26 3
    Алфавит и словарь языка Pascal
    27 3.1
    Идентификаторы
    28 3.2
    Числа
    30 3.3
    Выражения
    31 3.4
    Строка символов
    32 3.5
    Комментарии
    33 4
    Типы данных языка Pascal
    34 4.1
    Простые типы данных
    35 4.1.1
    Порядковые типы
    35 4.1.2
    Вещественные типы
    35 4.1.3
    Целочисленные типы
    36 4.1.4
    Операции над целыми числами
    37 4.1.5
    Вещественные типы Turbo Pascal 7.0 37 4.1.6
    Операции над вещественными числами
    38 4.1.7
    Символьный тип (Char)
    44 4.1.8
    Строковый тип (string)
    45 4.1.9
    Логический тип (Boolean)
    46 2

    4.1.10 Интервальный тип (тип-диапазон)
    47 4.2
    Функциия SizeOf
    48 5
    Структура программы на языке Pascal
    49 5.1
    Заголовок программы
    49 5.2
    Раздел для подключения модулей
    49 5.3
    Оператор присваивания
    50 5.4
    Функции
    52 5.5
    Операторы процедур
    53 5.5.1
    Процедуры ввода
    53 5.5.2
    Процедуры вывода
    55 6
    Линейные алгоритмы
    58 6.1
    Реализация линейных алгоритмов
    59 6.2
    Проверка правильности программы
    62 6.3
    Решение задач
    71 6.4
    Арифметическое переполнение
    74 7
    Операторы для организации ветвления
    77 7.1
    Логические выражения
    77 7.2
    Примеры логических выражений
    78 7.3
    Выбирающие операторы
    80 7.4
    Оператор условного перехода
    80 7.5
    Поиск максимального/минимального из двух выражений
    83 7.6
    Поиск максимального/минимального из трех выражений
    83 7.7
    Составные операторы в операторах if
    84 7.8
    Вложенные условные операторы
    86 7.9
    Решение задач
    92 7.10 Оператор выбора
    96 7.10.1 Синтаксис оператора выбора
    96 7.11 Раздел меток и оператор перехода
    99 7.11.1 Раздел меток
    99 7.11.2 Помеченный оператор
    99 7.11.3 Оператор перехода
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 7.11.4 Примеры использования оператора перехода
    . . . . . . . . . . . . . . . 101 7.12 Безусловные процедуры
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 7.12.1 Примеры завершения работы текущего программного блока
    . . . . . . 104 7.12.2 Примеры завершения работы программы
    . . . . . . . . . . . . . . . . . 107 3

    8
    Организация циклических процессов
    108 8.1
    Циклы
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 8.2
    Операторы циклов
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113 8.3
    Оператор цикла с предусловием
    . . . . . . . . . . . . . . . . . . . . . . . . . . . 113 8.4
    Оператор цикла с постусловием
    . . . . . . . . . . . . . . . . . . . . . . . . . . . 117 8.5
    Зацикливание
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120 8.6
    Решение задач
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121 8.6.1
    Организация диалога с пользователем
    . . . . . . . . . . . . . . . . . . . 121 8.6.2
    Контроль ввода исходных данных
    . . . . . . . . . . . . . . . . . . . . . . 121 8.6.3
    Вычисление конечных сумм и произведений
    . . . . . . . . . . . . . . . . 122 8.6.4
    Вычисление бесконечных сумм
    . . . . . . . . . . . . . . . . . . . . . . . 124 8.6.5
    Числовые последовательности
    . . . . . . . . . . . . . . . . . . . . . . . . 128 8.6.6
    Вычисление машинного эпсилон
    . . . . . . . . . . . . . . . . . . . . . . . 129 8.6.7
    Действия над целыми числами
    . . . . . . . . . . . . . . . . . . . . . . . . 130 8.6.8
    Использование сигнальной метки
    . . . . . . . . . . . . . . . . . . . . . . 132 8.6.9
    Циклы, управляемые флагами
    . . . . . . . . . . . . . . . . . . . . . . . 135 8.6.10 Перебор делителей
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136 8.6.11 Тест простоты числа
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137 8.6.12 Факторизация заданного числа
    . . . . . . . . . . . . . . . . . . . . . . . 138 8.6.13 Вычисление квадратного корня по формуле Герона
    . . . . . . . . . . . . 139 8.6.14 Рекуррентные соотношения. Вычисление бесконечных сумм
    . . . . . . . 141 8.6.15 Алгоритм Евклида
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146 8.7
    К вопросу об эффективности программ
    . . . . . . . . . . . . . . . . . . . . . . . 149 8.8
    Оператор цикла с параметром
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151 8.8.1
    Примеры решения задач
    . . . . . . . . . . . . . . . . . . . . . . . . . . . 155 9
    Символьный тип данных
    164 9.1
    Сравнение символьных переменных
    . . . . . . . . . . . . . . . . . . . . . . . . . 164 9.2
    Стандартные функции для работы с символьными переменными
    . . . . . . . . 166 9.3
    Символьные переменные и циклы
    . . . . . . . . . . . . . . . . . . . . . . . . . . 167 9.4
    Смена регистра
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168 10 Процедуры и функции
    170 10.1 Подпрограммы
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170 10.2 Процедуры
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173 10.2.1 Описание процедуры
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173 10.2.2 Вызов процедуры
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174 10.2.3 Процедуры без параметров
    . . . . . . . . . . . . . . . . . . . . . . . . . . 175 4

    10.3 Функции
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176 10.3.1 Функции без параметров
    . . . . . . . . . . . . . . . . . . . . . . . . . . . 176 10.3.2 Функции с параметрами
    . . . . . . . . . . . . . . . . . . . . . . . . . . . 177 10.3.3 Вызов функции
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178 10.4 Локальные и глобальные переменные
    . . . . . . . . . . . . . . . . . . . . . . . . 179 10.4.1 Глобальные переменные
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179 10.4.2 Локальные переменные
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180 10.4.3 Сходства и различия формального параметра и локальной переменной
    183 10.5 Побочные эффекты использования подпрограмм
    . . . . . . . . . . . . . . . . . 183 10.6 Параметры подпрограммы и механизм их передачи
    . . . . . . . . . . . . . . . . 185 10.6.1 Параметры-значения
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186 10.6.2 Параметры-переменные
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188 10.6.3 Параметры-константы
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189 10.7 Процедуры и функции дальнего вызова
    . . . . . . . . . . . . . . . . . . . . . . 190 10.7.1 Численное интегрирование
    . . . . . . . . . . . . . . . . . . . . . . . . . . 193 10.7.2 Реализация численного интегрирования на языке Паскаль
    . . . . . . . 198 11 Массивы
    200 11.1 Объявление массивов
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201 11.2 Индексы массивов
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202 11.3 Тип-массив
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202 11.4 Доступ к элементам массива
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203 11.5 Инициализация массивов при описании
    . . . . . . . . . . . . . . . . . . . . . . . 205 11.6 Работа со всем массивом целиком
    . . . . . . . . . . . . . . . . . . . . . . . . . . 206 11.7 Обработка подмассивов
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207 11.8 Использование массивов в качестве параметров процедур-функций
    . . . . . . 208 11.9 Использование открытых массивов в качестве параметров
    . . . . . . . . . . . . 210 11.10 Поиск элемента в массиве
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211 11.10.1 Поиск в массиве наименьшего/наибольшего значения
    . . . . . . . . . . 211 11.10.2 Линейный поиск элемента в массиве
    . . . . . . . . . . . . . . . . . . . . 212 11.10.3 Линейный поиск элемента в упорядоченном массиве
    . . . . . . . . . . . 214 11.10.4 Двоичный поиск элемента в упорядоченном массиве
    . . . . . . . . . . . 215 11.10.5 Понятие временной сложности
    . . . . . . . . . . . . . . . . . . . . . . . 218 11.10.6 Сравнение линейного и двоичного поисков
    . . . . . . . . . . . . . . . . 219 11.11 Методы работы с одномерными массивами
    . . . . . . . . . . . . . . . . . . . . 220 11.11.1 Замена элементов массива
    . . . . . . . . . . . . . . . . . . . . . . . . . . 220 11.11.2 Перестановка элементов массива
    . . . . . . . . . . . . . . . . . . . . . . 220 11.11.3 Удаление элементов из одномерного массива
    . . . . . . . . . . . . . . . 221 5

    11.11.4 Вставка элемента в одномерный массив
    . . . . . . . . . . . . . . . . . . 223 11.12 Сортировка массива
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224 11.12.1 Сортировка выбором
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225 11.12.2 Сортировка обменом
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 227 11.12.3 Сортировка включением (простыми вставками)
    . . . . . . . . . . . . . 229 11.12.4 Слияние двух упорядоченных массивов
    . . . . . . . . . . . . . . . . . . 232 11.13 Двумерные массивы
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234 11.13.1 Описание двумерных массивов
    . . . . . . . . . . . . . . . . . . . . . . . 234 11.13.2 Размещение двумерных массивов в памяти
    . . . . . . . . . . . . . . . . 235 11.14 Обработка двумерных массивов
    . . . . . . . . . . . . . . . . . . . . . . . . . . . 237 11.14.1 Доступ к элементам 2d массива
    . . . . . . . . . . . . . . . . . . . . . . . 237 11.14.2 Инициализация массива
    . . . . . . . . . . . . . . . . . . . . . . . . . . . 238 11.14.3 Печать массива
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239 11.14.4 Суммирование элементов массива
    . . . . . . . . . . . . . . . . . . . . . 240 11.14.5 Перестановка элементов массива
    . . . . . . . . . . . . . . . . . . . . . . 241 12 Строковый тип данных
    242 12.1 Нулевая строка
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244 12.2 Некоторые операции над строками

    . . . . . . . . . . . . . . . . . . . . . . . . . 245 12.3 Строки или массивы символов?
    . . . . . . . . . . . . . . . . . . . . . . . . . . . 246 12.4 Процедуры и функции для работы с переменными строкового типа
    . . . . . . 247 12.5 Процедуры преобразования (необязательный раздел)
    . . . . . . . . . . . . . . . 248 13 Множества
    250 13.1 Операции над множествами
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251 13.1.1 Принадлежность элемента множеству
    . . . . . . . . . . . . . . . . . . . 251 13.1.2 Объединение, пересечение, разность
    . . . . . . . . . . . . . . . . . . . . 251 13.1.3 Операции отношений
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 251 13.1.4 Добавление и удаление элементов
    . . . . . . . . . . . . . . . . . . . . . . 251 13.2 Решение задач
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252 13.3 Решето Эратосфена
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254
    A Системы счисления
    255
    A.1 Позиционные с.с.
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255
    A.1.1 Развернутая запись числа
    . . . . . . . . . . . . . . . . . . . . . . . . . . 255
    A.1.2 Разряды числа
    . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256
    A.2 Системы счисления основаниями 2, 8, 16
    . . . . . . . . . . . . . . . . . . . . . . 256
    A.2.1 Восьмеричная система счисления
    . . . . . . . . . . . . . . . . . . . . . . 257
    A.2.2 Шестнадцатиричная система счисления
    . . . . . . . . . . . . . . . . . . 257 6

    A.3 Перевод чисел в десятичную систему счисления
    . . . . . . . . . . . . . . . . . . 257
    A.4 Перевод чисел из десятичной системы счисления
    . . . . . . . . . . . . . . . . . 257
    A.4.1 Правило перевода целой части числа
    . . . . . . . . . . . . . . . . . . . . 257
    A.4.2 Правило перевода дробной части числа
    . . . . . . . . . . . . . . . . . . . 258
    A.5 Перевод чисел из двоичной системы счисления
    . . . . . . . . . . . . . . . . . . 259
    A.6 Перевод чисел из 8- и 16-ричные с.с. в двоичную с.с.
    . . . . . . . . . . . . . . . 260
    A.7 Арифметические операции в позиционных системах счисления
    . . . . . . . . . 261 7

    Рекомендуемая литература
    Основная литература (по информатике и основам языков программирования)
    [1] Свердлов С. З. Языки программирования и методы трансляции. СПб.: Питер, 2007.
    [2] Могилев А. В., Пак Н. И., Хеннер Е. К. Информатика. М.: Издательский центр «Ака- демия», 2004.
    [3] Могилев А. В., Пак Н. И., Хеннер Е. К. Практикум по информатике. М.: Издательский центр «Академия», 2005.
    [4] Шелест В. Д. Программирование. СПб.: БХВ-Петербург, 2001.
    Основная литература (по языку программирования Паскаль)
    [5] Коффман Э. Б. Turbo Pascal. 5-е издание.: Пер. с англ. М.: Издательский дом «Ви- льямс», 2005.
    [6] Культин Н. Б. Основы программирования в Turbo Delphi. СПб.: БХВ-Петербург, 2007.
    [7] Немнюгин С. А. Turbo Pascal: теоретический курс. СПб.: Питер, 2002.
    [8] Немнюгин С. А. Turbo Pascal: практикум. СПб.: Питер, 2002.
    [9] Программирование на языке Паскаль: задачник / под ред. Усковой О. Ф. — СПб.:
    Питер, 2003.
    [10] Минакова Н. И., Невская Е. С., Угольницкий Г. А., Чекулаева А. А., Чердынцева М. И.
    Методы программирования. М.: Вузовская книга, 1999.
    [11] Амелина Н. И., Демяненко Я. М., Лебединская Е. Н. и др. Задачи по программирова- нию. М.: Вуз. книга, 2000.
    [12] Абрамов С. А., Зима Е. В. Начала информатики. М.: Наука, 1989.
    [13] Меженный О. А. Turbo Pascal. М.: Диалектика, 2001.
    [14] Павловская Т. А. Паскаль. Программирование на языке высокого уровня. СПб.: Питер,
    2003.
    [15] Фаронов В. В. Turbo Pascal 7.0. Начальный курс. М.: Нолидж, 2002.
    [16] Йенсен К., Вирт Н. Руководство для пользователя и описание языка. М.: Финансы и статистика, 1982.
    Дополнительная литература
    [17] Кнут Д. Искусство программирования для ЭВМ. М.: Мир, 1976. Т. 1, 2, 3.
    [18] Дал У., Дейкстра Э., Хоор К. Структурное программирование. М.: Мир, 1975.
    [19] Вирт Н. Систематическое программирование. Введение. М.: Мир, 1977.
    [20] Дейкстра Э. Дисциплина программирования. М.: Мир, 1978.
    [21] Ахо А., Хопкрофт Дж., Ульман Дж. Построение и анализ вычислительных алгорит- мов. М.: Мир, 1979.
    [22] Ахо А., Хопкрофт Дж., Ульман Дж. Структуры данных и алгоритмы. М.: Изд. дом
    ‘Вильямс’, 2003.
    [23] Говорухин В. Н., Цибулин В. Г. Компьютер в математическом исследовании. Учебный курс. СПб.: Питер, 2001.
    8

    Благодарности
    Автор выражает благодарность
    Жукову Михаилу Юрьевичу (кафедра ВМ и МФ)
    ,
    Петровской Наталье Владимировне (кафедра ВМ и МФ)
    ,
    Чекулаевой Александре Афанасьевне (кафедра ПМ и П)
    за ряд ценных идей, замечаний и интересных примеров.
    9

    Глава 1
    Введение
    Компьютер позволяет решать все те проблемы,
    которые до изобретения компьютера не существовали.
    1.1
    Этапы решения задачи с использованием компьютера
    В процессе решения задачи с применением компьютера пользователь проходит ряд этапов
    Отладка и решение
    ЭВМ
    Программирование
    Программа
    Алгоритмизация
    Алгоритм
    Матем. постановка
    Методы, формулы
    Реальная задача
    Способы задания
    Содержательный уровень
    Математический уровень
    Алгоритмический уровень
    Компьютерный уровень
    Рис. 1.1. Этапы решения задачи с помощью ЭВМ
    На всех этапах подготовки задачи к решению и при ее решении на ЭВМ необ- ходимо учитывать особенности работы вычислительной техники:
    — огромное быстродействие ЭВМ и абсолютную исполнительность;
    — ограничения на объемы памяти, которые могут отводиться для записи чисел,
    переменных и т. п.;
    10

    — отсутствие у ЭВМ интуиции и чувства здравого смысла;
    — способность ЭВМ решать только ту задачу, программу решения которой ей подготовил человек.
    Рассмотрим последовательность прохождения этапов на примере решения про- стой задачи.
    Содержательный уровень — формулируются условия задачи (концепту- альная модель)
    , например, в словесной форме: функция f (x) должна получить значение, равное единице, если переменная больше нуля, и нуль, если перемен- ная принимает другие значения.
    Для уяснения содержания задачи мож- но представить ее в графическом виде —
    отложить на числовой оси точку нуль и от- метить значения переменной x, при кото- рых функция f (x) принимает значения 0
    или 1.
    0
    f
    (x) = 0
    f
    (x) = 1
    Рис. 1.2. Графическое представление
    Математический уровень — производится математическая постановка за- дачи (математическая модель, см. также п.
    1.2
    на стр.
    15
    )
    :
    — определяются исходные данные и их типы. В нашем случае к исходным дан- ным относится переменная x, которая может принимать целые и вещественные значения. В качестве типа для переменной выбираем вещественный, поскольку данный тип включает в себя и целые значения тоже;
    — решение задачи описывается в виде аналитических зависимостей. Для нашей задачи f (x) =
    1, при x > 0;
    0, при x
    0.
    — определяются конечные (выводимые) данные и их типы. В нашем случае конечными данными (результатом решения) является значения функции f (x)
    целого типа.
    Алгоритмический уровень — осуществляется разработка алгоритма
    В информатике слово алгоритм обычно означает записанную на определенном языке конечную последовательность инструкций. Инструкции предназначены так называемому исполнителю — им может быть, например, ЭВМ, механиче- ское устройство или человек. Получая инструкцию, исполнитель производит соответствующее действие (если, конечно, он в состоянии это действие выпол-
    11
    нить). Таким образом алгоритм управляет работой исполнителя с целью полу- чения результата — решения поставленной задачи.
    Разработка алгоритма начинается, когда метод решения задачи уже выбран.
    К настоящему времени разработано большое количество методов решения ти- повых (то есть, часто возникающих) задач из различных отраслей математи- ки — математического анализа, алгебры, геометрии, теории дифференциаль- ных уравнений, математической физики и т.д. Эти методы легли в основу раз- нообразных пакетов прикладных программ, с помощью которых большое ко- личество стандартных математических задач может быть решено вообще или почти без применения программирования.
    Пакет прикладных программ (ППП, Software package)
    — это комплекс взаимосвязанных программ для решения круга задач по определенной тематике или предмету.
    Maple — система компьютерной алгебры (Waterloo Maple Inc.). Предназначена для сим- вольных вычислений, хотя имеет ряд средств и для численного решения дифференциальных уравнений и нахождения интегралов. Maple обладает развитыми графическими средствами.
    Internet http://www.maplesoft.com/
    Имеет собственный язык программирования.
    F := proc(n) local s,t,i,tmp;
    if n=0 then return 0 end if;
    (s,t) := (1,1);
    for i from 2 to n do tmp := s+t; s := t; t := tmp;
    end do;
    return s;
    end:
    Mathematica — система компьютерной алгебры (Wolfram Research). Содержит множество функций как для аналитических преобразований, так и для численных расчётов. Програм- ма поддерживает работу с графикой и звуком (в том числе импорт и экспорт), позволяет строить включая 2D и 3D графики функций.
    12

    Internet http://www.wolfram.com/
    MATLAB (сокращение от англ. «Matrix Laboratory»)
    — ППП для решения задач технических вычислений; язык программирования, используе- мый в пакете MatLab. MATLAB используют более 1 000 000 инженерных и научных работ- ников.
    Internet http://www.mathworks.com/
    Существует разные способы записи алгоритмов, например, алгоритмы могут быть записаны в словесной форме (псевдокод) или в графической форме (блок- схема).
    Разработка алгоритма тесно связана с выбором исполнителя алгоритма. Когда метод решения задачи выбран, его нужно представить в виде конечной по- следовательности отдельных инструкций исполнителю. При этом каждая ин- струкция должна однозначно соответствовать некоторому действию из набора тех действий, которые есть в арсенале данного исполнителя. Чтобы исполни- тель мог распознать инструкции и выполнить соответствующие действия, они должны быть записаны на некотором специальном языке.
    Если исполнитель алгоритма — ЭВМ, то для записи алгоритма можно исполь- зовать один из языков программирования (алгоритмических языков) — на- пример, Паскаль. Алгоритм решения задачи, записанный на некотором языке программирования, называют программой.
    13

    Компьютерный уровень — алгоритм переводится в программу
    , записан- ную на языке высокого уровня
    1
    . На последнем этапе программа вводится в память компьютера, осуществляется ее отладка и решение
    Отсутствие синтаксических ошибок в программе не дает гарантии ее правиль- ной работы. Ошибки могут быть внесены на стадии разработки алгоритма ре- шения задачи (алгоритмические ошибки), или на стадии записи алгоритма на языке программирования, если программист использует конструкции языка,
    смысл которых не соответствует смыслу разработанного алгоритма (семанти- ческие ошибки). Выявить и исправить такие ошибки помогает тестирование программы, то есть, исполнение программы с различными наборами началь- ных данных, для которых результат работы известен полностью или частично.
    Последний этап решения задачи на ЭВМ — запуск отлаженной программы на исполнение и получение результатов. Начинающие программисты не подо- зревают, какие проблемы могут при этом встретиться. Даже если выбранный алгоритм предполагает получение точных решений задачи после выполнения конечного числа действий, результатом работы программы, как правило, яв- ляются приближенные значения решений. Дело в том, что любой компьютер способен выполнять действия лишь с конечным подмножеством множества ра- циональных чисел.
    Приведем процентное отношение времени, затрачиваемого пользователем на выполнение каждого из этапов при решении задачи с помощью ЭВМ (на вы- полнение всех этапов положим 100%)
    Отладка и решение
    60%
    Программирование
    10%
    Алгоритмизация
    20%
    Матем. постановка
    5%
    Реальная задача
    5%
    Рис. 1.3.
    1
    Чем выше уровень программиста, тем ниже уровень, на котором он программирует.
    14

    1.2
    Математическая модель (продолжение)
    Математическая модель объекта
    — приближенное описание какого- либо класса явлений внешнего мира, выраженное с помощью математиче- ской символики.
    Исследование возникающих математических задач может дать новую инфор- мацию об изучаемом объекте.
    Решение задачи начинается с точной математической постановки.
    f (x) = 0.
    ?

      1   2   3   4   5   6   7   8   9
    написать администратору сайта