Введение в основы программирования на С
Покупка
Основная коллекция
Тематика:
Программирование на C и C++
Издательство:
НИЦ ИНФРА-М
Авторы:
Костиков Юрий Александрович, Мокряков Алексей Викторович, Павлов Виталий Юрьевич, Романенков Александр Михайлович
Год издания: 2015
Кол-во страниц: 32
Дополнительно
Вид издания:
Учебно-методическая литература
Уровень образования:
ВО - Бакалавриат
ISBN-онлайн: 978-5-16-103253-4
Артикул: 383800.01.99
Скопировать запись
Фрагмент текстового слоя документа размещен для индексирующих роботов
ВВЕДЕНИЕ В ОСНОВЫ ПРОГРАММИРОВАНИЯ НА С Методическое пособие для студентов Костиков Ю. А., Мокряков А. В., Павлов В. Ю., Романенков А. М. МОСКВА 2014
Содержание. Типы данных простейшая программа 2 Локальные и глобальные переменные. Область видимости 3 Знакомство с <stdio.h>. Функция printf и scanf. 4 Средства программирования на языке Си. Массивы. 7 Указатели. Функции. 18 Стандартные алгоритмы. 28
Типы данных. Простейшая программа. Язык Си был создан в 1972 г. Он является строго типизированным языком. Одним из основных понятий языка Си является объект - именованная область памяти. Более узкое понятие объекта – переменная. Отличительная особенность переменной состоит в возможности связывать с ее именем различные значения, совокупность которых определяется типом переменной. Давайте познакомимся с базовыми (простейшими) типами данных Тип данных Размер (бит) Тип данных Размер (бит) unsigned char 8 long 32 char 8 unsigned int 32 unsigned short 16 int 32 short 16 float 32 enum 32 double 64 unsigned long 32 long double 64 Каждая переменная перед её использованием в программе должна быть объявлена и определена, т. е. для переменной должна быть выделена память. Размер участка памяти и интерпретация содержимого зависит от типа переменной. Простейшая форма определения переменных: тип список_имен_переменных; Примеры: char a,b,c; unsigned int old_age; Давайте рассмотрим простенькую программу: int main() //Вход в программу всегда начинается с функции main { // Начала блока int val_1; //Объявление переменной int val_2 = 10; //Объявление и определение(инициализация) значением 10 //переменной val_2
val_1 = 15; //Присваивание значением 15 переменной val_2 = val_1 * 10; // Присваивание переменной val_2 значение, после //операции умножения переменной val_1 и 10 return 0; // возврат из функции main со значением 0 } //Конец блока В языке С существует понятие комментария, который никак не влияет на программу. Его смысл заключается в пометках, чтобы код был читаемым. Существуют два вида комментариев: однострочный и многострочный. // Это однострочный комментарий /* Это многострочный комментарий */ Стоит отметить, что вложенные многострочные комментарии запрещены. Каждое определение, описание и каждый оператор завершается символом ‘;’ (точка с запятой). Локальные и глобальные переменные. Область видимости. Как мы видим в нашей программе, левая фигурная скобка ({) должна предварять тело каждой функции. Соответственно правая фигурная скобка (}) должна стоять в конце каждой функции. Эта пара скобок и часть программы между ними называется блоком. Блок – важная программная единица в С. Переменная, объявленная в текущем блоке, может быть использована только в нем или в блоках, вложенных в данный блок. Все переменные, определенные в блоке, являются локальными переменными – они известны только тому блоку, в котором определены.
Область видимости (Область действия) переменной является та часть программы, в которой возможно обращение к ней. int main() { // Начало блока int val = 10; // Объявление и инициализация переменной return 0; } // Конец блока val = 100; // Нельзя обратиться к переменной вне блока Переменная, объявленная вне функции, имеет область видимости файл. Такая переменная известна всем функция, начиная с того места, где она объявлена, и до конца файла. int global_variable = 100; // Определение глобальной переменной int main() { int a = global_variable * 100; // Определение локальной переменной return 0; } Знакомство с <stdio.h>. Функция printf и scanf. Чтобы привести простейший пример осмысленной программы на языке Си, необходимо ввести оператор, обеспечивающий вывод данных из ЭВМ, например на экран дисплея. К сожалению такого оператора в языке Си нет. Все возможности обмена данных с внешним миром программа на языке Си реализует с помощью библиотечных функций ввода – вывода.
Для подключения к программе описаний средств ввода – вывода из стандартной библиотеки используется директива #include<stdio.h>. Название заголовочного файла stdio.h является аббревиатурой: std – standart(стандартный), i – input(ввод), o – output(вывод), h – head(заголовок) Достаточно часто для вывода информации из ЭВМ в программах используется функция printf(). Она переводит данные из внутреннего кода в символьное представление и выводит полученные изображения символов результатов на экран дисплея. При этом у программиста имеется возможность форматировать данные, т.е. влиять на их представление на экране дисплея(print formatted). Оператор вызова функции printf() можно представить так: printf(форматная_строка, список_аргументов); или же реальный прототип этой функции: int __cdecl printf(const char* _Format, …); Строка форматирования содержит элементы трех типов: обычные символы, которые просто копируются в стандартный выходной поток (выводятся на экран дисплея); команды форматирования, которые определяют тип отображаемого аргумента; управляющие символьные последовательности, которые осуществляют форматирование. Команда форматирования начинается с символа %, за которым следует код формата: %c Символ
%s Строка символов %d, %i Десятичное целое со знаком %u Десятичное целое без знака %f Вещественное число (значение с плавающей точкой) %e Экспоненциальное представление вещественного числа %o Восьмеричное число без знака %x Шестнадцатеричное число без знака При форматировании необходимо не только выводить символы, но и управлять выводом, например, переводить строки, делать отступы и т.д. Для этой цели служат управляющие символы (escape – последовательности): ‘\n’ – перевод строки; ‘\t’ – горизонтальная табуляция ‘\r’ – возврат каретки (курсора) к началу строки ‘\\’ – обратная косая черта \; ‘\’’ – апостроф (одиночная кавычка); ‘\”’ – кавычка (символ двойной кавычки); ‘\0’ – нулевой символ ‘\a’ – сигнал звонок ‘\b’ – возврат на одну позицию (на один символ); ‘\f’ – перевод (прогон) страницы; ‘\v’ – вертикальная табуляция ‘\?’ – знак вопроса Функция scanf считывает данные с клавиатуры и сохраняет информацию в переменных, заданных аргументами, перечисленными в списке аргументов. Аналогично printf используются команды форматирования. Формат вызова: scanf(форматная_строка, список_аргументов);
или же реальный прототип этой функции: int __cdecl scanf(const char* _Format, …); Пример: scanf("%d",&x); Про оператор & (получение адреса переменной) будет говориться позже в разделе Указатели. Упражнения: 1. Объявите переменную radix и присвойте ей значение 4. Посчитайте площадь круга, взяв за радиус значение переменной radix, и выведите на экран результат(число pi возьмите за 3.14). 2. Объявите и инициализируйте три переменных значением 2.2, 8.01, и соответственно 12.0 и вывести их среднее арифметическое значение на экран до тысячного знака. 3. Объявите и инициализируйте 5 переменных типа char и выведите их на экран. 4. Посчитайте сумму бесконечно убывающей геометрической прогрессии с первым членом равным 5 и со знаменателем равным ¼ и выведите это число на экран. 5. Найти периметр и площадь квадрата со стороной квадрта 3.2 и вывести эти числа на экран. Средства программирования на языке Си. Массивы. Операторы выбора В жизни часто есть факторы (условия), воздействие которых меняет ход событий (Пример: если сегодня будет хорошая погода, то студент пойдёт гулять, если же нет - придётся идти в ВУЗ). Подобные ситуации должны
учитываться в программах. Для разрешения таких ситуаций в программировании введены операторы выбора. Оператор выбора – это условный оператор (if) и переключатель (switch) Условный оператор имеет сокращенную форму: if (выражение_условие) оператор; В качестве выражения_условия могут использоваться арифметическое выражение, отношение и логическое выражение. Оператор выполняется только в случае истинности (т.е. при ненулевом значении) выражения_условия. Пример: if ( x > 0) x = 0; Существует полная форма условного оператора: if ( выражение_условие) оператор_1; else оператор_2; Если выражение_условие истинно, то выполняется оператор_1, если ложно, то выполняется оператор 2. if(x > 0) x = 0; else x = 1; Оператор switch является переключателем. Он состоит из ряда различных вариантов и вариантом по умолчанию. Выглядит он так:
switch (выражение_условие){ case значение_1: оператор_1; break; case значение_2: оператор_2; break; default: оператор_n; } Каждый вариант оператора switch начинается меткой (case значение или default) и заканчивается оператором break. Пример: switch(val) { case 0: val = val + 1; case 1: val = val - 1; default: val = -1; } Операторы циклов. Мы часто встречаемся с ситуациями, которые должны повторяться до определенного результата (Пример: Мы будем мыть пол до тех пор, пока он не будет чистым). В программирование такие ситуации решаются с помощью циклов.