Char short int long float double
Первые четыре типа используются для представления целых (в том числе и тип char, так как представление символа – его код), последние два - для представления чисел с плавающей точкой.
Переменная типа char обычно имеет размер 1 байт (1 символ), а переменная типа int имеет размер 2 или 4 байта (в зависимости от компилятора). Диапазон целых чисел, которые могут быть представлены типом, зависит от его размера. В Си/C++ размеры измеряются в единицах размера данных типа char, поэтому char по определению имеет размер 1 (единица). Соотношение между основными типами можно записать так:
1 = sizeof(char) <= sizeof(short) <= sizeof(int) <= sizeof(long)
sizeof(float) <= sizeof(double)
Перед типами shot, int и long можно поставить прилагательное unsigned, что обозначает беззнаковый. Внутреннее представление таких данных не содержит знакового разряда.
К основному типу можно применять прилагательное const. Это дает тип, имеющий те же свойства, что и исходный тип, за исключением того, что значение переменных типа const не может изменяться после инициализации.
const float pi = 3.14;
const char plus = '+';
Символ, заключенный в одинарные кавычки, является символьной константой.
Обычно константа, определенная таким образом, не занимает память; просто там, где требуется, ее значение может использоваться непосредственно.
Константа должна инициализироваться при описании. Для переменных инициализация не обязательна, но настоятельно рекомендуется. Оснований для введения локальной переменной без ее инициализации очень немного.
Арифметические операции над простыми типами
К любой комбинации этих типов могут применяться арифметические операции:
+ (плюс, унарный и бинарный)
-(минус, унарный и бинарный)
* (умножение)
/ (деление)
Следует заметить, что целое деление дает целый результат: 7/2 есть 3. Над целыми может выполняться операция %получения остатка: 7%2 равно 1.
При присваивании и арифметических операциях Си/C++ выполняет все осмысленные преобразования между основными типами, чтобы их можно было сочетать без ограничений.
Логические операции
& (поразрядная операция И), && (логическое И)
|(поразрядная ИЛИ) , || (логическое ИЛИ)
^(исключающее ИЛИ)
<< (логический сдвиг влево)
>>(логический сдвиг вправо)
Логические операции применяются к целым, так как в Си нет отдельного логического типа данных.
Операции сравнения:
= = (два подряд идущих знака равно – сравнение на равенство)
!= (не равно)
< (меньше)
>(больше)
<= (меньше или равно)
>= (больше или равно)
Выражения и Операторы
Выражения
В C++ есть операция присваивания =, а не оператор присваивания, как в некоторых языках, например, Турбо Паскале. Таким образом, присваивание может встречаться в неожиданном контексте; например, x=sqrt(a=3*x). Это бывает полезно. a=b=c означает присвоение c объекту b, а затем объекту a. Другим свойством операции присваивания является то, что она может совмещаться с большинством бинарных операций. Например, x[i+3]*=4 означает x[i+3]=x[i+3]*4, за исключением того факта, что выражение x[i+3] вычисляется только один раз.
Операторы - выражения
Самый обычный вид оператора – оператор-выражение. Он состоит из выражения, за которым следует точка с запятой. Например:
a = b*3+c;
x++;
Пустой оператор
Простейшей формой оператора является пустой оператор:
;
Он не делает ничего. Однако он может быть полезен в тех случаях, когда синтаксис требует наличие оператора, а вам оператор не нужен
Блоки
Блок - это возможно пустой список операторов, заключенный в фигурные скобки:
{ a=b+2; b++; }
Блок позволяет рассматривать несколько операторов как один. Область видимости имени, описанного в блоке, простирается до конца блока. Имя можно сделать невидимым с помощью описаний такого же имени во внутренних блоках.
Оператор goto
goto идентификатор;
Идентификатор: оператор
В программировании высокого уровня goto имеет очень мало применений, но он может быть очень полезен, когда C++ программа генерируется программой, а не пишется непосредственно человеком. Например, операторы goto можно использовать в синтаксическом анализаторе, порождаемом генератором синтаксических анализаторов.
Оператор goto может быть также важен в тех редких случаях, когда важна наилучшая эффективность, например, во внутреннем цикле какой-нибудь программы, работающей в реальном времени.
Одно из немногих разумных применений состоит в выходе из вложенного цикла или переключателя (break лишь прекращает выполнение самого внутреннего охватывающего его цикла или переключателя).
Комментарии
Продуманное использование комментариев и согласованное использование отступов может сделать чтение и понимание программы намного более приятным. Существует несколько различных стилей согласованного использования отступов. Сказанное относится также и к стилю комментариев.
Неправильное использование комментариев может серьезно повлиять на удобочитаемость программы, Компилятор не понимает содержание комментария, поэтому он никаким способом не может убедиться в том, что комментарий
1) осмыслен;
2) описывает программу; и
3) не устарел.
Непонятные, двусмысленные и просто неправильные комментарии содержатся в большинстве программ. Плохой комментарий может быть хуже, чем никакой.
Если что-то можно сформулировать средствами самого языка, следует это сделать, а не просто отметить в комментарии. Данное замечание относится к комментариям вроде:
// переменная "v" должна быть инициализирована.
// переменная "v" должна использоваться только функцией "f()".
// вызвать функцию init() перед вызовом
// любой другой функции в этом файле.
// вызовите функцию очистки "cleanup()" в конце вашей программы.
// не используйте функцию "wierd()".
// функция "f()" получает два параметра.
При правильном использовании C++ подобные комментарии как правило становятся ненужными. Чтобы предыдущие комментарии стали излишними, можно, например, использовать правила компоновки и видимость, инициализацию и правила очистки для классов.
Если что-то было ясно сформулировано на языке, второй раз упоминать это в комментарии не следует. Например:
a = b+c; // a становится b+c
count++; // увеличить счетчик
Такие комментарии хуже, чем просто излишни, они увеличивают объем текса, который надо прочитать, они часто затуманивают структуру программы, и они могут быть неправильными.
Предпочтительно:
1) комментарий для каждого исходного файла, сообщающий, для чего в целом предназначены находящиеся в нем комментарии, дающий ссылки на справочники и руководства, общие рекомендации по использованию и т.д.;
2) комментарий для каждой нетривиальной функции, в котором сформулировано ее назначение, используемый алгоритм (если он неочевиден).
Например:
// tbl.c: Реализация таблицы имен
/*
Гауссовское исключение
См. Ralston: "A first course ..." стр. 411.
*/
// swap() предполагает размещение стека AT&T sB20.
Удачно подобранные и хорошо написанные комментарии - существенная часть программы. Написание хороших комментариев может быть столь же сложным, сколь и написание самой программы.
Если в функции используются исключительно комментарии //, то любую часть этой функции можно закомментировать с помощью комментариев /* */, и наоборот.
Примеры задач
Пример 5. Напишите программу печатающую:
1. Десятичное целое число с шириной поля, равной количеству цифр.
2. Шестнадцатеричное целое число в форме 8А в поле шириной 4.
3. Число с плавающей точкой в форме 232.346 с шириной поля 10.
4. Число с плавающей точкой в форме 2.33е+002 с шириной поля 12.
5. Строку, выровненную по левому краю, в поле шириной 30 символов.
# include <stdio.h>
# include <conio.h>
int main(){
clrscr();
printf("*%d*\n", 324);
printf("*%4X*\n", 247);
printf("*%10.3f*\n", 232.3465);
printf("*%12.2e*\n", 232.65);
printf("*%30-s*\n", "Logitech");
printf("*%30s*\n", "Logitech");
}
Результат:
*324*
* F7*
* 232.346*
* 2.33e+02*
*Logitech *
* Logitech *
Пример 6. Сконструируйте операторы, которые выполняют следующие действия:
1. Увеличение значения х на 10.
2. Увеличение значения переменной х на 1.
3. Двойное присваивание суммы а и в переменной с.
4. присваивание а плюс удвоенное значение в переменной с.
5. Уменьшение значения переменной х на 1.
6. присваивание переменной m остатка от деления n на k.
7. Деление q на b минус а и присваивание результата p.
8. присваивание переменной х результата от деления суммы a и b на произведение c и d.
# include <stdio.h>
# include <conio.h>
int main(){
int x = 7, a = 11, b = 13, c, n = 15, k = 14, m, p, q = 39, d = 2;
clrscr();
x += 10;
printf("x=%d\n", x);
x ++;
printf("x=%d\n", x);
c = (a + b) * 2;
printf("c=%d\n", c);
a += 2 * c;
printf("a=%d\n", a);
x --;
printf("x=%d\n", x);
m = n % k;
printf("m=%d\n", m);
p = q / b - a;
printf("p=%d\n", p);
x = (a + b) / (c * d);
printf("x=%d\n", x);
}
Результат:
x=17
x=18
c=48
a=107
x=17
m=1
p=-104
x=1
Пример 7. Разработайте программу, которая отображает запрос пользователю на ввод значения температуры, определенного по шкале Фаренгейта. А затем организует вычисление эквивалентных температур по шкалам Цельсия и Кельвина, а затем отображать все три эквивалентных значения температур с точностью до двух знаков после запятой.
# include <stdio.h>
# include <conio.h>
int main(){
float f, c, k;
clrscr();
printf("Vvedite temperaturu po Farengeytu\n");
scanf("%f", &f);
c = 1.8 * f + 32;
k = c + 273.16;
printf("%+.2f po Farengeytu\n", f);
printf("%+.2f po Celsiyu\n", c);
printf("%+.2f po Kelvinu\n", k);
}
Результат:
Vvedite temperaturu po Farengeytu
-23
-23.00 po Farengeytu
-9.40 po Celsiyu
+263.76 po Kelvinu
ОСНОВНЫЕ КОНСТРУКЦИИ ЯЗЫКАTurbo Pascal
Язык программирования Pascal был разработан в 1968-1971 гг. Николаусом Виртом в Цюрихском институте информатики (Швейцария). Язык Паскаль был назван в честь французского математика, гуманиста и религиозного фанатика Блеза Паскаля, человека, построившего первую простую вычислительную машину. Паскаль является классическим языком программирования, который первоначально был создан как учебный язык (в настоящее время большинство университетов США пользуются Паскалем для обучения студентов программированию), однако, очень скоро обнаружилась эффективность этого языка в самых разнообразных приложениях, от решения небольших задач численного характера до разработки сложных программных систем компьютеров, баз данных, операционных систем и т.п.
Язык Turbo Pascal – это широко известная реализация языка Pascal фирмы Borland International для персональных IBM. Он является расширением американского стандарта (ANSI Pascal), учитывающим архитектурные особенности операционной системы MS-DOS и снабженным внушительным по объему и разнообразию пакетами стандартных процедур. Принципиальные нововведения облегчают конструирование больших программных систем на основе технологии модульного программирования.
Основной целью разработки системы программирования Turbo Pascal является обеспечение мощной и всесторонней поддержки всего технологического цикла создания программ производственного, научного и коммерческого назначения. Система Turbo Pascal является интегрированной средой, включающей ряд компонент, в совокупности поддерживающих все виды работ по созданию программ. Система содержит универсальный текстовый редактор, компилятор входного языка, редактор связей и встроенный символьный отладчик. Многооконный интерфейс с развитой системой меню обеспечивает высокую производительность труда программиста.
Алфавит языка Turbo Pascal
Состоит из следующих символов:
- заглавные и строчные латинские буквы и символ «подчерк» (в языке Turbo Pascal символ «подчерк» считается буквой);
А,В,С,…,Х,Y,Z, a, b, c,…,x, y,z,_
- десять арабских цифр от 0 до 9:
0,1,2,3,4,5,6,7,8,9
- двадцать два специальных символа:
+ - * / = > < . , :
@ ‘ ( ) [ ] { } # $ ^
Данные языка Turbo Pascal
Данные языка Turbo Pascal включают в себя константы и переменные.
Константы – это значения, которые не изменяются во время выполнения программы. Числовые константы имеют следующие формы представления:
1) целые. Например, 1; 20; -3; 0;
2) с фиксированной точкой (целая часть числа отделяется от дробной точкой). Например, 75.248; 0.5; -7.65;
3) с плавающей точкой. Используются для представления сильно больших и сильно малых чисел. В этой форме число записывается в виде: ±mE±P (в математике ±m*10+p), где m – мантисса; Е – символ, обозначающий основание десятичной системы счисления; Р – порядок. Знак мантиссы определяет знак числа. Порядок представляет собой однозначное или двузначное число, указывающее, на сколько разрядов вправо (знак «+») или влево (знак «-») нужно переместить точку в мантиссе, чтобы получить фактическое значение представляемой величины. Например:
в математике в Паскале
0.0803*10-2 -0.0803Е-2 или –0.803Е-3
18.943*103 18.943Е+3 или 18.943Е3
107 1Е+7 или 1Е7
Переменная – это величина, к которой обращаются по имени переменной (идентификатору), ее значение может изменяться во время выполнения программы. Идентификаторы служат для обозначения в программе переменных, констант, типов, меток, процедур и функций. Длина идентификатора может быть произвольной, но значимы только первые 63 символа. Большие и маленькие буквы не различаются.