Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Программирование на языке Си. Учебное пособие для СПО
.pdf
%c – символ
%d %i – десятичное целое
%u – десятичное без знаковое целое
%o – восьмеричное целое
%x – шестнадцатеричное целое
%s – строка
%f – вещественное с фиксированной точкой
%e – вещественное с плавающей точкой
%g – вещественное с фиксированной или плавающей точкой в зависимости от
того, что короче.
%p – указатель (адрес)
управляющие символы
\n – перевод строки
\t – табуляция
\b – BACKSPACE
\r – крайнее левое положение
\a – звук
\\ \% для соответствующих символов
пример
printf(“a=%d a=%x \n”, a, a); – вывод переменной а в десятичном и
шестнадцатеричном виде.
Оператор ввода
scanf(“форматная строка”, адреса)
Форматная строка должна содержать только форматы.
Вместо имен переменных ставятся их адреса, перед строками операция взятия
адреса не ставитья (так как имя строки уже является адресом ее начала в
памяти).
Пример
char ch, st[80];
scanf(“%c %s”,&ch, st);
В С++ можно использовать cout и cin
#include <iostream.h>
cin >> j; // считываение значения в переменную j
cin<<”j=”<<j<<endl; //вывод j и перевод строки
в новых версиях
#include <iostream>
using namespace std; // подключаем стандартное пространство имен
или std::cout std::cin
11

форматирование можно осуществлять с помощью
width(int x)
минимальное число знаков до следующего вывода
precision(int x)
устанавливает число значащих знаков для чисел с плавающей
точкой
endl
перевод строки
dec
меняет формат вывода числа на десятичный
oct
меняет формат вывода числа на восьмеричный
hex
меняет формат вывода числа на шестнадцатеричный
#include <iomanip.h> (#include <iomanip>)
Функции
Манипуляторы
примеры
cout.width(10);
cout.precision(4);
cout << 3.14159265<< endl;
cout << hex<< 10;
cout << char(i);
Алфавит языка
Буквы – большие и малые буквы латинского алфавита, знак подчеркивания
Десятичные цифры
Специальные символы
пробел ! " # % & ' ( ) * + , - .
/ : ; < = > ? [ \ ] ^ _ { | } ~
Имена объектов программы (идентификаторы)
Идентификаторами в языке Си являются последовательности букв и
цифр, начинающиеся с буквы, причем символ подчеркивания “_” рассмат-
ривается компилятором как буква. Большие и малые буквы латинского
алфавита считаются различными.
В программах на языке Си идентификаторы служат именами переменных,
символических констант, функций, типов данных и меток. Общепринято для
именования констант использовать большие буквы латинского алфавита,
сохраняя малые буквы для обозначения переменных и функций.
Не рекомендуется в прикладных программах использовать
идентификаторы, начинающиеся с подчеркивания, ибо это может привести к
12

конфликту с именами создаваемых компилятором служебных переменных или
констант.
Ключевые слова
Ключевые слова – это предопределенные идентификаторы, имеющие
специальные значения. Имена никаких объектов программы не должны
совпадать со следующими зарезервированными ключевыми словами,
например:
char, float, extern, break, for, const и т.д.
Комментарии
Под комментариями понимаются последовательности символов,
игнорируемые компилятором. Комментарии имеют следующую форму:
/* комментарий1 */ – текст между /* и */ является комментарием, это
может быть одна или несколько строк
// – часть строки после символов // является комментарием
Используются для
пояснения текста программы;
временного удаления части кода программы.
Константы
Константами в языке Си могут быть числа (целые и вещественные),
символы и строки символов, которые допустимо использовать в программе в
смысле их значений. Значение никакой константы не может быть изменено
в процессе работы программы. Специальные директивы языка дают
возможность присваивать константам любого типа символические имена,
например с помощью директивы #define
#define P1 10
Следует учитывать, что директива #define просто осуществляет
подстановку выражения вместо идентификатора, в приведенном выше примере
вместо Р1 будет подставлено 10.
Если задать
#define P2 10+10
то в текст программы будет подставлено именно 10+10, а не 20. Таким образом
значение 2*Р2 будет равно 30, а не 40 (2*10+10). В связи с этим рекомендуется
выражение заключать в круглые скобки.
#define P3 (10+10)
13

