Глава 1
Теоретический материал по дисциплине
Пакетная обработка файлов(макросы).
Если у Вас много фотографий, которые Вы хотите обработать одинаково, для облегчения себе жизни можно создать макросы.
1. Открываем Windows-Action.
2. Нажимаем на кнопку с загнутым концом New Action (Новая операция).
3. В Name: пишем имя например Фото.
4. Нажимаем Record и все наши действия будут записываться. В палитре горит красная лампочка.
5. Дальше проделываем те действия, которые хотим записать: (открыть какой-нибудь файл с которым будете работать; затем например меняете р-ры файла: File-Automate-Fit Image и меняем размер- Ok; затем делаем фотографию черно-белой Image-Adjust-Disaturate; закрываем файл File-Close-No
6. Нажать стоп «квадратик» Stop Playing.
В пункте 5 выполняете, те действия которые вы хотите выполнить, я привела просто пример.
7. Запускаем пакетную обработку File-Automate-Batch(пакетная обработка)
Source: Folder (папка), т.о. из нее будет браться фото
Choos- Enter- выбрать папку откуда брать фотографии.
Поставить галочку в «Override Action “Open” Commands (проигнорировать установки при команде Open)
|
|
8. Destination куда будем класть обработанные файлы и опять выбираем Folder
9. Errors: Log Errors To File – Save As- Сохранить – Ok (где будет хранить файл протокол).
10. Ok запускаем.
https://photoshoplessons.ru/animation/446-sverkayushhij-tekst-s-glitterami-krasivaya.html анимация звездочки
https://shkolafotoshopa.ucoz.ru/publ/uroki/uroki_po_gimp/urok_kak_ubrat_vodjanoj_znak/12-1-0-43 убрать водяной знак
«Объектно-ориентированное программирование»
1.1 Распределение ОЗУ.
сегмент данных код программы подпрограммы стек динамическая область
системная BIOS
область
ОЗУ – устройство для хранения данных работающей программы.
Все переменные, константы, объявленные в программе, размещаются в одной непрерывной области оперативной памяти, которая называется сегментом данных. Они заносятся сюда на этапе компиляции. Длина сегмента данных составляет 65536 байт.
Коды подпрограмм хранятся в кодах программ.
В подпрограммах – коды подпрограмм при активации подпрограммы локальных переменных и параметров. Хранятся в стеке. Когда подпрограмма завершает работу – стек очищается.
Стек – предназначен для хранения переменных подпрограмм. Размер стека не превышает одного сегмента (не больше 64 Кбайт).
Динамическая область предназначена для хранения динамических переменных. Ограничена только ОЗУ.
Динамическая память – это оперативная память ПК, предоставляемая программе при ее работе, за вычетом сегмента данных (64 Кбайт), стека (обычно 16 Кбайт) и собственно тела программы.
Оперативная память ПК представляет собой совокупность элементарных ячеек для хранения информации – байтов, каждый из которых имеет собственный номер. Эти номера называются адресами, они позволяют обращаться к любому байту памяти.
|
|
В ПК адреса задаются совокупностью двух шестнадцатиразрядных слов, где первое слово называется сегментом, а второе – смещение. Сегмент – это участок памяти, имеющий длину 64Кбайт и начинающийся с физического адреса, кратного 16. Смещение указывает, сколько байт от начала сегмента необходимо пропустить, чтобы обратиться к нужному адресу.
Минимальное смещение: 0000 0000 0000 0000.
Максимальное смещение: 1111 1111 1111 1111.
Для работы с динамической памятью в Паскале определен ссылочный тип указателей.
1.2 Указатели, динамические переменные.
Язык Си предоставляет в распоряжение программиста гибкое средство управления динамической памятью – так называемые указатели. Указатель – это переменная, которая в качестве своего значения содержит адрес байта памяти. Или, указатель – это ссылка на какой-то участок динамической памяти. Указатель можно считать обычной статической переменной.
Динамическая переменная – переменная, на которую указывает указатель (находится в динамической области памяти).
Причины использования указателей:
1. Работа с большими объектами данных.
2. Работа с данными неизвестного размера.
3. Использование временных буферов памяти.
4. Использование связных списков.
Описание указателей.
Как правило, в Си указатель связывается с некоторым типом данных. Такие указатели будем называть типизированными. Переменные-указатели объявляются с помощью символа "*", который добавляется после названия обычного типа данных. Например, оператор описания (его можно прочитать как "указатель на целочисленную переменную"):
int* number_ptr; //ссылается на целый тип данных
Бывают случаи, когда нас интересует просто значение адреса, а не тип указываемого объекта. С этой целью в язык C++ введены указатели void*, способные хранить адрес любого объекта. Указатели такого рода будем называть нетипизированными. Поскольку нетипизированные указатели не связаны с конкретным типом, с их помощью удобно динамически размещать данные, структура и тип которых меняются в ходе работы программы. Отметим, что явные преобразования типов в большинстве случаев являются потенциально опасными и должны применяться с крайней осторожностью.
#include <iostream.h>
int main()
{
int* p;
p = new int;
*p=10;
cout << *p << "\n";
delete p;
return 0;
}
Указатель p может находится в трех состояниях: