SlideShare a Scribd company logo
1 of 21
Download to read offline
ОСНОВЫ ПРОГРАММНОГО
  КОНСТРУИРОВАНИЯ
                  Лекция № 2
             26 февраля 2013 г.
ИНЬ И ЯН
     ПРОГРАММИРОВАНИЯ



• Алгоритмы.

• Структуры   данных.

• Алгоритмы    + Структуры данных = Программы.
ДАННЫЕ (ИНФОРМАЦИЯ)

• Данные   для человека:    • Изображения   (видео).

 • Числа
       (целые,              • Звук.
  вещественные,
  комплексные)…             • «Записи».

 • Наборы чисел (ряды,     • Компьютерможет:
  векторы, матрицы).        00011100111010101

 • Текст   (символы).
МАШИННОЕ
 ПРЕДСТАВЛЕНИЕ ДАННЫХ
• Целыечисла – двоичная   • Набор    чисел, символов –
 система счисления.        массив.

• Вещественные числа –    • Картинка– массив
 представление с           пикселов с цветом (RGB).
 плавающей точкой.
                          • Звук– набор отсчетов
• Символы – числа          (квантованная амплитуда).
 (кодировка).
АЛГОРИТМ

• Решает   определенную задачу.

• Конечная   упорядоченная последовательность действий.

• Обычно имеет входные параметры и выходные
 результаты.

• Пример: алгоритм   Евклида поиска НОД двух чисел:

 • НОД(a, b)   = НОД(a-b, b) если a > b
ЯЗЫКИ
     ПРОГРАММИРОВАНИЯ
• Структуры   данных:

 • Типы   данных (числа, символы, строки, …).

 • Переменные.

• Алгоритмы:

 • Операции  над данными, в определенной
   последовательности – согласно синтаксису языка.
ПАРАДИГМЫ
     ПРОГРАММИРОВАНИЯ
• Императивная. Программа  – это и есть алгоритм. В
 каждый момент есть глобальное состояние (содержимое
 памяти), явно доступное для изменения. Языки: Pascal, C, …

• Функциональная. Программа      – это функция. Нет явного
 состояния. Языки: LISP, Haskell, Microsoft Excel (!)

• Логическая. Программа    – это набор предикатов и правил
 вывода. Языки: Prolog, SQL.
ИМПЕРАТИВНЫЙ C
int fib(int n) {
    int a = 0, b = 1;
    int i;
    for (i = 1; i < n; i++) {
        int c = a + b;
        a = b;
        b = c;
    }
    return b;
}
ФУНКЦИОНАЛЬНЫЙ
         HASKELL


fib :: Int -> Integer
fib n = fibs (0,1) !! n
        where fibs (a,b) = a : fibs (b,a+b)
ЛОГИЧЕСКИЙ PROLOG

    fib(0, 0, 1):-!.

    fib(N, A, B):-
    N1 = N - 1,
    fib(N1, A1, B1),
    A = B1,
    B = A1 + B1.
ЯЗЫК C

• 1972   г., Деннис Ричи (Bell Labs).

• «Переносимый      ассемблер» для системных целей:

 • Операционные       системы: ядра, системные библиотеки.

 • Компиляторы, виртуальные       машины, …

• Дает   широкие возможности, но требует аккуратности.
ИСТОРИЯ

• 1972   г. – рождение.

• 1978   г. – выход книги, «K&R» C.

   • 1983   г. – отпочковался C++.

• 1989   г. – стандарт ANSI C или C89.

• 1999   г. – стандарт C99 (не совместим с C++!).

• 2011   г. – стандарт C11.
КОМПИЛЯТОРЫ


• GNU     Compiler Collection.

• Microsoft Visual   C++.

• Intel   C++.

• Clang/LLVM.
HELLO_WORLD.C


#include <stdio.h>

int main(void) {
    printf("Hello, world!n");
    return 0;
}
СТРУКТУРА ПРОГРАММЫ

• Программа    состоит из функций, в т. ч. функции main().

