
- •Основы информационных технологий (теория систем, дискретная и компьютерная математика, теория управления, моделирование) (Первые вопросы в билетах).
- •Интерполирование функций (многочленами Лагранжа; интерполяционная формула Ньютона; интерполяция кубическими сплайнами).
- •Приближение функций (метод наименьших квадратов; линейная регрессия; нелинейная регрессия; полиномиальная аппроксимация; дискретное преобразование Фурье).
- •Формула трапеций
- •Численное решение систем линейных алгебраических уравнений (метод Гаусса; метод итераций).
- •11. Универсальный метод информационных технологий – статистическое моделирование нелинейных систем со случайными характеристиками в условиях помех (метод Монте-Карло).
- •!!!13 И 14 вопросы отсутствуют в билетах!!!
- •!!!16 Вопрос отсутствует в билетах!!!
- •1.2.1. Принцип разомкнутого управления
- •1.2.2. Принцип компенсации
- •1.2.3. Принцип обратной связи
- •1. Введение
- •2. Итерационные методы Якоби и Зейделя
- •3. Метод последовательной верхней релаксации
- •4. Матрично-векторное представление итерационных методов
- •Динамические модели в экономике (регрессионные, авторегрессионные, регрессионно-авторегрессионные модели; модели накопления и дисконтирования; модели «затраты-выпуск»).
- •Основы вычислительной техники. (Вторые вопросы в билетах)
- •Характеристики современных операционных систем (многопоточность, симметричная многопроцессорность, распределенные операционные системы, объектно-ориентированный дизайн).
- •Дискретный сигнал
- •Вычислительные сети и системы (протоколы обмена тср, iр, ssl, skip, NetBeui, ipx, spx, NetBios, модель osi, типы соединения эвм, используемые при построении локальных сетей).
- •Информация (аналоговая и цифровая информация, оценки количества информации, энтропийный подход).
- •Структура микропроцессора (алу, регистры: аккумуляторы, ввода-вывода, понятие шины: шина данных, адресная шина, шина команд; запоминающие устройства: пзу, озу, созу, кэш-память).
- •!!!16 Вопроса нет в билетах!!!
- •17. Понятие нелинейных преобразователей (транзисторы, ключи, диодные выпрямители, логические элементы, нейронные сети).
- •1.8. Основные методы расчета сложных электрических цепей
- •19. Расчет комплексных сопротивлений линейных цепей (последовательные цепи: rc-цепь, rl-цепь, rlc-цепь; параллельные цепи: rc-цепь, rl-цепь, lc-цепь; последовательно-параллельные цепи: r-lc, c-rl).
- •Основы алгоритмизации и программирования. (Третьи вопросы в билетах)
- •2. Методы сортировки и поиска данных в массивах и файлах. Оценки скорости.
- •Современные языки программирования (с, Java, Delphi, vb). Типы данных языка. Структура приложения.
- •Примитивные типы
- •Типы данных
- •Объекты
- •Статическая и динамическая память, определение, область применения. Алгоритмы обработки очереди, списка, стека.
- •4 Шага добавления
- •Основные компоненты в языках (с, Java, Delphi). Их свойства, методы, события. Реализация графики.
- •7. Понятия объектно-ориентированного программирования. Поля, свойства, методы, события. Область видимости. Пример класса.
- •Базы данных. Типы бд. Реляционные бд. Типы полей. Типы связей. Язык запросов sql. Индексирование баз данных.
- •Создание Internet-приложений (на стороне клиента и сервера). Язык разметки гипертекста html. Специализированные инструменты (php). Создание Internet-приложений средствами языков с, Java, Delphi.
- •Глава 1 – содержание элемента html
- •6.3. Рисунки
- •Основные элементы блок схем программирования, типовые блок схемы (ввода-вывода, исполнения команд, условного перехода; ветвящиеся программы, циклические программы, вложенные циклы).
Примитивные типы
В языке Java только 8 примитивных (скалярных, простых) типов: boolean, byte, char, short, int, long, float, double. Существует также вспомогательный девятый примитивный тип — void, однако переменные и поля такого типа не могут быть объявлены в коде, а сам тип используется только для описания соответствующего ему класса, для использовании при рефлексии. Кроме того, с помощью класса Void можно узнать, является ли определённый метод типа void: Hello.class.getMethod("main", Array.newInstance(String.class, 0).getClass()).getReturnType() == Void.TYPE.
Длины и диапазоны значений
примитивных типов определяются
стандартом, а не реализацией и приведены
в таблице. Тип char сделали двухбайтовым
для удобства локализации (один из
идеологических принципов Java): когда
складывался стандарт, уже
существовалUnicode-16,
но не Unicode-32. Поскольку в результате не
осталось однобайтового типа, добавили
новый тип byte, причем в Java, в отличие от
других языков, он не является беззнаковым.
Типы float и double могут иметь специальные
значения
,
и
«не число» (NaN).
Для типа double они
обозначаются Double.POSITIVE_INFINITY, Double.NEGATIVE_INFINITY, Double.NaN;
для типа float — так же, но с приставкой
Float вместо Double. Минимальные положительные
значения, принимаемые типами float и
double, тоже стандартизованы.
Тип |
Длина (в байтах) |
Диапазон или набор значений |
boolean |
1 в массивах, 4 в переменных[36] |
true, false |
byte |
1 |
−128..127 |
char |
2 |
0..216−1, или 0..65535 |
short |
2 |
−215..215−1, или −32768..32767 |
int |
4 |
−231..231−1, или −2147483648..2147483647 |
long |
8 |
−263..263−1, или примерно −9.2·1018..9.2·1018 |
float |
4 |
-(2-2−23)·2127..(2-2−23)·2127,
или примерно −3.4·1038..3.4·1038,
а также
, |
double |
8 |
-(2-2−52)·21023..(2-2−52)·21023, или примерно −1.8·10308..1.8·10308, а также , , NaN |
Такая жёсткая стандартизация была необходима, чтобы сделать язык платформенно-независимым, что является одним из идеологических требований к Java. Тем не менее одна небольшая проблема с платформенной независимостью всё же осталась. Некоторые процессоры используют для промежуточного хранения результатов 10-байтовые регистры или другими способами улучшают точность вычислений. Для того, чтобы сделать Java максимально совместимой между разными системами, в ранних версиях любые способы повышения точности вычислений были запрещены. Однако это приводило к снижению быстродействия. Выяснилось, что ухудшение точности ради платформенной независимости мало кому нужно, тем более если за это приходится платить замедлением работы программ. После многочисленных протестов этот запрет отменили, но добавили ключевое слово strictfp, запрещающее повышение точности.
В языке Java имеются только динамически создаваемые объекты. Причем переменные объектного типа и объекты в Java — совершенно разные сущности. Переменные объектного типа являются ссылками, то есть неявными указателями на динамически создаваемые объекты. Это подчёркивается синтаксисом описания переменных.
Структура оконного приложения
Первое, что делает приложение - подключает необходимые библиотеки:
import java.awt.*; |
В данном случае подключается стандартная библиотека awt, содержащая классы, способные создавать окна.
Говоря языком строгих научных терминов, Java является не просто языком программирования, а объектно-ориентированным языком. И вот в этом простом примере уже можно видеть что это означает для нас на практике.
Объявление главного класса программы стало выглядеть вот так:
public class WindowedApp extends Frame{ |
Ключевое слово extends означает, что наша программа (точнее её класс) является наследником класса Frame, который определён где-то в стандартной библиотеке awt (вот зачем мы её подключали). Этот самый Frame уже содержит в себе всё необходимое для создания и функционирования окна программы - нам остаётся только использовать его методы в своей программе. И как раз для этого мы и объявляем класс своей программы наследником этого стандартного класса - вместе с тем наследуя и методы. Дальше Вы увидите, как мы будем использовать их - хотя нам не придётся их писать. Они уже заботливо написаны и отлажены за нас раньше создателями Java - скажем им за это спасибо и продолжим изучение программы.
Далее идёт уже знакомый нам метод main - но что же он делает? На первый взгляд почти ничего. Всего одна строка, в которой создаётся какая-то переменная... кстати, имеющая тип, имя которого совпадает с именем нашей программы?
Да, всё правильно, никакой ошибки здесь нет. Ведь в предыдущей строке мы не просто так писали class WindowedApp - это было объявление класса. А теперь, внутри нашего класса, мы пишем, что же и как именно он делает.
В частности, метод main этого нашего класса порождает ровно один объект - принадлежащий этому классу. В строгих научных терминах такой объект называется экземпляром класса.
Это выглядит немного парадоксально: класс порождает сам свой экземпляр - почти как змея кусающая себя за хвост. Но не волнуйтесь, хотя для обыденной житейской логики это и кажется чем-то сверхестественным, компьютер не запутается и всё сделает правильно, программа будет работать без ошибок. А Вам надо просто запомнить эти первые строки и начинать каждую новую программу с них.
А как именно создаётся этот экземпляр? Как появляется на экране окно нашей программы? Всё это описано в конструкторе класса - и мы обязаны его написать. Вот он:
WindowedApp(){ super("Windowed Application"); pack(); setSize(400, 400); show(); } |
Конструктор обязательно имеет то же самое имя, что и его класс. И первое что он делает - это super. Не в смысле, что он хвастается, нет. Зарезервированное слово super означает вызов конструктора класса-предка. Предком у нашей программы является Frame - а его конструктор умеет создавать окно и устанавливать для этого окна заголовок (в нашем случае заголовком будет строка "Windowed Application").
Далее следуют три обязательных для оконного приложения метода:
pack - производит компоновку элементов (в нашем простом случае его вызов чистая формальность - но эту формальность надо соблюсти)
setSize - устанавливает размеры окна
show - собственно делает окно видимым на экране
Эти три метода должны вызываться только в указанном порядке. Если, например, сперва установить размер окна, а потом вызвать pack - то выведенное на экран окно вряд ли будет иметь желаемые размеры.
Но, если мы запустим нашу программу, то увидим не только окно с заголовком, но и в этом самом окне надпись "Welcome Windowed Application!". За рисование этой надписи или иных графических фигур отвечает метод paint. На самом деле он уже определён в Frame - классе-предке нашей программы. Но там он не делает ничего полезного для нас - поэтому мы его переопределяем.
Это то же важный приём объектного программирования: мы можем не только наследовать методы, чтобы использовать их, как будто они написаны нами (в нашем примере так мы поступили с pack, setSize и show) - но если нас что-то не устаивает, мы можем переписать этот метод по-своему - именно так мы и поступим с paint.
При этом важно сохранить его заголовок в точности - иначе система не сможет обращаться к нему, то есть вызывать его для перерисовывания содержимого окна.
public void paint(Graphics g){ g.drawString("Welcome Windowed Application!", 100, 100); } |
При вызове система передаёт этому методу параметр класса Graphics - а уже через методы этого класса и осуществляется всё рисование в отведённой окну области. В нашем случае всего лишь выведена одна строка, начиная с координат 100,100.
Наконец, последний метод нашей программы - он всего лишь ожидает системного сообщения о закрытии окна. Такое сообщение генерируется системой, например, при клике на кнопочку закрытия окна. Delphi (Де́лфи, произносится /ˈdɛlˌfi:/[1]) — императивный, структурированный, объектно-ориентированный язык программирования, диалект Object Pascal[2]. Начиная со среды разработки Delphi 7.0[3], в официальных документах Borland стала использовать название Delphi для обозначения языка Object Pascal. Начиная с 2007 года уже язык Delphi (производный от Object Pascal) начал жить своей самостоятельной жизнью и претерпевал различные изменения, связанные с современными тенденциями (например, с развитием платформы .NET) развития языков программирования: появились class helpers, перегрузки операторов и другое.
Изначально среда разработки была предназначена исключительно для разработки приложений Microsoft Windows, затем был реализован также для платформ Linux (как Kylix), однако после выпуска в 2002 году Kylix 3 его разработка была прекращена, и, вскоре после этого, было объявлено о поддержке Microsoft .NET.
Реализация среды разработки проектом Lazarus (Free Pascal, компиляция в режиме совместимости с Delphi) позволяет использовать его для создания приложений на Delphi для таких платформ, как Linux, Mac OS X и Windows CE.
Также предпринимались попытки использования языка в проектах GNU (например, Notepad GNU) и написания компилятора[источник не указан 1282 дня] для GCC.
Операторы
Список операторов через пробел: := + — * / div mod not and or with xor shl shr ^ = <> >= <= < > @ in is as
Выражения
Выражения в Object Pascal (Delphi) бывают арифметическими, логическими и строковыми.
Основные логические выражения: Логические выражения в основном употребляются в условных операторах. К логическим выражениям относятся такие операции как:
not — «НЕ», отрицание логического выражения (NOT <логическое_выражение>)
and — «И», умножение (пересечение) логических выражений (<логическое_выражение1> AND <логическое_выражение2>)
or — «ИЛИ», объединение логических выражений (<логическое_выражение1> OR <логическое_выражение2>)
xor — «Исключающее ИЛИ», отрицание ИЛИ, все что не попадает под ИЛИ (<логическое_выражение1> XOR <логическое_выражение2>)