Основные типы данных в СИ. Консольный ввод-вывод данных

Лабораторная работа №1

Язык программирования Си.

Работа в интегрированной среде разработки программ Borland C

 

Справочная информация

 

Интегрированная среда разработки программ – программная система, обслуживающая весь цикл создания исполняемых файлов без выхода в операционную систему и обращения к другим программам. В ее состав входят: многооконный текстовый редактор, компилятор, редактор связей (линковщик), отладчик, подсистема работы с файлами, Help-система.

Для вхождения в среду запускается файл ярлык на рабочем столе bc.exe или вс. После его загрузки на дисплее отображается основной экран среды. Верхняя строка экрана разбита на одиннадцать именованных полей, каждое из которых представляет собой пункт главного меню. В нижней строке (строке состояния) указывается назначение «горячих клавиш», воспринимаемых средой на текущем этапе работы. Остальная часть экрана – рабочая поверхность. На ней размещаются окна - области, очерченные рамкой, в которых выводится информация различного характера. Одновременно может быть открыто несколько окон. По характеру выводимой в окнах информации они делятся на: окна редактирования, окна диалога, окна помощи, окно сообщений, выходное окно.

При работе в среде главную роль играют окна редактирования. В них создаются тексты программ и из них программы запускаются на компиляцию и линкование. Если при разработке программы в ней были допущены ошибки, то компилятор или линковщик сообщают об этом в специальном окне сообщений (оно именуется “Message”). В нем для каждого сообщения отводится одна строка. Компилятор выдает три вида сообщений:

ü о неисправимых ошибках – начинаются со слова “Fatal”, за которым указывается характер ошибки;

ü о синтаксических и лексических ошибках – начинаются со слова “Error”, за которым указывается номер строки в тексте программы, содержащей ошибку, и затем характер ошибки;

ü предупреждающие сообщения - начинаются со слова “Warning”, за которым указывается само сообщение. Следует иметь в виду, что предупреждающее сообщение ошибкой не является и в принципе программа компьютером может быть отработана, но в процессе ее исполнения могут возникнуть проблемы.

Все окна (кроме диалоговых) обозначены идентифицирующим номером, расположенным вблизи правого верхнего угла.

В любой момент времени активно или главное меню или одно из окон. Активизация окна производится одновременным нажатием клавиши “Alt” и цифровой клавиши, соответствующей номеру окна. Активизация главного меню - нажатием клавиши “F10”. Каждый пункт главного меню содержит определенные команды среды. Назначение пунктов.

ü File-команды работы с файлами.

ü Edit-команды редактирования текстов программ.

ü Search-команды поиска и замены последовательностей символов.

ü Run -команды управления исполнением программ.

ü Compile-команды управления компиляцией программ.

ü Debug-команды отладчика.

ü Project-команды создания многомодульных исполняемых файлов.

ü Options-команды задания параметров работы среды.

ü Window-команды управления окнами.

ü Help-команды обращения к системе помощи.

ü Переключение на русский язык правая комбинация Ctrl-Shift, левая комбинация возврат к английскому.

Задание.

 

1. Загрузите среду Borland C++.

2. Настройте пути к исходным и выходным файлам, используя пункт командного меню «Options-Directories»

3. Командой меню «File-New» создайте окно редактирования и освойте основные приемы работы с окнами (изменение размеров, перемещение по рабочей поверхности, переход из одного окна в другое). Выполните их с использованием клавиатуры и мыши.

4. Командой меню «File-Save As…» переименуйте окно (запишите файл под новым именем на рабочий диск используя корневой каталог, как рабочий) и наберите в нем следующую программу

 

Структура программы   Текст программы
Директивы препроцессора   #include<stdio.h>//для определения функций printf() и scanf() #include<conio.h>// Зачем нужна эта директива?  
Объявления внешних объектов   char s[ ]="Как Вас зовут?", name[12];//объявление переменных    
Начало гл. функции   void main() {
Тело главной функции   int price; // объявление переменных clrscr(); printf("\n\t Пpогpамма-диалог \n\n\n"); printf("\n\t%s ",s); //зачем нужна эта строка? fflush(stdin);//очистка буфера микропроцессора scanf("%s",&name); //зачем нужна эта строка? printf("\n\t %s , Вы посещаете лекции? \n\t\t 1 (да) / 0 (нет)", name); fflush(stdin); scanf("%s",&price); if(price==1) printf("\nУсердно занимайтесь, %s, и у Вас все получится", name); else printf ("\nБездельничайте, %s, и двойка Вам гарантирована", name);  
Конец гл. функции }  

5. Нажатием комбинации клавиш “Ctrl+F9” произведите компиляцию, линкование и запуск на исполнение набранной программы. Если компилятор выдаст сообщения об ошибках, устраните их и повторите компиляцию заново. При успешной компиляции просмотрите результаты работы программы на экране (для этого нажмите комбинацию клавиш “Alt+F5”, возврат в активное окно происходит при нажатии любой клавиши).

6. Скопируйте текст программы в другое окно. Для этого выполните следующие действия.

