инфа Тема_5_1
.pdfМИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования
«НАЦИОНАЛЬНЫЙ ИССЛЕДОВАТЕЛЬСКИЙ ТОМСКИЙ ПОЛИТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ»
Основы программирования и алгоритмические языки
(лекции по курсу Информатика для бакалавров направления 140800 )
Преподаватель каф. ЭАФУ
Нагайцева Ольга Викторовна
Томск 2012
основные понятия программирования
классификация языков программирования
интегрированные среды программирования
язык Си:
общие сведения;
простые типы данных;
оператор описания объекта;
операции над данными;
операторы передачи управления;
операторы организации циклов;
ввод-вывод данных
2
Программирование – процесс перевода алгоритма в запись на
каком-либо языке программирования
Язык программирования – формальный искусственный язык. Имеет алфавит,
синтаксис и семантику
Алфавит – разрешенный к использованию набор символов, с помощью которого могут быть образованы слова и величины данного языка
Синтаксис – система правил, определяющих допустимые конструкции языка программирования из букв алфавита
Семантика – система правил однозначного толкования каждой языковой конструкции, позволяющих производить процесс обработки данных
3
Сточки зрения степени абстрагирования от архитектуры ЭВМ:
языки низкого уровня
языки высокого уровня
В зависимости от способа преобразования программы в машинный язык:
интерпретационного типа
Трансляция |
Линковка |
компиляционного типа
Исходный код |
Обратный код |
Загрузочный |
|
модуль |
|||
|
|
С точки зрения технологии программирования:
Языки программирования
Процедурные |
|
Объектно- |
|
Декларативные |
|
ориентированные |
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Функциональные |
|
Логические |
Операционные |
|
Структурные |
|
Объектные |
|
Визуальные |
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4
Процесс создания программы на языке компиляционного типа :
Трансляция |
Линковка |
Исходный код Объектный код Загрузочный модуль
Обычный состав ИСР:
ИСР - система программных средств, |
|
текстовый редактор; |
||
|
компилятор; |
|||
|
|
|||
используемая |
программистами |
|
редактор связей (линковщик); |
|
|
|
|||
для разработки |
программного |
|
отладчик; |
|
|
|
|||
обеспечения |
|
|
библиотека функций; |
|
|
|
|||
|
|
|||
|
|
|
справочная система; |
|
|
|
|
и др. |
5
начало С помощью инструмента:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 Создание текста |
|
Текстовый редактор |
|||
|
|
|
|
|
программы |
|
||||
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Prog.c |
|
|
|
|
|
|
|
|
|
|
|
|
Компилятор |
|
|
|
|
|
|
2 Трансляция |
|
||||
|
|
|
|
|
|
(Compiler) |
||||
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Prog.obj |
|
|
|
|
|
да |
Есть |
|
|
|||||
|
|
|
|
|
синтаксические |
|
|
|||
|
|
|
|
|
|
|
||||
|
|
|
|
|
ошибки |
|
|
|||
|
|
|
|
|
|
|
|
|
Компоновщик |
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
3 Компоновка |
|
||||
|
Библиотека |
|
|
|
|
(Linker) |
||||
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Prog.exe |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Запуск |
|
|
|
||
|
|
|
|
|
программы |
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4 Отладка, поиск |
|
Программа |
|
|
|
|
работает |
|
||
|
ошибок |
|
|
||
|
|
верно |
|
||
|
|
|
|
||
|
|
|
|
|
|
|
|
|
да |
|
|
|
|
|
|
|
|
|
|
|
конец |
6 |
|
|
|
|
|
|
Типичная Си-программа
|
|
|
|
|
|
|
|
|
|
|
Директивы препроцессора |
|
|
|
||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||
|
|
|
|
# Заголовок |
|
|
|
|
|
|
||||||||||||||
|
|
|
|
|
|
|
|
(include, define …) |
|
|
Функция, с которой |
|||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
main ( ) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
начинается выполнение |
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
программы, всегда носит |
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
имя main() |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Операторы |
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
Функция a( ) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
Операторы |
|
Функции – это строительные |
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
Функция b( ) |
|
|
|
|
|
|
|
|
|
блоки языка Си. |
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Функции состоят из операторов. |
|||||||
|
|
|
|
|
|
|
|
|
|
|
Операторы |
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
Описание |
К |
Д |
О |
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
л |
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
а |
п |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ю |
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
Присваивание |
ч |
н |
е |
||||||||
Функция – |
независимая программная единица, |
|
|
е |
н |
р |
||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
в |
|||||||||||||
|
предназначенная |
для |
выполнения |
|
|
Обращение к функции |
ы |
ы |
а |
|||||||||||||||
|
|
|
е |
е |
т |
|||||||||||||||||||
|
определенных действий |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
с |
|
о |
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
Управление |
л |
|
р |
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
о |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ы |
|
Оператор |
– составная |
часть |
программы, |
|
|
|
|
|
|
|
|
|
|
|
в |
|
||||||||
|
|
Пустой оператор |
|
|||||||||||||||||||||
|
предписывающая |
определѐнный |
|
|
а |
|
|
|||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||
|
порядок |
|
преобразования |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
информации |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
7
Идентификатор – последовательность из букв латинского алфавита, десятичных
цифр и символов подчеркивания, начинающаяся не с цифры
Ключевые слова – идентификаторы, зарезервированные в языке
программирования для специального использования
Лексема – набор символов алфавита языка
Объект (object) – область оперативной памяти
Описание (declaration) объекта – указание свойств объекта без выделения для него области памяти
Определение (definition) – указание свойств объекта и выделение для него области памяти
Инициализация – использование выделенного участка памяти для хранения данных введенного объекта
8
Имя базового |
|
Спецификация |
Объѐм занимаемой |
|
типа |
|
|
|
памяти, байт |
Целые |
signed char |
|
Знаковый символьный |
1 |
(integer) |
signed int |
|
Знаковый целый |
2 |
|
|
|
|
(зависит от разрядности |
|
|
|
|
платформы) |
|
signed short int |
|
Знаковый короткий целый |
2 |
|
signed long int |
|
Знаковый длинный целый |
4 |
|
unsigned char |
|
Беззнаковый символьный |
1 |
|
unsigned int |
|
Беззнаковый целый |
2 |
|
unsigned short int |
|
Беззнаковый короткий целый |
2 |
|
unsigned long int |
|
Беззнаковый длинный целый |
4 |
Плавающие |
float |
|
Плавающий |
4 |
(floating point) |
double |
|
Плавающий 2-й точности |
8 |
|
long float |
|
Длинный плавающий |
8 |
|
long double |
|
Длинный плавающий 2-й точности |
10 |
|
|
|
|
|
Прочие |
void |
|
Пустой |
|
|
enum |
|
Перечисляемый |
|
|
|
|
|
|
9
Тип данного |
Количество бит |
Диапазон чисел |
|
|
|
|
|
|
может быть в зависимости от |
|
|
signed int |
разрядности платформы |
|
|
16 |
[-215, 215 - 1] |
||
|
32 |
[-231, 231 - 1] |
|
signed short int |
16 |
[-215, |
215 - 1] |
|
может быть в зависимости от |
|
|
signed long int |
разрядности платформы |
|
|
|
32 |
[-231, 231 - 1] |
|
|
64 |
[-263, 263 - 1] |
|
|
может быть в зависимости от |
|
|
unsigned int |
разрядности платформы |
|
|
|
16 |
[0, |
216] |
|
32 |
[0, |
232] |
unsigned short |
16 |
[0, |
216] |
int |
|
|
|
|
может быть в зависимости от |
|
|
unsigned long int |
разрядности платформы |
|
|
|
32 |
[0, 232 ] |
|
|
64 |
[0, 264] |
|
float |
32 |
[3.4E-38, 3.4E+38] |
|
double |
64 |
[1.7E-308, 1.7E+308] |
|
long float |
64 |
[1.7E-308, 1.7E+308] |
|
long double |
80 |
[3.4E-4932, 3.4E+4932] |
10