Федеральное агентство по рыболовству

Вид материалаОсновная образовательная программа
Аннотация к рабочей программе дисциплины «Основы алгоритмизации»
2. Требования к уровню освоения содержания дисциплины
3. Содержание дисциплины. Основные разделы.
Подобный материал:
1   ...   17   18   19   20   21   22   23   24   ...   39

Аннотация к рабочей программе дисциплины «Основы алгоритмизации»


1. Цели и задачи дисциплины

Дисциплина “Основы алгоритмизации” позволяет выровнять уровень подготовки студентов по программированию и научить “свободно владеть” языком программирования как “средством выражения” алгоритмов применительно к традиционному кругу задач - арифметико-логическим, сортировки и поиска, приближенным вычислений, обработки текста.

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

Цель дисциплины состоит в изучении методов алгоритмизации, основ программирования на алгоритмических языках высокого уровня и в использовании полученных навыков при решении инженерных задач.

Задачи курса:
    • формирование базовых знаний по алгоритмизации и программированию - о стиле написания программ, о рациональные методах их разработки и оптимизации, о стратегии отладки и тестирования программ;
    • получение базового уровня по программированию на языке Си с использованием простых типов данных: базовых типов данных и массивов;
    • изучение структур данных в памяти и в файлах и алгоритмов работы с ними с использованием языка Си;
    • знакомство с основными принципами организации хранения и поиска данных, алгоритмами сортировки и поиска;
    • приобретение навыков использования базового набора фрагментов и алгоритмов в процессе разработки программ, навыков анализа и “чтения” программ;
    • изучение основ технологии программирования и методов решения вычислительных задач и задач обработки символьных данных;
    • формирование уровня знания языка, позволяющего свободно оперировать типами данных и переменными произвольной сложности и модульными алгоритмами их обработки.


2. Требования к уровню освоения содержания дисциплины.

Процесс изучения дисциплины направлен на формирование у обучаемого следующих компетенций:
  • использует основные законы естественнонаучных дисциплин в профессиональной деятельности, применяет методы математического анализа и моделирования, теоретического и экспериментального исследования (ОК-10);
  • разрабатывать компоненты программных комплексов и баз данных, использовать современные инструментальные средства и технологии программирования (ПК-5);

В результате изучения дисциплины студент должен:

должен иметь представление:

         о структуре программного обеспечения, о видах и областях применения основных программных средств;

         об основных этапах решения задач на ЭВМ, о жизненном цикле программы, о критериях качества программы, о понятии диалоговых и дружественных пользователю программ;

         об общих принципах построения, описания, способах записи и основах доказательства правильности алгоритмов (верификации алгоритмов);

         об общей классификации современных языков программирования, их областях применения и использования;

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

         о представлении основных структур программирования: итерация, ветвление, повторение, процедуры и функции; о программирование рекурсивных алгоритмов;

         о файлах и об основных видах динамических структур данных и способах их реализации;

         о способах конструирования программ и о понятии модульных программ;

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

должен знать:

         современные методы и средства разработки алгоритмов и программ на языке Си;

         синтаксис и семантику основных конструкций языка Си;

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

         особенности работы с файлами в языке Си;

         особенности технологии разработки программ сложной структуры на языке Си;

должен уметь:

         принимать участие во всех фазах проектирования, разработки, изготовления, отладки и документирования программ;

         разрабатывать модульные программы на Си с использованием базовых типов данных и массивов и сложных иерархических типов данных и переменных;

         разрабатывать собственные программы с использованием стандартных фрагментов алгоритмов;

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

         применять динамическую память при обработке данных заранее неизвестного объема и размерности,

должен получить навыки:

         разработки программ, использующих данные в произвольном формате, а также использующих массивы указателей и списки для хранения, упорядочения и поиска данных;

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

         использования некоторых алгоритмов прикладной теории графов, целочисленного линейного программирования, теории расписания и защиты данных, алгоритмов сжатия информации;

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


