Введение в основы программирования на С
Введение в основы программирования на C: Краткий обзор
Данное методическое пособие, предназначенное для студентов, представляет собой введение в язык программирования C, охватывая основные концепции и инструменты, необходимые для начала работы с этим мощным и широко используемым языком.
Типы данных и основы синтаксиса
Книга начинается с представления базовых типов данных в C, включая char, int, float, double и их модификаторы (например, unsigned). Объясняется понятие переменной как именованной области памяти, связанной с определенным типом данных. Рассматривается процесс объявления и инициализации переменных, а также приводится простейшая программа на C, демонстрирующая основные элементы синтаксиса, такие как функция main(), операторы присваивания и возврата значения. Подчеркивается важность комментариев для улучшения читаемости кода.
Область видимости переменных
Второй раздел посвящен концепции области видимости переменных. Объясняется различие между локальными и глобальными переменными, а также влияние блока кода (определяемого фигурными скобками) на доступность переменных. Рассматривается, как область видимости влияет на организацию и структуру программы.
Ввод-вывод и работа с библиотекой stdio.h
Книга знакомит с библиотекой stdio.h, которая предоставляет функции для ввода и вывода данных. Особое внимание уделяется функциям printf() и scanf(), их формату вызова и использованию спецификаторов формата для вывода различных типов данных. Рассматриваются управляющие символы (escape-последовательности) для форматирования вывода. Приводятся примеры использования printf() и scanf() для взаимодействия с пользователем.
Массивы, операторы выбора и циклы
В последующих главах рассматриваются более сложные концепции. Объясняется понятие массива как совокупности однотипных элементов, доступ к которым осуществляется по индексу. Рассматриваются одномерные и многомерные массивы, а также инициализация массивов. Далее, представлены операторы выбора if и switch, позволяющие создавать условные конструкции в программе. Подробно рассматриваются операторы циклов while, do-while и for, а также операторы break и continue для управления потоком выполнения цикла.
Указатели и функции
Ключевым разделом является изучение указателей. Объясняется понятие указателя как переменной, хранящей адрес другой переменной. Рассматриваются операции получения адреса (&) и разыменования (*). Подробно описывается арифметика указателей, включая инкремент, декремент, сложение, вычитание и сравнение указателей. Рассматривается связь между указателями и массивами. Далее, рассматриваются функции, их определение, прототипы и вызов. Объясняется передача параметров по значению и использование указателей в качестве параметров функций.
Стандартные алгоритмы
В заключительной части книги представлены стандартные алгоритмы, такие как схема Горнера для перевода чисел из одной системы счисления в другую, обратная схема Горнера, а также метод границы для обработки строк и разбиения их на лексемы. Приводятся примеры реализации этих алгоритмов на языке C.
ВВЕДЕНИЕ В ОСНОВЫ ПРОГРАММИРОВАНИЯ НА С Методическое пособие для студентов Костиков Ю. А., Мокряков А. В., Павлов В. Ю., Романенков А. М. МОСКВА 2014
Содержание. Типы данных простейшая программа Локальные и глобальные переменные. Область видимости 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;
}
Операторы циклов.
Мы часто встречаемся с ситуациями, которые должны повторяться до
определенного результата (Пример: Мы будем мыть пол до тех пор, пока он
не будет чистым).
В программирование такие ситуации решаются с помощью циклов.