Вы находитесь на странице: 1из 10

// - не особо важно ; !

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

Примеры: правила сложения, умножения, решения алгебраических уравнений и т.п.

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

1.Универсальность (массовость) - применимость алгоритма к различным наборам исходных


данных.

2.Дискретность - процесс решения задачи по алгоритму разбит на отдельные действия.

3.Конечность - каждое из действий и весь алгоритм в целом обязательно завершаются.

4.Результативность - по завершении выполнения алгоритма обязательно получается конечный


результат.

5.Выполнимость (эффективность) - результата алгоритма достигается за конечное число шагов.

6.Детерминированность (определенность) - алгоритм не должен содержать предписаний, смысл


которых может восприниматься неоднозначно. Т.е. одно и то же предписание после исполнения
должно давать один и тот же результат.

7.Последовательность – порядок исполнения команд должен быть понятен исполнителю и не


должен допускать неоднозначности.

// Для задания алгоритма необходимо описать следующие его элементы:

1.набор объектов, составляющих совокупность возможных исходных данных, промежуточных и


конечных результатов;

2.правило начала;

3.правило непосредственной переработки информации (описание последовательности действий);

4.правило окончания;

5.правило извлечения результатов.

! Способы описания алгоритмов.

Символьный, когда алгоритм описывается с помощью специального набора символов


(специального языка).

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


исполнителя-человека. Команды такого алгоритма выполняются в естественной
последовательности, если не оговорено противного.

Графическая запись с помощью блок-схем осуществляется рисованием последовательности


геометрических фигур, каждая из которых подразумевает выполнение определенного действия
алгоритма. Порядок выполнения действий указывается стрелками. Графическая запись алгоритма
имеет ряд преимуществ: каждая операция вычислительного процесса изображается отдельной
геометрической фигурой и графическое изображение алгоритма наглядно показывает
разветвления путей решения задачи в зависимости от различных условий, повторение отдельных
этапов вычислительного процесса и другие детали.
2. Классификация типов данных в C. Предопределенные типы данных

! Основные типы данных – это предопределенные типы данных, которые используются


программистом напрямую для хранения только одного значения согласно требованию, то есть
целочисленного типа, символьного типа или плавающего типа. Например – int, char, float и т.д.
char: представляет один символ. Занимает в памяти 1 байт (8 бит). Может хранить любое
значение из диапазона от -128 до 127
short: представляет целое число в диапазоне от –32768 до 32767. Занимает в памяти 2 байта (16
бит).
int: представляет целое число. В зависимости от архитектуры процессора может занимать 2 байта
(16 бит) или 4 байта (32 бита). Диапазон предельных значений соответственно также может
варьироваться от –32768 до 32767 (при 2 байтах) или от −2 147 483 648 до 2 147 483 647 (при 4
байтах).
long: представляет целое число в диапазоне от -2 147 483 648 до 2 147 483 647. Занимает в памяти
4 байта (32 бита).
long long: представляет целое число в диапазоне от -9223372036854775807 до +9 223 372 036 854
775 807. Занимает в памяти, как правило, 8 байт (64 бита).
float: представляет вещественное число одинарной точности с плавающей точкой в диапазоне +/-
3.4E-38 до 3.4E+38. В памяти занимает 4 байта (32 бита)
double: представляет вещественное число двойной точности с плавающей точкой в диапазоне +/-
1.7E-308 до 1.7E+308. В памяти занимает 8 байт (64 бита)
void: тип без значения

3. Классификация переменных в C. Объявление переменных