3. Содержание дисциплины. Основные разделы.

Стандартные типы данных. Байт; машинное слово; представление отрицательных чисел, дополнительный код; типы данных целых чисел; числа с плавающей точкой; представление символьных данных; массив как производный тип данных.

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

Представление основных структур программирования: итерация, ветвление, повторение; процедуры.

Операторы и управляющие конструкции языка Си. Операторы простой последовательности действий; условные операторы; операторы цикла; принцип вложенности; операторы перехода.

Функции языка Си и структура программы. Определение функции; способ передачи параметров; главная функция; глобальные (внешние) переменные; инициализация; области действия функций; определение и объявление. Препроцессор; трансляция и ее фазы; модульное программирование, компоновка.

Обзор лексики, синтаксиса и семантики языка Си. Лексический и синтаксический анализ. Семантический анализ частей программы. Словесные формулировки и их формальное написание. Примеры: проанализируйте смысл фрагментов.

Технология структурного программирования, примеры. Структурное программирование; модульное проектирование; нисходящее пошаговое структурное проектирование.

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

Алгоритмы для работы с текстовыми данными. Стандартная библиотека ввода-вывода; ввод-вывод целых чисел; ввод целого числа; вывод двоичного числа; представление текста; упорядоченные строки. Алгоритмы работы со строками: контекстная замена; форматирование строки.

Моделирование стека и очереди при помощи массивов. Моделирование стека, основные операции работы с ним. Моделирование очереди, основные операции работы с ней.

Алгоритмы сортировки и слияния на примере массивов. Обменные сортировки; сортировки разделением; сортировки подсчетом; сортировки выбором; сортировки вставками; сортировки слиянием.

Алгоритмы поиска и выбора значений из массивов. Постановка задач поиска и выбора, линейный и бинарный поиск.

Указатели и адресная арифметика, работа с указателями. Указатель как средство доступа к данным; указатель как элемент архитектуры компьютера; работа с указателем; философский смысл указателя; адресная арифметика, указатель как адрес памяти; указатели и массивы; указатели как формальные параметры; указатель - результат функции; операции над указателями; границы памяти, адресуемой указателем; строки, массивы символов и указатели char*

Типы данных, определяемые пользователем. Структуры и объединения, производные типы данных. Структуры; указатель на структуру, операция "->"; указатель на структуру - формальный параметр; указатель на структуру -результат функции; объединения; битовые поля. иерархия и конструирование типов данных; контекстное определение типов данных в Си; абстрактные типы данных; определение типа данных - спецификатор typedef.

Динамические структуры данных. Динамические переменные и массивы. Присваивание указателей различного типа; явное преобразование типа указателя "на лету"; работа с памятью "на низком уровне"; указатель типа void*; работа с последовательностью данных переменного формата (на основе алгоритм упаковки-распаковки разреженного массива); указатели и многомерные массивы. Работа с динамической памятью; динамические массивы; проблемы размерности данных.

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

Алгоритмы, использующие поразрядные операции. Поразрядные операции: операция "или"; операция "и"; операция "инверсия"; операция "исключающее или"; операция "сдвиг влево"; операция "сдвиг вправо". Примеры использования поразрядных логических операций.

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

Массив указателей как структура данных. Формирование массивов указателей; работа с массивом указателей; многоуровневые указатели; динамические массивы указателей переменной размерности; массивы указателей на строки; многоуровневые массивы указателей на строки.

Односвязные и двусвязные линейные списки, очереди, стеки. Списки как динамические структуры данных; работа со списками; способы формирования списков; односвязные списки; представление очереди и стека односвязным списком; двусвязные списки; проблема концов списка и циклические списки.

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

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

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

Обзор достоинств и недостатков различных структур данных. Сравнение различных структур данных с точки зрения возможности хранения упорядоченного множества переменных, включения, исключения и ускоренного поиска: иерархические структуры данных; структуры данных с элементами произвольных типов; структуры переменной размерности.

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