• Функции    расположены в файлах *.c. Например:

 • main.c

 • util.c

 • lib.c

 • magic.c
ЭТАП 1. КОМПИЛЯЦИЯ
Исходные файлы (модули)   Объектные файлы

             main.c        main.o


             util.c        util.o


              lib.c         lib.o


            magic.c       magic.o
ОБЪЕКТНЫЙ ФАЙЛ FILE.O

• Машинный код функций,   • hello_world.c:
 объявленных в file.c.
                            • Машинный       код функции
• Памятьпод объявленные      main().
 глобальные переменные.
                            • Ссылка
                                   на внешнюю
• Ссылкина внешние           функцию printf().
 функции.

• Ссылки
       на глобальные
 переменные.
ЭТАП 2. ЛИНКОВКА

main.o


 util.o                  Исполняемый
            Линкер
                            файл
 lib.o


magic.o
           Статические   Динамические
           библиотеки     библиотеки
РАБОТА ЛИНКЕРА
•   Операционная единица: имя. Каждый объектный модуль (в т. ч. библиотечный):

    •   Предоставляет какие-то имена (функции, переменные, …)

    •   Требует какие-то имена.

•   Линкер удовлетворяет зависимости (все начинается с имени main).

•   Ошибки:

    •   Имя требуется одним из модулей, но никаким не предоставляется.

    •   Одно и то же имя предоставляется более, чем одним модулем.
ИСПОЛНЯЕМЫЙ ФАЙЛ

• Содержит  все нужные имена (и ничего лишнего). Все
 ссылки на имена в объектных файлах были разрешены.

• Попостроению зависит от объектных файлов и
 библиотек (те зависят от исходных файлов).

• Длявыполнения не нужно больше ничего (за исключением
 динамических библиотек).
КОНЕЦ ВТОРОЙ ЛЕКЦИИ
     Язык C – это хорошо.

More Related Content

What's hot

библиотеки программирования
библиотеки программированиябиблиотеки программирования
библиотеки программирования
mcroitor
 
Лекция 4: Стеки и очереди
Лекция 4: Стеки и очередиЛекция 4: Стеки и очереди
Лекция 4: Стеки и очереди
Mikhail Kurnosov
 
Cpp/cli types
Cpp/cli typesCpp/cli types
Cpp/cli types
mcroitor
 
Хочу знать, сколько уникальных посетителей было на моём сайте за произвольный...
Хочу знать, сколько уникальных посетителей было на моём сайте за произвольный...Хочу знать, сколько уникальных посетителей было на моём сайте за произвольный...
Хочу знать, сколько уникальных посетителей было на моём сайте за произвольный...
Ontico
 
лекция №14
лекция №14лекция №14
лекция №14
student_kai
 
лабораторная работа №5
лабораторная работа №5лабораторная работа №5
лабораторная работа №5
Zhanna Kazakova
 
Лекция 4: Стек. Очередь
Лекция 4: Стек. ОчередьЛекция 4: Стек. Очередь
Лекция 4: Стек. Очередь
Mikhail Kurnosov
 

What's hot (20)

Основы программирования на C++
Основы программирования на C++Основы программирования на C++
Основы программирования на C++
 
библиотеки программирования
библиотеки программированиябиблиотеки программирования
библиотеки программирования
 
Functional Programing
Functional ProgramingFunctional Programing
Functional Programing
 
SciPy
SciPySciPy
SciPy
 
C++ Базовый. Занятие 03.
C++ Базовый. Занятие 03.C++ Базовый. Занятие 03.
C++ Базовый. Занятие 03.
 
Лекция 4: Стеки и очереди
Лекция 4: Стеки и очередиЛекция 4: Стеки и очереди
Лекция 4: Стеки и очереди
 
Cpp/cli types
Cpp/cli typesCpp/cli types
Cpp/cli types
 
Обработка текста на Haskell - это просто!
Обработка текста на Haskell - это просто!Обработка текста на Haskell - это просто!
Обработка текста на Haskell - это просто!
 
