Книжная полка Сохранить
Размер шрифта:
А
А
А
|  Шрифт:
Arial
Times
|  Интервал:
Стандартный
Средний
Большой
|  Цвет сайта:
Ц
Ц
Ц
Ц
Ц

Введение в основы программирования на С

Покупка
Основная коллекция
Артикул: 383800.01.99
Доступ онлайн
от 120 ₽
В корзину
Введение в основы программирования на С / Ю.А. Костиков, А.В. Мокряков, В.Ю. Павлов и др. - Москва : НИЦ ИНФРА-М, 2015. - 32 с.ISBN 978-5-16-103253-4. - Текст : электронный. - URL: https://znanium.com/catalog/product/515180 (дата обращения: 04.03.2024). – Режим доступа: по подписке.
Фрагмент текстового слоя документа размещен для индексирующих роботов. Для полноценной работы с документом, пожалуйста, перейдите в ридер.
ВВЕДЕНИЕ В ОСНОВЫ 

ПРОГРАММИРОВАНИЯ НА С 

Методическое пособие для студентов

Костиков Ю. А., Мокряков А. В., Павлов В. Ю., Романенков А. М.

МОСКВА 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;

}

Операторы циклов.

Мы часто встречаемся с ситуациями, которые должны повторяться до 

определенного результата (Пример: Мы будем мыть пол до тех пор, пока он 

не будет чистым).

В программирование такие ситуации решаются с помощью циклов.

В языке Си таких циклов три – это операторы while, do-while, for. Кроме 

того, специально для расширения возможностей этих трех операторов в языке 

предусмотрены еще два оператора – continue и break (по сути, оператор break

такой же как и в операторе switch).

Цикл с предусловием while.

Цикл while используется в том случае, когда не известно точное число 

повторов (итераций). Оператор цикла с предусловием имеет вид:

while (выражение_условие) тело цикла;

Схема выполнения оператора while следующая:

1. Вычисляется выражение_условие.

2. Если выражение ложно, то выполнение оператора while заканчивается и 

выполняется следующий по порядку оператор. Если выражение 

истинно, выполняется тело цикла.

3. Процесс повторяется с пункта 1.

Пример:

while( x != 100) 

{

x = x + 1;

}

Пример бесконечного цикла.

while (1) 

{

…

Доступ онлайн
от 120 ₽
В корзину