Языки программирования, классификация и разработка ПО на C++
Enviado por Anónimo y clasificado en Informática
Escrito el en
ruso con un tamaño de 1,11 MB
Билет 1: Языки программирования. Классификация языков программирования. Этапы программирования.
Языки программирования:
Это формальные языки, предназначенные для описания алгоритмов и структур данных, с целью их последующего выполнения компьютером.
Классификация языков программирования:
- По уровню абстракции:
- Низкоуровневые — ассемблер, машинный код.
- Высокоуровневые — C, C++, Python, Java и др.
- По способу реализации:
- Интерпретируемые — Python, JavaScript.
- Компилируемые — C, C++.
- По парадигме программирования:
- Процедурные — C, Pascal.
- Объектно-ориентированные (ООП) — C++, Java.
- Функциональные — Haskell, Lisp.
- Логические — Prolog.
Этапы программирования:
- Процедурное программирование:
- Основа — процедуры (функции).
- Программа разбивается на подпрограммы.
- Пример: язык C.
- Модульное программирование:
- Логическое разделение программы на модули.
- Каждый модуль — самостоятельная часть.
- Повышает читаемость и повторное использование кода.
- Объектно-ориентированное программирование (ООП):
- Основные принципы: инкапсуляция, наследование, полиморфизм.
- Пример: C++, Java.
- Используются объекты и классы.
- Компонентное программирование:
- Программа строится из готовых компонентов (библиотек, модулей). Активно используется в .NET, JavaBeans.
Билет 2: Этапы создания программного обеспечения. Структурный подход к разработке алгоритмов. Процесс компиляции программы, схема. Системы программирования. Общая схема работы транслятора.
Этапы создания программного обеспечения:
- Постановка задачи.
- Анализ требований.
- Проектирование архитектуры и алгоритмов.
- Кодирование.
- Тестирование.
- Отладка.
- Сопровождение и обновление.
Структурный подход к разработке алгоритмов:
Алгоритм делится на блоки с единой входной и выходной точкой.
Используются три базовые конструкции:
- Последовательность
- Ветвление (if/else)
- Цикл (for, while)
Повышает читаемость и сопровождаемость кода.
Процесс компиляции программы:
- Предобработка — обработка директив
#include,#define. - Компиляция — преобразование кода в объектные файлы.
- Компоновка — объединение объектных файлов и библиотек в исполняемый файл.
Схема компиляции: Исходный код ➔ Предпроцессор ➔ Объектный код ➔ Компоновщик ➔ Исполняемый файл
Системы программирования:
Это совокупность программных средств для разработки программ: компиляторы, редакторы кода, отладчики, библиотеки, системы сборки и т.д.
Примеры:
GCC (GNU Compiler Collection), Visual Studio, Code::Blocks, CMake
Общая схема работы транслятора:
- Чтение и анализ исходного текста.
- Построение промежуточного представления.
- Генерация объектного кода.
- Сообщение об ошибках (синтаксических, семантических и пр.).
Билет 3: Язык программирования C++. Структура программы. Директивы препроцессора #include, #define. Примеры.
Язык C++:
C++ — это компилируемый, статически типизированный язык программирования общего назначения с поддержкой объектно-ориентированного, процедурного и обобщённого программирования.
Структура простой программы на C++:
#include <iostream> // Подключение библиотеки
#define PI 3.14159 // Макрос препроцессора
int main() { // Точка входа
std::cout << "Hello, world!" << std::endl;
return 0; // Возврат значения
}Основные элементы структуры:
- Директивы препроцессора:
#include,#define - Функция
main()— точка входа в программу. - Операторы вывода / ввода:
std::cout,std::cin - Ключевые слова:
int,return
Директива #include:
Подключает внешний файл или стандартную библиотеку:
#include <iostream>— подключает стандартный ввод/вывод.#include "myheader.h"— подключение пользовательского заголовочного файла.
Директива #define:
Определяет макрос (константу или шаблон):
#define PI 3.14
#define SQUARE(x) ((x)*(x))🔶 Важно: #define не имеет типа, просто подставляет текст до компиляции.
Пример использования:
#include <iostream>
#define GREETING "Hello"
int main() {
std::cout << GREETING << ", student!" << std::endl;
return 0;
}Билет 4: Элементы языка C++, основные понятия: алфавит, комментарии, идентификаторы, служебные слова, литералы, Escape-последовательности, операторы, знаки пунктуации.
1. Алфавит языка C++:
Состоит из:
Букв (A–Z, a–z), Цифр (0–9), Специальных символов (+, -, *, /, {}, ;, #, и т.д.), Пробелов и управляющих символов (перевод строки, табуляция)
2. Комментарии:
- Однострочные:
// это комментарий - Многострочные:
/* Это
многострочный
комментарий */3. Идентификаторы:
Имена переменных, функций, классов, и т.д.
- Могут содержать буквы, цифры, знак подчеркивания
- Не могут начинаться с цифры
- Не могут совпадать с ключевыми словами
Пример: int age; float temperature;
4. Служебные слова (ключевые слова):
Зарезервированы языком — нельзя использовать как имена переменных. Примеры:
int,float,if,else,return,class,public,void,for,while,switch
5. Литералы:
Фиксированные значения, непосредственно используемые в коде:
Числовые: 42, 3.14, Символьные: 'a', Строковые: "Hello", Булевы: true, false
6. Escape-последовательности (спецсимволы):
Начинаются с \. Используются в строках и символах.
\n— новая строка,\t— табуляция,\\— обратный слэш,\'— одинарная кавычка,\"— двойная кавычка
Пример:
std::cout << "Line1\nLine2\tTabbed";7. Операторы:
Обозначают действия над данными.
Арифметика: +, -, *, /, %; Логические: &&, ||, !; Отношения: ==, !=, <, >, <=, >=; Присваивание: =, +=, -=, *=; Унарные: ++, --
8. Знаки пунктуации:
; — завершение оператора, {} — блок кода, () — параметры функции, [] — массивы, , — разделение, : — в case, public:, private:
Билет 5: Понятие типов данных. Стандартные типы данных и операции с ними, особенности. Логические операции и логические выражения. Примеры.
📌 Понятие типа данных
Тип данных определяет:
- множество допустимых значений переменной,
- допустимые операции с этими значениями,
- объем памяти,
- поведение при вычислениях.
🧱 Стандартные типы данных в C++:
Тип | Пример значения | Размер (обычно) | Особенности |
|
| 4 байта | Целое число |
|
| 4 байта | Число с плавающей точкой |
|
| 8 байт | Повышенная точность |
|
| 1 байт | Один символ ASCII |
|
| 1 байт | Логический тип |
|
| 4 байта | Только положительные |
⚙️ Операции с типами:
- Арифметические:
+,-,*,/,% - Сравнения:
==,!=,<,>,<=,>= - Логические:
&&,||,!
💡 Особенности:
- При делении целых
intрезультат тожеint:5 / 2 ➔ 2 - Деление
float/double:5.0 / 2 ➔ 2.5 - При работе с разными типами происходит автоматическое приведение типов
🔄 Логические операции и выражения:
Операция | Описание | Пример | Результат |
| И (AND) |
|
|
| ИЛИ (OR) |
|
|
| НЕ (NOT) |
|
|
Логические выражения используются в if, while и других управляющих конструкциях.
✅ Примеры:
int a = 5, b = 10;
bool res1 = (a < b); // true
bool res2 = (a > b || a == 5); // true
bool res3 = !(a == b); // trueБилет 6: Константы и переменные. Именованные константы, перечисляемый тип. Примеры.
🧮 Переменные
Переменная — это именованная область памяти, значение которой может изменяться в процессе выполнения программы.
Пример:
int age = 25;
float height = 1.75;🧵 Константы
Константа — это значение, которое не может быть изменено после инициализации.
🔶 Способы объявления:
- Через ключевое слово
const:
const int DAYS_IN_WEEK = 7;- Через директиву препроцессора
#define:
#define PI 3.14159📌 Рекомендуется использовать const, так как он типизирован и проверяется компилятором.
🪪 Именованные константы
Это просто const-переменные с именем, которое ясно указывает на их назначение. Они повышают читаемость и упрощают сопровождение кода.
Пример:
const double GRAVITY = 9.8;📋 Перечисляемый тип (enum)
Перечисление — это способ задать набор именованных целочисленных констант.
enum Color { RED, GREEN, BLUE };- По умолчанию:
RED = 0,GREEN = 1,BLUE = 2
Можно задать значения вручную:
enum Status { OK = 200, NOT_FOUND = 404, ERROR = 500 };✅ Пример использования:
Color myColor = GREEN;
if (myColor == GREEN) {
std::cout << "Color is green" << std::endl;
}Билет 7: Выражения. Правила вычисления значения выражения и определения типа результата. Оператор присваивания. Приведение типов. Примеры.
🔢 Выражение в C++ — это комбинация операндов и операторов, которая возвращает значение.
Примеры:
int x = 3 + 4; // арифметическое выражение
bool res = x > 5; // логическое выражение📐 Тип результата выражения
- Определяется по типам операндов и правилам приведения типов.
- Если участвуют разные типы, происходит автоматическое преобразование:
int + float➔floatchar + int➔int
➕ Оператор присваивания (=)
Обновляет значение переменной.
Общий вид:
переменная = выражение;Примеры:
int a;
a = 5; // простое присваивание
a = a + 2; // выражение с присваиванием🔄 Сокращенные формы:
a += 3; // то же самое, что a = a + 3;
a *= 2; // умножение и присваивание🧬 Особенности операции присваивания
- Возвращает значение (можно использовать в выражениях):
int a, b;
a = b = 10; // сначала b = 10, потом a = b- Присваивание производится справа налево.
🔄 Приведение типов
1. Неявное (автоматическое):
int a = 5;
float b = a + 2.5; // int преобразуется в float2. Явное (кастинг):
int a = 10;
float b = (float)a / 3; // явное преобразование✅ Пример:
int x = 5;
float y = 2.0;
float z = x + y; // x неявно преобразуется в float
std::cout << z; // 7.0Билет 8: Форматный ввод, вывод информации на экран и в файл. Примеры.
🖥️ Форматный ввод/вывод на экран в C++
Осуществляется с помощью потоков из библиотеки <iostream>:
std::cout— вывод (Console OUTput)std::cin— ввод (Console INput)
📤 Вывод (cout)
#include <iostream>
using namespace std;
int main() {
int a = 10;
cout << "Value of a: " << a << endl;
return 0;
}<<— оператор вставки в потокendl— перевод строки
📥 Ввод (cin)
int x;
cin >> x; // пользователь вводит значение с клавиатуры>>— оператор извлечения из поток
📂 Работа с файлами: ввод/вывод в файл
Для этого используется <fstream>:
std::ofstream— запись в файлstd::ifstream— чтение из файлаstd::fstream— чтение и запись
✍️ Пример записи в файл:
#include <fstream>
using namespace std;
int main() {
ofstream fout("output.txt"); // создаем/открываем файл
fout << "Hello, file!" << endl; // записываем строку
fout.close(); // закрываем файл
return 0;
}📖 Пример чтения из файла:
#include <fstream>
#include <iostream>
using namespace std;
int main() {
ifstream fin("input.txt");
string line;
while (getline(fin, line)) {
cout << line << endl; // выводим строку из файла на экран
}
fin.close();
return 0;
}Билет 25: Рекурсивные функции. Примеры.
1. Рекурсивная функция — это функция, которая вызывает сама себя.
- Важно иметь условие выхода (базовый случай), чтобы избежать бесконечной рекурсии.
2. Пример: вычисление факториала
int factorial(int n) {
if (n <= 1) return 1; // базовый случай
else return n * factorial(n - 1); // рекурсивный вызов
}3. Пример: вычисление числа Фибоначчи
int fibonacci(int n) {
if (n == 0) return 0;
else if (n == 1) return 1;
else return fibonacci(n - 1) + fibonacci(n - 2);
}4. Пример: рекурсивный обход массива (сумма элементов)
int sumArray(int arr[], int n) {
if (n == 0) return 0; // базовый случай
else return arr[n-1] + sumArray(arr, n-1);
}5. Особенности рекурсии
- Рекурсия удобна для задач, где естественно разбивать проблему на подобные подзадачи.
- Иногда рекурсия менее эффективна, чем итерация, из-за накладных расходов на вызовы функций.