Абстрактные типы данных, контейнеры и списки
Абстрактные типы данных, контейнеры и спискиАбстрактные типы данных, контейнеры и списки
Абстрактные типы данных, контейнеры и списки
 
Функциональное программирование на F#
Функциональное программирование на F#Функциональное программирование на F#
Функциональное программирование на F#
 
Хочу знать, сколько уникальных посетителей было на моём сайте за произвольный...
Хочу знать, сколько уникальных посетителей было на моём сайте за произвольный...Хочу знать, сколько уникальных посетителей было на моём сайте за произвольный...
Хочу знать, сколько уникальных посетителей было на моём сайте за произвольный...
 
Олег Алистратов — Сортировка списков в Perl и Python
Олег Алистратов — Сортировка списков в Perl и PythonОлег Алистратов — Сортировка списков в Perl и Python
Олег Алистратов — Сортировка списков в Perl и Python
 
лекция №14
лекция №14лекция №14
лекция №14
 
СИ++ УМЕР. ДА ЗДРАВСТВУЕТ СИ++
СИ++ УМЕР. ДА ЗДРАВСТВУЕТ СИ++СИ++ УМЕР. ДА ЗДРАВСТВУЕТ СИ++
СИ++ УМЕР. ДА ЗДРАВСТВУЕТ СИ++
 
ОПК № 5 – Составные типы данных, списки
ОПК № 5 – Составные типы данных, спискиОПК № 5 – Составные типы данных, списки
ОПК № 5 – Составные типы данных, списки
 
Scala #3
Scala #3Scala #3
Scala #3
 
Алгоритмическая конструкция Повторение
Алгоритмическая конструкция ПовторениеАлгоритмическая конструкция Повторение
Алгоритмическая конструкция Повторение
 
Абстрактные типы данных, последовательности, списки
Абстрактные типы данных, последовательности, спискиАбстрактные типы данных, последовательности, списки
Абстрактные типы данных, последовательности, списки
 
лабораторная работа №5
лабораторная работа №5лабораторная работа №5
лабораторная работа №5
 
Лекция 4: Стек. Очередь
Лекция 4: Стек. ОчередьЛекция 4: Стек. Очередь
Лекция 4: Стек. Очередь
 

Similar to ОПК № 2 – Алгоритмы и структуры данных, язык C

Some Elements of Functional Porgamming Languages
Some Elements of Functional Porgamming LanguagesSome Elements of Functional Porgamming Languages
Some Elements of Functional Porgamming Languages
_ymn
 
Евгений Рыжков, Андрей Карпов Как потратить 10 лет на разработку анализатора ...
Евгений Рыжков, Андрей Карпов Как потратить 10 лет на разработку анализатора ...Евгений Рыжков, Андрей Карпов Как потратить 10 лет на разработку анализатора ...
Евгений Рыжков, Андрей Карпов Как потратить 10 лет на разработку анализатора ...
Platonov Sergey
 
«Память и Python. Что надо знать для счастья?» Алексей Кузьмин, ЦНС
«Память и Python. Что надо знать для счастья?» Алексей Кузьмин, ЦНС«Память и Python. Что надо знать для счастья?» Алексей Кузьмин, ЦНС
«Память и Python. Что надо знать для счастья?» Алексей Кузьмин, ЦНС
it-people
 
C++ теория
C++ теорияC++ теория
C++ теория
tank1975
 
Объектно-Ориентированное Программирование на C++, Лекции 1 и 2
Объектно-Ориентированное Программирование на C++, Лекции 1 и 2Объектно-Ориентированное Программирование на C++, Лекции 1 и 2
Объектно-Ориентированное Программирование на C++, Лекции 1 и 2
Dima Dzuba
 

Similar to ОПК № 2 – Алгоритмы и структуры данных, язык C (20)

