01 Program Structure Data Types
01 Program Structure Data Types
Структура программы
Система типов
Переменные и константы
1
Шаблоны
Для описания синтаксиса будут применяться ша-
блоны со следующими обозначениями:
Простейшая программа на языке Си состоит из ди-
ректив препроцессора и описания главной функции
// Директивы препроцессора
#include <stdio.h> /* подключение стандартных функций
ввода-вывода */
#include <conio.h> /* подключение расширенных функций
ввода-вывода */
По команде #include включает в состав программы
содержимое другого файла (обычно заголовочного
файла с расширением .h)
4
Подключение заголовочных файлов
Заголовочный файл содержит описание функций и
типов данных
функций:
#include <<имя файла>>
файла>
Подключение собственного файла, входящего в
проект:
#include "<имя файла>"
файла>
5
Задание
6
Подключение заголовочных файлов
#include <math.h>
#include "testing.h"
7
Комментарии
Игнорируются компилятором. Используются про-
граммистом для пояснения своих действий
Многострочный комментарий:
/* <многострочный
текст> */
Однострочный комментарий:
// <однострочный текст>
8
Главная функция программы
Обязательной частью программы на языке Си яв-
ляется «главная» функция программы – main или
_tmain, выполнение которой считается выполнени-
ем программы
Тело функции – это последовательность объявле-
ний переменных и операторов (действий)
// Описание главной функции программы
int _tmain(int argc, _TCHAR* argv[])
{
int year; // объявление переменной
Оператор (statement) – это законченное действие на
языке программирования
Сложные операторы могут включать в себя другие
операторы
Примитивные операторы в языке Си завершаются
точкой с запятой ;
11
Разновидности операторов
a = b + 1;
Пустой оператор: ;
Типы данных
Арифметические Арифметические
Перечис- Объеди-
целочисленные типы с плавающей Массивы Структуры
лимый тип нения
типы точкой
16
Константы
Например:
10, 0xA0, 3.14159, 1.45E-4, 'a', "Hello"
17
Целые константы
Формат Примеры
Десятичный - последовательность цифр, не
начинающаяся с нуля, если это число не 10, 16, 255
нуль
Восьмеричный - последовательность цифр 012, 020,
0-7, начинающаяся с нуля 0377
Шестнадцатеричный - последовательность 0xA, 0x10,
цифр и букв A-F, начинающаяся с 0x 0xFF
18
Представление логических значений:
ИСТИНА, ЛОЖЬ
Любое целое значение, отличное от нуля,
считается истиной
19
Вещественные константы
исходное значение
0.1235 1834.7679 16755665.7689
22
Вещественные константы
Десятичный формат:
0.000539665407
Экспоненциальный формат:
5.39665407Е-4
23
Представление символов
24
Символьные константы
Тип данных: char
Формат Примеры
Обычный:
'A', 'z'
'<символ>'
Числовой:
'\0', '\0xA'
'\<код символа>'
Кроме обычных символов имеются управляющие
символы, которые называются escape-последова-
тельностями Последоват-ность Наименование
'\n' перевод строки
'\t' горизонтальная табуляция
'\\' обратная косая черта
'\"' двойная кавычка
25 '\'' одинарная кавычка
Строковые константы
Формат Примеры
Последовательность символов, "Hello world!!!",
заключенная в двойные кавычки: "Our country is
"<символьные константы>" \tRussia"
'a' ≠ "a"
Внимание! 'a' не равно "a", так как слева символ, а
справа строка, которая является массивом символов
26
Задание
27
Строковые константы
Без переносов:
"Козлов Алексей Петрович"
С переносами:
"Козлов\nАлексей\nПетрович"
28
Понятие переменной
Переменная – это именованный объект определен-
ного типа, значение которого может изменяться в
ходе работы программы
Переменная – это именованная область памяти, в
которой хранятся данные
Переменную можно рассматривать как сущность, об-
ладающую именем, значением и типом
29
Понятие переменной
Имя и тип задаются при объявлении переменной и
остаются неизменными в течение ее существования
Значение переменной может меняться в ходе вычис-
лений
Получение начального значения переменной назы-
вается ее инициализацией
30
Имена переменных в языке Си
Имя переменной (функции и т.д.) может содержать
латинские буквы, цифры и знак подчеркивания
Имя переменной НЕ должно начинаться с цифры
Язык Си различает прописные и строчные буквы:
I и i — разные переменные
Корректные имена: i, weight123, my_name,
HisName, __yylval
Некорректные имена: 123weight, abc$ef
31
Имена переменных в языке Си
Имя переменной должно ясно обозначать ее назна-
чение (какие данные она хранит)
Слова в именах переменных следует писать на ан-
глийском языке, либо транслитерацией русских слов
Слова в именах переменных могут разделяться
символом подчеркивания либо отделяться заглавной
буквой в начале каждого слова
Признаком качественного программирования яв-
ляется соблюдение стиля (языка слов, способа раз-
деления слов) одинаковым во всей программе.
32
Задание
33
Имена переменных в языке Си.
Хорошие имена
dlina_kvadrata
Транслит, слова разделены
подчеркиванием
i
Общепринятое обозначение
счетчика цикла, происходит от
34
слова iteration
Имена переменных в языке Си.
Неудачные имена
getcwd
Сложно угадать, что имя обозначает get
current working directory
__
Имя из одних подчеркиваний
допустимо, но совершенно непонятно
35
Имена переменных в языке Си
Некорректные имена
1j_list
Начинается с цифры
слон_г
Содержит русские буквы, допустимы
только латинские
mini-car
Содержит символ минус —
допустимы только подчеркивания
36
Синтаксис объявления переменной
37
Задание
38
Синтаксис объявления переменной
int i = 0;
Другие примеры:
//Объявления переменных
int x, s; // без инициализации
int y = 0, u = 77; // обычная инициализация
// Допустимая инициализация
float w1 = 0f, w2 = 5.5,
w3 = w1 + w2 + 125.25;
39
Использование не инициализированной
переменной
Форматированный ввод и вывод в языке Си осуще-
ствляется с помощью функций библиотеки stdio.h
Форматная строка содержит спецификаторы, указы-
вающие тип значений переменных для ввода (вывода)
и их формат:
Функции printf указывается:
форматная строка для вывода, которая содержит
торов)
int x = 5;
printf("This is number %s: %d\n Bye","five", x);
This is number five: 5
43 Bye
Форматированный ввод
Функции scanf указывается:
форматная строка для ввода, обычно состоит из
int x;
scanf("%d",&x);
//теперь х равен введенному с клавиатуры числу
44
Задание
45
Форматированный ввод/вывод
int age = 5;
printf("Please enter you age\n");
scanf("%d", &age);
printf("Next year you will be %d years old\n",
age + 1);
Программа на языке Си строится из небольшого
числа элементов: команд препроцессора, констант,
переменных (идентификаторов), операций и ключе-
вых слов
Из этих элементов с помощью знаков препинания
строятся более сложные конструкции: выражения,
операторы, объявления и описания
Константы, переменные и выражения обязательно
имеют тип
47
Это надо помнить!
Простейший оператор языка Си состоит из выраже-
ния, заканчивающегося точкой с запятой
Символьная константа и строка из одного символа —
разные величины: 'a' не равно "a"
Переменная должна быть объявлена в начале функ-
ции
Перед использованием переменной необходимо
присвоить начальное значение (инициализировать)
48
Ошибки при компиляции
для VS 2008 Russian
'<имя>': необъявленный идентификатор — пере-
менная с указанным именем не была объявлена
(либо опечатка в имени переменной)
Отсутствие ';' перед ... - перед указанной стро-
кой отсутствует точка с запятой (т.е. предыдущий
оператор не завершен точкой с запятой).
49
Ошибки при компиляции
для VS 2005 English
'<имя>': undeclared identifier — переменная с
указанным именем не была объявлена (либо опе-
чатка в имени переменной)
missing ';' before ... - перед указанной стро-
кой отсутствует точка с запятой (т.е. предыдущий
оператор не завершен точкой с запятой)
50
Ошибки во время выполнения
для VS 2008 Russian / 2005 English
Диалог с надписью "Run-Time Check Failure #3 -
The variable '<имя>' is being used without
being defined." - указанная переменная не была
инициализирована (не получила начального значе-
ния) до ее использования
51