Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Особенности работы программ для Windows↑ Стр 1 из 6Следующая ⇒ Содержание книги Поиск на нашем сайте
Особенности работы программ для Windows Изначально программирование было делом простым. Даже если программа создавалась на языке ассемблера, то ее структура ничем не отличалась, скажем, от Бейсика, Паскаля или Си.Программа начиналась сначала и продолжалась до конца, а всякие переходы к подпрограммам и прямые переходы по Goto были на совести самих программистов. Менялись парадигмы программирования, стиль, но это не мешало писать программы так, как нравится.Но вот появилось ООП, за ним Windows, и стало ясно, что теперь программы в десяток строк можно забыть. А что делается внутри системы – один Гейтс знает. Постепенно популяризаторы сделали свое дело, и оказалось, что достаточно уяснить себе несколько важных моментов в технологии Windows, и все становится более-менее понятным. К примеру то, что ООП и Windows особо между собой не связаны, что и демонстрируют программисты, создавая программы на ассемблере для Win32. Если это пугает, то можно начать работу с FASM – там попроще будет. Новые форматы программ – NE и PE – сделали структуру программ очень простой. Грубо говоря, теперь в них отсутствуют всяческие программные хитрости, а образ программы на диске собран из готовых кусков, загружаемых в память по своим адресам. Каждая программа четко сообщает о себе все сведения, включая данные ресурсов, списки импорта и экспорта внешних имен и библиотек. Так, просто взяв из таблицы список, можно с уверенностью сказать, что программа просит у Windows. Сам код тоже стал проще. Во-первых, в него почти не добавились новые команды процессоров. Во-вторых, многочисленные вызовы функций системы организованы по методу стека, то есть вся программа буквально пронизана вызовами внешних функций, за исключением циклов и вычисления выражений. Хакеры даже умудряются заменять в коде на диске одни функции на другие – иногда получается весело. Хотя в памяти это сделать еще проще. Если смотреть на технологию обработки событий, то там тоже нет ничего ужасного. Просто нужно привыкнуть, что программа во время исполнения работает в зацикленном режиме, постоянно слушая команды Windows, поступающие ко всем окнам и процессам. Если программа понимает, что команда касается ее, она должна как-то отреагировать - для этого и вызывается программа обработки события. После этого программа дальше занимается своими делами. А можно, кстати, и вовсе игнорировать всякие интересные события, включив только обработку кнопок и меню. Так, например, по умолчанию работают с системами Delphi, VС++ и прочими системами. Единственное, что трудно воспринимать – это иерархия классов, и то только потому, что там слишком много возможностей, чтобы сходу запомнить, но можно работать вовсе без них.
3. Переменные. Типы переменных
Типы переменных. Объявление переменных.
Для хранения различных данных в языках программирования используют переменные. Переменной называется область памяти, имеющая имя, которое иначе называют идентификатором. Давая переменной имя, программист одновременно тем же именем называет и область памяти, куда будут записываться значения переменной для хранения. Хорошим стилем является осмысленное именование переменных. Имя переменной может содержать от одного до 32 символов. Разрешается использовать строчные и прописные буквы, цифры и символ подчёркивания, который в Си считается буквой. Первым символом обязательно должна быть буква. Имя переменной не может совпадать с зарезервированными словами. В языке Си все переменные должны быть объявлены. Это означает, что, во-первых, в начале каждой программы или функции Вы должны привести список всех используемых переменных, а во-вторых, указать тип каждой из них. При объявлении переменной компилятор отводит ей место в памяти в зависимости от её типа. Стандартными средствами AVR GCC работает с типами данных char (символьный тип) и int (целочисленный тип).
Тип char char - является самым экономным типом. Тип char может быть знаковым и беззнаковым. Обозначается, соответственно, как " signed char " (знаковый тип) и " unsigned char " (беззнаковый тип). Знаковый тип может хранить значения в диапазоне от -128 до +127. Беззнаковый - от 0 до 255. Под переменную типа char отводится 1 байт памяти (8 бит). Ключевые слова (модификаторы) signed и unsigned указывают, как интерпретируется нулевой бит объявляемой переменной, т.е., если указано ключевое слово unsigned, то нулевой бит интерпретируется как часть числа, в противном случае нулевой бит интерпретируется как знаковый. Тип int Целочисленная величина int может быть short (короткой) или long (длинной). Ключевое слово (модификатор) short ставится после ключевых слов signed или unsigned. Таким образом, различают следующие типы: signed short int, unsigned short int, signed long int, unsigned long int. Переменная типа signed short int (знаковая короткая целая) может принимать значения от -32768 до +32767, unsigned short int (беззнаковая короткая целая) - от 0 до 65535. Под каждую из них отводится ровно по два байта памяти (16 бит). При объявлении переменной типа signed short int ключевые слова signed и short могут быть пропущены, и такой тип переменной может быть объявлен просто int. Допускается и объявление этого типа одним ключевым словом short. Переменная unsigned short int может быть объявлена как unsigned int или unsigned short. Под каждую величину signed long int или unsigned long int отводится 4 байта памяти (32 бита). Значения переменных этого типа могут находиться в интервалах от -2147483648 до 2147483647 и от 0 до 4294967295 соответственно. Существуют также переменные типа long long int, для которых отводится 8 байт памяти (64 бита). Они также могут быть знаковыми и беззнаковыми. Для знакового типа диапазон значений лежит в пределах от -9223372036854775808 до 9223372036854775807, для беззнакового - от 0 до 18446744073709551615. Знаковый тип может быть объявлен и просто двумя ключевыми словами long long.
Переменные объявляют в операторе описания. Оператор описания состоит из спецификации типа и списка имён переменных, разделённых запятой. В конце обязательно должна стоять точка с запятой. Объявление переменной имеет следующий формат: [модификаторы] спецификатор_типа идентификатор [, идентификатор]...
char x; int a, b, c; unsigned long long y;
Оператор присваивания Оператор присваивания используется для сохранения результата вычисления арифметического выражения в переменной. Он имеет следующий общий вид: переменная:= выражение; Знак:= читается как "присвоить". Оператор присваивания работает следующим образом: сначала вычисляется выражение, стоящее справа от знака:=, затем результат записывается в переменную, стоящую слева от знака. Например, после выполнения оператора k:=k+2; текущее значение переменной k увеличится на 2. Тип переменной слева от знака присваивания должен быть не младше типа выражения. В частности, это означает, что если выражение дает целое число, результат можно писать и в целую, и в вещественную переменную, если результат вычисления выражения вещественный, писать его в целую переменную нельзя, т. к. может произойти потеря точности. Приведем примеры. 1. Записать оператор присваивания, который позволяет вычислить расстояние между двумя точками на плоскости с координатами (x 1, y 1) и (x 2, y 2). Оператор будет иметь вид d:=sqrt(sqr(x1-x2)+sqr(y1-y2)); 2. Записать последовательность операторов присваивания, обеспечивающих обмен значениями переменных x и y в памяти компьютера. c:=x; x:=y; y:=c; Здесь с -- дополнительная переменная того же типа, что x и y, через которую осуществляется обмен. Грубой ошибкой было бы, например, попытаться выполнить обмен операторами x:=y; y:=x; -- ведь уже после первого из них мы имеем два значения y, а исходное значение x потеряно.
Оператор ввода Базовая форма оператора ввода позволяет пользователю ввести с клавиатуры значения одной или нескольких переменных. Оператор ввода с клавиатуры может быть записан в одной из следующих форм: read(список_переменных); readln(список_переменных); Имена переменных в списке перечисляются через запятую. Здесь и далее список данных, передаваемых любому оператору (а позднее и написанным нами подпрограммам), мы будем называть параметрами. Таким образом, параметрами оператора (точней, стандартной процедуры) read являются имена переменных, описанных ранее в разделе var. По достижении оператора ввода выполнение программы останавливается и ожидается ввод данных пользователем. Вводимые значения переменных разделяются пробелом или переводом строки (нажатием Enter). После ввода значений всех переменных из списка работа программы продолжается со следующего оператора. Оператор readln отличается от read только тем, что все переменные должны быть введены в одну строку экрана, клавиша Enter нажимается один раз по окончании ввода. Форма записи readln используется, в основном, для ввода строк текста, для ввода числовых значений лучше использовать read, т. к. в этом случае пользователь может вводить данные более свободно (и в одну, и в несколько строк экрана). Если пользователь вводит данные недопустимого типа (например, строку текста вместо числа), то выводится системное сообщение об ошибке и работа программы прерывается. В качестве примера организуем ввод исходных данных для решения квадратного уравнения: var a,b,c:real; ... read (a,b,c); Для задания значений a=1, b=4, c=2.5 на экране вводится: 1_4_2.5 Здесь и далее "_" означает пробел, а "" -- нажатие Enter. Другой вариант ввода с клавиатуры: 2.5 Третий вариант: 4_2.5 Во всех вариантах пробелов может быть и несколько, лишние будут проигнорированы оператором. Как правило, перед оператором ввода ставится оператор вывода, служащий приглашением к вводу и поясняющий пользователю, что именно следует сделать (см. п. 4.3).
Оператор вывода Базовая форма оператора вывода позволяет отобразить на экране значения переменных, АВ или констант, а также строки текста в апострофах. Оператор записывается в одной из следующих форм: write(список); writeln(список); Элементы списка перечисляются через запятую. Элементы списка выводятся в пользовательское консольное окно программы. Вещественные значения выводятся в экспоненциальной форме. Строки выводятся "как есть". После вывода работа программы продолжается со следующего оператора. Оператор writeln отличается от write тем, что после вывода значения последнего элемента списка выполняется перевод курсора на следующую строку экрана. Приведем примеры. 1. Нужно дать пользователю возможность ввести с клавиатуры число, затем программа возведет это число в квадрат и выведет результат на экран. var a,a2:integer; ... writeln ('Введите целое число:'); {это приглашение к вводу} read (a); a2:=sqr(a); writeln ('Квадрат числа=',a2); Если ввести значение a=2, на экране будет напечатано Квадрат числа=4 | Символ |здесь и далее обозначает курсор. Видно, что оператор writeln перевел курсор на следующую строку. После вывода результата выполнение программы продолжится, а если оператор writeln был в ней последним, то и завершится. Чтобы пользователь успел прочитать результат, следует в конце программы добавить оператор readln; который будет ждать нажатия клавиши Enter. 2. Требуется вывести на экран результаты решения квадратного уравнения: значения x1=1.5 и x2=2.5: write ('x1=',x1,'_x2=',x2); Пробел в строкой константе '_x2=' нужен, чтобы значение x1 не слилось со строкой 'x2='. На экране будет напечатано: x1= 1.5000000000E+00 x2= 2.5000000000E+00| Курсор остался в конце строки, т.к. использована форма оператора write. Вещественные числа читать в подобной форме неудобно, для их вывода используйте решение из следующего раздела.
5. Оператор сравнения.Простые и сложные условия
Операторы сравнения, как это видно из их названия, позволяют сравнивать между собой два значения. Возможно вам будет интересно также ознакомиться с разделом Сравнение типов, в котором приведено большое количество соответствующих примеров.
В случае, если вы сравниваете число со строкой или две строки, содержащие числа, каждая строка будет преобразована в число, и сравниваться они будут как числа. Эти правила также распространяются на оператор switch. Преобразование типов не происходит при использовании === или!== так как в этом случае кроме самих значений сравниваются еще и типы. <?php switch ("a") { Для различных типов сравнение происходит в соответствии со следующей таблицей (по порядку).
Пример #1 Алгоритм сравнения обычных массивов <?php Одной из основных алгоритмических структур является ветвление (альтернатива). If <условие>
Итак высказывание истинно. ОРГАНИЗАЦИЯ ВЕТВЛЕНИЙ В ПРОГРАММАХ НА ПАСКАЛЕ. ОПЕРАТОР IF THEN... ELSE if x > 0 then
6. Оператор цикла for
Выполнение оператора цикла for начинается с вычисления "выражения1". Это своего рода инициализация цикла, которая выполняется только один раз и предшествует последующим действиям. После этого вычисляется "выражение2". Если оно истинно, то выполняется "оператор". Далее вычисляется "выражение3". Первая итерация цикла закончена. Вторая итерация начинается опять с вычисления "выражения2". Если оно истинно, то выполняется "оператор". Далее опять вычисляется "выражение3" и так продолжается до тех пор, пока "выражение2" будет истинным. Если же уже на первой итерации "выражение2" будет ложным, то цикл не исполнится ни разу. Если вникнуть в логику работы оператора цикла for, то можно заметить, что она полностью соответствует следующему фрагменту кода с использование оператора цикла while: выражение1;while (выражение2) { оператор; выражение3; }
7. Оператор цикла while
Формат оператора цикла while: while (выражение)оператор; Каждый раз перед выполнением "оператора" будет проверяться значение "выражения". Если "выражение" истинно, то "оператор" будет выполнен. Далее "выражение" проверяется еще раз. Если оно опять истинно, то "оператор" будет выполнен еще раз. И так будет продолжаться до тех пор, пока "выражение" будет равно true. Как только выражение станет ложным, произойдет выход из цикла и управление будет передано оператору, следующему за циклом while. Цикл while может быть не выполнен ни разу, если "выражение" изначально (при первой проверке) было ложным. Если требуется, чтобы в теле цикла выполнялся не один оператор, а несколько, нужно использоватьсоставной оператор, т.е. заключить несколько операторов в фигурные скобки {}. После закрывающей фигурной скобки } не должно стоять точки с запятой. К сожалению, в нашем первом эксперте я не использую цикл while, поэтому пример его использования мне придется просто придумать: int i = 0;while (i < 9) { Print(i); i++; } Print ("Done"); При первой проверке "выражение" (i<9) будет истинным (т.к. 0<9) и будет выполнен составной оператор, который состоит из функции Print (вывода информации в журнал экспертов), которая выведет число 0 в журнал, и из оператора i++, который увеличивает переменную i на единицу. Далее выражение i<9 будет вычислено еще раз. На этот раз оно опять будет истинным. В результате в лог файл будет выведено текущее значение переменной i (т.е. 1), а после этого значение переменной будет опять увеличено на единицу и станет равным 2. Цикл будет повторяться до тех пор, пока значение переменной i не станет равным 9. Тогда выражение i<9 перестанет быть истинным и цикл прервется, а управление будет передано следующему оператору: Print ("Done");
8. Процедуры и функции
В языке Паскаль, как и в большинстве языков программирования, предусмотрены средства, позволяющие оформлять вспомогательный алгоритм как подпрограмму. Это бывает необходимо тогда, когда какой-либо подалгоритм неоднократно повторяется в программе или имеется возможность использовать некоторые фрагменты уже разработанных ранее алгоритмов. Кроме того, подпрограммы применяются для разбиения крупных программ на отдельные смысловые части в соответствии с модульным принципом в программировании. Для использования подалгоритма в качестве подпрограммы ему необходимо присвоить имя и описать алгоритм по правилам языка Паскаль. В дальнейшем, при необходимости вызвать его в программе, делают вызов подпрограммы упоминанием в нужном месте имени соответствующего подалгоритма со списком входных и выходных данных. Такое упоминание приводит к выполнению входящих в подпрограмму операторов, работающих с указанными данными. После выполнения подпрограммы работа продолжается с той команды, которая непосредственно следует за вызовом подпрограммы. В языке Паскаль имеется два вида подпрограмм - процедуры и функции. Процедуры и функции помещаются в раздел описаний программы. Для обмена информацией между процедурами и функциями и другими блоками программы существует механизм входных и выходных параметров. Входными параметрами называют величины, передающиеся из вызывающего блока в подпрограмму (исходные данные для подпрограммы), а выходными - передающиеся из подрограммы в вызывающий блок (результаты работы подпрограммы). Одна и та же подпрограмма может вызываться неоднократно, выполняя одни и те же действия с разными наборами входных данных. Параметры, использующиеся при записи текста подпрограммы в разделе описаний, называют формальными, а те, что используются при ее вызове - фактическими.
назад содержание вперед Выбор шрифтов Шрифты просто оставьте в покое. Заданные по умолчанию самой Delphi шрифты подойдут для любой системы, на которой может работать Ваша программа. Полужирный шрифт используйте только для выделения важных элементов. Применение же курсива и особенно подчёркивания, которое пользователь может принять за гиперссылку - дурной тон. Выбор цветов Что касается цветов элементов интерфейса, то также, как и в случае со шрифтами, лучше оставьте их стандартными, по умолчанию. Delphi использует системную палитру Windows, и пользователь, изменив её, легко настроит цвета под себя. Альтернативное управление Профессионально сделанная программа должна иметь возможность управляться не только мышкой, но и с клавиатуры. Не должно быть функций, доступных выполнению только мышью (рисование в графических редакторах не в счёт!). Для наиболее используемых функций следует предусмотреть "горячие клавиши" для их быстрого вызова. Кирпичики интерфейса Что касается конкретных элементов интефейса пользователя, то качество взаимодействия пользователя с программой зависит от:
А сейчас хочу показать, какие инструменты предлагает Delphi для управления компонентами на Форме, их взаимным расположением и поведением курсора при нажатии клавиши Tab. Для того, чтобы расположить относительно друг друга компоненты в правильном порядке, сначала необходимо их выделить. Можно просто обвести мышкой область на Форме, в которой содержатся выбранные компоненты. Или, удерживая " Shift ", указать той же мышкой каждый подлежащий выделению компонент. Повторный щелчок мышкой по выделенному компоненту (при нажатом " Shift ") снимает с него выделение. Выделенными компонентами можно управлять как единым целым - передвигать по Форме, присвоить значение одинаковым свойствам, скопировать (для установки, например, на другую Форму), даже удалить.
Выделение мышкой области с компонентами: Что такое e-mail адрес Итак, e-mail - это адрес электронной почты от английского "electronic mail". Если у человека в сети есть свой e-mail адрес (выглядит как набор символов, например, ivanov@yandex.ru), он может давать его другим людям точно также, как свой домашний адрес для обычных писем. Но для входа в свою электронную почту нужен уникальный пароль, которым будете обладать лишь вы, словно ключи от квартиры. Адрес знают знакомы
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Последнее изменение этой страницы: 2016-08-16; просмотров: 342; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.138.137.244 (0.015 с.) |