В этом случае 2*Р3 будет равно 40.
Также можно использовать ключевое слово const, по сути мы создаем
переменную соответствующего типа, значение которой изменять запрещено.
сonst float PI=3.14159265;
Целые константы
Целые константы могут быть представлены в трех основных форматах:
десятичном i=10
восьмеричном i=012
шестнадцатеричном i=0xA;
тип константы - int
Вещественные константы
Их запись может включать в себя целую часть, десятичную точку,
дробную часть, символ экспоненты e или E и показатель экспоненты в виде
целого числа со знаком.
В записи вещественной константы может отсутствовать либо целая, либо
дробная часть (но не обе сразу). Отсутствие десятичной точки допустимо лишь
при наличии экспоненты. Следующие примеры иллюстрируют возможные
формы записи вещественных констант:
15.75 1.575E1 1575e-2 .1575E2
.137 137. 137.0
Всякая вещественная константа рассматривается компилятором как
имеющая тип double.
Символьные константы
Набор символов ASCII имеют коды от 0 до 255:
0..31 – управляющие символы
48-57 – цифры
65-90 – заглавные латинские буквы
97-122 – строчные латинские буквы
остальное – символы операций, скобки, знаки препинания итд.
128… 255 – расширение таблицы ASCII – национальные шрифты
Символьная константа представляет собой символ, заключенный в
одиночные кавычки (любой печатаемый символ ASCII, кроме кавычки (') или
обратной косой черты (\).)
14

‘a’ ‘1’ ‘Я’
\-последовательности состоят из обратной косой черты, за которой следует
буква или комбинация цифр. Символы ' и \ также представляются в виде \-
последовательностей. В следующей таблице приведены допустимые в языке
Си \-последовательности и их значения.
\b - символ назад \t - табуляция
\f - новая страница \' - одиночная кавычка
\n - новая строка \" - двойная кавычка
\r - возврат каретки \\ - обратная косая черта
\ddd - символ ASCII в восьмеричном представлении
\xdd - символ ASCII в шестнадцатеричном представлении
Последовательности вида \ddd и \xddd позволяют представить любой
символ ASCII, включая и непечатаемые символы, в восьмеричном и
шестнадцатеричном формате соответственно.
Значением символьной константы является целое число, отвечающее
внутреннему машинному представлению соответствующего символа. Ниже
приведены примеры правильной записи символьных констант:
'A' 'c' '?' '7' '\'' '\\' '\n' 'r' '\60' '\x40'
Строки символов
Строками в языке Си являются последовательности символов ASCII,
заключенные в двойные кавычки:
"<символы>"
где <символы> есть один или более символов ASCII, исключая двойную
кавычку (") и обратную косую черту (\). Непечатаемые символы ASCII, а
также символы " и \ в составе строк должны представляться соответствующими
\-последовательностями.
К строке автоматически добавляется нуль-символ (\0) - обозначает конец
строки. Формально допустимой является также пустая строка (""), состоящая
во внутреннем представлении из одного символа \0.
Приведем несколько примеров правильной записи символьных строк:
"Это строка символов"
"Enter a number between 1 and 100 \n and press Enter"
" введите \"Yes\", или \"No\" "
15

Важно заметить, что символьная константа, например 'x', не
идентична строке "x", содержащей один символ. Дело в том, что символьная
константа занимает один байт памяти и равносильна своему числовому коду
во внутреннем машинном представлении. Строка же из одного символа
занимает два байта памяти, первый из которых содержит код этого символа, а
второй – символ \0.
Операции и выражения
Под операциями следует понимать действия, выполняемые программой
над определенными в ней объектами. Для обозначения операций используются
некоторые стандартные комбинации специальных символов из алфавита языка.
Объекты программы, участвующие в операции, называются операндами.
Всякая комбинация одного или большего числа операндов и символов
операций, дающая единственное значение, образует выражение. Любое
выражение, заканчивающееся точкой с запятой, является оператором.
Множество всех операций языка Си удобно разделить на шесть
следующих групп:
1. арифметические операции
+ сложение
- вычитание
* умножение
% остаток от деления
/ целая или вещественная операция деления (выбирается по типу
операндов)
++ инкремент
-- декремент
Инкремент и декремент может быть префиксный и постфиксный.
Различие в том, что в префиксном значение переменной сначала изменяется, а
потом используется, а в постфиксном наоборот.
Например
a=1; b=a++; // в результате a=2 b=1
a=1; b=++a; // в результате a=2 b=2
2. операции отношения
== равенство
!= не равенство
< меньше
> больше
<= меньше или равно
>= больше или равно
16

3. логические операции
! логическое отрицание
|| логическое или
&& логическое и
4. побитовые операции
~ побитовое отрицание
<< побитовый сдвиг влево
>> побитовый сдвиг вправо
& побитовое и
| побитовое или
^ побитовое исключающее или
5. операции присваивания
= += -= *= /= %= <<= >>= &= ^= |=
например a*=2 равносильно a=a*2
6. другие операции
? : условная операция
, последовательное выполнение выражений
syzeof определение размера объекта в байтах
(type specifier) преобразование типа
() вызов функции
[] обращение к элементу массива
. обращение к полю структуры
-> обращение к полю структуры с помощью указателя
* обращение к элементу по адресу
& вычисление адреса
Приоритет операций
Вид операции обозначение
1 постфиксные ( ) [ ] -> .
2 унарные (справа налево) ! логическое отрицание
~ побитовое отрицание
- унарный минус
++ инкремент
-- декремент
(type) преобразование типа
* обращение по адресу
& вычисление адреса
sizeof () вычисление размера
17

3 мультипликативные * / %
4 аддитивные + -
5 сдвиг побитовый << >>
6 отношение < <= > >=
7 равенство == !=
8 побитовая и &
9 побитовая искл. или ^
10 побитовая или |
11 логическая и &&
12 логическая или || пример a[i]<0 && ++o || ++p;
13 условная ?:
14 присваивание = op= (справа налево, op – одна из операций
перечисленных выше)
15 запятая ,
Преобразование типов
Для преобразования одного объектов типа в другой используется
конструкция
(тип) выражение
Преобразование так же происходит в операциях, тогда тип операндов не
совпадает – преобразование происходит к ближайшему общему типу.
например
int i; float f;
i=(int)2.9; или i=2.9; //результат i=2 дробная часть отбрасывается
f=1/2; // результат f=0 так как деление будет целочисленным
f=(float)1/3; // результат f=0.5 так как деление будет вещественным
Операторы
Простейшим оператором языка Си является всякое выражение,
заканчивающееся точкой с запятой. В частности, отдельно стоящая точка с
запятой интерпретируется компилятором как нуль-оператор.
Допустимым является вложение операторов друг в друга.
Один или несколько операторов, заключенных в фигурные скобки,
образуют составной оператор или блок. Точка с запятой после закрывающей
скобки при этом не ставится.
18

Математические функции в языке Си
Удобно использовать набор стандартных математических функций Си,
содержащихся в библиотеке и доступных при подключении заголовочного
файла <math.h> :
sin (x) - sin x;
cos (x) – cos x ;
tan(x) - tg х ;
log (x) - ln x;
log10(x) – lg x;
exp(x) - показательная функция ex ;
sqrt (x)- корень квадратный от х;
роw(x, y) – x в степени y;
abs(x)- модуль целого x;
аabs(x)- модуль вещественного x;
acos(x) – arccos x;
asin(x) – arcsin x;
atan(x)- arctg x;
sinh(x)- sh x;
cosh (x) – ch x;
tanh(x)-th x.
Для тригонометрических функций аргумент х измеряется в радианах и
имеет тип double, как и значения функций.
Контрольные вопросы
Основные типы переменных.
Типы операций в языке Си.
Структура программы на языке Си.
Для чего используются заголовочные файлы?
19

2. Конструкции выбора языка
Рассмотрим группу операторов, управляющих процессом выполнения
инструкций программы.
Условный оператор if-else
Условный оператор является простейшим и эффективным средством,
позволяющим программировать разветвленные алгоритмы. Его формальный
синтаксис задается следующей формулой:
if (выражение)
оператор1
else
оператор2
Причем else-часть не является обязательной и может быть опущена.
Здесь if и else – ключевые слова языка Си; выражение – произвольное
выражение, приводимое к логическому (целому) значению; оператор1 и
оператор2 – простые или составные операторы.
Прежде всего, вычисляется значение выражения, стоящего в скобках, и
полученный результат сравнивается с нулем, что соответствует его
интерпретации в терминах истина"/"ложь". Если результатом является
логическое значение "истина" (выражение отлично от нуля), то выполняются
действия, отвечающие оператор1. В противном случае осуществляется
переход к операторt2 в else-части условного оператора, а при ее отсутствии –
к оператору, непосредственно следующему за оператором if.
пример
if (i > 0)
y = x/i;
else {
i = -i;
y=x/i;
}
В конструкциях вида
z=0;
if (a > 0)
if (b > 0)
z = 1;
else
z = 2;
20
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