! Переменные в языке программирования C могут быть классифицированы по нескольким
критериям:
По типам данных:
Целочисленные переменные (int, short, long, char, и т. д.)
Переменные с плавающей запятой (float, double, long double)
Символьные переменные (char)
Указатели (*)
По области видимости:
Локальные переменные: Объявлены внутри блока кода (например, внутри функции) и доступны
только в пределах этого блока.
Глобальные переменные: Объявлены вне функций и доступны для всех функций в программе.
Объявление:
В Си, для объявления переменных, вы используете следующий синтаксис:
тип_переменной имя_переменной;
int age;
float salary;
4. Графические символы операций. Логическая схема алгоритма (блок-схема)
Арифметические операции:
+ : Сложение.
- : Вычитание.
* : Умножение.
/ : Деление.
% : Остаток от деления (модуль).
Операции сравнения:
== : Равно (сравнение на равенство).
!= : Не равно (сравнение на неравенство).
< : Меньше.
> : Больше.
<= : Меньше или равно.
>= : Больше или равно.

Логические операции:
&& : Логическое И (and).
|| : Логическое ИЛИ (or).
! : Логическое НЕ (not).

Присваивание:
= : Присваивание значения переменной.

Инкремент и декремент:
++ : Инкремент (увеличение на 1).
-- : Декремент (уменьшение на 1).

Правила создания блок – схем: (+см определение 1)

1.Линии, соединяющие блоки и указывающие последовательность связей между ними, должны


проводится параллельно линиям рамки.
2.Стрелка в конце линии может не ставиться, если линия направлена слева направо или сверху
вниз.
3.В блок может входить несколько линий, то есть блок может являться преемником любого числа
блоков.
4.Из блока (кроме логического) может выходить только одна линия.
5.Логический блок может иметь в качестве продолжения один из двух блоков, и из него выходят
две линии.
6.Если на схеме имеет место слияние линий, то место пересечения выделяется точкой. В случае,
когда одна линия подходит к другой и слияние их явно выражено, точку можно не ставить.
7.Схему алгоритма следует выполнять как единое целое, однако в случае необходимости
допускается обрывать линии, соединяющие блоки.

5. Структура программы на языке C. Структура функции main().

1. Включение библиотек
2. Главная функция (int main()): Это обязательная часть программы. Она является точкой входа в
программу, и выполнение кода начинается с этой функции.
3. Объявление переменных внутри мэйн
4. Тело программы (функции и т.д.)
5. Вывод результата
6. Возвращаемое значение функции (return 0): Главная функция main часто возвращает целое
значение, которое указывает на успешное завершение программы.

int main() {
// Объявление локальных переменных
// Выполнение кода
// Возвращение значения
} – структура мэйн
6. Арифметические и логические операторы и выражения.
Арифметические операции:
+ : Сложение.
- : Вычитание.
* : Умножение.
/ : Деление.
% : Остаток от деления (модуль).
Операции сравнения:
== : Равно (сравнение на равенство).
!= : Не равно (сравнение на неравенство).
< : Меньше.
> : Больше.
<= : Меньше или равно.
>= : Больше или равно.

Логические операции:
&& : Логическое И (and).
|| : Логическое ИЛИ (or).
! : Логическое НЕ (not).

‌ . Простые инструкции. Составные (структурированные) инструкции. Приоритет операций.


7
Порядок выполнения операций

Простые инструкции:

Простые инструкции - это базовые операции в программировании, такие как присваивание


значений переменным, выполнение арифметических операций и ввод/вывод данных.

Структурированные инструкции:

Структурированные инструкции объединяют простые инструкции в более сложные блоки. Они


включают в себя условные операторы (if, else), циклы (for, while, do-while) и блоки кода.
Структурированные инструкции упрощают управление потоком программы и повышают
читаемость кода.

Приоритет операций:

Приоритет операций в языке C определяет порядок выполнения различных операторов.


Например, умножение имеет более высокий приоритет, чем сложение. Вы можете использовать
скобки для изменения порядка выполнения операций.

Порядок выполнения операций в Си:

В языке C операторы выполняются последовательно, если нет явных указаний на другой порядок с
помощью структурированных инструкций. Это означает, что инструкции выполняются сверху вниз.

‌8. Функции scanf ( ) и printf ( ) для операций ввода и вывода. Спецификаторы формата

printf() используется для вывода данных на экран или в файл.

Спецификаторы формата начинаются с символа % и позволяют определить, какие данные нужно


вывести и в каком формате.

