- •1. Алгоритм и его свойства.
- •2. Средства записи алгоритма – графическая схема.
- •3. Типы алгоритмов и их графическое изображение.
- •4,5. Общая характеристика языка программирования Си.
- •6. Основные типы данных языка Си.
- •7. Операции и выражения языка Си.
- •8. Операции присваивания и операторы присваивания.
- •9. Математические функции. Правила их использования в выражениях.
- •16. Консольный ввод-вывод. Функции ввода-вывода символов.
- •16, 17. Консольный ввод-вывод. Функции ввода-вывода строк. Консольный форматированный ввод данных. Оператор ввода. Форматная строка. Спецификации преобразования.
- •19. Escape-последовательности.
- •Функция scanf предназначена для ввода данных в заданном формате. Обращение имеет вид:
- •20. Программирование линейных алгоритмов.
- •21. Логические выражения и правила их составления.
- •22. Оператор if. Две его формы.
- •If (выражение) оператор1;
- •If (выражение ) оператор1; else опертор2;
- •23. Команда выбора. Операторы switсh и break.
- •24. Понятие цикла. Типы циклов.
- •25. Операторы циклов. Оператор for.
- •26. Оператор цикла while.
- •27. Задача о табулировании функции в равноотстоящих точках.
- •28. Оператор цикла do-while.
- •29. Вложенные циклы.
- •30. Понятие рекуррентного соотношения. Пример рекуррентных вычислений.
- •32. Понятие массива. Понятия статического и динамического массивов. Размерность, размер массива.
- •Int a[n], b[n]; // Объявление 2–х одномерных массивов
- •33, 34, 35, 36. Синтаксис описания массивов. Понятие и описание одномерного динамического массива. Ввод-вывод одномерного массива.
- •37. Перестановка двух элементов одномерного массива.
- •38. Вычисление суммы элементов одномерного массива.
- •39. Подсчет количества элементов одномерного массива, удовлетворяющих заданным условиям.
- •40 Вычисление произведения элементов одномерного массива.
- •41. Поиск элементов одномерного массива, обладающих заданным свойством.
- •42. Поиск в упорядоченном одномерном массиве.
- •43. Поиск максимального (минимального) элемента одномерного массива и его местоположения.
- •44. Копирование массивов.
- •45. Формирование массива из элементов заданных массивов.
- •46, 47, 48. Понятие и описание двумерных массивов.
- •49. Типовые алгоритмы обработки одномерных массивов.
- •50. Организация циклов для просмотра элементов двумерного массива со сложными условиями повторения.
- •51. Обработка элементов квадратных матриц относительно главной и побочной диагоналей.
- •52. Символьный тип данных. Описание. Ввод-вывод.
- •Ввод-вывод символов
- •53. Символьный тип данных. Стандартные функции обработки символов.
- •54. Понятие и описание строки.
- •55. Понятие и описание динамической строки.
- •56. Ввод-вывод строк.
- •Функция scanf предназначена для ввода данных в заданном формате. Обращение имеет вид:
- •57. Операции над строками. Реализация операции присваивания.
- •58. Преобразование строки в число.
- •59. Поиск подстроки в строке.
- •60. Сцепление двух строк.
- •61. Определение позиции первого вхождения символа из заданного набора символов.
- •62. Сравнение двух строк.
- •63. Обработка строк, состоящих из слов.
7. Операции и выражения языка Си.
Осуществляют пересылку и преобразование данных в программах. обозначаются операции одним или несколькими символами +, -, >> и т.д. Данные, участвующие в операции, называют операндами. Участвуют переменные, константы и выражения. Выражение – это строка, составленная по определенным правилам из операндов, операций и предназначенная для получения значения.
3+6/2*d
Выражение константное, если его операнды только константы.
По числу операндов, участвующих в операции, различают унарные (один операнд) и бинарные (два операнда) операции. Пример унарной операции – унарный минус (изменение знака числа); пример бинарной операции - *(умножение).
По типу выполняемой операции различ. арифметич., сдвига, поразрядные логические, логические, операции отношения.
8. Операции присваивания и операторы присваивания.
Строку, содержащую знак “=” (присвоить) называют оператором присваивания.
Общий вид оператора присваивания:
P = V,
где V- выражение, Р – переменная.
Оператор присваивания выполняется следующим образом: вычисляется значение выражения V; это значение присваивается переменной Р.
Например оператор а = а+1 означает: взять текущее значение переменной а, прибавить к нему единицу и полученный результат сохранить в переменной а.
Язык Си допускает множественное присваивание – присваивание одного значения набору переменных в одном операторе. При этом операции выполняются справа налево
Пример:
a = b = c = d = 1;
Это эквивалентно следующей последовательности операторов присваивания:
d = 1;
c = d;
b = c;
a = b.
Также в языке Си существует операция комбинированного присваивания, которая записывается в виде:
V1 OP = V, что эквивалентно V1 = V1 OP V,
где V1 – переменная, V – выражение, OP – одна из операций, задаваемых знаками *, /, +, -, %, >>, <<, &, ^.
9. Математические функции. Правила их использования в выражениях.
Прототипы функций хранятся в заголовочном файле math.h.
Для того чтобы получить перечень функций, необходимо ввести в тексте программы имя библиотеки math и нажать Ctrl+F1. Появится перечень слов с выделенным именем библиотеки. Нажать Enter.
Для того чтобы прочитать описание конкретной функции, необходимо выделить имя функции и нажать Enter или выполнить двойной щелчок мышью на имени функции.
Обращение к функции |
Тип аргументов |
Тип значения |
Описание |
abs(x) |
int |
int |
Нахождение |x| |
fabs(x) |
double |
double |
-//- |
labs(x) |
long int |
long int |
-//- |
acos(x) |
double |
double |
arccos(x), -1≤x≤1, 0≤z≤pi |
asin(x) |
double |
double |
arcsin(x), -1≤x≤1, -pi/2≤z≤pi/2 |
atan(x) |
double |
double |
arctg(x), -pi/2<z<pi/2 |
atan2(y,x) |
double, double |
double |
arctg(y/x), x≠0, -pi<z<pi |
ceil(x) |
double |
double |
Нахождение наименьшего целого ≥x |
floor(x) |
double |
double |
Нахождение наибольшего целого ≤x |
cos(x) |
double |
double |
Нахождение cos(x), x-в радианах |
sin(x) |
double |
double |
Нахождение sin(x), x-в радианах |
tan(x) |
double |
double |
Нахождение tg(x), x-в радианах |
cosh(x) |
double |
double |
Нахождение ch(x) |
sinh(x) |
double |
double |
Нахождение sh(x) |
tanh(x) |
double |
double |
Нахождение th(x) |
exp(x) |
double |
double |
Нахождение ex |
fmod(x,y) |
double |
double |
Деление x по модулю y |
log(x) |
double |
double |
Вычисление ln(x), x>0 |
log10(x) |
double |
double |
Вычисление lg(x), x>0 |
modf(x,&i) |
double, double *i |
double |
Определение целой i и дробной modf(x,&i) частей числа x |
pow(x,y) |
double, double |
double |
Вычисление xy, x>0. Если x=y=0=>1 |
sqrt(x) |
double |
double |
Вычисление корня квадратного, x≥0 |
pow10(x) |
int |
double |
Вычисление 10x |
10. Операции сдвига и дополнения.
Обработка данных представлена как набор бит.
<< левый сдвиг
>> правый сдвиг
11,1 2. Поразрядные логические операции.
Логические операции и операции отношения.
Относятся к операндам, для того, чтобы получить логическое значение.
истина – отличное от 0
ложь – 0
&& - логическое и
|| - логическое или
! – логическое не
! меняет истину на ложь и наоборот
Отношения:
>больше
<меньше
>=больше либо равно
<=иеньше либо равно
==равно !=не равно
13. Смешанные операнды и преобразование типов.
Все основные типы имеют следующий порядок старшинства:
символьные<целые<длинные<плавающие<двойной точности<
Операция sizeof
sizeof (int) – 2б
sizeof (5/2) – 2б
sizeof (5.0/2) – 4б
14. Указатели. Понятие указателя. Операции над указателями.
Понятие указателя
В языке Си существует два способа доступа к переменной: ссылка на переменную по имени и использование механизма указателей. Механизм указателей в Си – одна из наиболее привлекательных для профессиональных программистов особенностей языка.
Указатель-переменная (или просто указатель) – это переменная, предназначенная для хранения адреса в памяти.
Указатель-константа – это значение адреса оперативной памяти. В языке Си определены две специальные операции для доступа к переменным через указатели: операция “&” и операция “*”. Результатом операции “&” является адрес объекта, к которому эта операция применяется. Например, &var1 дает адрес, по которому var1 хранится в памяти (точнее адрес первого байта var1). Операция “*” – это операция обращения к содержимому памяти по адресу, хранимому в переменной-указателе или равному указателю-константе.
Признаком переменной-указателя для компилятора является наличие в описании переменной двух компонентов:
1) типа объекта данных, для доступа к которому используется указатель (или, как часто говорят, на который ссылается указатель);
2) символа “*” перед именем переменной.
В совокупности тип и “*” воспринимаются компилятором как особый тип данных – “указатель на что-либо”.
Таким образом, описание int var1, *ptr приводит к появлению переменной var1 и указателя-переменной ptr. Указатель ptr имеет тип *int, т.е. тип “указатель на целое”. Место, выделяемое под такой тип компилятором, зависит от модели памяти.
Операцию “*”, пытаясь выразить словами смысл выражения, можно заменить фразой “взять содержимое по адресу, равному значению указателя”. Например, оператор присваивания *ptr = *ptr2 + 4 можно интерпретировать так: взять содержимое памяти по адресу, равному значению указателя ptr2, прибавить к этому содержимому 4, а результат поместить по адресу, равному значению указателя ptr. Число байтов, извлекаемых из памяти и участвующих в операции, определяется компилятором исходя из типа, на который “указывает” указатель.
Операции над указателями
Для указателей-переменных разрешены некоторые операции: присваивание, инкремент, декремент, сложение, вычитание, сравнение.
Язык Си разрешает операцию сравнения указателей одинакового типа. При выполнении присваивания значение указателя в правой части выражения пересылается в ячейку памяти, отведенную для указателя в левой части.
Важной особенностью арифметических операций с указателями является то, что физическое увеличение или уменьшение его значения зависит от типа указателя, т.е. от размера того объекта, на который указатель ссылается. Если к указателю, описанному как type *ptr прибавляется или отнимается константа N, значение ptr изменяется на N*sizeof(type). Разность двух указателей type *ptr1, *ptr2 – это разность их значений, поделенная на sizeof(type).
Такие правила арифметических операций с указателями вытекают из того, что указатель в Си неявно рассматривается как указатель на начало массива однотипных элементов. Продвижение указателя вперед или назад совпадает с увеличением или уменьшением индекса элемента.