- •Оглавление
- •1.2. Свойства языков программирования
- •1.3. Основные парадигмы программирования Процедурное программирование
- •Модульное программирование
- •Абстракция данных
- •Объектно-ориентированное программирование
- •Непечатные символы
- •Тема 2 Типы данных
- •2.1. Понятие переменной и объявление переменных
- •Объявление переменных
- •Встроенные типы данных
- •Размер памяти, выделяемой под встроенные типы данных
- •2.2. Константы и перечисления Константные переменные
- •Перечисления
- •2.3. Операции и выражения
- •Мультипликативные операции
- •Операции сравнения
- •Побитовые логические операции
- •Побитовые операции
- •Комментарии
- •Оператор while(пока)
- •Оператор do/while(выполнять/пока)
- •Оператор for(цикл)
- •Оператор множественного выбора switch
- •Операторы breakиcontinue
- •Тема 4 Массивы
- •4.1.Определение, объявление и инициализация массивов
- •Объявления и инициализация массивов в программе
- •4.2. Сортировка массивов Пузырьковая сортировка
- •Сортировка вставками
- •4.3. Поиск в массивах Линейный поиск
- •Двоичный поиск
- •4.4. Многомерные массивы
- •Тема 5 Указатели Объявления и инициализация переменных указателей
- •5.1. Операции над указателями
- •5.2. Выражения и арифметические действия с указателями
- •5.3. Взаимосвязи между указателями и массивами
- •5.4. Массивы указателей
- •5.5. Динамическое выделение памяти под массивы
- •Тема 6 Функции
- •6.2. Определения функций
- •Генерация случайных чисел
- •6.3. Классы памяти и область действия Классы памяти
- •Область действия
- •6.4. Рекурсия
- •6.5. Ссылки и ссылочные параметры
- •Вызов функций по ссылке с аргументами указателями
- •6.6. Использование спецификатораconstс указателями
- •6.7. Перегрузка функций
- •Аргументы по умолчанию
- •6.8. Передача массивов в функции
- •6.9. Указатель на функцию
- •6.10. Командная строка аргументов
- •6.11 Неопределенное количество аргументов
- •Тема 7 Введение в обработку строк
- •7.1. Работа со строками в с
- •Понятие символов и строк в с
- •Функции для работы со строками
- •Определение длины строки
- •Сложение двух строк (конкатенация)
- •Добавление к исходной строке указанного количества символов.
- •Копирование строки в другую строку
- •Сравнение строк
- •Получение строки от пользователя
- •Тема 8 Работа с файлами
- •Открытие файла
- •Чтение из файла символа или строки символов
- •Запись символа или строки символов в файл
- •Смещение внутри файла
- •Значения параметра fromwhereфункцииfseek
- •Закрытие файла
- •Тема 9 Компоновка программ и препроцессор
- •9.1. Компоновка программ
- •Проблема использования общих функций и имен
- •Использование включаемых файлов
- •9.2. Препроцессор
- •Определение макросов
- •Условная компиляция
- •Дополнительные директивы препроцессора
- •Тема 10 Структуры
- •10.1. Определение структур и доступ к элементам
- •Доступ к элементам структур
- •Использование структур
- •10.2. Битовые поля
- •10.3. Объединения
- •10.4. Построение связных списков на основе структур с самоадресацией
- •Создание простого связного списка
- •Очереди
- •Деревья
- •Список рекомендуемой литературы
1.2. Свойства языков программирования
Понятность (удобочитаемость) конструкций языка– это свойство, обеспечивающее легкость восприятия программ человеком [15]. Это свойство языка зависит от целого ряда факторов, начиная с выбора ключевых слов и заканчивая возможностью построения модульных программ. Понятность конструкций языка также зависит от выбора такой нотации, которая позволяла бы при чтении текста программы легко выделять основные понятия каждой конкретной части программы, не обращаясь ни к какой другой документации на программу. Реализация требования понятности во многом зависит от программиста.
Надежность– степень автоматического обнаружения ошибок, которое может быть выполнено транслятором или операционной средой, в которой работает программа. Надежный язык позволяет выявить большинство ошибок во время трансляции программы, а не во время ее выполнения. Принципиальным средством достижения высокой надежности языка, поддерживаемым на этапе трансляции, является система типизации данных.
Гибкость– сколько возможностей язык предоставляет программисту для выражения всех операций, которые требуются в программе, не прибегая к вставкам ассемблерного кода или другим ухищрениям. Требование гибкости конфликтует с требованием надежности, поэтому необходимо понимать, на какие компромиссы приходится идти при решении каждой конкретной задачи.
Простота – легкость понимания семантики языковых конструкций и запоминания их синтаксиса. Простой язык предоставляет ясный, простой и единообразный набор понятий, которые могут быть использованы в качестве базовых при разработке алгоритмов. При этом желательно иметь минимальное количество различных понятий с как можно более простыми и систематизированными правилами их комбинирования – язык должен обладать свойствомконцептуальной целостности. Концептуальная целостность включает в себя три взаимосвязанных аспекта: экономию, ортогональность и единообразие понятий. Экономия – использование минимального числа понятий. Ортогональность – между понятиями нет взаимного влияния (любые языковые конструкции можно комбинировать по определенным правилам). Единообразие понятий – согласованный, единый подход к описанию и использованию всех понятий.
Естественность – язык должен содержать такие структуры данных, управляющие структуры и операции, а также иметь такой синтаксис, которые позволяли бы отражать в программе логические структуры, лежащие в основе реализуемого алгоритма.
Мобильность – возможность переносить программы с одной платформы на другую с относительной легкостью. На мобильность в значительной степени влияет уровень стандартизации языка. Для языков, имеющих стандартное определение (Ada,Pascal,C) все реализации языка должны основываться на этом стандарте.
Стоимость – суммарная стоимость использования языка программирования складывается из нескольких составляющих: стоимости обучения языку, стоимости создания программы, стоимости трансляции программы, стоимости выполнения программы, стоимости сопровождения программы.