Примеры спецификаторов формата:


%d - вывод целых чисел.

%f - вывод чисел с плавающей запятой.

%c - вывод символов.

%s - вывод строк.

%x - вывод целых чисел в шестнадцатеричной системе счисления.

%o - вывод целых чисел в восьмеричной системе счисления.

scanf():

scanf() используется для ввода данных с клавиатуры или из файла.

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

Обязательно передается указатель на переменную,

в которую будет сохранено введенное значение.

Примеры спецификаторов формата:

%d - ввод целых чисел.

%f - ввод чисел с плавающей запятой.

%c - ввод символов.

%s - ввод строк.

‌ . Алгоритмы с линейной и разветвленной структурой. Условные операторы if, if-clse, if-else if-
9
else и switch

Линейная структура:

В линейной структуре команды выполняются последовательно от начала до конца.

Это наиболее простая форма управления потоком

Разветвленная структура:

В разветвленной структуре код может выполняться в зависимости от условий.

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

Условный оператор if:

Используется для выполнения блока кода, если условие истинно.

Условный оператор if-else:

Позволяет выполнить один блок кода, если условие истинно, и другой блок, если условие ложно.

Условный оператор if-else if-else:

Используется для создания цепочки условий, при которых будет выполнен один из блоков кода.
Условный оператор switch:

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


выражения.

Использует ключевые слова case и break для определения различных вариантов.

‌ 0. Алгоритмы с циклической структурой. Цикл с предусловием и пост условием. Операторы


1
цикла while, for, do- while

Циклические структуры в программировании позволяют выполнять определенные блоки кода


несколько раз, пока выполняется определенное условие. Существуют три основных оператора
цикла в языке программирования C: while, for и do-while

Цикл с предусловием (while):

Этот цикл выполняет блок кода, пока условие истинно.

Цикл с постусловием (do-while):

Этот цикл выполняет блок кода хотя бы один раз, даже если условие ложно.

Проверка условия происходит после выполнения блока кода.

Цикл for:

Цикл for обычно используется, когда количество итераций заранее известно.

Он включает в себя инициализацию, условие и выражение обновления.

‌11. Алгоритмы с циклической структурой. Цикл с событием и счетчиком. Примеры.

Цикл с событием (событийный цикл):

Цикл с событием выполняет блок кода до наступления определенного события.

Событие может быть пользовательским вводом, изменением состояния программы или внешним
событием.

Пример:

#include <stdio.h>

int main() {

char choice;

do {

printf("Введите 'q' для выхода: ");

scanf(" %c", &choice); // Пробел перед %c для игнорирования символов перевода строки

} while (choice != 'q');

printf("Выход из программы.\n");

return 0;
}

Цикл счетчика:

Цикл счетчика выполняет блок кода определенное количество раз, заданное счетчиком.

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

Пример:

#include <stdio.h>

