Вводная лекция

Основные определения

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

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

Дискретность: алгоритм состоит из простых операций, которые можно выполнить за конечное время.
Определенность: каждый шаг алгоритма должен быть ясно и однозначно определен состоянием системы
Понятность: алгоритм должен включать только те команды, которые доступны исполнителю и входят в его систему команд
Конечность: алгоритм должен завершиться за конечное число шагов
Массовость (универсальность): алгоритм должен быть применим к разным наборам начальных данных
Результативность: завершение алгоритма определёнными результатами.

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

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

Язык "Си"

Создан Деннисом Ритчи в 1972 году в ходе работ над операционной системой UNIX. Си - алгоритмический язык «не очень высокого уровня». Он дает возможность работать с такими типами данных и операциями, которые традиционно относят к языкам «низкого уровня» и в то же время предоставляет часть средств и методов, свойственных языкам высокого уровня.

Язык Си относится к числу компилируемых языков программирования. Это означает, что подготовка к выполнению Си-программы включает в себя следующие этапы:

  1. ввод исходного текста программы в файл с расширением «.С» при помощи какого-либо редактора текстов;
  2. компиляция программы, т.е. преобразование ее описания на входном языке в семантический эквивалент на машинном языке, называемый объектным модулем (файл с расширением «.OBJ»);
  3. построение готового к выполнению загрузочного модуля из объектных модулей, включая модули из внешних библиотек (файл с расширением «.EXE»).

Основные свойства языка Си:

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

Любая программа на языке Си включает в себя:

  1. Алфавит:
    • большие буквы латинского алфавита:
      A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
    • малые буквы латинского алфавита:
      a b c d e f g h i j k l m n o p q r s t u v w x y z
    • десятичные цифры:
      0 1 2 3 4 5 6 7 8 9
    • специальные символы:
      пробел ! « # % & ' ( ) * + , - . / : ; < = > ? [ \ ] ^ _ | ~
  2. Имена объектов программы (идентификаторы):
    Идентификаторами в языке Си являются последовательности букв и цифр, начинающиеся с буквы, причем символ подчеркивания (_) рассматривается компилятором как буква.
    Большие и малые буквы латинского алфавита считаются различными.
    Идентификаторы служат именами переменных, констант, функций, типов данных.
  3. Ключевые слова:
    Ключевые слова - это предопределенные идентификаторы, имеющие специальные значения. Имена никаких объектов программы не должны совпадать c зарезервированными ключевыми словами:
    - типы данных: char float short typedef void double int signed union enum long struct unsigned
    - классы памяти: auto extern register static
    - операторы: break default for return while case do goto sizeof continue else if switch
    - специальные: const far huge pascal cdecl fortran near volatile
  4. Комментарии:
    Под комментариями понимаются последовательности символов, игнорируемые компилятором. Комментарии имеют следующую форму:
    /* текст */
    или
    // текст
    где текст - это произвольная комбинация любых печатаемых символов.
  5. Константы:
    Константы - числа (целые и вещественные), символы и строки символов, которые допустимо использовать в программе в смысле их значений.
    Значение никакой константы не может быть изменено в процессе работы программы. Специальные директивы языка дают возможность присваивать константам любого типа символические имена.
  6. Операции:
    Операции - действия, выполняемые программой над определенными в ней объектами.
    Объекты программы, участвующие в операции, называются операндами.
    Комбинация одного или большего числа операндов и символов операций, дающая единственное значение, образует выражение.
  7. Операторы (инструкции):
    Простейшим оператором языка Си является всякое выражение, заканчивающееся точкой с запятой.
    Наиболее значительную группу операторов образуют операторы управления процессом выполнения программы:
    - условный оператор и переключатель;
    - операторы циклов;
    - операторы передачи управления.
  8. Множество всех операций языка можно разделить на восемь групп:

    • арифметические операции (+ - * / % ++ --)
    • операции отношения (== != < > <= >=)
    • логические операции (! || &&)
    • побитовые операции (~ << >> & | ^)
    • операции присваивания (= += -= *= /= %= <<= >>= &= ^= |=)
    • операции над массивами ([])
    • операции над структурами и объединениями (. ->)
    • другие операции (? : , sizeof (тип), ())