• систематизация знаний учащихся по теме: «Алгоритмизация и основы программирования в среде Паскаль».
• развитие познавательного интереса, памяти, внимания;
• научить рациональному способу построения алгоритма;
• развивать логическое мышление.
Воспитательные:
• воспитание целеустремленной, конкурентоспособной личности учащихся;
• воспитание уважительного отношения к своему труду и труду окружающих.
Требования к знаниям и умениям:
Учащиеся должны знать:
— что называется интерпретацией;
— отличие операторов modи div.
Учащиеся должны уметь:
— определять значения переменных после прохождения блок-схемы;
— определять значения переменных после прохождения фрагмента алгоритма, написанного на языке Паскаль;
— работать с командным исполнителем программы.
Программно-дидактическое обеспечение:
• карточки с заданием.
План урока.
1. Организационный момент.
2. Актуализация знаний по теме: «Алгоритмизация и основы программирования в среде Паскаль».
Что такое переменная в программировании.
3. Изучение нового материала.
4. Закрепление изученного.
5. Подведение итогов урока.
6. Домашнее задание.
Скачать:
Предварительный просмотр:
Тема урока: «Решение алгоритмических задач. Исполнение фрагмента программ».
Форма урока: решение задач.
- закрепить знания систем команд и конструкций алгоритмов-исполнителей;
- формировать операционный стиль мышления.
- систематизация знаний учащихся по теме: «Алгоритмизация и основы программирования в среде Паскаль».
- развитие познавательного интереса, памяти, внимания;
- научить рациональному способу построения алгоритма;
- развивать логическое мышление.
- воспитание целеустремленной, конкурентоспособной личности учащихся;
- воспитание уважительного отношения к своему труду и труду окружающих.
Требования к знаниям и умениям:
Учащиеся должны знать:
— что называется интерпретацией;
— отличие операторов mod и div.
Учащиеся должны уметь:
— определять значения переменных после прохождения блок-схемы;
— определять значения переменных после прохождения фрагмента алгоритма, написанного на языке Паскаль;
— работать с командным исполнителем программы.
- видеопроектор;
- ноутбук;
- карточки с заданием.
1. Организационный момент.
2. Актуализация знаний по теме: «Алгоритмизация и основы программирования в среде Паскаль».
3. Изучение нового материала.
4. Закрепление изученного.
5. Подведение итогов урока.
6. Домашнее задание.
1. Организационный момент.
2. Актуализация знаний по теме «Алгоритмизация и основы программирования в среде Турбо Паскаль».
У . Ребята! Мы с вами уже начали изучать тему: «Алгоритмизация и основы программирования» и сейчас мы ее немного вспомним.
1. Как называется четкая, понятная исполнителю серия команд, позволяющая выполнить данную задачу.
ЧТО ТАКОЕ ПЕРЕМЕННАЯ В C# | ОБЪЯВЛЕНИЕ И ИНИЦИАЛИЗАЦИЯ ПЕРЕМЕННЫХ | ПРИСВОЕНИЕ ЗНАЧЕНИЙ | C# Урок #4
2. Как называется алгоритм, действия которого выполняются строго по порядку?
3. Как называется алгоритм, действия в котором выполняются в зависимости от выполнения или невыполнения некоторого условия?
(Разветвляющийся алгоритм или ветвление)
4. Как называется алгоритм, действия которого выполняются несколько раз?
(Циклический алгоритм или цикл)
5. Как называется набор инструкций для компьютера, направленных на решение конкретной задачи?
6.Как называется множество величин, объединенных совокупностью допустимых операций?
7. Как называется предложение языка программирования, задающее полное описание некоторого действия, которое необходимо выполнить?
8. Как мы можем запустить написанную нами программу в среде ТР?
(с помощью меню команды Ran → Ran или комбинацией клавиш CTRL+F9)
9. Назовите основные формы представления алгоритма
(Словесная, табличная, графическая (блок-схема))
10. Назовите свойства алгоритма
- дискретность (выполнение алгоритма разбивается на последовательность законченных действий-шагов);
- детерминированность (способ решения задачи однозначно определен в виде последовательности шагов);
- понятность (алгоритм не должен содержать предписаний, смысл которых может восприниматься неоднозначно);
- результативность (при точном исполнении команд алгоритма процесс должен прекратиться за конечное число шагов, и при этом должен быть получен ответ на вопрос задачи);
- массовость (алгоритм правильно работает на некотором множестве исходных данных, которое называется областью применимости алгоритма).
11. Из чего состоит алфавит языка ТП?
(буквы латинского алфавита, знаки цифры от 0 до 9, символы)
12. Назовите основные элементы программирования
(ввод, данные, операции, вывод, условное выполнение, подпрограммы)
У. Молодцы! А сейчас давайте с вами посмотрим на таблицу:
Реализация элементов блок-схемы алгоритма на языке Паскаль.
Ваша задача добавить пустые клетки таблицы нужные операторы, схемы или действия.
Реализация элементов блок – схемы алгоритма на языке Паскаль.
Элемент блок схемы
Начало работы программы
(служебное слово)
Конец работы программы
(служебное слово)
На экране появляется значение переменной C.
(оператор вывода данных)
На экране появляется текст результат= и значение переменной S.
(оператор вывода данных)
Надо вводить два числа с клавиатуры
(оператор ввода данных)
После выполнения операторов, переменным присваиваются следующие значения: C=4T, D=A+B, I=I+1 (операторы присваивания)
Если условие A>B верно, то выполняется группа операторов ОП.1 , в противном случае – группа операторов ОП.2 (условный оператор)
Реализация элементов блок – схемы алгоритма на языке Паскаль.
Элемент блок схемы
Начало работы программы
(служебное слово)
Конец работы программы
(служебное слово)
На экране появляется значение переменной C.
(оператор вывода данных)
На экране появляется текст результат= и значение переменной S.
(оператор вывода данных)
Надо вводить два числа с клавиатуры
(оператор ввода данных)
После выполнения операторов, переменным присваиваются следующие значения: C=4T, D=A+B, I=I+1 (операторы присваивания)
Если условие A>B верно, то выполняется группа операторов ОП.1 , в противном случае – группа операторов ОП.2 (условный оператор)
У. А теперь группа, которая первая правильно заполнила таблицу на карточке, заполнит ее на доске, а вы ребята проверите свои таблицы.
У . Какие из перечисленных далее описаний можно рассматривать как алгоритмы и почему?
- Порядок безопасного перехода проезжей части улицы по нерегулируемому пешеходному переходу.
- Правила дорожного движения в целом.
- Метод перевода десятичных чисел в другую систему счисления.
- Доказательство теоремы Пифагора.
- Правило правописания сочетаний –жи- и –ши- в русском языке.
- Способ решения головоломки «кубик Рубика».
- Каталог товаров, имеющихся в продаже в магазине.
- Инструкция по распаковке, установке, подключению и настройки телевизора.
3. Изучение нового материала.
У . А теперь откройте тетради, запишите число, классная работа и тему нашего урока
«Решение алгоритмических задач. Исполнение фрагмента программ».
У . Давайте с вами решим пример.
Пример 1. Определить значение целочисленной переменной х после выполнения следующего фрагмента программы:
У. В блок-схеме присутствует цикл, т.е. одни и те же команды многократно повторяются. Для того, чтобы не ошибиться при выполнении блок-схемы, удобно составить таблицу, в которую заносятся заносятся значения переменных и результаты проверки условия на каждом шаге. Знак <> — обозначает неравно.
О. Каждое однократное выполнение тела цикла называется интерацией.
55<>75 – да (выполняем тело цикла)
55>75 – нет (вычитаем х из у)
55<>20 – да (выполняем тело цикла)
55>20 – да (вычитаем у из х)
35<>20 – да (выполняем тело цикла)
35>20 – да (вычитаем у из х)
15<>20 – да (выполняем тело цикла)
35>20 – нет (вычитаем х из у)
15<>5 – да (выполняем тело цикла)
15>5 – да (вычитаем у из х)
10<>5 – да (выполняем тело цикла)
10>5 – да (вычитаем у из х)
5<>5 – нет (алгоритм завершен)
Итак, переменная х после выполнения данного фрагмента программы приняла значение 5.
У . Ребята, подумайте, какому алгоритму соответствует данная блок-схема?
Данная блок-схема соответствует известному алгоритму Евклида нахождения НОД двух чисел. Поэтому ответ можно получить и без формального выполнения алгоритма, используя, например, такую цепочку умозаключений: «55 делится нацело на 5 (по признаку делимости на 5); 55=5*11; 75 нацело на 11 не делится, но тоже делится на 5, следовательно НОД чисел 55 и 75 равен 5.
Если по внешнему виду блок-схемы нелегко понять, какой именно алгоритм она реализует, то для решения подобных задач следует пользоваться общим способом – пошаговым исполнением блок-схемы с заполнением таблицы.
Работа в группах
Дети объединяются в группы, и учитель раздает карточки с заданием.
Карточка 1 . Определите значение переменной с после выполнения фрагмента алгоритма:
Карточка 2. Определите значение переменной a после выполнения фрагмента алгоритма:
Карточка 3. Определить значение переменной В после выполнения следующего фрагмента алгоритма.
Источник: nsportal.ru
2. Переменные, типы данных.
Комментарии служат для разъяснения кода. Они являются своеобразными подсказками другим программистам или вам (например, если ваша программа будет слишком большой, вы сможете забыть, что значит этот код или для чего конкретно создавалась данная переменная, — тогда комментарии помогут вспомнить смысл данного блока кода). Комментарии бывают трех типов:
- Многострочный комментарий. Он может располагаться на одной или нескольких строках между группами симоволов / * и */:
/*Многострочный
Комментарий*/
- Однострочный комментарий. Комментарий может
располагаться только на одной строке начиная с пары символов / / и до конца строки:
// Комментарий
- Многострочный тип комментариев для документирования кода. Комментарии располагаются между /** и */ на одной или нескольких строках:
Комментарий */
Прокомментируем нашу первую программу на языке Java с использованием комментариев.
// Программа создана для обучения.
public class MyProgram
/** Выводим на экран строку Это Ваша первая программа
на языке Java */
public static void main(String args[])
System.out.println («Это Ваша первая программа на Java»);> >
/*Конец программы*/
Работа с переменными [ ]
Переменная — это именованная ячейка памяти, в которую можно записывать данные определенного типа.
Имена переменных называются идентификаторами. Названия идентификаторов выбираются по следующим правилам:
- они должны начинаться с буквы или символа подчеркивания;
- они могут содержать латинские буквы, символы подчеркивания или цифры без пробелов;
- названия идентификаторов не должны совпадать с ключевыми словами; список этих ключевых слов приведен в табл. 1.
Таблица 1. Ключевые слова, которые не должны присутствовать в названиях идентификаторов
abstract | 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 |
native | new | null | package |
private | protected | public | return |
short | static | strictfp | super |
switch | synchronized | this | throw |
throws | transient | true | try |
void | volatile | while |
Для того чтобы записать данные, необходимо объявить переменную определенного типа. Внимание! Операторы программы разделяются точкой с запятой!
Объявление переменной:
Для того чтобы переменной присвоить значение, необходимо инициализировать переменную.
Инициализация переменной:
Объявление с инициализацией переменной:
тип ИмяПеременной = НачальноеЗначение;
Объявление нескольких переменных:
тип ИмяПеременной1, ИмяПеременной2, ИмяПеременной3;
Объявление с инициализацией нескольких переменных:
тип ИмяПеременной1 = НачальноеЗначение1, ИмяПеременной2 = НачальноеЗначение2, ИмяПеременной3 = НачальноеЗначение3;
Числовые типы данных [ ]
Существут целочисленные и вещественные типы данных.
Целочисленные типы (int) — обозначают множества целых чисел в различных диапазонах.
Чтобы объявить и присвоить переменной число целого типа данных, используйте следующий синтаксис в Java:
int myNumber; // Объявление переменной
myNumber = 5; // Инициализация переменной
Вы можете объединить эти операции:
int myNumber = 5; // Объявление с инициализацией переменной
Также можно описать несколько переменных целого типа:
int myNumber1 = 5, myNumber2 = 30, myNumber3 = -5; // Объявление с инициализацией нескольких переменных
Задачи на работу с целочисленным типом данных [ ]
1. Объявите переменную с именем m. Запишите в переменную ваш возраст. Выведите на экран значение переменной m. Вывод на экран описывается оператором System.out.println (ИмяПеременной).
На выходе: одно целое число
2. Вечером температура воздуха составляла 5 градусов по Цельсию. За ночь температура понизилась на 7 градусов. Объявите переменную с инициализацией n, содержащую значение утренней температуры. Выведите на экран значение переменной n.
На выходе: одно целое число
Вещественные типы (double) — обозначают множества вещественных чисел (числа имеют дробные части) в различных диапазонах.
Чтобы объявить и присвоить переменной число вещественного типа данных, используйте следующий синтаксис в Java:
double myNumber; // Объявление переменной
myNumber = 5.0; // Инициализация переменной
Вы можете объединить эти операции:
double myNumber = 5.0; // Объявление с инициализацией переменной
Также можно описать несколько переменных вещественного типа:
double myNumber1 = 5.0, myNumber2 = 3.14, myNumber3 = -5.667; // Объявление с инициализацией нескольких переменных
Задачи на работу с вещественным типом данных [ ]
1. Объявите переменную с именем m. Запишите в переменную значение числа Пи до 2-го знака после запятой. Выведите на экран значение переменной m. Вывод на экран описывается оператором System.out.println (ИмяПеременной). На выходе: одно вещественное число
2. Абсолютный ноль по шкале Кельвина или -273,15 градусов по Цельсию считается самой низкой из возможных температур. Объявите переменную с инициализацией n, содержащую значение абсолютного нуля. Выведите на экран значение переменной n. На выходе: одно вещественное число
В Java поддерживаются следующие арифметические операторы с числовыми типами данных, табл. 2.
Таблица 2. Арифметические операторы
+ | Сложение |
— | Вычитание |
* | Умножение |
/ | Деление (целочисленное деление) |
% | Деление (остаток от деления) |
++ | Инкремент |
— | Декремент |
+= | Присваивание со сложением |
-= | Присваивание с вычитанием |
*= | Присваивание с умножением |
/= | Присваивание с делением |
%= | Присваивание с вычислением остатка |
Рассмотрим каждую арифметическую операцию на примерах для целого и вещественного типов данных, табл. 3. Расчеты делались в программе, в соответствии с рис. 10.
Таблица 3. Арифметические операторы для целого и вещественного типов данных.
Далее из табл 2. следуют операторы под названием инкремент (++) и декремент (—). Один из них (инкремент) прибавляет к значению переменной единицу, другой (декремент), наоборот, убавляет единицу. Данные операторы указываются без пробела рядом со значением переменной.
int а = 4;
a++; // переменная а примет значение = 5
Аналогично работает оператор декремента.
Последние пять операторов в таб. 2. используются следующим образом:
а += b;
а = а + b;
Задачи на работу с арифметическими операторами [ ]
1. Программа выполняет различные (по вариантам) математические действия над двумя числами.
Выведите результат на экран.
1. | Возведение в квадрат частного двух чисел |
2. | Возведение в квадрат суммы двух чисел |
3. | Возведение в квадрат разности двух чисел |
4. | Возведение в квадрат произведения двух чисел |
На выходе: целое или вещественное число.
2. Программа вычисляет последнюю цифру d заданного числа n.
На выходе: целое число d.
3. В переменной n хранится двузначное число. Создайте программу, вычисляющую и выводящую на экран сумму цифр n.
На выходе: целое число.
4. В переменной n хранится трёхзначное число. Создайте программу, вычисляющую и выводящую на экран сумму цифр n.
На выходе: целое число.
5. n белочек нашли k орешков и решили разделить их поровну. Программа вычисляет, сколько орешков достанется каждой белочке.
На выходе: целое число.
6. n белочек нашли k орешков и решили разделить их поровну. Программа вычисляет сколько орешков останется после того, как все белочки возьмут себе равное количество орешков.
На выходе: целое число.
7. Программа вычисляет дробную часть числа x (т.е. тоже число с нулевой целой частью).
На выходе: вещественное число (пример, 2.52 -> 0.52).
8. Программа вычисляет площадь прямоугольного треугольника s по длине двух катетов a, b.
На выходе: вещественное число (пример, 3.5, 4.2333 -> 7.4082).
9. Программа вычисляет средний балл ученика за решение четырех задач по оценкам (от 2 до 5).
На выходе: одно вещественное число.
10. Программа вычисляет площадь круга s и длину окружности p по введённому радиусу r.
На выходе: два вещественных числа.
11. В школе решили набрать три новых математических класса. Так как занятия по математике у них проходят в одно и то же время, было решено выделить кабинет для каждого класса и купить в них новые парты. За каждой партой может сидеть не больше двух учеников. Известно количество учащихся в каждом из трёх классов. Сколько всего нужно закупить парт чтобы их хватило на всех учеников?
Программа получает на вход три натуральных числа: количество учащихся в каждом из трех классов.
На выходе: целое число.
12. Длина Московской кольцевой автомобильной дороги —109 километров. Байкер Вася стартует с нулевого километра МКАД и едет со скоростью v километров в час. На какой отметке он остановится через t часов?
Программа получает на вход значения двух переменных v и t (задается в программе). Если v>0, то Вася движется в положительном направлении по МКАД, если же значение v
На выходе: целое число от 0 до 108 — номер отметки, на которой остановится Вася.
13. В некоторой школе занятия начинаются в 9:00. Продолжительность урока — 45 минут, после 1-го, 3-го, 5-го и т.д. уроков перемена 5 минут, а после 2-го, 4-го, 6-го и т.д. — 15 минут. В переменной указывается номер урока (число от 1 до 10). Определите, когда заканчивается указанный урок.
На выходе: два целых числа: время окончания урока в часах и минутах.
14. Даны значения двух моментов времени, принадлежащих одним и тем же суткам: часы, минуты и секунды для каждого из моментов времени. Известно, что второй момент времени наступил не раньше первого. Определите, сколько секунд прошло между двумя моментами времени. Программа на вход получает три целых числа: часы, минуты, секунды, задающие первый момент времени и три целых числа, задающих второй момент времени (запишите их в 6 различных переменных).
На выходе: целое число, секунды между этими моментами времени.
Символы и строки [ ]
Переменные Символьного типа данных
В Java символ — свой собственный тип, и это не просто число. Синтаксис:
char c = ‘g’;
Переменные Строковых типов данных
Чтобы объявить и присвоить строку используйте следующий синтаксис в Java, в котором в двойных кавычках (» «) задается значение строкового типа:
String myName; // Объявление переменной
myName = «Петр»; // Инициализация переменной
Вы можете объединить эти операции:
String myName = «Петр»; // Объявление с инициализацией переменной
В Java присутствует конкатенация (объединение) строк при помощи оператора +.
String s1 = «Как дела? «;
String s2 = «Хорошо! «;
String s3 = s1 + s2; // Результат равен: Как дела? Хорошо!
Пример использования конкатенации строки с числом:
int num = 5;
String s = «У меня есть » + num + » печенек»; // Результат равен: У меня есть 5 печенек
Результат работы программы представлен на рис. 11.
Преобразование типов данных [ ]
Для преобразования строки в целый тип используется конструкция Integer.parseInt(String s):
String number = «10»;
int result = Integer.parseInt(number);
Для преобразования числа целого типа данных в строку используется конструкция Integer.toString (int i):
int number = 10;
String result = Integer.toString(number);
Для преобразования строки в вещественный тип используется конструкция Double.parseDouble(String s):
String number = «10.3»;
double result = Double.parseDouble(number);
Для преобразования числа вещественного типа данных в строку используется конструкция Double.toString (double d):
double number = 10.3;
String result = Double.toString(number);
Задачи на работу со строковыми типами данных [ ]
1. Напишите программу, которая записывает в переменную целое число (например, 1534) и выводит текст, аналогичный приведенному в примере (пробелы важны!).
На выходе: строка (пример, Следующий номер за 1534 номер1535.
Предыдущий номер перед 1534 это 1533.)
2. Программа выполняет различные (по вариантам) математические действия над двумя числами, выводя на экран развёрнутую форму записи действия.
1. | Возведение в квадрат частного двух чисел |
2. | Возведение в квадрат суммы двух чисел |
3. | Возведение в квадрат разности двух чисел |
4. | Возведение в квадрат произведения двух чисел |
На выходе: строка (пример, Первое число: 1 Второе число: 2 -> 1 + 2 = 3)
3. Программа хранит Фамилию, Имя, Отчество пользователя в трех разных переменных, после чего выводит приветственное сообщение на экран.
На выходе: строка (пример, s1 = Иванов s2 =Иван s3 = Иванович -> Здравствуйте, Иванов Иван Иванович!)
4. n школьников делят k яблок поровну, неделящийся остаток остается в корзинке. Программа вычисляет сколько яблок достанется каждому школьнику, и сколько яблок останется в корзинке.
На выходе: строка(пример, Первое число: 6, Второе число: 50 -> Яблок достанется каждому: 8 шт. Яблок останется в корзине: 2 шт.).
5. За день машина проезжает n километров. Программа вычисляет сколько дней нужно, чтобы проехать маршрут длиной m километров?
На выходе: строка (пример, n 700, m 750 -> Количество дней пути: 2)
6. Ежемесячная зарплата водителя автобуса составляет 15320,45 руб. Выведите на экран годовой доход водителя.
На выходе: строка (пример, а = 15320,45 -> Годовой доход: 183845 руб. 4 копейки)
7. Посчитайте площади прямоугольника и квадрата.
На выходе: строка (пример, Площадь прямоугольника со сторонами 3 см и 4 см равна 12 см, Площадь квадрата со стороной 3 см равна 9 см)
Логический тип данных [ ]
Чтобы объявить переменную логического типа и присвоить ей значение используйте следующий синтаксис в Java.
boolean b; // Объявление переменной
b = true; // Инициализация переменной
Любая переменная может принять только два значения: true (истина) или false (ложь).
Вы можете объединить эти операции:
boolean b = true; // Объявление с инициализацией переменной
В Java также поддерживаются и логические операторы, представленные в табл. 4.
Таблица 4. Логические операторы
== | Равно |
!= | Не равно |
Меньше | |
Меньше или равно | |
> | Больше |
>= | Больше или равно |
если хотя бы одно из них будет false, то итог будет false. Оператор «условное ИЛИ» будет возвращать значение true, если хотя бы одно из условий будет true. Они обычно используются в конструкции if (об этом мы будем говорить в следующих разделах).
Далее приведем схему использования логических операторов в табл. 5. Расчеты для таблицы делались в программе, в соответствии с рис. 12. Таблица 5. Значения логических операторов для двух переменных Источник: itlab.fandom.com Урок №31. Целочисленные типы данных: short, int и longНа этом уроке мы рассмотрим целочисленные типы данных в языке С++, их диапазоны значений, операцию деления, а также переполнение (что это такое и примеры). Целочисленные типы данныхЦелочисленный тип данных — это тип, переменные которого могут содержать только целые числа (без дробной части, например: -2, -1, 0, 1, 2). В языке C++ есть 5 основных целочисленных типов, доступных для использования:
Основным различием между целочисленными типами, перечисленными выше, является их размер , чем он больше, тем больше значений сможет хранить переменная этого типа. Определение целочисленных переменныхОпределение происходит следующим образом:
В то время как полные названия short int , long int и long long int могут использоваться, их сокращенные версии (без int ) более предпочтительны для использования. К тому же постоянное добавление int затрудняет чтение кода (легко перепутать с именем переменной). Диапазоны значений и знак целочисленных типов данныхКак вы уже знаете из предыдущего урока, переменная с n-ным количеством бит может хранить 2n возможных значений. Но что это за значения? Это значения, которые находятся в диапазоне. Диапазон — это значения от и до, которые может хранить определенный тип данных. Диапазон целочисленной переменной определяется двумя факторами: её размером (измеряется в битах) и её знаком (который может быть signed или unsigned ). Целочисленный тип signed (со знаком) означает, что переменная может содержать как положительные, так и отрицательные числа. Чтобы объявить переменную как signed, используйте ключевое слово signed :
По умолчанию, ключевое слово signed пишется перед типом данных. 1-байтовая целочисленная переменная со знаком (signed) имеет диапазон значений от -128 до 127, т.е. любое значение от -128 до 127 (включительно) может храниться в ней безопасно. В некоторых случаях мы можем заранее знать, что отрицательные числа в программе использоваться не будут. Это очень часто встречается при использовании переменных для хранения количества или размера чего-либо (например, ваш рост или вес не может быть отрицательным). Целочисленный тип unsigned (без знака) может содержать только положительные числа. Чтобы объявить переменную как unsigned , используйте ключевое слово unsigned :
1-байтовая целочисленная переменная без знака (unsigned) имеет диапазон значений от 0 до 255. Обратите внимание, объявление переменной как unsigned означает, что она не сможет содержать отрицательные числа (только положительные). Теперь, когда вы поняли разницу между signed и unsigned, давайте рассмотрим диапазоны значений разных типов данных: Для математиков: Переменная signed с n-ным количеством бит имеет диапазон от -(2n-1 ) до 2n-1 -1. Переменная unsigned с n-ным количеством бит имеет диапазон от 0 до (2n )-1. Для нематематиков: Используем таблицу Начинающие программисты иногда путаются между signed и unsigned переменными. Но есть простой способ запомнить их различия. Чем отличается отрицательное число от положительного? Правильно! Минусом спереди. Если минуса нет, значит число — положительное. Следовательно, целочисленный тип со знаком (signed) означает, что минус может присутствовать, т.е. числа могут быть как положительными, так и отрицательными. Целочисленный тип без знака (unsigned) означает, что минус спереди отсутствует, т.е. числа могут быть только положительными. Что используется по умолчанию: signed или unsigned?Так что же произойдет, если мы объявим переменную без указания signed или unsigned? Все целочисленные типы данных, кроме char, являются signed по умолчанию. Тип char может быть как signed, так и unsigned (но, обычно, signed). В большинстве случаев ключевое слово signed не пишется (оно и так используется по умолчанию). Программисты, как правило, избегают использования целочисленных типов unsigned, если в этом нет особой надобности, так как с переменными unsigned ошибок, по статистике, возникает больше, нежели с переменными signed. Правило: Используйте целочисленные типы signed, вместо unsigned . ПереполнениеВопрос: «Что произойдет, если мы попытаемся использовать значение, которое находится вне диапазона значений определенного типа данных?». Ответ: «Переполнение». Переполнение (англ. «overflow» ) случается при потере бит из-за того, что переменной не было выделено достаточно памяти для их хранения. На уроке №28 мы говорили о том, что данные хранятся в бинарном (двоичном) формате и каждый бит может иметь только 2 возможных значения (0 или 1 ). Вот как выглядит диапазон чисел от 0 до 15 в десятичной и двоичной системах: Как вы можете видеть, чем больше число, тем больше ему требуется бит. Поскольку наши переменные имеют фиксированный размер, то на них накладываются ограничения на количество данных, которые они могут хранить. Примеры переполненияРассмотрим переменную unsigned, которая состоит из 4-х бит. Любое из двоичных чисел, перечисленных в таблице выше, поместится внутри этой переменной. «Но что произойдет, если мы попытаемся присвоить значение, которое занимает больше 4-х бит?». Правильно! Переполнение. Наша переменная будет хранить только 4 наименее значимых (те, что справа) бита, все остальные — потеряются. Например, если мы попытаемся поместить число 21 в нашу 4-битную переменную: Число 21 занимает 5 бит (10101). 4 бита справа (0101) поместятся в переменную, а крайний левый бит (1) просто потеряется. Т.е. наша переменная будет содержать 0101, что равно 101 (нуль спереди не считается), а это уже число 5, а не 21.
Теперь рассмотрим пример в коде (тип short занимает 16 бит):
Результат выполнения программы:
Что случилось? Произошло переполнение, так как мы попытались присвоить переменной x значение больше, чем она способна в себе хранить.
Следовательно, самый главный бит (которым является 1) теряется, а все 16 бит справа — остаются. Комбинация 0000 0000 0000 0000 соответствует десятичному 0, что и является нашим результатом. Аналогичным образом, мы получим переполнение, использовав число меньше минимального из диапазона допустимых значений:
Результат выполнения программы:
Переполнение приводит к потере информации, а это никогда не приветствуется. Если есть хоть малейшее подозрение или предположение, что значением переменной может быть число, которое находится вне диапазона допустимых значений используемого типа данных — используйте тип данных побольше!
Деление целочисленных переменныхВ языке C++ при делении двух целых чисел, где результатом является другое целое число, всё довольно предсказуемо: Но что произойдет, если в результате деления двух целых чисел мы получим дробное число? Например: В языке C++ при делении целых чисел результатом всегда будет другое целое число. А такие числа не могут иметь дробь (она просто отбрасывается, не округляется! ). Рассмотрим детально вышеприведенный пример: 8 / 5 = 1.6 . Но как мы уже знаем, при делении целых чисел результатом является другое целое число. Таким образом, дробная часть (0.6 ) значения отбрасывается и остается 1 . Источник: dzen.ru
Загрузка ...
|