ü Установите курсор в начало текста, нажмите клавишу “Shift” и, не отпуская ее, нажимайте клавишу управления курсором до тех пор, пока весь текст программы не будет выделен подсветкой.

ü Нажмите комбинацию клавиш “Ctrl+Insert”.

ü Создайте новое окно редактирования.

ü Нажмите комбинацию клавиш “ Shift+Insert”.

7. Откройте окно “Output”, расположите его в нижней части рабочей поверхности. Активизируйте одно из окон редактирования с набранной программой и установите его размеры и расположение таким образом, чтобы на рабочей поверхности среды одновременно были видны два окна: “Output” и с программой. Отработайте программу в режиме трассировки (для этого периодически нажимайте клавишу F7). При этом просматривайте результат каждой отработанной команды в окне “Output”.

8. Изучите основные приемы работы с текстом (копирование и перенос отдельных фрагментов, поиск и замена последовательностей символов, отмена ранее выполненных действий, очистка окна редактирования и др.).

9. Изучите приемы работы с окном вывода значений переменных (окном “Watch”):

ü командой меню «Debug-Watches-Add watch…» вызовите окно диалога “Add Watch”);

ü в поле “Watch Expression” окна диалога введите имя переменной price;

ü активизируйте окно редактирования с набранной программой и установите в нем курсор в начале оператора;

ü нажмите клавишу “F4” - отработка программы до курсора. Затем отработайте программу в режиме трассировки, наблюдая за изменением значения переменной price в окне “Watch”. Объявляя ее внешней или локальной;

ü повторите перечисленные действия для вывода значений переменной name. Сделайте ее локальной.

10. Оформите отчет по проделанной работе, содержащий:

ü титульный лист;

ü ход выполнения работы включает блок-схему алгоритма представленной программы;

ü ответы на вопросы раздела контрольные работы;

ü вывод содержит перечисление и назначение основных возможностей среды программирования BC.

11. Выйдите из среды программирования. Удалите все созданные в ходе лабораторной работы файлы или сохраните их на внешнем носителе информации.

 

Контрольные вопросы

 

  1. Для чего необходима среда программировании Borland C?
  2. Назовите основные возможности среды Borland C?
  3. Для чего необходима блок-схема алгоритма?
  4. Зачем в среде Borland C необходим текстовый редактор?
  5. Какие виды сообщений являются результатом работы компилятора?
  6. В чем суть процесса компиляции программы?
  7. Какие методы отладки содержит среда Borland C?
  8. Что позволяет режим трассировки?
  9. В чем отличие работы с локальной и глобальной переменной?
  10. Опишите принцип работы с окном вывода значений переменных?

Лабораторная работа №2

 

Язык программирования Си.

Основные типы данных в СИ. Консольный ввод-вывод данных.

 

Справочная информация

 

Для того чтобы компьютер мог производить обработку данных они должны быть размещены в его памяти. В Си любая область памяти, которая используется компьютером, называется объектом. Все объекты описываются с помощью специальных записей в программе, называемых объявлениями или определениями. Они задают такие признаки объекта как имя, тип, область действия и время жизни. Описания объектов имеют следующий формат

<спецификатор типа> <описатель> [=<инициализатор>];

<спецификатор типа> - одно или несколько ключевых слов, определяющих тип объекта;

<описатель> - элемент описания, по которому устанавливаются имя и структура объекта (при описании простой переменной описатель представляет собой идентификатор, при описании массива за его именем указываются открывающая и закрывающая квадратные скобки и т.д.);

<инициализатор> - начальное значение (список начальных значений), присваиваемых объекту при его объявлении.

Наиболее часто используемые простейшие типы данных приведены в таблице 1.

Таблица 1

Обозначение (ключевое слово) Наименование Значение объекта
int Целый Целое число
float С плавающей точкой одинарной точности Вещественное число
double С плавающей точкой двойной точности
char Символьный Символ

При организации ввода информации с клавиатуры и вывода ее на дисплей (консольного ввода-вывода данных) в Си-программах используются стандартные библиотечные функции. Для обеспечения возможности обращения к ним в программе обязательно должна указываться директива препроцессора #include<stdio.h>

Различают два вида консольного ввода-вывода: форматированный и неформатированный.

Форматированный ввод-вывод позволяет за одно обращение к библиотечной функции обрабатывать несколько объектов данных. Запись оператора обращения к стандартной функции форматного консольного вывода имеет вид

printf (“<строка формата>” [,<аргументы>]); где:

строка формата - совокупность необязательных символов, задаваемых программистом, и спецификаций формата преобразования данных;

аргументы - имена объектов, перечисленные через запятую.

Каждому объекту из списка, следующего за строкой формата должна соответствовать своя спецификация формата преобразования данных. При выводе данных на ее место подставляется значение объекта. Общий вид записи спецификации формата преобразования

%[<флаг>][<ширина>][.<точность>]<тип преобразования > где:

<флаг> - символ, устанавливающий форму вывода (“-“ - выравнивание влево, “+” – вывод знака числа и т.д.);

<ширина> - число, устанавливающее максимальную ширину поля вывода;

