- •Основные понятия. Типы данных.
- •Выражения. Операторы.
- •Управляющие структуры
- •Функции. Нисходящее программирование
- •Void имя (список аргументов)
- •Рекурсия. Макросы. Условная компиляция
- •Указатели. Арифметические операции с указателями
- •Массивы указателей. Указатели на функцию. Динамические массивы
- •Динамические структуры данных
- •Режимы работы с файлами в с
Управляющие структуры
Любая программа в Си может быть построена с помощью 3 управляющих структур:
1. Следования.
2. Выбора.
3. Повторения.
Структуры выбора делятся на 3 составляющие: if, if/else, switch.
1. If - структура с единственный выбором, т.к. выполняет либо нет единственное действие. (выражение) оператор. Если операторов 2 и более, то их заключают в фигурные скобки. ((a<b)&&(c>0)) {операторы}.
2. If/else - конструкция с множественным выбором, т.к. осуществляет выбор между двумя возможными действиями.
if(выражение) оператор
[else оператор];
Данные операторы могут вкладываться один в другой:
if(выражение) оператор
else
{if(выражение) оператор
else (оператор)}
3. Switch - оператор с множественным выбором, т.к. в зависимости от условий позволяет выполнять те или иные действия.
switch (выражение)
{ [объявление]
[case константное выражение 1: операторы;]
[case константное выражение 2: операторы;]
.....
[default: операторы;]
}
В круглых скобках выражения после ключевого слова switch может быть любым допустим выражением в Си, значение которого является целым.
В своей структуре оператор может содержать несколько константных выражений контрукции case.
Существуют ситуации, когда необходимо прервать выполнение того или иного цикла. С этой целью в Си используется 2 оператора: break и continue.
Оператор break обеспечивает прекращение выполнения самого внутреннего из объединяющих его операторов. После его выполнения управление передается оператору, следующему за прерванным.
Оператор continue в отличии от break продолжает выполнение программы с начала прерванного оператора.
Например:
....
switch(a)
{ case 1: b=c;
case 2:
switch(d)
{case 0: f=s;
case 1: f=9;
case 2: f-=9;
}
case 3: b-=c;}
.....
Задание 1: Дано 3 числа. Определить минмальное из них.
Задание 2: Пользователь с клавиатуры вводит отметку за тест. Если она в диапазоне 0-4 ему выдается сообщение "Вы не сдали тест". При диапазоне 4-6 "Ваши знания удовлетворительные", 7-8 "У вас хороший уровень знаний", 9-10 "Ваш уровень знаний высок".
Задание 1: d=a<=b?a:b
min=d<=c?d:c
Задание 2:
if ((a>=0)&&(a<4)) {операторы}
else if ((a>=4)&&(a<7)) cout
else if ((a>6)&&(a<9)) cout
else if ((a>8)&&(a<11)) cout
Функции. Нисходящее программирование
В основу нисходящего программирования положен метод «разделяй и властвуй», т.е. главная задача разделяется на более мелкие подзадачи до тех пор, пока не получится относительно простые для решения проблемы. Для каждой такой проблемы пишется своя функция.
Функция – именованный набор операторов, выполняющий определённую задачу.
В Си функции делятся на:
-
Функции не возвращающие значения ;
Общий вид:
Void имя (список аргументов)
{
операторы;
return; // необязательный
}
-
Функции возвращающие значения.
Общий вид:
Тип имя (список аргументов)
{
операторы;
return значение (const, переменные, арифметическое выражение);
}
Тип возвращаемого значения должен совпадать с типом функции.
Пример:
#include <iostream>
using namespace std;
int square (int);
int main ()
{
for (int x=1; x<=10; x++)
{
cout<<square(x)<<” “<<endl;
}
return 0;
}
int square (int y)
{
return y*y;
}
Прототип – явное объявление функции, которое предшествует его определению.
Задача1: возведение целого числа в куб.
#include <iostream>
using namespace std;
int cube (int);
int main ()
{
for (int x=1; x<=10; x++)
{
cout<<cube(x)<<" "<<endl;
}
system ("pause");
return 0;
}
int cube (int y)
{
return y*y*y;
}
Задача2: определение максимального из трёх целых числе.
Задача3: функция, которая последовательно находит cos углов от 0 до 90 с интервалом в пять градусов.