Бочаров презентации 1 семестр / Tech_Progr_PPT_1p_2016
.pdfФорматный вывод (продолжение)
|
|
|
|
|
Типы числовых данных |
длина чисел в байтах |
|
|
char, unsigned char, signed char |
1 |
|
|
short, unsigned short |
2 |
|
|
int, unsigned int |
4 |
|
|
long, unsigned long |
4 |
|
|
long long, unsigned long long |
8 |
|
|
Float |
4 |
|
|
double |
8 |
|
|
long double |
8 |
Форматы чисел не стандартизованы в С, поэтому приведенные значения являются типовыми, но не обязательными. Типовые величины числовых диапазонов в среде Pellec C for Windows приведены на следующем слайде
11 |
Технология и языки программирования |
Форматный вывод (продолжение)
|
Тип данных |
Байты |
Биты |
Min |
Max |
|
signed char |
1 |
8 |
-128 |
127 |
|
unsigned char |
1 |
8 |
0 |
255 |
|
signed short |
2 |
16 |
-32768 |
32767 |
|
enum |
2 |
16 |
-32768 |
32767 |
|
unsigned short |
2 |
16 |
0 |
65535 |
|
signed int |
4 |
32 |
-2147483648 |
2147483647 |
|
unsigned int |
4 |
32 |
0 |
4294967295 |
|
signed long |
4 |
32 |
-2147483648 |
2147483647 |
|
unsigned long |
4 |
32 |
0 |
4294967295 |
|
float |
4 |
32 |
±3.4E-38 |
±3.4E+38 |
|
double |
8 |
64 |
±1.7E-308 |
±1.7E+308 |
|
long double |
8 |
64 |
±1.7E-308 |
±1.7E+308 |
12 |
Технология и языки программирования |
Вывод символов
Вывод символов таблицы ASCII, которые имеют значок для отображения на экране. Примеры:
putchar('A'); // вывод заглавной латинской А putchar() – функция неформатного вывода символа
printf("B"); // вывод строчной константы из одной буквы.
Выводятся символьная переменная qq и строка из одного символа QQ (заглавные и строчные буквы различаются!)
char qq = ’W’; char QQ[] = ”?”; printf ("%c", qq); printf(”%s”,QQ);
13 |
Технология и языки программирования |
Вывод символов (продолжение)
Управляющие коды
Для управления выводом и в качестве специальных знаков используются символы таблицы ASCII с номерами от 0 до 26, которые или вовсе не отображаются на экране или имеют строго заданных значков для вывода на экран. В тексте программ они обозначаются обычными символами, перед которыми ставится знак \. Примеры управляющих кодов:
\n переход на новую строку
\t горизонтальная табуляция (сдвиг вправо на несколько позиций, обычно на 8, завит от конкретной реализации)
\b возврат на одну позицию (backspace)
\r возврат в начало строки
14 |
Технология и языки программирования |
Вывод символов (продолжение)
Таким же образом записываются специальные знаки:
printf("\\"); //вывод символа \ на экран
printf("\""); //вывод символа " на экран
putchar(’ \7’); // вывод символа BEL, который вызывает звуковой сигнал – писк, звонок (если в компьютере есть встроенная звуковая головка). В данном случае 7 – восьмеричный код символа BEL в таблице ASCII
putchar(’\64’); // вывод на экран символа числа 4, поскольку 648 =4810, а 48 это код ’4’ в таблице ASCII
эквивалентная команда - putchar(’4’)
putchar(’\x41’) это эквивалентно putchar(’A’) или то же, что printf(”A”). Здесь x41 шестнадцатеричный код 41, т.е. 65 в десятичном коде (4116 = 6510), а 65 это код латинской А в таблице ASCII
15 |
Технология и языки программирования |
Задержка закрытия экрана
При выводе результатов на экран нужно осуществить
задержку смены изображения, чтобы можно было увидеть на экране эти результаты, до того как произойдет смена изображения или экран закроется.
Для этого используется операция ожидания ввода любого символа, например:
printf(”Press any key to continue…”);
// т.е. «Для продолжения нажмите любую клавишу»
getchar(); // функция неформатного ввода символа - ожидает ввода какого-либо символа
В среде Pelles C предусмотрена автоматическая
вставка такого кода в конце главной программы перед return 0.
16 |
Технология и языки программирования |
Задержка закрытия экрана
(продолжение)
Еще один способ сделать паузу, чтобы задержать текущее изображение на экране – использовать функцию system() из библиотеки stdlib.h:
#include <stdio.h> #include <stdlib.h>
int main(void)
{
//здесь текст главной программы system("Pause");
return 0;
}
Если ОС русифицирована, то появится надпись: «Для продолжения нажмите любую клавишу. . .»
17 |
Технология и языки программирования |
Строки в языке С
Любой текст в кавычках, например:
”МИФИ”, ”MEPhI”, ”1234” является строковой константой.
Строка – это массив символов, который содержит в конце нулевой символ, признак конца строки ’\0’. Объявление такого массива:
char S1[] = ”Bye-Bye”; // массив содержит 7 символов и признак конца, поэтому справедливо также такое объявление:
char S1[8] = ”Bye-Bye”; // или такое:
char S1[20] = ”Bye-Bye”; // часть области памяти, отведенной под массив, будет заполнена, часть нет – ее содержимое не определено.
А так нельзя:
char S1[7] = ”Bye-Bye”; // будет сообщение об ошибке
«No room for null terminator...» (нет места для конца строки)
18 |
Технология и языки программирования |
Строки в языке С (продолжение)
Символы в строке нумеруются, как и в любом другом
массиве, начиная с нуля, например, при выполнении фрагмента программы:
char s2[]=”Hi”;
Printf(”%c\t%c\t%c\t”, s2[0], s2[1], s2[2]);
будет выведено
H |
i |
Press any key to continue... |
Символ конца строки между i и Press не виден
Важно: значения элементов массива изменять можно: s2[0]=’Q’; s2[1]=’*’; s2[0]=s2[1];
но значение s2 изменять нельзя, поскольку это адрес 0-го элемента массива, то есть, указатель-константа на строку. Поэтому s2 = запрещено!
19 |
Технология и языки программирования |
Строки в языке С (продолжение)
Другой способ объявления строки: char *s3=”Microelectronics”;
Здесь * - операция получения значения переменной по ее адресу, s3 – переменная-указатель на символьную переменную. Это адрес байта - нулевого элемента массива, т.е. адрес самого массива.
*s3 – это не адрес, а содержимое памяти – строка, на которую указывает переменная s3.
Поскольку s3 это переменная, а не константа, ее значение можно изменять в программе, например s3=”Nanoelectronics”;
В данном случае переменная s3, которая раньше содержала адрес нулевого символа строки ”Microelectronics”, теперь содержит адрес нулевого символа строки ”Nanoelectronics”.
20 |
Технология и языки программирования |