<точность> - число, устанавливающее максимальное количество позиций после десятичной точки, предназначенных для вывода данных;

тип преобразования - символ, указывающий как должны трактоваться данные, хранящие­ся в памяти компьютера при их выводе на экран.

Используются следующие символы для задания типа преобразования данных при их выводе:

c – вывод одного символа;

d - вывод десятичного целого числа;

f - вывод десятичного вещественного числа в естественной форме представления;

e - вывод десятичного вещественного числа в экспоненциальной форме представления;

s - вывод строки символов.

Три первых элемента записи спецификации формата преобразования в функции printf (флаг, ширина, точность) являются необязательными.

Запись оператора обращения к стандартной функции форматного консольного ввода имеет вид

scanf (“<строка формата>” [,<адреса аргументов>]); где:

<строка формата> - совокупность спецификаций формата преобразования данных, разделяемых между собой пробельными символами;

<адреса аргументов> - адреса объектов, перечисленные через запятую.

В отличие от функции printf в функции scanf в качестве аргументов используются не имена объектов, а их адреса. Для того чтобы указать адрес объекта нужно перед его именем записать символ “&” (символ амперсанд).

Спецификация формата преобразования данных в функции scanf имеет общий вид записи

%[<ширина>]<тип преобразования >, где:

<ширина> - необязательное число, устанавливающее максимальную ширину поля ввода;

<тип преобразования> - обязательный символ, указывающий как должны трактоваться данные, вводимые с клавиатуры, при помещении их в память компьютера.

Используются следующие символы для задания типа преобразования данных при их вводе

c – ввод одного символа;

d - ввод десятичного целого числа;

g - ввод десятичного вещественного числа;

s - ввод строки символов.

Неформатированный ввод-вывод обеспечивает за одно обращение к библиотечной функции обработку только одного объекта данных, значениями которых могут быть одиночные символы и их последовательности. Для ввода одиночного символа используется функция getchar(). Пример записи оператора обращения к ней имеет вид

Sy = getchar( );

По данному оператору функция getchar() считывает введенный с клавиатуры символ и помещает его в оперативную память компьютера по адресу переменной Sy.

Кроме функции getchar имеется аналогичная ей функция getch(). Она осуществляет ввод одиночного символа с клавиатуры компьютера без копирования на экран. Это делает ее очень удобной для организации паузы при исполнении программы. Как только встретиться оператор

Getch( );

компьютер переходит в режим ожидания ввода символа и никаких действий не производится до тех пор, пока не будет нажата какая-либо клавиша.

Для вывода одиночного символа используется функция putchar(). Пример записи оператора обращения к ней имеет вид

putchar (<аргумент>); где:

<аргумент> - имя выводимого объекта (аргументом может быть символьная константа).

Неформатированный ввод-вывод символьных строк выполняют соответственно функции

gets(<имя строки>) и puts(<имя строки>)

В них имя <имя строки> - область памяти, в которой хранится символьная строка.

 

Задание.

 

2.1 Разработать программу форматного ввода-вывода объектов, значениями которых являются: целое число, вещественное число, символ, символьная строка. Вывод значений этих объектов произвести в таблице 1.

Таблица 1

Имя объекта Значение объекта
   

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

Для вывода таблицы можно использовать либо вывод стандартных символов клавиатуры «---- или |», либо вывод символов псевдографики):

Пример вывода стандартных символов клавиатуры:

printf(“--------------------------------”);

printf(“| |”);

Пример вывода символов псевдографики:

printf("%c", код), где код – числовое значение кода элемента псевдографики, соответствующая таблице 2.

Таблица 2

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 176: ░ ▒ ▓ │ ┤ ╡ ╢ ╖ ╕ ╣ ║ ╗ ╝ ╜ ╛ ┐ └ 192: └ ┴ ┬ ├ ─ ┼ ╞ ╟ ╚ ╔ ╩ ╦ ╠ ═ ╬ ╧ ╨ 208: ╨ ╤ ╥ ╙ ╘ ╒ ╓ ╫ ╪ ┘ ┌ █ ▄ ▌ ▐ ▀ р

 

2.1 Модифицировать программу задания 2.1 таким образом, чтобы ввод объектов, значениями которых являются символы и их последовательности, производился с помощью функций неформатного ввода

2.2 Разработать программу для вычисления площади треугольника по формуле Герона.

S= , где p= .

2.3 Оформите отчет по проделанной работе, содержащий:

ü титульный лист;

ü ход выполнения работы включает блок-схему алгоритма и текст программы пункта 2.3 с описанием в виде комментария.

 

Контрольные вопросы

1. Из каких разделов состоит программа на языке Си?

2. Что такое оператор?

3. Какие операторы языка Си вам известны?

4. Зачем нужен оператор присваивания? Какой вид он имеет?

5. Что такое переменная? Что такое константа?

6. Какая команда служит для ввода данных?

7. Какой формат записи имеет команда ввода?

8. Какая команда служит для вывода данных?

9. Что такое форматный вывод?

10. Как разместить комментарии в программе?


Лабораторная работа №3