Александр Сомов "C++: препроцессор, компилятор, компоновщик"
Александр Сомов "C++: препроцессор, компилятор, компоновщик"Александр Сомов "C++: препроцессор, компилятор, компоновщик"
Александр Сомов "C++: препроцессор, компилятор, компоновщик"
 
Александр Гладыш — Lua
Александр Гладыш — LuaАлександр Гладыш — Lua
Александр Гладыш — Lua
 
Компьютерная графика. Введение в Processing
Компьютерная графика. Введение в ProcessingКомпьютерная графика. Введение в Processing
Компьютерная графика. Введение в Processing
 
ОПК № 1 – Вводная
ОПК № 1 – ВводнаяОПК № 1 – Вводная
ОПК № 1 – Вводная
 
Some Elements of Functional Porgamming Languages
Some Elements of Functional Porgamming LanguagesSome Elements of Functional Porgamming Languages
Some Elements of Functional Porgamming Languages
 
Евгений Рыжков, Андрей Карпов Как потратить 10 лет на разработку анализатора ...
Евгений Рыжков, Андрей Карпов Как потратить 10 лет на разработку анализатора ...Евгений Рыжков, Андрей Карпов Как потратить 10 лет на разработку анализатора ...
Евгений Рыжков, Андрей Карпов Как потратить 10 лет на разработку анализатора ...
 
Декларативно функциональный стиль в PHP
Декларативно функциональный стиль в PHPДекларативно функциональный стиль в PHP
Декларативно функциональный стиль в PHP
 
2014-11-01 03 Николай Линкер. Open your clojure
2014-11-01 03 Николай Линкер. Open your clojure2014-11-01 03 Николай Линкер. Open your clojure
2014-11-01 03 Николай Линкер. Open your clojure
 
Формальная верификация кода на языке Си
Формальная верификация кода на языке СиФормальная верификация кода на языке Си
Формальная верификация кода на языке Си
 
Formal verification of C code
Formal verification of C codeFormal verification of C code
Formal verification of C code
 
Формальная верификация кода на языке Си
Формальная верификация кода на языке СиФормальная верификация кода на языке Си
Формальная верификация кода на языке Си
 
Caché Native Access. InterSystems Meetup 2014
Caché Native Access. InterSystems  Meetup 2014Caché Native Access. InterSystems  Meetup 2014
Caché Native Access. InterSystems Meetup 2014
 
«Память и Python. Что надо знать для счастья?» Алексей Кузьмин, ЦНС
«Память и Python. Что надо знать для счастья?» Алексей Кузьмин, ЦНС«Память и Python. Что надо знать для счастья?» Алексей Кузьмин, ЦНС
«Память и Python. Что надо знать для счастья?» Алексей Кузьмин, ЦНС
 
Программирование: от сложного к простому
Программирование: от сложного к простомуПрограммирование: от сложного к простому
Программирование: от сложного к простому
 
Functional
FunctionalFunctional
Functional
 
Внедрение аспектов в PHP с помощью библиотеки GO! AOP
Внедрение аспектов в PHP с помощью библиотеки GO! AOPВнедрение аспектов в PHP с помощью библиотеки GO! AOP
Внедрение аспектов в PHP с помощью библиотеки GO! AOP
 
C++ теория
C++ теорияC++ теория
C++ теория
 
C++ теория
C++ теорияC++ теория
C++ теория
 
C++ теория
C++ теорияC++ теория
C++ теория
 
Объектно-Ориентированное Программирование на C++, Лекции 1 и 2
Объектно-Ориентированное Программирование на C++, Лекции 1 и 2Объектно-Ориентированное Программирование на C++, Лекции 1 и 2
Объектно-Ориентированное Программирование на C++, Лекции 1 и 2
 

Recently uploaded

Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...
Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...
Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...
Ирония безопасности
 
ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...
ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...
ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...
Ирония безопасности
 
CVE. The Fortra's GoAnywhere MFT [RU].pdf
CVE. The Fortra's GoAnywhere MFT [RU].pdfCVE. The Fortra's GoAnywhere MFT [RU].pdf
CVE. The Fortra's GoAnywhere MFT [RU].pdf
Хроники кибер-безопасника
 
