1 Глава 2 Введение в программирование на С
2 2.1Введение 2.2 Простая программа на C Program: Печатаем строку текста 2.3 Другая простая программа на C: Складываем два целых 2.4 Концепция памяти 2.5 Арифметика на C 2.6 Принятие решений: Равенство и условия
3 2.1Введение Язык программирования C Язык программирования C Структурный и дисциплинированный подход к разработке программ Структурный и дисциплинированный подход к разработке программ Структурное программирование Структурное программирование Подробнее в Главах 3 и 4 Подробнее в Главах 3 и 4 Мы будем придерживаться этой концепции Мы будем придерживаться этой концепции
4 2.2Простая программа на C: Печатаем строку текста 1/* Fig. 2.1: fig02_01.c 2 A first program in C */ 3#include 4 5int main() 6{6{ 7 printf( "Welcome to C!\n" ); 8 9 return 0; 10} Welcome to C!
5 2.2Простая программа на C: Печатаем строку текста Комментарии Комментарии Текст окруженный /* и */ игнорируется компьютером Текст окруженный /* и */ игнорируется компьютером Используется для описания программы Используется для описания программы #include #include Директива препроцессора Директива препроцессора Загрузить содержание файла Загрузить содержание файла разрешает операции стандартного ввода/вывода разрешает операции стандартного ввода/вывода
6 2.2Простая программа на C: Печатаем строку текста int main() int main() Программа может содержать набор функций, одна должна называться main Программа может содержать набор функций, одна должна называться main Круглые скобки указывают на функцию Круглые скобки указывают на функцию int – функция main «возвращает» целое (integer) значение int – функция main «возвращает» целое (integer) значение Скобки ( { и } ) ограничивают блок Скобки ( { и } ) ограничивают блок Тело функции должно быть заключено в блок Тело функции должно быть заключено в блок
7 2.2Простая программа на C: Печатаем строку текста printf( "Welcome to C!\n" ); printf( "Welcome to C!\n" ); Требуется действие Требуется действие Напечатать строку символов, заключенный в кавычки ( ) Напечатать строку символов, заключенный в кавычки ( ) Вся строка называется оператор Вся строка называется оператор Все операторы должны оканчиваться ( ; ) Все операторы должны оканчиваться ( ; ) Escape символ ( \ ) Escape символ ( \ ) Указывает на то, что printf должен напечатать что-то необычное Указывает на то, что printf должен напечатать что-то необычное \n это символ новой строки \n это символ новой строки
8 2.2Простая программа на C: Печатаем строку текста return 0; return 0; Путь выхода из функции Путь выхода из функции return 0, в данном случае, программа завершилась нормально return 0, в данном случае, программа завершилась нормально Правая скобка } Правая скобка } Указывает на конец main Указывает на конец main Линкер Линкер Когда функция вызывается, линкер находит ее в библиотеке Когда функция вызывается, линкер находит ее в библиотеке Вставляет ее в объектную программу Вставляет ее в объектную программу
9 1. Инициализ ация 2. Ввод 3. Сумма 4. Вывод Результат 1/* Fig. 2.5: fig02_05.c 2 Addition program */ 3#include 4 5int main() 6{6{ 7 int integer1, integer2, sum; /* declaration */ 8 9 printf( "Enter first integer\n" ); /* prompt */ 10 scanf( "%d", &integer1 ); /* read an integer */ 11 printf( "Enter second integer\n" ); /* prompt */ 12 scanf( "%d", &integer2 ); /* read an integer */ 13 sum = integer1 + integer2; /* assignment of sum */ 14 printf( "Sum is %d\n", sum ); /* print sum */ return 0; /* indicate that program ended successfully */ 17} Enter first integer 45 Enter second integer 72 Sum is 117
10 2.3Программа на C: Сложение двух целых чисел Как и раньше Как и раньше Комментарии, #include и main Комментарии, #include и main int integer1, integer2, sum; int integer1, integer2, sum; Объявление переменных Объявление переменных Переменные: расположены в памяти, где значения могут сохраняться Переменные: расположены в памяти, где значения могут сохраняться int значит что переменная может хранить целое значение ( -1, 3, 0, 47 ) int значит что переменная может хранить целое значение ( -1, 3, 0, 47 )
11 2.3Программа на C: Сложение двух целых чисел Имена переменных (идентификаторы) Имена переменных (идентификаторы) integer1, integer2, sum integer1, integer2, sum Идентификаторы: состоят из букв, цифр (но не может начинаться с цифры), и подчеркиваний Идентификаторы: состоят из букв, цифр (но не может начинаться с цифры), и подчеркиваний Чувствительно к регистру Чувствительно к регистру Объявление должно быть до использования Объявление должно быть до использования Если есть ссылка на неопределенную переменную, то при компиляции – синтаксическая ошибка Если есть ссылка на неопределенную переменную, то при компиляции – синтаксическая ошибка
12 2.3Программа на C: Сложение двух целых чисел scanf( "%d", &integer1 ); scanf( "%d", &integer1 ); Получает значение от пользователя Получает значение от пользователя scanf использует стандартный ввод (клавиатуру) scanf использует стандартный ввод (клавиатуру) Оператор scanf требует два аргумента Оператор scanf требует два аргумента %d – данные должны быть десятичным целым %d – данные должны быть десятичным целым &integer1 – где в памяти расположена переменная для сохранения &integer1 – где в памяти расположена переменная для сохранения & в начале не понятно – пока, просто запомним и включим его в аргумент оператора scanf & в начале не понятно – пока, просто запомним и включим его в аргумент оператора scanf Необходимо ввести Enter чтобы закончить ввод Необходимо ввести Enter чтобы закончить ввод
13 2.3Программа на C: Сложение двух целых чисел = (оператор присваивания) = (оператор присваивания) Присваивает значение переменной Присваивает значение переменной Это бинарный оператор (два операнда) Это бинарный оператор (два операнда) sum = variable1 + variable2; sum gets variable1 + variable2; Переменная слева получает значение Переменная слева получает значение
14 2.3Программа на C: Сложение двух целых чисел printf( "Sum is %d\n", sum ); printf( "Sum is %d\n", sum ); Похожа на scanf Похожа на scanf %d означает место для числа, которое печатается %d означает место для числа, которое печатается sum указывает само число sum указывает само число Вычисления можно проводить внутри оператора printf Вычисления можно проводить внутри оператора printf printf( «Sum is %d\n", integer1 + integer2 );
Концепция памяти Переменные Переменные Названия переменных соответствуют определенному месту в памяти Названия переменных соответствуют определенному месту в памяти Каждая переменная имеет название, тип, размер и значение Каждая переменная имеет название, тип, размер и значение Когда новое значение помещается в переменную (через scanf, например), оно заменяет (и удаляет) предыдущее значение Когда новое значение помещается в переменную (через scanf, например), оно заменяет (и удаляет) предыдущее значение Чтение переменных из памяти не изменяет их значение Чтение переменных из памяти не изменяет их значение
Арифметика Арифметические вычисления Арифметические вычисления Используйте * для умножения и / для деления Используйте * для умножения и / для деления Деление целого отбрасывает дробную часть Деление целого отбрасывает дробную часть 7 / 5 возвращает 1 7 / 5 возвращает 1 Деление по модулю ( % ) возвращает остаток Деление по модулю ( % ) возвращает остаток 7 % 5 возвращает 2 7 % 5 возвращает 2
Арифметика Последовательность операторов Последовательность операторов Часть выполняются до, часть после (например, умножение до сложения) Часть выполняются до, часть после (например, умножение до сложения) Используйте скобки если нужно Используйте скобки если нужно Пример: Найти среднее из 3х переменных a, b и c Пример: Найти среднее из 3х переменных a, b и c НЕ так: a + b + c / 3 НЕ так: a + b + c / 3 А Так: (a + b + c ) / 3 А Так: (a + b + c ) / 3
Арифметика Арифметические операторы : Арифметические операторы : Правила обработки операторов: Правила обработки операторов:
Принятие решения: Равенство и Условия Исполняемые операторы Исполняемые операторы Выполняют действия (вычисления, ввод/вывод данных) Выполняют действия (вычисления, ввод/вывод данных) Принимают решения Принимают решения Можно напечатать "pass" или "fail" в зависимости от результатов тестирования Можно напечатать "pass" или "fail" в зависимости от результатов тестирования Управляющая структура if Управляющая структура if Простая версия этой конструкции, подробности будут позже Простая версия этой конструкции, подробности будут позже Если условие true, тогда тело конструкции if выполняется Если условие true, тогда тело конструкции if выполняется 0 это false, non-zero это true 0 это false, non-zero это true Управление всегда переходит на строку после if Управление всегда переходит на строку после if Ключевые слова Ключевые слова Специальные слова зарезервированные для C Специальные слова зарезервированные для C Нельзя использовать как идентификаторы или имена функций и переменных Нельзя использовать как идентификаторы или имена функций и переменных
20 2.6Принятие решения: Равенство и Условия
21 2.6Принятие решения: Равенство и Условия
22 1. Определяем переменные 2. Ввод 2.1 оператор if 3. Печатаем 1/* Fig. 2.13: fig02_13.c 2 Using if statements, relational 3 operators, and equality operators */ 4#include 5 6int main() 7{7{ 8 int num1, num2; 9 10 printf( "Enter two integers, and I will tell you\n" ); 11 printf( "the relationships they satisfy: " ); 12 scanf( "%d%d", &num1, &num2 ); /* read two integers */ if ( num1 == num2 ) 15 printf( "%d is equal to %d\n", num1, num2 ); if ( num1 != num2 ) 18 printf( "%d is not equal to %d\n", num1, num2 ); if ( num1 < num2 ) 21 printf( "%d is less than %d\n", num1, num2 ); if ( num1 > num2 ) 24 printf( "%d is greater than %d\n", num1, num2 ); if ( num1
Выход из main Результат if ( num1 >= num2 ) 31 printf( "%d is greater than or equal to %d\n", 32 num1, num2 ); return 0; /* indicate program ended successfully */ 35} Enter two integers, and I will tell you the relationships they satisfy: is not equal to 7 3 is less than 7 3 is less than or equal to 7 Enter two integers, and I will tell you the relationships they satisfy: is not equal to is greater than is greater than or equal to 12