Программирование >>  Элементы языков с и с++ 

1 ... 10 11 12 [ 13 ] 14 15 16 ... 200


Начинается цикл обработки введенной последовательности: I, 2, 3. Наведите мышь на переменную с. Тут же всплывет подсказка, показывающая значение этой переменной. Вы увидите, что первое значение переменной будет равно 49 - это код единицы, т. е. в обработку поступил первый введенный символ (запомните, что в переменных находятся коды, а не сами значения!). Чтобы выполнить следующий оператор, откройте опцию Debug главного меню и посмотрите, какую команду надо в ней выполнить. Это будет команда Step Over (или нажатие клавиши <F10>). При этой команде выполняется всегда целый оператор. Но в качестве оператора может выступать, как мы увидим далее, и некоторая функция (или подпрограмма), имя которой с параметрами указано в тексте программы (заголовок) и после имени которой стоит точка с запятой.

А вам хочется посмотреть по шагам, как выполняется функция. Чтобы в отладочном режиме попасть внутрь функции, надо после останова на ее имени выполнить опции или нажать клавишу <F11>. Таким образом, последовательно нажимая на клавишу <F10>, вы пошагово выполните всю программу, проследив, как и почему выполняются в определенной последовательности операторы программы. Именно так отлаживается любая программа.

На рис. 2.1 приведен результат работы нашей программы.

С:\WINDOWS\syslem32\cmd.exe

flake input >

i234asdf

I234asdf

Для продолжения нажмите любую клавишу

Рис. 2.1. Результат работы программы листинга 2.1

Программа копирования символьного файла. Вариант 2

Ранее мы познакомились с правилом, когда вместо переменной некоторого типа можно использовать и выражение этого же типа. Воспользуемся этой возможностью и запишем нашу программу в другом виде (листинг 2.2).



Листинг 2.2

7.срр : Defines the entry point for the console application. #include stdafx.h

#include <stdio.h> for getchar(),putchar()

#include <conio.h> for getchO #define eof -1 признак конца файла

int tinain(int argc, tchar* argv[]) i

int c;

printf( Make input>\n ); while( (c=getchar 0 ) != eof) putchar(c);

getch(); вводит символ, но без эхо-сопровождения

Ввод символа мы внесли в заголовочную часть while, поскольку c=getchar() - ЭТО выражение того же типа, что и с. Оператор while в общем случае работает так: он сначала вычисляет выражение, которое находится в его заголовочной части, при этом выполняется ввод символа с клавиатуры, что нам и нужно. Затем оператор while проверяет, не являются ли введенные символы признаком конца файла. Так как в отличие от предыдущего варианта тело оператора while состоит только из одного оператора putchar(c), то фигурные скобки можно опустить. После того как выполнится putchar(c), управление будет передано в заголовочную часть оператора while, где снова начнется вычисление выражения, которое, в свою очередь, потребует ввода символа с клавиатуры и т. д.

Подсчет символов в файле. Вариант 1

Напишем программу, в которой файл будет вводиться с клавиатуры. Вид программы представлен в листинге 2.3.



8.СРР : Defines the entry point for the console application.

#include stdafx.h

#include <stdio.h> for getchar(),putchar()

#include <conio.h> for getch{) #define eof -1 признак конца файла

int tmain(int argc, TCHAR* argv[]) {

long nc; nc=0;

printf( Make input>\n ); while(getchar{)!= eof)

ПС++;

printf ( Characterss nuitiber is: %ld\n ,nc); getch(); вводит символ, но без эхо-сопровождения

Здесь мы встречаемся с новым типом данных: long - длинное целое. Этот тип (можно и long int) применяется для описания больших целых чисел со знаком. По занимаемой памяти этот тип переменных больше или равен типу int. Переменные типа long могут объявляться как signed long или unsigned long (signed long - ЭТО СИНОНИМ long).

Существует также тип данных long long. Переменная этого типа занимает память больше, чем unsigned long. Переменные типа long long могут быть со знаком или без знака. Соответственно они объявляются как signed long long И unsigned long long (signed long long- ЭТО СИНОНИМ long long).

Так как мы подсчитываем количество символов в файле, который (в общем случае) может быть и не клавиатурным , то должны быть готовы к тому, что в нем будет м1юго символов, и их число превысит допустимое значение, помещающееся в переменной типа int. Количество вводимых символов под-

I Листинг 2.3



1 ... 10 11 12 [ 13 ] 14 15 16 ... 200

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика