Всё программирование сводится к тому, чтобы манипулировать какими‐нибудь данными. Данные хранятся не просто так «в воздухе», а физически размещаются в оперативной памяти компьютера. В исходном коде данные представлены литералами, константами и переменными.
Константы и литералы
Литералы
Литерал Безымянная область памяти, которая не может изменяться. Это числа и строки, записанные в тексте программы «как есть».
Число (числовой литерал) может быть записано в десятичной, шестнадцатеричной, восьмеричной и двоичной системах счисления, используя специальные префиксы.
Система счисленияПрефиксПример
Десятеричная
Отсутствует
234
Шестнадцатеричная
H
b или b11101010
Восьмеричная
O
fbc HelloWorld.bas HelloWorld.bas(5) error 119: Cannot modify a constant, before ‘=’ in ‘SecondsInMinute = 70 C:ProgrammingFreeBASIC Projects>_
Объявлять можно не только числовые константы, но и строковые:
Разъединение текстовых данных из одной ячейки
Const HelloWorld = «Привет, мир!»
HelloWorld — это константа, а строка «Привет, мир!» — литерал. Обрати внимание, что кавычки не являются частью данных, а лишь ограничивают их. Как же в таком случае поместить кавычку внутрь литерала? Достаточно её удвоить:
Const QuotationLiteral = «Вот это «» кавычка внутри литерала»
Технически строковый литерал представляет собой массив символов, в конце которого компилятор добавляет символ с кодом 0, чтобы программе можно было определить конец этого массива (конец строки).
Зачем нужны константы
Константы упрощают отладку и сопровождение программ:
исчезает необходимость помнить конкретные числа — имена запоминаются легче;
компилятор автоматически выявляют ошибки в именах;
упрощается внесение изменений: значение константы задано в программе всего в одном месте.
Переменные
Переменная Именованная область памяти, которую можно изменять.
Любая переменная должна быть объявлена до её использования. Переменные объявляются через операторы Dim и var .
Как допустимо называть переменные
У любой переменной должно быть имя. FreeBASIC разрешает использовать в имени переменной только английские буквы, цифры и символ подчёркивания _ , причём имя переменной не может начинаться с цифры.
Примеры допустимых имён
Имя переменной Пояснение
a1
Присутствуют только английские буквы и цифра
_board
Присутствуют только английские буквы и подчёркивание
Super_Mega_Power
Присутствуют только английские буквы и подчёркивание
i
Присутствуют только английские буквы
Примеры недопустимых имён
Компилятор выдаст ошибку и откажется создавать программу при виде таких имён:
Как видно, данные в переменной Days находятся по адресу 1375744. У тебя этот адрес наверняка будет другим, потому что программы могут загружаться в оперативную память по разным адресам.
Обучение EXCEL. УРОК 7: Именованные ячейки и диапазоны.
Получение данных по адресу
Для того, чтобы извлечь данные, на которые ссылается указатель, существует оператор * — он возвращает ссылку на значение, хранящееся по адресу. Такая операция называется «разыменование указателя».
Не следует путать операцию разыменования и умножение, которое тоже обозначается звёздочкой. Разыменование указателя — это унарная операция, то есть в ней участвует один операнд; умножение — бинарная операция, в ней участвуют два операнда.
Перед разыменованием, необходимо убедиться, что значение указателя содержит действительный адрес памяти.
Действительные и недействительные адреса
Действительный адрес Такой адрес, который указывает на настоящие данные, переменную или функцию. Недействительный адрес Адрес, указывающий не на настоящие данные, переменную или функцию.
При объявлении численной переменной без инициализации компилятор автоматически инициализирует её и записывает в неё 0. Указатель также является целочисленной беззнаковой переменной, поэтому он тоже будет инициализирован нулём.
‘ Объявим указатель без инициализации Dim pDays As Integer Ptr ‘ В нём находится ноль Print «pDays = «; pDays
C:ProgrammingFreeBASIC Projects>Pointers.exe pDays = 0 C:ProgrammingFreeBASIC Projects>_
Ящик с номером ноль — это специальное зарезервированное значение адреса, что указатель содержит недействительный адрес. При любой операции к такой памяти процессор генерирует специальное прерывание, операционная система перехватывает это прерывание и завершает вызвавший его процесс с ошибкой времени выполнения: «Программа выполнила недопустимую операцию и будет закрыта».
Разыменование указателя с недействительным адресом является операцией с неопределённым поведением. Это значит, что может произойти всё, что угодно: обращение к непредназначенной для использования данной программой памяти, запись в непринадлежащие программе данные, завершение процесса, зависание всей системы или что угодно другое:
Dim p As Integer Ptr ‘ Указателю не присвоен действительный адрес, разыменовывать его нельзя ‘ Следующая строка приведёт к неопределённому поведению Print *p
Упражнения
Какой тип данных будет лучшим для хранения числа 196?
Какой тип данных будет лучшим для хранения числа 2.134?
Какой тип данных является наилучшим для общего использования в 32‐битных системах? А в 64‐битных системах?
В чём разница между знаковыми и беззнаковыми типами данных?
Какой префикс ты будешь использовать для обозначения двоичного числа?
Какой префикс ты будешь использовать для обозначения шестнадцатеричного числа?
Какие буквы допускаются в шестнадцатеричном числе?
Дано шестнадцатеричное число: 1AF. Переведи в десятичное число.
«Пакетные файлы» создали этот сайт 11 марта 2016 года
Источник: www.freebasic.su
Имена данных в программе задают
Войдите как ученик, чтобы получить доступ к материалам школы
Внутренний язык программирования 1С 8.3 для начинающих программистов: имена переменных в 1С
Автор уроков и преподаватель школы: Владимир Милькин
На прошлом уроке мы узнали какие бывают данные и научились совершать с ними простейшие операции.
Назначение имен для данных
Сегодня мы шагнем ещё дальше — научимся давать данным свои имена! Придумывание имен для программы очень увлекательное занятие, но требуется соблюдать ряд правил:
Имя может состоять только из букв русского и английского алфавитов, цифр и знаков подчеркивания.
Имя не должно начинаться с цифры.
Ну, например. Количество планет нашей системы — 8. Это числовой тип данных. Вы читаете ознакомительную версию урока, полноценные уроки находятся здесь. Подходящим именем в данном случае будет КоличествоПланет. Ну а чтобы связать наше имя и цифру 8 используем знак равно.
Не забудем поставить в конце точку с запятой, так как связывание цифры 8 и имени — отдельная команда для компьютера.
КоличествоПланет = 8;
Теперь после выполнения связывания имени КоличествоПланет с восьмёркой, мы можем обращаться к цифре 8, используя это имя.
КоличествоПланет = 8; Сообщить(КоличествоПланет);
Код программы стал более наглядным, вы не находите? Это одно из назначений имен — делать код программы более понятным.
Как видите, второй пример получился длиннее, но понятнее. А понятность — очень важный критерий при написании кода.
Нужно всегда помнить, что пишем программу не только для компьютера, но и для других программистов. Они будут её дорабатывать, исправлять наши ошибки.
И нет ничего хуже, если программа написана плохо, неряшливо, подобраны неудачные имена для данных, а вам требуется не только разобраться как она работает, но ещё и добавить в неё что-то новое.
Итак, мы можем и даже должны придумывать для наших данных понятные и красивые имена. Это отличает хорошего программиста от плохого.
Проверка себя
Задание №11. Пройдите следующий тест, используя правила для составления имен, описанные выше.
Являются ли допустимыми следующие имена для данных:
ПервыйКосмонавт
7ЦветовРадуги
СемьЦветовРадуги
ЦветовРадуги7
Гора»Эверест»
Цветов_радуги_7
_НазваниеНашейПланеты
Рассвет_в космосе
Северный
Проверьте себя, попробовав использовать эти имена в своей программе, а уже затем смотрите ответы.
ПервыйКосмонавт — верное имя.
7ЦветовРадуги — так называть данные нельзя, так как имя не должно начинаться с цифры.
СемьЦветовРадуги — верное имя.
ЦветовРадуги7 — верное имя.
Гора»Эверест» — нельзя использовать кавычки в имени.
Цветов_радуги_7 — верное имя.
_НазваниеНашейПланеты — верное имя.
Рассвет_в космосе — нельзя использовать пробелы в имени.
Северный — нельзя использовать угловые скобки в имени.
Дополнительная настройка
Для дальнейших экспериментов понадобится дополнительная настройка базы. Вы читаете ознакомительную версию урока, полноценные уроки находятся здесь.
Показать инструкции
1. Нажмите правой кнопкой мыши на элементе «Конфигурация» и выберите пункт «Свойства».
2. Внизу открывшейся справа панели найдите пункт «Режим использования модальности». Установите его значение в «Использовать».
3. Нажмите на значок дискеты, чтобы сохранить изменения.
Вводим данные от пользователя
Давайте, наконец, научимся взаимодействовать с пользователем! Например, решим такую задачу.
Задание 12. Требуется, чтобы пользователь ввел два числа, а компьютер посчитал и вывел их сумму.
Задача вроде бы простая — складывать числа мы умеем, выводить тоже. Но как получить их от пользователя?
Для этого существует специальная команда ВвестиЧисло. В качестве параметра она принимает имя с которым будет связано значение, введенное пользователем.
Введем первое число:
ЧислоА = 0; ВвестиЧисло(ЧислоА);
Обратите внимание, что в первой строчке мы связываем имя со значением ноль. Проводим первоначальную инициализацию имени. Вы читаете ознакомительную версию урока, полноценные уроки находятся здесь. Это нужно сделать обязательно перед первым использованием имени в качестве параметра для команды.
Введем второе число:
ЧислоБ = 0; ВвестиЧисло(ЧислоБ);
Теперь вычислим сумму введенных чисел и свяжем её с именем СуммаЧисел:
СуммаЧисел = ЧислоА + ЧислоБ;
Чтобы показать получившуюся сумму пользователю используем ещё одну новую команду ОткрытьЗначение:
ОткрытьЗначение(СуммаЧисел);
Весь код целиком
ЧислоА = 0; // объявили первое число и указали, что оно равно нулю ВвестиЧисло(ЧислоА); // ввели его новое значение от пользователя // сделали то же со вторым числом ЧислоБ = 0; ВвестиЧисло(ЧислоБ); // сложили оба введённых числа СуммаЧисел = ЧислоА + ЧислоБ; // и вывели их значение пользователю ОткрытьЗначение(СуммаЧисел);
Теперь запускайте программу много раз и пробуйте вводить различные числа. Как видите компьютер прекрасно справляется с задачей!
Обратите внимание. Мы намеренно начали использовать ОткрытьЗначение вместо Сообщить. Вот в чём дело: ссылка.
Источник: helpme1s.ru
27 распространённых вопросов по SQL с собеседований и ответы на них
Вопросы по SQL на собеседованиях — обычное дело, и чтобы не завалиться, нужно хорошо понимать, как работать с базами данных. В этом списке представлены основные вопросы и задачи по SQL, которые часто встречаются на собеседованиях, а также ответы на них.
Как стать разработчиком с нуля
Теория
Что такое СУБД?
Допустим, есть большая база данных, которой пользуются многие сотрудники: кто-то ищет информацию, а кто-то изменяет или даже удаляет её. Чтобы правильно обрабатывать все эти запросы, нужно специальное программное обеспечение, и именно такое ПО получило название системы управления базами данных (СУБД).
Какие типы СУБД в соответствии с моделями данных вы знаете?
Этот вопрос по SQL предполагает не просто назвать, но и дать краткое описание каждому типу.
Реляционные, которые поддерживают установку связей между таблицами с помощью первичных и внешних ключей. Пример — MySQL.
Flat File — базы данных с двумерными файлами, в которых содержатся записи одного типа и отсутствует связь с другими файлами, как в реляционных. Пример — Excel.
Иерархические подразумевают наличие записей, связанных друг с другом по принципу отношений один-к-одному или один-ко-многим. А вот для отношений многие-ко-многим следует использовать реляционную модель. Пример — Adabas.
Сетевые похожи на иерархические, но в этом случае «ребёнок» может иметь несколько «родителей» и наоборот. Примеры — IDS и IDMS.
Объектно-ориентированные СУБД работают с базами данных, которые состоят из объектов, используемых в ООП. Объекты группируются в классы и называются экземплярами, а классы в свою очередь взаимодействуют через методы. Пример — Versant.
Объектно-реляционные обладают преимуществами реляционной и объектно-ориентированной моделей. Пример — IBM Db2.
Многомерная модель является разновидностью реляционной и использует многомерные структуры. Часто представляется в виде кубов данных. Пример — Oracle Essbase.
Гибридные состоят из двух и более типов баз данных. Используются в том случае, если одного типа недостаточно для обработки всех запросов. Пример — Altibase HDВ.
Что такое первичный ключ?
Первичный ключ или PRIMARY KEY предназначен для однозначной идентификации каждой записи в таблице и является строго уникальным ( UNIQUE ): две записи таблицы не могут иметь одинаковые значения первичного ключа. Нулевые значения ( NULL ) в PRIMARY KEY не допускаются. Если в качестве PRIMARY KEY используется несколько полей, их называют составным ключом.
CREATE TABLE USERS ( id INT NOT NULL, name VARCHAR (20) NOT NULL, PRIMARY KEY (id) );
Здесь в качестве первичного ключа используется поле id.
Когда используется PRIMARY KEY?
PRIMARY KEY — это первичный ключ, который используется в качестве основного ключа и может быть использован для связи с дочерней таблицей, содержащей внешний ключ.
А что такое внешний ключ?
Внешний ключ или FOREIGN KEY также является атрибутом ограничения и обеспечивает связь двух таблиц. По сути, это поле или несколько полей, которые ссылаются на PRIMARY KEY в родительской таблице.
CREATE TABLE order ( order_id INT NOT NULL, user_id INT, PRIMARY KEY (order_id), FOREIGN KEY (user_id) REFERENCES users(id) );
В данном случае внешний ключ, привязанный к полю user_id в таблице order , ссылается на первичный ключ id в таблице users , и именно по этим полям происходит связывание двух таблиц.
Какие ещё ограничения вы знаете, как они работают и указываются?
SQL-ограничения (constraints) указываются при создании или изменении таблицы. Это правила для ограничения типа данных, которые могут храниться в таблице. Действие с данными не будет выполнено, если нарушаются установленные ограничения.
UNIQUE — гарантирует уникальность значений в столбце;
NOT NULL — значение не может быть NULL ;
INDEX — создаёт индексы в таблице для быстрого поиска/запросов;
CHECK — значения столбца должны соответствовать заданным условиям;
DEFAULT — предоставляет столбцу значения по умолчанию.
Для чего используется ключевое слово ORDER BY?
Для сортировки данных в порядке возрастания ( ASC ) или убывания ( DESC ).
SELECT * FROM user ORDER BY name DESC;
Выбираются пользователи, которые будут отсортированы по имени в порядке убывания. Дополните ответ на этот вопрос по SQL тем, что без указания DESC данные были бы отсортированы по умолчанию — в порядке возрастания:
SELECT * FROM user ORDER BY name;
Назовите четыре основных типа соединения в SQL
Чтобы объединить две таблицы в одну, следует использовать оператор JOIN . Соединение таблиц может быть внутренним ( INNER ) или внешним ( OUTER ), причём внешнее соединение может быть левым ( LEFT ), правым ( RIGHT ) или полным ( FULL ).
INNER JOIN — получение записей с одинаковыми значениями в обеих таблицах, т.е. получение пересечения таблиц.
FULL OUTER JOIN — объединяет записи из обеих таблиц (если условие объединения равно true) и дополняет их всеми записями из обеих таблиц, которые не имеют совпадений. Для записей, которые не имеют совпадений из другой таблицы, недостающее поле будет иметь значение NULL .
LEFT JOIN — возвращает все записи, удовлетворяющие условию объединения, плюс все оставшиеся записи из внешней (левой) таблицы, которые не удовлетворяют условию объединения.
RIGHT JOIN — работает точно так же, как и левое объединение, только в качестве внешней таблицы будет использоваться правая.
Рассмотрим пример соединения SQL таблиц с использованием INNER JOIN . Следующий запрос выбирает все заказы с информацией о клиенте:
SELECT Orders.OrderID, Customers.CustomerName FROM Orders INNER JOIN Customers ON Orders.CustomerID = Customers.CustomerID;
А что такое Self JOIN?
Такой вопрос тоже может прозвучать на собеседовании по SQL. Это выражение используется для того, чтобы таблица объединилась сама с собой, словно это две разные таблицы. Чтобы такое реализовать, одна из таких «таблиц» временно переименовывается.
Например, следующий SQL-запрос объединяет клиентов из одного города:
SELECT A.CustomerName AS CustomerName1, B.CustomerName AS CustomerName2, A.City FROM Customers A, Customers B WHERE A.CustomerID <> B.CustomerID AND A.City = B.City ORDER BY A.City;
Для чего нужен оператор UNION?
Он используется для объединения полученных данных из двух или более запросов, которые должны иметь одинаковое количество столбцов с одинаковыми типами данных и расположенных в том же порядке.
SELECT column(s) FROM first_table UNION SELECT column(s) FROM second_table;
Как работают подстановочные знаки?
Это специальные символы, которые нужны для замены каких-либо знаков в запросе. Они используются вместе с оператором LIKE , с помощью которого можно отфильтровать запрашиваемые данные.