int main() {

for (int i = 1; i <= 10; i++) {

printf("%d\n", i);

return 0;

‌12. Вложенные циклы. Управляющие операторы: break, continue, goto

Вложенные циклы:

Вложенные циклы - это циклы, которые содержатся внутри других циклов.

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

Оператор break:

break используется для немедленного завершения выполнения цикла.

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

Оператор continue:

continue используется для пропуска текущей итерации цикла и перехода к следующей итерации.

Это позволяет выполнить некоторые действия внутри цикла, пропустив остальную часть текущей
итерации.

Оператор goto:

goto - это оператор, который позволяет перейти к метке (обычно обозначается идентификатором)
в программе.

goto обычно не рекомендуется использовать, так как это может сделать код менее читаемым и
сложным для понимания.

‌ 3. Одномерные массивы (вектора). Объявление, инициализация и обработка одномерных


1
массивов
В языке программирования C одномерные массивы (или векторы) представляют собой набор
элементов одного типа, расположенных последовательно в памяти.

Объявление одномерного массива:

Для объявления одномерного массива вам нужно указать его тип данных и имя, а также размер
(количество элементов).

Инициализация одномерного массива:

Массивы можно инициализировать таким образом:

int numbers[] = {1, 2, 3, 4, 5};

Обработка одномерного массива:

Вы можете использовать циклы для обработки элементов массива. Например, цикл for может
быть использован для итерации по всем элементам массива:

int numbers[] = {1, 2, 3, 4, 5};

for (int i = 0; i < 5; i++) {

printf("%d\n", numbers[i]); // Вывод элементов массива

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

‌14. Сортировка одномерного массива методом пузырька

Метод сортировки пузырьком (Bubble Sort) в C - это алгоритм сортировки, который работает путем
сравнения и обмена соседних элементов массива до тех пор, пока весь массив не будет
отсортирован. Он получил свое название из-за того, что большие элементы "поднимаются"
(пузырьком) к концу массива, как пузырьки воды в газировке.

Принцип работы алгоритма сортировки пузырьком следующий:

1. Сравнить первые два элемента массива.

2. Если первый элемент больше второго, поменять их местами.

3. Перейти к следующей паре элементов и выполнить сравнение и, при необходимости, обмен.

4. Продолжить этот процесс до конца массива.

5. Повторить шаги 1-4 для всех элементов массива до тех пор, пока массив не будет полностью
отсортирован.

Пример:

for (int i = 0; i < n - 1; i++) {

for (int j = 0; j < n - i - 1; j++) {

if (arr[j] > arr[j + 1]) {

// Обмен элементов
temp = arr[j];

arr[j] = arr[j + 1];

arr[j + 1] = temp;

‌15. Сортировка одномерного массива методом неявного выбора (выбора и обмена)

Сортировка одномерного массива методом неявного выбора (Selection Sort) - это простой
алгоритм сортировки, который находит минимальный (или максимальный) элемент в
несортированной части массива и обменивает его с первым элементом несортированной части.
Алгоритм продолжает этот процесс до тех пор, пока весь массив не будет отсортирован. Вот как
работает сортировка выбором в языке C:
int i, j, minIndex, temp;

for (i = 0; i < n - 1; i++) {

minIndex = i; // Предполагаем, что текущий элемент - минимальный

// Ищем минимальный элемент в оставшейся части массива

for (j = i + 1; j < n; j++) {

if (arr[j] < arr[minIndex]) {

minIndex = j; // Найден элемент, меньший текущего минимума

// Обмениваем минимальный элемент с текущим элементом

temp = arr[i];

arr[i] = arr[minIndex];

arr[minIndex] = temp;

‌16. Сортировка одномерного массива методом вставки

Сортировка одномерного массива методом вставки (Insertion Sort) - это простой алгоритм
сортировки, который пошагово строит отсортированную часть массива. На каждом шаге алгоритм
берет очередной элемент из несортированной части массива и вставляет его в правильное место
в отсортированной части массива. Вот как работает сортировка вставкой в языке C:
int i, key, j;

for (i = 1; i < n; i++) {

key = arr[i];
j = i - 1;
// Перемещаем элементы массива, которые больше key, на одну позицию вперед

while (j >= 0 && arr[j] > key) {


arr[j + 1] = arr[j];
j = j - 1;

}
arr[j + 1] = key;

‌17. Сортировка одномерного массива методом прямого выбора

Возможно такое же как и 15

‌ 8. Двухмерные массивы (матрицы). Объявление, инициализация и обработка двумерных


1
массивов
Двухмерные массивы, также известные как матрицы, представляют собой структуру данных,
которая состоит из строк и столбцов. В языке программирования C двумерные массивы могут
быть объявлены, инициализированы и обработаны следующим образом:

Объявление двумерного массива:


int matrix[3][3];

Инициализация двумерного массива:

int matrix[3][3] = {

{1, 2, 3},

{4, 5, 6},

{7, 8, 9}

};

Обработка:

for (int i = 0; i < 3; i++) {

for (int j = 0; j < 3; j++) {

printf("%d ", matrix[i][j]);

printf("\n");

Вам также может понравиться