Your SlideShare is downloading. ×
ОПК № 2 – Алгоритмы и структуры данных, язык C
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

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

681
views

Published on

1. Алгоритмы + Структуры данных = Программы. …

1. Алгоритмы + Структуры данных = Программы.
2. Виды данных.
3. Машинное представление данных.
4. Понятие алгоритма.
5. Парадигмы программирования: императивная, функциональная, логическая.
6. Язык C, его история.
7. Структура C-программы.
8. Сборка программы: компиляция и линковка.

Published in: Technology

3 Comments
1 Like
Statistics
Notes
  • Ну, например, из-за своей слабой типизации. Арифметические/побитовые операции с операндам разных типов, неявными приведениями и т.д. могут легко привести к переполнению буферов, обращению по несуществующему адресу и т.д.
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • А чем плох язык C? :)
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Не согласен с последним предложением :)
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
No Downloads
Views
Total Views
681
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
11
Comments
3
Likes
1
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 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. ИМПЕРАТИВНЫЙ Cint 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. ФУНКЦИОНАЛЬНЫЙ HASKELLfib :: Int -> Integerfib 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.omagic.o Статические Динамические библиотеки библиотеки
  • 19. РАБОТА ЛИНКЕРА• Операционная единица: имя. Каждый объектный модуль (в т. ч. библиотечный): • Предоставляет какие-то имена (функции, переменные, …) • Требует какие-то имена.• Линкер удовлетворяет зависимости (все начинается с имени main).• Ошибки: • Имя требуется одним из модулей, но никаким не предоставляется. • Одно и то же имя предоставляется более, чем одним модулем.
  • 20. ИСПОЛНЯЕМЫЙ ФАЙЛ• Содержит все нужные имена (и ничего лишнего). Все ссылки на имена в объектных файлах были разрешены.• Попостроению зависит от объектных файлов и библиотек (те зависят от исходных файлов).• Длявыполнения не нужно больше ничего (за исключением динамических библиотек).
  • 21. КОНЕЦ ВТОРОЙ ЛЕКЦИИ Язык C – это хорошо.

×