Файл: История возникновения и развития языка программирования Си (С++) и Java...pdf
Добавлен: 29.02.2024
Просмотров: 19
Скачиваний: 0
Под "ячейкой памяти" будет пониматься непрерывная область памяти (с последовательно идущими адресами), выделенная программой для хранения данных. На рисунках мы будем изображать ячейку прямоугольником, внутри которого находятся хранящиеся в ячейке данные. Если у ячейки имеется имя, оно будет писаться рядом с этим прямоугольником. [14, с.153]
Мы привыкли работать с числами, записанными в так называемой десятичной системе счисления. В ней имеется 10 цифр (от 0 до 9), а в числе имеются десятичные разряды.
Каждый разряд слева имеет вес 10 по сравнению с предыдущим, то есть для получения значения числа, соответствующего цифре в каком-то разряде, стоящую в нем цифру надо умножать на 10 в соответствующей степени. То есть , и т.п.
В программировании десятичной системой счисления пользоваться не всегда удобно, так как в компьютерах информация организована в виде бит, байт и более крупных порций. Человеку неудобно оперировать данными в виде длинных последовательностей нулей и единиц.
В настоящее время в программировании стандартной является шестнадцатеричная система записи чисел. Например, с ее помощью естественным образом кодируется цвет, устанавливаются значения отдельных бит числа, осуществляется шифрование и дешифрование информации, и так далее. [8, с.182]
В этой системе счисления все очень похоже на десятичную, но только не 10, а 16 цифр, и вес разряда не 10, а 16. В качестве первых 10 цифр используются обычные десятичные цифры, а в качестве недостающих цифр, больших 9, используются заглавные латинские буквы A, B, C, D, E, F:
- 0 1 2 3 4 5 6 7 8 9 A B C D E F
То есть A=10, B=11, C=12, D=13, E=14, F=15.
Заметим, что в шестнадцатеричной системе счисления числа от 0 до 9 записываются одинаково, а превышающие 9 отличаются. Для чисел от 10 до 15 в шестнадцатеричной системе счисления используются буквы от A до F, после чего происходит использование следующего шестнадцатеричного разряда.
Десятичное число 16 в шестнадцатеричной системе счисления записывается как 10. Для того, чтобы не путать числа, записанные в разных системах счисления, около них справа пишут индекс с указанием основания системы счисления. [15, с.176]
Для десятичной системы счисления это 10, для шестнадцатеричной 16. Для десятичной системы основание обычно не указывают, если это не приводит к путанице.
Точно так же в технической литературе часто не указывают основание для чисел, записанных в шестнадцатеричной системе счисления, если в записи числа встречаются не только "обычные" цифры от 0 до 9, но и "буквенные" цифры от A до F. Обычно используют заглавные буквы, но можно применять и строчные. [11, с.168]
Рассмотрим примеры.
-
-
-
-
-
-
-
-
-
Зарезервированные слова языка Java
Это слова, указанные в таблице 2, зарезервированные для синтаксических конструкций языка, причем их назначение нельзя переопределять внутри программы.
Таблица 2
Слова, зарезервированные для синтаксических конструкций языка Java
boolean |
break |
byte |
case |
|
catch |
char |
class |
const |
continue |
default |
do |
double |
else |
|
extends |
false |
final |
finally |
float |
for |
goto |
if |
implements |
import |
instanceof |
int |
interface |
long |
|
new |
null |
package |
private |
protected |
public |
return |
short |
static |
|
switch |
this |
throw |
throws |
|
true |
try |
void |
||
while |
Их нельзя использовать в качестве идентификаторов (имен переменных, подпрограмм и т.п.), но можно использовать в строковых выражениях.
В языке Java только 8 примитивных (скалярных, простых) типов: boolean, byte, char, short, int, long, float, double.
Длины и диапазоны значений примитивных типов определяются стандартом, а не реализацией и приведены в таблице. Тип char сделали двухбайтовым для удобства локализации (один из идеологических принципов Java): когда складывался стандарт, уже существовал Unicode-16, но не Unicode-32. [5, с.196]
Поскольку в результате не осталось однобайтового типа, добавили новый тип byte, причем в Java, в отличие от других языков, он не является беззнаковым. Типы float и double могут иметь специальные значения, и «не число» (NaN).
Для типа double они обозначаются Double.POSITIVE_INFINITY, Double.NEGATIVE_INFINITY, Double.NaN; для типа float- так же, но с приставкой Float вместо Double. Минимальные положительные значения, принимаемые типами float и double, тоже стандартизованы в таблице 3.
Таблица 3
Тип |
Длина (в байтах) |
Диапазон или набор значений |
boolean |
не определено |
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, а также , , NaN |
double |
8 |
-(2-2?52)·21023..(2-2?52)·21023, или примерно ?1.8·10308..1.8·10308, а также , , NaN |
Такая жёсткая стандартизация была необходима, чтобы сделать язык платформенно-независимым, что является одним из идеологических требований к Java и одной из причин её успеха. Тем не менее, одна небольшая проблема с платформенной независимостью всё же осталась.
Некоторые процессоры используют для промежуточного хранения результатов 10-байтовые регистры или другими способами улучшают точность вычислений. [8, с.549]
Для того, чтобы сделать Java максимально совместимой между разными системами, в ранних версиях любые способы повышения точности вычислений были запрещены. Однако это приводило к снижению быстродействия.
Выяснилось, что ухудшение точности ради платформенной независимости мало кому нужно, тем более, если за это приходится платить замедлением работы программ.
После многочисленных протестов этот запрет отменили, но добавили ключевое слово strictfp, запрещающее повышение точности.
Преобразования при математических операциях
В языке Java действуют следующие правила:
1. Если один операнд имеет тип double, другой тоже преобразуется к типу double.
2. Иначе, если один операнд имеет тип float, другой тоже преобразуется к типу float.
3. Иначе, если один операнд имеет тип long, другой тоже преобразуется к типу long.
4. Иначе оба операнда преобразуются к типу int.
Данный способ неявного преобразования встроенных типов полностью совпадает с преобразованием типов в C++. [10, с.702]
ЗАКЛЮЧЕНИЕ
Как было обещано в первом издании книги «Бьерн Страуструп. Язык программирования С++, запросы пользователей определили развитие С++. Его направлял опыт широкого круга пользователей, которые трудились в различных сферах программирования.
За 6 лет, которые отделяли нас от первого издания описания С++, количество пользователей увеличилось в сотни раз. За этот небольшой период усвоились множество уроков, рассмотрены в теории и применено на практике достаточное число приемов программирования.
Благодаря языку C++ произошел стремительный прорыв в развитии всего программирования. С++ и сегодня занимает доминирующее положение среди всех зыков программирования в мире. Благодаря ему множество программистов разрабатывает огромное число различных проектов. И в будущем этот язык программирования сохранит свои позиции, совершенствуясь изо дня в день
Язык Java является объектно-ориентированным и поставляется с достаточно объемной библиотекой классов. Благодаря библиотекам классов Java значительно упростилась разработка приложений, ведь в распоряжение программиста предоставлены мощные средства решения распространенных задач.
Вследствие этого программист имеет возможность больше внимания уделить решению прикладных задач, а не таких, как, например, организация динамических массивов, взаимодействие с ОС или реализация элементов пользовательского интерфейса.
Свойства языка Java:
- язык программирования объектно-ориентирован, оснащён богатой библиотекой классов и одновременно довольно прост для освоения;
- цикл разработки приложений сокращен при помощи того, что система построена на основе интерпретатора;
- приложение получается автоматически переносимым между множеством платформ и ОС;
- за счет встроенной системы сборки «мусора» программист освобождается от необходимости явного управления памятью;
- приложение легко сопровождается и модифицируется, т.к. модули могут быть загружены с сети;
- в приложения встроена система безопасности, не допускающая незаконного доступа и проникновения вирусов.
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
1. Айра Пол. Объектно-ориентированное программирование на С++ / Айра Пол. - М.: Бином-Пресс, 2017. - 464 c.
2. Беркунський Е.Ю. Объектно-ориентированное программирование на языке Java: методические указания для студентов направления "Компьютерные науки" / Е.Ю. Беркунський. - М.: НУК, 2016. - 352 с.
3. Вязовик Н.А. Программирование на Java: курс лекций для вузов / Н.А. Вязовик. – М.: Инфра-М, 2018. - 592 с.
4. Грэхем Иан. Объектно-ориентированные методы. Принципы и практика / Иан Грэхэм. - М.: Вильямс, 2015. - 800 с.
5. Дейтел П.Дж., Дейтел Х.М. Как программировать на С++ и Java. Введение в объектно-ориентированное проектирование с использованием / П.Дж. Дейтел, Х.М. Дейтел. - М.: КНОРУС, 2017. - 454 с.
6. Кетков Ю.А. Практика программирования. Visual Basic, C++ Builder, Delphi / Ю.А. Кетков. – М.: БХВ-Петербург, 2015. - 464 c.
7. Культин Н.А. Основы программирования в Microsoft Visual C++ 2010 / Н.А. Культин. - М.: НОРМА, 2015. - 384 c.
8. Либерти Джесс. Освоение самостоятельно C++ за 21 день / Джесс Либерти. – М.: ЛиРа, 2018. - 816 с.
9. Перри Грег. Программирование на C и Java для начинающих / Грег Перри. - М.: ЭКСМО, 2015. - 368 c.
10. Прата Стивен. Язык программирования C: лекции и упражнения для студентов высших учебных заведений / Стивен Прата. - М.: Вильямс, 2017. - 928 c.
11. Саттер Герб. Решение сложных задач на С++ и Java / Герб Саттер. - М.: СПАРК, 2016. - 400 c.
12. Секунов Н.С. Самоучитель Visual C++ / Н.С. Секунов. –М.: Альпина-Букс, 2017. - 925 с.
13. Синтес Антони. Самостоятельное изучение объектно-ориентированного программирования за 21 день / Антони Синтес. - М.: Дашков и К, 2016. - 372 с.
14. Страуструп Бьерн. Дизайн и эволюция языка С++ / Бьерн Страуструп. - М.: ДМК-Пресс, 2018. - 446 c.
15. Стефан К. Дьюхэрст Скользкие места С++. Как избежать проблемы при проектировании и компиляции ваших программ / Стефан К. Дьюхэрст. - М.: СФЕРА, 2016. - 264 c.
16. Фленов М.И. Программирование на C++ и Java глазами хакера / М.И. Фленов. - М.: БХВ-Петербург, 2015. - 352 c.
17. Хабибуллин И.Ш. Самоучитель Java / И.Ш. Хабибуллин. – Ростов на Дону: Филинь, 2017. - 720 с.
18. Чиртик А.С. Программирование на C++. Трюки и эффекты / А.С. Чиртик. - М.: Инфра-М, 2018. - 352 c.
19. Шилдт Герберт. Искусство программирования на Java и C++ / Герберт Шилдт. - М.: ЮНИТИ-ДАНА, 2015. - 496 c.
20. Шмидт Дуглас. Программирование сетевых приложений на C++ и Java / Дуглас Шмидт. - М.: Бином-Пресс, 2017. - 394 c.
21. Эккель Брюс. Философия Java. Библиотека программиста / Брюс Эккель. - СПб.: Питер, 2016. - 640 с.