Основы программирования — Осенний семестр; Михалкович С.С.; 2008; I

Материал из Вики ИТ мехмата ЮФУ
Версия от 12:21, 13 декабря 2008; Admin (обсуждение | вклад) (Новая: ==Лекция 1 (2.09.08)== Алгоритм Свойства А.: дискретность, элементарность действий, определенность действи...)

(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

Лекция 1 (2.09.08)

Алгоритм

Свойства А.:

дискретность, элементарность действий, определенность действий, конечность,результативность, массовость.

Исполнитель А. Процессор как исполнитель машинных кодов.

Спецификация задачи как точное, однозначное описание. Включает входные и выходные данные.

Пр. Дано: x,y,z. Найти max

А.1. (словесное описание). Если x>y и x>z, то максимум - это x ...

А.2. (псевдокод). max := x Если y<max то max := y Если z<max то max := z

Эквивалентность А. Способы описания А.:

   * словесный
   * псевдокод
   * блок-схемы
   * диаграммы деятельности (activity diagram) UML
   * язык программирования (ЯП)

Команды А. = операторы Я.

Компилятор как преобразователь программы на ЯП в машинные коды. Программа нахождения S и C круга на Паскале

(по Шпаргалке) Общие правила записи программ на Паскале

Оформление, комментарии PascalABC.NET

Как скачать, инсталлировать

Лекция 2 (3.09.08)

Синтаксис и семантика ЯП Способы описания синтаксиса:

  1. БНФ (1960, Алгол-60). Примеры: <идентификатор> ::= <буква> | <идентификатор><буква> | <идентификатор><цифра>
     Понятие терминалов (лексем), нетерминалов
  2. РБНФ. [] - 0 или 1 повторение. {} - 0 и более повторений
     <идентификатор> ::= <буква> {<буква> | <цифра>}
  3. Синтаксические диаграммы (Вирт, Паскаль) 

Способы 1-3 эквивалентны

Синтаксис определяет лексемы языка Лексемы Паскаля

  1. спецсимволы: := += = , ;
  2. ключевые слова
  3. идентификаторы
  4. константы
  5. комментарии (3 вида) 

Обзор современных ЯП

(самостоятельно на форуме) Переменные и их описание

(синтаксис в виде БНФ: <программа>, <раздел описаний>)

Внутриблочные описания (синтаксис на дом)

Типы: integer, real, char, string, boolean Основные операторы, их синтаксис и семантика Оператор присваивания :=

Синтаксис: <переменная> := <выражение>

Примеры: d := d + 1; d := d * 2;

Семанитика: тип выражения д.б. совместим по := с переменной (если типы одинаковые, то совместим) Операторы присваивания += и *=

Примеры: d += 1; d *= 2;

Лекция 3 (10.09.08)

Примеры использования := :

   * перемена местами двух значений
   * использование промежуточных переменных в вычислениях (x16, x15) 

Оператор ввода

Обработка ошибок ввода Оператор вывода

Вывод по формату :a и :a:b

Вывод с помощью writelnFormat Условный оператор

Синтаксис, семантика

Примеры

  1. Поиск min(a,b)
  2. Упорядочение a,b по возрастанию. Необходимость составного оператора. Синтаксис, семантика
  3. Вычисление функции по нескольким взаимоисключающим веткам и цепочечные if
  4. Найти среднее среди a,b,c (a,b,c попарно не равны)

Самостоятельно

  1. Даны координаты вершин треугольника и точка M. Принадлежит ли M треугольнику
  2. Является ли 4-угольник ABCD корректно заданным

Лекция 4 (16.09.08)

Арифметические выражения Операции div и mod. x div y = x/y, округленное до ближайшего целого, x mod y = x - (x div y)*y. Примеры использования.

Порядок действий в арифметических выражениях

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

Стандартные функции. Вычисление степени x^y. Логические выражения

Операции and, or, not, xor. Таблицы истинности.

Сокращенное использование логических выражений

Таблица приоритетов операций

  1. унарные
  2. * . div mod and shl shr
  3. + - or xor
  4. in отношения

Логические переменные. Пример с определением того, лежит ли точка на границе прямоугольника

Побитовые and, or, xor.

Операции shl, shr Оператор case выбора варианта

Синтакстис, семантика

Примеры

  1. День недели
  2. цифра или буква

{tab=Лекция 5}

Лекция 5 (17.09.08)

Циклы с предусловием (while) и постусловием (repeat)

Заголовок, тело, итерации

Синтаксис и семантика

Отличия

Примеры

  1. Факториал
  2. Сумма четных двузначных

Моделирование repeat с помощью while

Моделирование while с помощью repeat

Зацикливание Оператор цикла с параметром (for)

Синтаксис, семантика: моделирование for с помощью while, ограничения

Примеры

  1. Факториал
  2. Сумма четных двузначных

Примеры использования циклов

  1. Табулирование функции. использование for и while

Погрешность округления вещественных чисел и вычислительная погрешность.

Лекция 6 (24.09.08)

Поиск минимального среди введенных.

Рекуррентные последовательности.

Числа Фибоначчи.

Суммирование рядов (конечных и бесконечных).

Алгоритм Евклида нахождения НОД.

Разложение целого числа на простые множители.

Лекция 7 (30.09.08)

Поиск заданного значения среди введенных.

Операторы break и continue. Как обойтись без них.

Схема Горнера.

Поиск нуля функции на отрезке.

Лекция 8 (01.10.08)

Вложенные циклы. Метод окаймления и метод последовательной детализации.

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

Вспомогательные алгоритмы и их параметры. Подпрограммы. Мотивировка введения подпрограмм.

Процедуры. Пример вычисления среднего арифметического и среднего геометрического.

Лекция 9 (8.10.08)

Синтаксис описания процедуры. Синтаксис вызова процедуры.

Входно-выходные параметры. Процедура Swap.

Формальные и фактические параметры. Семантические правила при вызове.

Функции. Синтаксис. Вызов функции. Переменная Result.

Примеры: Sign, ReadInteger и т.п., SumN.

Сравнение с процедурами на примере Sign.

Нежелательность var-параметров в функциях.

Стандартные подпрограммы с передачей по ссылке: readln, Inc, Dec.

Локальные и глобальные переменные.

Инициализация глобальных и локальных переменных значениями по умолчанию.

Понятие пространства имен.

Глобальные переменные и побочный эффект.

Лекция 10 (14.10.08)

Понятие области видимости и времени жизни объекта.

Изменение глобальной переменной как побочный эффект. Нежелательность такого изменения. При необходимости изменения глобальной переменной - передать ее как параметр.

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

Понятие ссылки как другого имени объекта. Внутренний механизм передачи параметра по ссылке.

Перегрузка имен подпрограмм (на примере swap).