Cyberprint. Dark Pink Apt Group [RU].pdf
Cyberprint. Dark Pink Apt Group [RU].pdfCyberprint. Dark Pink Apt Group [RU].pdf
Cyberprint. Dark Pink Apt Group [RU].pdf
Хроники кибер-безопасника
 
СИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdf
СИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdfСИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdf
СИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdf
Хроники кибер-безопасника
 
2023 Q4. The Ransomware report. [RU].pdf
2023 Q4. The Ransomware report. [RU].pdf2023 Q4. The Ransomware report. [RU].pdf
2023 Q4. The Ransomware report. [RU].pdf
Хроники кибер-безопасника
 

Recently uploaded (9)

Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...
Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...
Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...
 
ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...
ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...
ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...
 
Ransomware_Q3 2023. The report [RU].pdf
Ransomware_Q3 2023.  The report [RU].pdfRansomware_Q3 2023.  The report [RU].pdf
Ransomware_Q3 2023. The report [RU].pdf
 
MS Navigating Incident Response [RU].pdf
MS Navigating Incident Response [RU].pdfMS Navigating Incident Response [RU].pdf
MS Navigating Incident Response [RU].pdf
 
CVE. The Fortra's GoAnywhere MFT [RU].pdf
CVE. The Fortra's GoAnywhere MFT [RU].pdfCVE. The Fortra's GoAnywhere MFT [RU].pdf
CVE. The Fortra's GoAnywhere MFT [RU].pdf
 
Cyberprint. Dark Pink Apt Group [RU].pdf
Cyberprint. Dark Pink Apt Group [RU].pdfCyberprint. Dark Pink Apt Group [RU].pdf
Cyberprint. Dark Pink Apt Group [RU].pdf
 
СИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdf
СИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdfСИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdf
СИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdf
 
Malware. DCRAT (DARK CRYSTAL RAT) [RU].pdf
Malware. DCRAT (DARK CRYSTAL RAT) [RU].pdfMalware. DCRAT (DARK CRYSTAL RAT) [RU].pdf
Malware. DCRAT (DARK CRYSTAL RAT) [RU].pdf
 
2023 Q4. The Ransomware report. [RU].pdf
2023 Q4. The Ransomware report. [RU].pdf2023 Q4. The Ransomware report. [RU].pdf
2023 Q4. The Ransomware report. [RU].pdf
 

