
- •Цели программирования.
- •Уровни языков программирования. Языки ассемблера (история возникновения, отличительные особенности, пример языков).
- •Уровни языков программирования. Языки высокого уровня (история возникновения, отличительные особенности, пример языков).
- •Методы реализации программ. Компиляция (схема получения результата из исходного кода, преимущества и недостатки, сравнительная таблица).
- •Методы реализации программ. Интерпретация (схема получения результата из исходного кода, преимущества и недостатки, сравнительная таблица).
- •Методы реализации программ. Смешанная реализация (схема получения результата из исходного кода, преимущества и недостатки, сравнительная таблица).
- •Методы реализации программ. Трансляция (схема получения результата из исходного кода, преимущества и недостатки, сравнительная таблица).
- •Жизненный цикл программного продукта.
- •Этапы решения задач на эвм.
- •Критерии качества программ.
- •Способы записи алгоритма. Блок-схемы.
- •Способы записи алгоритма. Псевдокод.
- •Способы записи алгоритма. Сравнение различных подходов. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- •Высоконадежная память:
- •Принципы типизации данных.
- •Иерархия простых типов данных.
- •Стандартные типы данных. Таблица характеристик. Особенности выбора типа
- •Правила приведения типов.
- •Оператор sizeof.
- •Константы. Специальные символы. Квалификатор const.
- •Область видимости переменных.
- •Операторы управления областью видимости.!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
- •Понятие ассоциативности, приоритета, размерности. Таблица приоритета операций.
- •Арифметические операции.
- •Логические операции (краткая схема вычислений).
- •Побитовые операции (таблицы истинности).
- •Структурное программирование: историческая справка.
- •Принципы структурного программирования.
- •Структурное программирование: три базовые конструкции.
- •Основные операторы.
- •Пустой оператор.
- •Оператор присваивания (синтаксис, логика работы, полная и сокращённая форма, порядок выполнения, контекст вычисления, пример).
- •Условный оператор (полная и краткая формы, неоднозначность условного оператора).
- •Составной оператор (синтаксис, логика работы, пример).
- •Неоднозначность условного оператора.
- •Связь между несколькими условными операторами и сложными логическими выражениями.
- •Оператор выбора (синтаксис, логика работы, пример).
- •Ссылки (понятие, способы применения).
- •Подпрограммы (синтаксис, виды подпрограмм, контекст, пример).
- •Оператор return.
- •Прототипы функций (понятие, назначение, способы применения).
- •Библиотеки функций. Оператор #include.
- •Создание пользовательских библиотек.
- •Способы передачи параметров в функции.
- •Способы передачи значения из одной функции в другую.
- •Рекурсия (понятие, правила написания рекурсивных подпрограмм, прямая и обратная и косвенная рекурсии).
- •Параметры по-умолчанию.
- •Перегрузка функций.
- •Перегрузка операторов.
- •Шаблоны функций.
- •Разрешение неоднозначностей при вызове функций.
- •Одномерные массивы (объявление, индексация, хранение в памяти, сортировка). Пример: поиск второго наибольшего по величине значения в массиве.
- •Типовые алгоритмы обработки массивов.
- •77. Указатели (назначение, синтаксис, операции).
- •78. Различие между указателями и ссылками.
- •79. Динамическая память (выделение и освобождение памяти под переменные, одномерные массивы, двумерные массивы).
- •80. Тип данных «массив массивов».
- •81. Представление строк в языках программирования. Достоинства и недостатки различных представлений (отличие ‘a’ от “a”).
- •82. Основные алгоритмы обработки строк.
- •Функции классификации Функции преобразования
- •85. Файлы (понятие, текстовые и двоичные файлы, структурированные и неструктурированные, операции, основные библиотеки для работы с файлами).
- •86. Потоковый ввод-вывод. Библиотека потокового ввода-вывода.
- •88. Файловый ввод-вывод. Стандартная библиотека ввода-вывода.,
- •90. Типовые алгоритмы обработки файлов.
- •92. Создание простых бд с помощью массива структур.
- •93. Списки (определение, типовые операции, использование).
- •94. Создание простых бд с помощью списков.
Способы записи алгоритма. Блок-схемы.
Любая команда алгоритма записывается в блок-схеме в виде графического элемента -блока, и дополняется словестным описанием. Блоки в блок-схемах соединяются линиями потока информации. Направление потока информации указывается стрелкой. В случае потока информации сверху вниз и слева направо стрелку ставить не обязательно. Блоки в блок-схеме имеют только один вход и один выход (за исключением логического блока).
Элемент блок-схемы |
Наименование |
Содержание |
|
Блок вычислений (вычислительный блок) |
Вычислительные действия или последовательность действий |
|
Логический блок (блок условия) |
Выбор направления выполнения алгоритма в зависимости от некоторого условия |
|
Блок ввода-вывода данных |
Общее обозначения ввода (вывода) данных (вне зависимости от физического носителя) |
|
Начало (конец) |
Начало или конец алгоритма, вход или выход в подпрограмме |
|
Процесс пользователя (подпрограмма) |
Вычисление по стандартной программе или подпрограмме |
|
Блок модификации |
Функция выполняет действия, изменяющие пункты (например, заголовок цикла) алгоритма |
|
Соединитель |
Указание связи прерванными линиями между потоками информации в пределах одного листа |
|
Межстраничные соединения |
Указание связи между информацией на разных листах |
Способы записи алгоритма. Псевдокод.
Псевдокод позволяет формально изображать логику алгоритма, используя стандартизированные конструкции естественного языка для изображения управления и сохраняя возможности языка для описания действий по обработке информации. Данный способ тесно связан со структурным подходом к программированию. Псевдокод занимает промежуточное положение между естественным языком и языком программирования. Его применяют преимущественно для того, чтобы подробнее объяснить работу программы, что облегчает проверку правильности программы. Кроме того, псевдокод дает программисту большую свободу в изображении алгоритма. Требуется только употреблять стандартные управляющие конструкции и правила записи.
Способы записи алгоритма. Сравнение различных подходов. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
При записи алгоритма в словесной форме, в виде блок-схемы или на псевдокоде допускается определенный произвол при изображении команд. Вместе с тем такая запись точна настолько, что позволяет человеку понять суть дела и исполнить алгоритм.
Однако на практике в качестве исполнителей алгоритмов используются специальные автоматы — компьютеры. Поэтому алгоритм, предназначенный для исполнения на компьютере, должен быть записан на «понятном» ему языке. И здесь на первый план выдвигается необходимость точной записи команд, не оставляющей места для произвольного толкования их исполнителем.
Следовательно, язык для записи алгоритмов должен быть формализован. Такой язык принято называть языком программирования, а запись алгоритма на этом языке — программой для компьютера.
Язык C++. Общие сведения и характеристика языка.
Язык C++ --это дальнейшее развитие языка программирования C. Программа на C++ состоит из переменных и описаний функций. Как правило, программы создают по модульному принципу и состоят из модулей. Этот принцип важен для написания надежных и легко модифицируемых программ. При соблюдений этих принципов модульности и скрытия информации позволяет модуля проводить модификации, не затрагивая остальных модулей и главную программу. Текст модуля разделяют на заголовочный файл интерфейса, который имеет объявления классов и функций, и файл реализаций, в котором есть описание функции. Расширение файлов реализации -- .cpp. Расширение заголовочных файлов -- .h. Как приложение написано, должен быть создан модуль (выполняемый файл). Рассмотрим процесс в несколько этапов. Чтобы преобразовать исходный файл надо препроцессор. Он осуществляет преобразования в соответствии с директивами препроцессора, которые размещаются в исходном тексте. В соответствии с этим директивами, включать отдельных тексты файлов в тексты других, развертывать макросы – сокращенные обозначения выражений и выполнять преобразования. После окончания роботы препроцессора начинает работать компилятор Задача компилятора --- перевести тексты в объектный код. В результате этого, создается вместо исходного кода .cрр создается файл с расширением .obj. После компилятора работает компоновщик, который группирует объектные файлы и загрузочный выполняемый модуль, имеющий расширение .exe. Этот модуль можно запускать на выполнение.
Язык С++ появился в начале 80-х годов. Созданный Бьерном Страуструпом с первоначальной целью избавить себя И своих друзей от программирования на ассемблере, Си или различных других языках высокого уровня. Очевидно, что больше всего С++ позаимствовал из языка Си, а таюке из непосредственного его предшественника языка ВСРЬ. Эти заимствования обеспечили С++ мощными средствами низкого уровня, позволяющие решать сложные задачи системного программирования. Но что в первую очередь отличает С++ от Си - это разная степень внимания к типам и структурам данных. Это связанно с появлением понятий класса, производного класса и виртуальной функции, перенятых в свою очередь из языка Симупа 67. Это дает в С++ более эффективные возможности для контроля типов и обеспечивает модульность программы. По мнению автора языка, различие между идеологией Си и С++ заключается примерно в следующем: программа на Си отражает "способ мышления” процессора, а | С++ - способ мышления программиста. Отвечая требованиям современного программирования, С++ делает акцент на разработке новых типов данных наиболее полно соответствующих концепциям выбранной области знаний и задачам приложения. Класс является ключевым понятием С++. Описание класса содержит описание данных, требующихся для представления объектов этого типа и набор операций для работы с подобными объектами. В отличие от традиционных структур Си и Паскаля, членами класса являются не только данные, но и функции. Функции - члены класса имеют привилегированный доступ к данным внутри объектов этого класса и обеспечивают интерфейс между этими объектами и остальной программой. При дальнейшей работе совершенно не обязательно помнить о внутренней структуре класса и механизме работы встроенных функций. В этом смысле класс подобен электрическому прибору — мало кто знает о его устройстве, но все знают, как им пользоваться. Язык С++ является средством объектного программирования, новейшей методики проектирования и реализации программ, которая в текущем десятилетии, скорее всего, заменит традиционное процедурное программирование. Главной целью создателя языка доктора Бьерна Страустрапа было оснащение языка С++ конструкциями, позволяющими увеличить производительность труда программистов и облегчить процесс овладения большими программными продуктами. Абстракция, реализация, наследование и полиморфизм являются необходимыми свойствами которыми обладает язык С++, благодаря чему он не только универсален, как и язык Си, но и является объектным языком.
Структура программы на языке C++. Пример простой программы.
Программы представлены в виде иерархических блоков, последовательно соединённых между собой
Повторяющиеся блоки программ, оформляются в виде подпрограмм
Разработка программ ведётся сверху вниз
#include <iostream>
Int main ()
{
Cout <<hello world!\n”;
Return 0;
}
В строке 1 выполняется включение файла iostream в текущий файл.
# - служит сигналом для препроцессора. При каждом запуске компилятора запускается и препроцессор. (читает строки начинаюшиеся с символа #)
Include – это команда препроцессору, которую можно расшифровать «за именем команды следует имя файла. Нужно найти этот файл и вставить его содержимое прямо в место программы»
Основной код программы начинается в 3-ей строке с вызова функции main(). В этой программа функция main() возвращает значение типа int, а это значит, что по окончанию работы эта функция возратит операционной системе целочисленное значение
Концепция памяти. Классификация архитектур памяти по требованиям к ним выглядит следующим образом: