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

  • ИСПОЛНИТЕЛИ

  • Императивное программирование

  • Декларативное программирование

  • Языки программирования

  • Вопросы для закрепления

  • вы. Лекция1 (1). Лекции Предмет курса Алгоритмизация и программирование


    Скачать 122.27 Kb.
    НазваниеЛекции Предмет курса Алгоритмизация и программирование
    Дата28.01.2021
    Размер122.27 Kb.
    Формат файлаpptx
    Имя файлаЛекция1 (1).pptx
    ТипЛекции
    #172239

    Лекция 1. Введение. Алгоритмы.

    Языки программирования. Парадигма программирования.

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

    План лекции:

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

    2. Понятие алгоритма. Свойства алгоритмов.

    3. Способы задания алгоритмов.

    4. Основные алгоритмические структуры.

    5. Языки программирования. Парадигма программирования.

    Теория алгоритмов - раздел математики, изучающий общие свойства алгоритмов. Понятие «алгоритм» сформировалось в математике в 20-х годах XX в. Началом систематической разработки теории алгоритмов можно считать 1936 г. и связывают это начало с публикацией работы А.А. Черча.

    Первый класс моделей основан на арифметизации алгоритмов.

    Алгоритм в таких моделях есть вычисление значения некоторой числовой функции, а его элементарные шаги - арифметические операции.

    Алгоритм должен быть представлен так, чтобы его могла выполнять машина.

    Одной из таких машин явилась абстрактная машина Тьюринга.

    Третий класс моделей алгоритмов очень близок к предыдущему, но не оперирует конкретными машинными механизмами. Наиболее известная алгоритмическая модель этого типа нормальные алгоритмы Маркова («слон» —> «суон» —> «муон» —> «мухн» —> «муха»).

    Алгоритм – это совокупность действий, приводящих к достижению результата за конечное число шагов.

    ЗАЧЕМ: предостерегает от увлечения глобальными прожектами всеобщей алгоритмизации. (аналог - попытка создания вечного двигателя)

    СЛОЖНОСТЬ АЛГОРИТМА

    ИСПОЛНИТЕЛИ: человек, машина.

    Система команд исполнителя.

    Свойства алгоритмов:

    Свойства алгоритмов:

    Дискретность (от лат. discretus — разделенный, прерывистый) – это разбиение алгоритма на ряд отдельных законченных действий (шагов).

    Детерминированность (от лат. determinate — определенность, точность) - любое действие алгоритма должно быть строго и недвусмысленно определено в каждом случае.

    Конечность – каждое действие в отдельности и алгоритм в целом должны иметь возможность завершения.

    Массовость – один и тот же алгоритм можно использовать с разными исходными данными.

    Результативность – алгоритм должен приводить к достоверному решению.

    • словесная (запись на естественном языке);
    • псевдокоды (полуформализованные описания алгоритмов на условном алгоритмическом языке, включающие в себя как элементы языка программирования, так и фразы естественного языка, общепринятые математические обозначения и др.);
    • графическая (изображения из графических символов – блок-схема);
    • программная (тексты на языках программирования – код программы).

    Словесный способ записи алгоритма:

    • задать два числа, являющиеся делимым и делителем;
    • проверить, равняется ли делитель нулю;
    • если делитель не равен нулю, то найти частное, записать его в ответ;
    • если делитель равен нулю, то в ответ записать "нет решения".

    Базовые управляющие структуры псевдокода

    Название структуры

    Псевдокод

    Присваивание

    переменная = число

    Ввод

    ввод(переменная)

    Вывод

    вывод(переменная)

    вывод("фраза")

    Ветвление

    если условие

    то действие1

    иначе действие2

    Повторение

    пока условие

    начало пока

    действие

    конец пока

    Псевдокод:

    начало

    вывод ("задайте делимое и делитель")

    ввод (делимое, делитель)

    если делитель ≠ 0

    то частное = делимое / делитель

    вывод(частное)

    иначе вывод("нет решения")

    кон алг Нахождение частного двух чисел

    начало и конец блок-схемы

    блок ввода (вывода) данных

    блок выполнения действия

    блок условия

    блок вывода данных

    • линейный алгоритм,
    • разветвляющийся алгоритм,
    • циклический алгоритм.

    y=sin x+

    Различают полную и неполную формы ветвления

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

    Различают цикл «пока» и цикл «до»

    Пример. Составить алгоритм вычисления значений функции y=f(x) для всех значений аргумента x на интервале [a,b] с шагом h.

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

    Языки программирования

    Языки программирования

    Поколения языков программирования


    I поколение

    Машинные языки

    II поколение

    Транслируемые языки (ассемблеры)

    III поколение

    Компилируемые языки (Fortran (1958г.), Algol (1960г.), С (1970г.) и его потомки (C++, D, Vala), Pascal (1970г.) и его потомки (Delphi, FreePascal/Lazarus))

    IV поколение

    Интерпретируемые языки (MATLAB (1978г.), Perl (1987 г.), Python (1992 г.), PHP (1995 г.), Ruby (1995 г.), Javascript (1995 г.))

    V поколение

    Языки виртуальных машин (Java, C#) (байт-коды)

    Вопросы для закрепления

    1. Что такое алгоритм?

    2. В чем состоит задача алгоритмизации?

    3. Какими свойствами обладает алгоритм?

    4. Какие виды алгоритма бывают?

    5. Что мы понимаем под парадигмой программирования? Какие парадигмы Вы знаете?

    Упражнения

    • Составьте алгоритмы по походу в магазин за яблоками. Используйте линейный и разветвляющийся алгоритмы. Реализуйте их словесно.
    • Составьте алгоритм по нахождению корней квадратного уравнения через дискриминант. Используйте разветвляющийся алгоритм. Реализуйте его псевдокодом.

    Литература

    • Васильев А.Н. С++ с задачами и примерами. Самоучитель. Санкт-Петербург, Наука и техника, 2012
    • Шилдт Г.. Самоучитель C++. - Санкт-Петербург, Изд. BHV, 2010.
    • Павловская, Т.А. С/С++. Программирование на языке высокого уровня для магистров и бакалавров [Текст]: Учебник / Т.А. Павловская; Стандарт третьего поколения. - СПб.: Питер, 2012. - 461 с.: ил. - (Учебник для вузов).
    • Павловская, Т.А. С/С++. Программирование на языке высокого уровня: Учебник / Т. А. Павловская. - СПб.: Питер, 2013. - 461 с.: ил.
    • Шевчук, Е.В. Программирование на С++ [Текст]: Учебное пособие / Е. В. Шевчук, Н. С. Кольева. - Алматы: Эверо, 2014. - 272 с.
    • Страуструп Б. Язык программирования С++. 2-е допол. Изд, М., 2005


    написать администратору сайта