- •Занятие 1.Выбор среды программирования. Первая программа!
- •Резюме урока:
- •Задание для практической работы .
- •Занятие 2.Стандартные типы данных. Переменные. Основы ввода и вывода данных.
- •Стандартные функции ввода/вывода данных языка Си.
- •Резюме урока:
- •Задание для практической работы.
- •Переменные и типы данных.
- •Проверь себя:
- •Проверь себя:
- •Как сохранить что-то в перменной?
- •Как объявить переменную?
- •Домашнее Задание
- •Занятие 3. Ввод и вывод данных. Справочники функций.
- •Символьный ввод и вывод данных.
- •Функция putchar.
- •Функции форматного ввода и вывода данных printf и scanf.
- •Спецификаторы формата:
- •Модификаторы формата
- •Управляющие последовательности
- •Резюме урока:
- •Задание для практической работы:
- •Занятие 4. Арифметические выражения и стандартные математические функции. Приоритет операций. Инкремент. Декремент.
- •Оператор присваивания. Арифметические выражения.
- •Операторы инкремента и декримента.
- •Сокращенный вид записи арифметических выражений.
- •Стандартная бибиотека математических функций math.H.
- •Приоритет операций.
- •Резюме урока:
- •Задание для практической работы
- •Занятие 5.Управляющая конструкция if-else. Логические операторы и выражения.
- •Операторы соотношений и логические выражения.
- •Управляющая конструкция if - else.
- •Логические операторы. Сложные условия.
- •Приоритет логических операций.
- •Задание для практической работы:
- •Занятие 6. Оператор множественного выбора switch.
- •Инструкция switch.
- •Резюме урока:
- •Задание для практической работы:
- •Занятие 7.Циклические конструкции. Цикл со счетчиком for.
- •Циклическая конструкция for. (Цикл for)
- •Первое выражение - инициализация счетчика.
- •Второе выражение - условие.
- •Третье выражение - изменение счетчика.
- •Занятие 8.Оформление кода программы на Си.Уроки программирования для чайников.Язык Си.
- •Имена и способы описания переменных.
- •Оформление логических блоков и запись лесенкой.
- •Оформление арифметических выражений и сложных условий.
- •Использование комментариев.
- •Резюме урока:
- •Занятие 9.Циклические конструкции. Циклы while и do-while.
- •Цикл while.
- •Цикл do-while.
- •Зацикливание.
- •Задание для практической работы.
- •Занятие 10. Функции определяемые пользователем.
- •Как задать функцию.
- •Заголовок функции.
- •Тело функции.
- •Резюме урока:
- •Задание для практической работы.
- •Занятие 11. Одномерные массивы.
- •Резюме урока:
- •Задание для практической работы:
- •Занятие 12. Простейшие алгоритмы для работы с одномерными массивами.
- •Поиск минимального элемента в массиве.
- •Сортировка массива.
- •Задание для практической работы.
- •Занятие 13. Азы работы с файлами и потоками. Случайные числа.
- •Занятие 14. Строки и символьные массивы в языке Си.
- •Объявление и инициализация строк.
- •Ввод и вывод строк.
- •Функция gets().
- •Функция fgets().
- •Функции puts(), fputs().
- •Задания для самостоятельной практической работы.
- •Урок 15. Некоторые стандартные функции работы со строками.
- •Функция strlen().
- •Функции сравнения строк.
- •Функции изменения регистра строки.
- •Функции объединения строк.
- •Занятие 16. Указатели.
- •Перевод числа из шестнадцатеричной системы счисления в десятичную.
- •Перевод числа из десятичной в шестнадцатеричную систему счисления.
- •Переменные и их адреса.
- •Указатели.
- •Объявление указателя.
- •Присвоение указателю адреса.
- •Получение значения переменной.
- •Урок 17. Создание динамического массива. Указатели и практическое применение.
- •Занятие 18. Передача одномерных массивов в функцию. Возвращение массива из функции.
- •Первый случай. Передача в функцию статического массива.
- •Второй случай. Передача в функцию динамического массива.
- •Задание для практической работы:
- •Занятие 18. Передача одномерных массивов в функцию. Возвращение массива из функции.
- •Первый случай. Передача в функцию статического массива.
- •Второй случай. Передача в функцию динамического массива.
- •Занятие 19. Двумерные массивы.
- •Что такое двумерный массив?
- •Как работать с двумерным массивом?
- •Как работать с отдельным элементом массива.
- •Задание для практической работы:
- •Зачем нужны двумерные массивы?
- •Практическое задание.
- •Занятие №20. Некоторые особенности цикла for. Оператор последовательного вычисления.
- •I присвоить 0;
- •Занятие 21. Заголовочные файлы.
- •Как создать заголовочный файл.
- •Как поделиться своей программой с друзьями.
- •Практическое задание.
- •Дополнительные материалы к уроку.
- •Занятие 22. Препроцессор. Директивы препроцессора.
- •Чем занимается препроцессор?
- •Как работает препроцессор?
- •Как посмотреть код программы, после обработки препроцессором.
- •Урок 23. Структуры в языке Си.
- •Int book_date[100]; // дата издания
- •Int book_pages[100]; // количество страниц
- •Что такое структура.
- •Int date; // дата издания
- •Int pages; // количество страниц
- •Как объявить структурную переменную (структуру).
- •Как инициализировать структуру.
- •Как обращаться к полям структуры.
- •Практическое задание:
- •Автор||Название||Год издания||Прочитано||Количество страниц||Стоимость
Резюме урока:
Узнали об операторе множественного выбора switch
Разобрались с нюансами его работы.
Научились использовать оператор безусловного выхода break.
Поговорили о области применимости инструкций switch и if-else.
Задание для практической работы:
Написать программу простейший калькулятор для следующих действий +,-,*,/. На вход программе подается два числа и знак действия. Например: 4 23.5 *. Программа должна вывести результат арифметического действия. При недопустимой арифметической команде вывести ERROR.
Занятие 7.Циклические конструкции. Цикл со счетчиком for.
Сегодняшнее занятие будет посвящено новой управляющей конструкции. Сам того не подозревая, подбираю практические задачи для прошлого урока, я очень выгодно выбрал задачу с коровами, и дело вот в чем. Обычно, когда происходит изучение языка программирования не сразу понятно зачем и что нужно. И бывает достаточно сложно привести хороший пример. Можно конечно просто словами сказать, для чего предназначена та или иная конструкция. Но человеку гораздо понятнее, когда он сам увидел, и так сказать "пощупал", "поковырял" какой-то механизм. Еще Конфуций говорил "То, что я слышал, я забываю. То, что видел, я помню. То, что я делал сам, я понимаю". Теперь вернемся к нашей задаче с коровами. Естественно мне надо было её как-то проверять. Нужно было ввести все значения от 0 до 99 и посмотреть какой результат программа выдает. Всё это можно было-бы сделать вручную, но это крайне не продуктивно.Представьте, сколько времени уйдет, чтобы проверить одну программу. Вот именно здесь мне и пригодилась циклическая конструкция. Циклическая конструкция предназначена для того, чтобы выполнять какую-то последовательность действий несколько раз. В нашем случае для того чтобы 100 раз запустить одну и ту же программу с разными входными данными. Надеюсь общее назначение циклов и польза от их применения вы осознали, теперь можно приступить непосредственно к изучению.
Циклическая конструкция for. (Цикл for)
В языке Си несколько циклических конструкций. Сегодня мы познакомимся с одной из них, а именно циклом for. Его ещё называют цикл со счетчиком. Он чаще всего используется, когда нужно повторить заданное действие известное число раз.
Сначала посмотрим на формат цикла for. Он выглядит следующим образом:
Листинг 7.1:
for (инициализация счетчика; условие; изменение счетчика)
оператор;
Теперь опишем словесно как работает эта инструкция. Цикл for состоит как бы из двух частей: заголовка (первая строка) и тела цикла (вторая строка).
Сначала разберемся с заголовком. После слова for, в скобках, записаны три выражения.
Первое выражение - инициализация счетчика.
Мы должны завести переменную-счетчик и присвоить ей начальное значение.Например:
Листинг 7.2.
for (i=0;...;...)
или
for (j=13;...;...)
Второе выражение - условие.
Здесь записано условие при котором будет выполняться тело цикла. Т.е. цикл будет работать пока условие истинно. Например:
Листинг 7.3.
for (i=0; i<10; ...)
или
for (d=-100; d<=0; ...)
Третье выражение - изменение счетчика.
Здесь записывается как изменяется переменная-счетчик после каждого выполнения тела цикла. Например:
Листинг 7.4.
for (i=0; i<10; i++)
или
for (d=-100; d<=0; d+10)
Теперь немного поговорим о теле цикла. Тело цикла всегда состоит из одного оператора. И если нам нужно использовать несколько операторов, то как и в случае с конструкцией if-else, применяется составной оператор {...}.
Опишем работу цикла for словами и потом перейдем к рассмотрению практических примеров.
Когда программа встречает слово for она понимает что перед ней цикл.
Сначала определяется переменная счетчик (выражение 1).
Проверяется условие выполнение цикла (выражение 2)
Если условие ложно, то программа выходит из цикл for и продолжает свое выполнение. Т.е. если в самом начале условие будет ложно, то тело цикла не выполнится ни одного раза.
Если условие истинно, то начинает выполняться тело цикла.
После того как тело цикла выполнится, программа возвращается к заголовку и выполняет изменение значение переменной-счетчика (выражение 3).
После этого возвращаемся к пункту два, и все действия повторяются до тех пор, пока условие не станет ложным.
Для лучшего понимаю работы циклической конструкции for разберем сначала простейший пример, а потом вернемся к нашей задачке с коровами.
Пусть нам надо посчитать сумму 10 чисел введенных пользователем с клавиатуры.
Такая программа будет выглядеть следующим образом:
Листинг 7.5.
#include <stdio.h>
int main(void){
int i,summ=0, temp=0;
for (i=0;i<10;i++){
printf("\nVvedite chislo: ");
scanf("%d",&temp);
summ+=temp;
}
printf("Summa vvedennih chisel = %d\n",summ);
return(0);
}
Теперь распишем по пунктам как работает наша программа.
Начнем с 4 строки, всё остальное вам уже должно быть ясно после ознакомления с предыдущими уроками.
Переменная i счетчик и ей присваивается значение 0.
Проверяется условие i<10. Оно истинно, значит выполняется тело цикла: выводится надпись, пользователь вводит число и оно прибавляется к переменной summ. Тело цикла заканчивается программа возвращается к заголовку.
Программа выполняет выражение i++, изменяет значение переменной счетчика, в нашем случае увеличивает i на единицу. Теперь i = 1.
Снова проверяется условие, i<10. Оно опять истинно. Снова выполняется тело цикла и происходит изменение переменной счетчика. И процесс повторяется.
Потом, через несколько шагов значение i после изменения выражения счетчика становится равным 10. Проверяется условие. Оно ложно. Программа выходит из цикла и продолжает свое выполнение. В нашем случае выводит на экран значение переменной summ.
На рисунке представлен результат работы этой программы:
|
Пример работы программы с циклом for. |
Ну а теперь напишем программу для проверки задания с коровами.
Изначально имеется программа (код юзера Dispose, с моими небольшими изменениями):
Листинг 7.6
#include <stdio.h>
int main(void)
{
int n,b;
printf("Vvedite chislo ot 1 do 100: ");
scanf("%d", &n);
if(n>=11&&n<=14)
{
printf("Na lugu pasetsya %d korov \n", n);
}
else
{
b=n%10;
if(b==1) printf("Na lugu pasetsya %d korova \n", n);
if(b>=2&&b<=4) printf("Na lugu pasetsya %d korovy \n", n);
if(b>=5&&b<=9) printf("Na lugu pasetsya %d korov \n", n);
if(b==0) printf("Na lugu pasetsya %d korov \n", n);
}
return(0);
}
Нам нужно проверить эту программу. Смотрим что количество коров задается в переменной n. Именно её и возьмем в качестве переменной счетчика. начальное значение у нас 0 конечное 99 . С каждым шагом значение изменяется на 1 Значит заголовок будет выглядеть следующим образом:
Листинг 7.7
for(n=0,n<=99,n++)
Теперь из исходной программы удалим строчки, где просится ввести число n и строку, где введенное число считывается в переменную n. Также добавим туда наш заголовок и возьмем оставшуюся часть программы в фигурные скобки. Получим следующий код:
Листинг 7.8.
#include <stdio.h>
int main(void)
{
int n,b;
for(n=0;n<=99;n++)
{
if(n>=11&&n<=14)
{
printf("Na lugu pasetsya %d korov \n", n);
}
else
{
b=n%10;
if(b==1) printf("Na lugu pasetsya %d korova \n", n);
if(b>=2&&b<=4) printf("Na lugu pasetsya %d korovy \n", n);
if(b>=5&&b<=9) printf("Na lugu pasetsya %d korov \n", n);
if(b==0) printf("Na lugu pasetsya %d korov \n", n);
}
}
return(0);
}
Если теперь запустить нашу полученную программу то можно посмотреть, какое окончание прибавляет программа к какому количеству коров.
|
Иллюстрация работы программы листинг 7.8 |
Напоследок хочу заметить что тело цикла может содержать в себе другие циклы, т.е. могут быть вложенные циклы.И опять же советую вам использовать в теле цикла составной оператор.