ОПК № 2 – Алгоритмы и структуры данных, язык C

  • 1. ОСНОВЫ ПРОГРАММНОГО КОНСТРУИРОВАНИЯ Лекция № 2 26 февраля 2013 г.
  • 2. ИНЬ И ЯН ПРОГРАММИРОВАНИЯ • Алгоритмы. • Структуры данных. • Алгоритмы + Структуры данных = Программы.
  • 3. ДАННЫЕ (ИНФОРМАЦИЯ) • Данные для человека: • Изображения (видео). • Числа (целые, • Звук. вещественные, комплексные)… • «Записи». • Наборы чисел (ряды, • Компьютерможет: векторы, матрицы). 00011100111010101 • Текст (символы).
  • 4. МАШИННОЕ ПРЕДСТАВЛЕНИЕ ДАННЫХ • Целыечисла – двоичная • Набор чисел, символов – система счисления. массив. • Вещественные числа – • Картинка– массив представление с пикселов с цветом (RGB). плавающей точкой. • Звук– набор отсчетов • Символы – числа (квантованная амплитуда). (кодировка).
  • 5. АЛГОРИТМ • Решает определенную задачу. • Конечная упорядоченная последовательность действий. • Обычно имеет входные параметры и выходные результаты. • Пример: алгоритм Евклида поиска НОД двух чисел: • НОД(a, b) = НОД(a-b, b) если a > b
  • 6. ЯЗЫКИ ПРОГРАММИРОВАНИЯ • Структуры данных: • Типы данных (числа, символы, строки, …). • Переменные. • Алгоритмы: • Операции над данными, в определенной последовательности – согласно синтаксису языка.
  • 7. ПАРАДИГМЫ ПРОГРАММИРОВАНИЯ • Императивная. Программа – это и есть алгоритм. В каждый момент есть глобальное состояние (содержимое памяти), явно доступное для изменения. Языки: Pascal, C, … • Функциональная. Программа – это функция. Нет явного состояния. Языки: LISP, Haskell, Microsoft Excel (!) • Логическая. Программа – это набор предикатов и правил вывода. Языки: Prolog, SQL.
  • 8. ИМПЕРАТИВНЫЙ C int fib(int n) { int a = 0, b = 1; int i; for (i = 1; i < n; i++) { int c = a + b; a = b; b = c; } return b; }
  • 9. ФУНКЦИОНАЛЬНЫЙ HASKELL fib :: Int -> Integer fib n = fibs (0,1) !! n where fibs (a,b) = a : fibs (b,a+b)
  • 10. ЛОГИЧЕСКИЙ PROLOG fib(0, 0, 1):-!. fib(N, A, B):- N1 = N - 1, fib(N1, A1, B1), A = B1, B = A1 + B1.
  • 11. ЯЗЫК C • 1972 г., Деннис Ричи (Bell Labs). • «Переносимый ассемблер» для системных целей: • Операционные системы: ядра, системные библиотеки. • Компиляторы, виртуальные машины, … • Дает широкие возможности, но требует аккуратности.
  • 12. ИСТОРИЯ • 1972 г. – рождение. • 1978 г. – выход книги, «K&R» C. • 1983 г. – отпочковался C++. • 1989 г. – стандарт ANSI C или C89. • 1999 г. – стандарт C99 (не совместим с C++!). • 2011 г. – стандарт C11.
  • 13. КОМПИЛЯТОРЫ • GNU Compiler Collection. • Microsoft Visual C++. • Intel C++. • Clang/LLVM.
  • 14. HELLO_WORLD.C #include <stdio.h> int main(void) { printf("Hello, world!n"); return 0; }
  • 15. СТРУКТУРА ПРОГРАММЫ • Программа состоит из функций, в т. ч. функции main(). • Функции расположены в файлах *.c. Например: • main.c • util.c • lib.c • magic.c
  • 16. ЭТАП 1. КОМПИЛЯЦИЯ Исходные файлы (модули) Объектные файлы main.c main.o util.c util.o lib.c lib.o magic.c magic.o
  • 17. ОБЪЕКТНЫЙ ФАЙЛ FILE.O • Машинный код функций, • hello_world.c: объявленных в file.c. • Машинный код функции • Памятьпод объявленные main(). глобальные переменные. • Ссылка на внешнюю • Ссылкина внешние функцию printf(). функции. • Ссылки на глобальные переменные.
  • 18. ЭТАП 2. ЛИНКОВКА main.o util.o Исполняемый Линкер файл lib.o magic.o Статические Динамические библиотеки библиотеки
  • 19. РАБОТА ЛИНКЕРА • Операционная единица: имя. Каждый объектный модуль (в т. ч. библиотечный): • Предоставляет какие-то имена (функции, переменные, …) • Требует какие-то имена. • Линкер удовлетворяет зависимости (все начинается с имени main). • Ошибки: • Имя требуется одним из модулей, но никаким не предоставляется. • Одно и то же имя предоставляется более, чем одним модулем.
  • 20. ИСПОЛНЯЕМЫЙ ФАЙЛ • Содержит все нужные имена (и ничего лишнего). Все ссылки на имена в объектных файлах были разрешены. • Попостроению зависит от объектных файлов и библиотек (те зависят от исходных файлов). • Длявыполнения не нужно больше ничего (за исключением динамических библиотек).
  • 21. КОНЕЦ ВТОРОЙ ЛЕКЦИИ Язык C – это хорошо.