
- •1. Основные операции языка Си.
- •3. Язык Си: указатели и массивы. Определения, примеры.
- •4. Язык Си: объявления функций, передача аргументов. Примеры.
- •5. Язык Си: строки и указатели. Определения, примеры.
- •8. Язык Си: структуры. Пример.
- •9 . Язык Си: битовые поля и объединения. Примеры.
- •10. Язык Си: оператор определения типа. Примеры.
- •11.Язык Си: препроцессор. Директивы препроцессора, примеры
- •12.Язык Си: программный стек. Пример работы стека.
- •13. Линейные списки. Операции с линейными списками.
- •14 Hash-таблицы
- •15 Двоичные деревья
- •17. Язык Си: ссылочные типы. Пример.
- •18. Язык Си: защита указателей и объектов, неявное изменение объектов.
- •19. Язык Си: организация ввода/вывода. Пример: слияние файлов. Организация ввода/вывода
- •Открытие файла
- •Закрытие файла
- •Ввод из файла
- •Вывод в файл
- •Особые ситуации
- •Пример: слияние файлов
- •20. Язык Си: произвольный доступ к файлам. Пример.
- •22. Язык Си: примеры реализаций функций ввода/вывода (getc,putc).
- •23. Язык Си: примеры реализаций функций ввода/вывода (fgets, fputs).
- •24. Язык Си: работа с файловой системой. Пример.
- •25. Основные понятия ооп: абстракция, инкапсуляция, наследование, полиморфизм.
- •27. Объекты классов: статические,автоматические, динамические. Примеры.
- •28. Управление доступом к элементам классов. Пример.
- •29. Шаблоны функций и шаблоны классов. Примеры.
- •30. Наследование. Пример.
- •31. Множественное наследование. Пример.
- •П оскольку классы-потомки наследуют все данные и методы классов-предков, в итоге имеем следующую картину:
- •32. Виртуальные функции. Раннее и позднее связывание.
- •33. Абстрактные классы. Их назначение, пример.
- •34. Полиморфный контейнер (пример).
- •36. Конструкторы, их виды, примеры. Вызов конструкторов при наследовании.
- •37. Деструкторы. Их назначение, примеры.
- •39. Перегруженные операции. Примеры.
- •40. Обработка нештатных ситуаций. Объекты-исключения. Примеры.
- •Вопрос 1: какова дальнейшая судьба этих ресурсов, будут ли они освобождены?
- •Вопрос 2: как распознавать подобные ситуации и корректно их обрабатывать?
- •41. Модели жизненного цикла программного обеспечения. Модели жизненного цикла по
- •Спиральная модель жизненного цикла по.
- •42. Проектирование программного обеспечения и uml.
- •Uml (основные понятия)
- •Канонические диаграммы языка uml 2.X
- •43. Диаграммы прецедентов. Нотация, семантика, примеры.
- •Основные обозначения на диаграммах прецедентов:
- •44. Сценарии выполнения прецедентов (пример).
- •45. Диаграммы классов. Нотация, семантика, отношения.
- •46. Атрибуты на диаграммах классов. Нотация и семантика. Примеры.
- •47. Операции на диаграммах классов. Нотация и семантика. Примеры.
- •48. Отношения ассоциации на диаграммах классов.
- •Отношения ассоциации
- •Предприятие
- •Сотрудник
- •Отношения обобщения
- •Отношения композиции
- •53. Язык c#: сборки, манифесты, домены, компоненты.
- •55. Java как язык ооп для машинно-независимых приложений.
- •56. Обзор Java-технологий NetBeans ide.
- •57. Компонентные технологии разработки программного обеспечения.
- •59.Обёртки в языках c# и Java.
- •60. Архитектурный паттерн mvc. Область применения, схема взаимодействия.
8. Язык Си: структуры. Пример.
Структуры
Формат: struct <Имя - структуры> {<список- полей>};
struct <Имя - структуры> {<описатели- переменных>};
struct [<Имя - структуры>] {<список- полей>} <описатели-переменных>;
Аналоги структур в реальной жизни – различные формуляры, анкеты, учетные карточки.
Существует два способа доступа к полям структурных переменных:
<Имя – структурной-переменной> . <имя-поля>
<указатель-на-структурную-переменную> -> <имя - поля>
ПРИМЕР: электронная картотека для домашней библиотеки
Struct {
Char * ptitle; наименование книги
Char * pauthor; автор
Float price; стоимость
Struct form books [1024]; картотека есть массив структур
Struct form* pbook = books; указатель на массив структур
9 . Язык Си: битовые поля и объединения. Примеры.
10. Язык Си: оператор определения типа. Примеры.
Определение типа
Формат: typedef <спецификация-типа> <описатели> ;
Примеры:
Typedef void* DRAW (char , void*); вводится новый тип функций DRAW
Объявление DRAW box; void * box(char , void*); |
Typedef struct node { вводится новый тип Т, который удобен для Struct node* left; описания узлов двоичных деревьев Struct node* right; тип Tp описывает указатели на узлы String s; двоичных деревьев } T, *Tp; |
Typedef char* string; вводится новый тип String String p,x[],f(); определены: переменная p и массив x объектов типа STRING; функция f возвращает объекты типа STRING |
11.Язык Си: препроцессор. Директивы препроцессора, примеры
Препроцессор
Препроцессор - текстовый процессор, который просматривает
исходный текст до компиляции и решает три задачи:
обрабатывает символические имена;
отыскивает и вставляет файлы;
осуществляет условную компиляцию.
Директивы #define и #undef
формат: #define <имя> <текст>
#define <имя> (<список-параметров>) <текст> // это макрос
#undef <имя>
примеры:
#define LENGTH 80
#define ABS(X) ((X) > 0 ? (x): -(x))
#define MAX (x, y) ((x) > (y) ? (x) : (y))
Зачем нужны скобки? Потому что возможны побочные эффекты, например
#define MAX(a, b + c) (a > b + c ? a : b +c)
#define ABS(++p) (++p > 0 ? ++p: -++p)
Директива #include
формат: #include <имя-пути>
#include “имя-пути”
примеры:
#include <iostream> // ищет файл в стандартных директориях
#include “c:file1.h” // ищет файл в конкретной директории
#include “file2.h” // ищет файл в текущей директории
Условная компиляция реализуется с помощью следующих директив:
#if #elif #else #endif defined undef
формат: #if <константное-выражение-1> [<текст-1>]
[ #elif <константное-выражение-2> [<текст-2>]]
[ #elif <константное-выражение-3> [<текст-3>]]
……………………………………………………..
[ #else [<текст-n>]]
#endif
Такие конструкции часто используются при инсталляции и настройке программных продуктов
пример:
#if (sizeof(void*) == 2) # define _SMALL_
#elif (sizeof(void*) == 4) # define _LARGE_ // модель памяти
#else printf(“?”);
#endif
пример:
#if (defined(_SMALL_) && undef(_LARGE_))
#include “file.h”
#endif
Популярные макросы для работы с символами находятся в файле <ctype.h>:
isalpha(c) - символ есть буква?
isdigit(c) - символ есть цифра?
isalnum(c) - символ есть буква или цифра?
isspace(c) - пробельный символ(пробелы, табуляция, перводы строки)?
islower(c) - символ нижнего регистра?
isupper(c) - символ верхнего регистра?
…………………………………………………..