Ввод и вывод в стандартном Си




Практическое заняти №4

Программирование на Си++

Цель работы: Приобретение навыков программирования и работы в с реде программирования С/С++

Программа работы

  1. Постановка задачи,

2. Создание, отладка и выполнение простой программы, содержащей ввод/вывод информации и простейшие вычисления в соответствии с постановкой задачи в п,1,.

 

Методические указания

К п.1. Т ребуется вычислить значение выражения при различных вещественных типах данных (float и double). Вычисления следует выполнять с использованием вспомогательных переменных для хранения промежуточных результатов. Следует сравнить и объяснить полученные промежуточные результаты и результаты выражений. Варианты заданий представлены в таблице 6.

Для ввода и вывода данных следует использовать операции >> и <<и стандартные потоки cin и cout. Для вычисления степени использовать функцию pow(x,y) из библиотечного файла math.h. Промежуточные расчеты следует организовать следующим образом, например, для расчета выражения f=3a^5b^3: с=pow(a,5); d=pow(b,3); f=3*c*d.

К п.2. Краткие теоретические сведения. Язык Си создан в 1972 гДэннисомРитчи при разработке ОС Unix. Он проектировался как инструмент системного программирования с ориентацией на разработку хорошо структуророванных программ. Таким образом он сочетает в себе, с одной стороны, средства языка программрования высокого уровня: описание типов данных, операторы for,while, if и т. д., с другой стороны, содержит средства языка типа Ассемблер: регистровые переменные, адресную арифметику, возможность работы с полями и т. д..

Структура программы

Программа на языке Си имеет следующую структуру:

#директивы препроцессора

.........

#директивы препроцессора

функция а ()

операторы

функция в ()

операторы

voidmain () //функция, с которой начинается выполнение программы

операторы

описания

присваивания

функция

пустой оператор

составной

выбора

циклов

перехода

Директивы препроцессора - управляют преобразованием текста программы до ее компиляции. Исходная программа, подготовленная на языке Си в виде текстового файла проходит 3 этапа обработки:

l препроцессорное преобразование текста;

l компиляция;

l компоновка (редактирование связей или сборка).

После этих 3 этапов формируется исполняемый машинный код программы.

Задача препроцессора - преобразование текста программы до ее компиляции. Правила препроцессорной обработки определяет программист с помощью директив препроцессора. Директива начинается с #. Например,

l #define - указывает правила замены в тексте.

#define ZERO 0.0- означает, что каждое использование в программе имени ZERO будет заменяться на 0.0.

l #include< имя заголовочного файла> - предназначена для включения в текст программы текста из каталога «Заголовочных файлов», поставляемых вместе со стандартными библиотеками. Каждая библиотечная функция Си имеет соответствующее описание в одном из заголовочных файлов. Список заголовочных файлов определен стандартом языка. Употребление директивы include не подключает соответствующую стандартную библиотеку, а только позволяют вставить в текст программы описания из указанного заголовочного файла. Подключение кодов библиотеки осуществляется на этапе компоновки, т. е. после компиляции. Хотя в заголовочных файлах содержатся все описания стандартных функций, в код программы включаются только те функции, которые используются в программе.

После выполнения препроцессорной обработки в тексте программы не остается ни одной препроцессорной директивы. Программа представляет собой набор описаний и определений, и состоит из набора функций. Среди этих функций всегда должна быть функция с именем main. Без нее программа не может быть выполнена. Перед именем функции помещаются сведения о типе возвращаемого функцией значения (тип результата). Если функция ничего не возвращает, то указывается тип void: voidmain (). Каждая функция, в том числе и main должна иметь набор параметров, он может быть пустым, тогда в скобках указывается (void).

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

Определения - вводят объекты (объект - это именованная область памяти, частный случай объекта - переменная), необходимые для представления в программе обрабатываемых данных. Примером являются

int y = 10; //именованная константа

float x; //переменная

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

Операторы - определяют действия программы на каждом шаге ее исполнения.

 

Константы и переменные

Константа - это значение, которое не может быть изменено. Синтаксис языка определяет 5 типов констант:

l символы;

l константы перечисляемого типа;

l вещественные числа;

l целые числа;

l нулевой указатель (NULL).

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

тип список_имен_переменных;

Таблица 3 - Основные типы данных

Тип данных Название Размер, бит Диапазон значений
unsignedchar беззнаковый целый длиной не менее 8 бит   0.. 255
char целый длиной не менее 8 бит   -128.. 127
enum перечисляемый   -32768.. 32767
unsignedint беззнаковый целый   0.. 65535
shortint (short) короткий целый   -32768.. 32767
unsignedshort беззнаковый короткий целый   0.. 65535
int целый   -32768.. 32767
unsignedlong беззнаковый длинный целый   0.. 4294967295
long длинный целый   -214748348.. 2147483647
float вещественный одинарной точности   3.4Е-38.. 3.4Е+38
double вещественный двойной точности   1.7Е-308.. 1.7Е+308
longdouble вещественный максимальной точности   3.4Е-4932.. 1.1Е+4932

 

В соответствии с синтаксисом языка переменные автоматической памяти после определения по умолчанию имеют неопределенные значения. Переменным можно присваивать начальные значения, явно указывая их в определениях:

тип имя_переменной = начальное_значение;

Этот прием называется инициализацией.

Примеры:

float pi = 3.14, cc=1.3456;

unsignedint year = 1999;

 

Операции

Описание операций представлены в таблице 4

Таблица 4

Знак операции Описание
Унарные операции
& получение адреса операнда
* обращение по адресу (разыменование)
- унарный минус, меняет знак арифметического операнда
~ поразрядное инвертирование внутреннего двоичного кода (побитовое отрицание)
! логическое отрицание (НЕ). В качестве логических значений используется 0 - ложь и не 0 - истина, отрицанием 0 будет 1, отрицанием любого ненулевого числа будет 0.
++ увеличение на единицу: префиксная операция - увеличивает операнд до его использования, постфиксная операция увеличивает операнд после его использования.
- - уменьшение на единицу: префиксная операция - уменьшает операнд до его использования, постфиксная операция уменьшает операнд после его использования.
sizeof вычисление размера (в байтах) для объекта того типа, который имеет операнд
Бинарные операции. Аддитивные  
+ бинарный плюс (сложение арифметических операндов)  
- бинарный минус (вычитание арифметических операндов)  
Бинарные операции. Мультипликативные
* умножение операндов арифметического типа
/ деление операндов арифметического типа (если операнды целочисленные, то выполняется целочисленное деление)
% получение остатка от деления целочисленных операндов
Операции сдвига (определены только для целочисленных операндов). Формат выражения с операцией сдвига: операнд_левыйоперация_сдвигаоперанд_правый  
<< сдвиг влево битового представления значения левого целочисленного операнда на количество разрядов, равное значению правого операнда  
>> сдвиг вправо битового представления значения правого целочисленного операнда на количество разрядов, равное значению правого операнда  
  Поразрядные операции
  & поразрядная конъюнкция (И) битовых представлений значений целочисленных операндов
  | поразрядная дизъюнкция (ИЛИ) битовых представлений значений целочисленных операндов
  ^ поразрядное исключающее ИЛИ битовых представлений значений целочисленных операндов
  Операции сравнения:
  < меньше, чем
  > больше, чем
  <= меньше или равно
  >= больше или равно
  == равно
  != не равно
  Логические бинарные операции:
  && конъюнкция (И) целочисленных операндов или отношений, целочисленный результат ложь(0) или истина(1)
  || дизъюнкция (ИЛИ) целочисленных операндов или отношений, целочисленный результат ложь(0) или истина(1)
  Условная операция
  В отличие от унарных и бинарных операций в ней используется три операнда. Выражение1? Выражение2: Выражение3;
               

В условном операторе первым вычисляется значение выражения1. Если оно истинно, то вычисляется значение выражения2, которое становится результатом. Если при вычислении выражения1 получится 0, то в качестве результата берется значение выражения3. Например:

x<0? -x: x; //вычисляется абсолютное значение x.

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

l (имя_типа) операнд

l имя_типа (операнд)

Таблица 5 - Приоритеты операций

Ранг Операции
  () [ ] ->.
  ! ~ - ++ -- & * (тип) sizeof тип()
  * / % (мультипликативные бинарные)
  + - (аддитивные бинарные)
  <<>> (поразрядного сдвига)
  <><= >= (отношения)
  ==!= (отношения)
  & (поразрядная конъюнкция «И»)
  ^ (поразрядное исключающее «ИЛИ»)
  | (поразрядная дизъюнкция «ИЛИ»)
  && (конъюнкция «И»)
  || (дизъюнкция «ИЛИ»)
  ?: (условная операция)
  = *= /= %= -= &= ^= |= <<= >>= (операция присваивания)
  , (операция запятая)

 

Выражения

Из констант, переменных, разделителей и знаков операций можно конструировать выражения. Каждое выражение состоит из одного или нескольких операндов, символов операций и ограничителей, в качестве которых чаще всего выступают квадратные скобки. Если выражение формирует целое или вещественное число, то это арифметическое выражение. В арифметических выражениях допустимы операции: + - * / %.

Отношение - это пара арифметических выражений, объединенных знаком операции отношения. Логический тип в Си отсутствует, поэтому принято, что отношение имеет ненулевое значение, если оно истинно и 0, если оно ложно.

 

Ввод и вывод

Ввод и вывод в стандартном Си

Обмен данными с внешним миром программа на стандартном Си реализует с помощью библиотеки функций ввода-вывода

l #include<stdoi.h>

l printf(<форматная строка>,<список аргументов>);

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

printf(“Значение числа Пи равно %f\n”, pi);

Форматная строка может содержать

l символы печатаемые текстуально;

l спецификации преобразования

l управляющие символы.

Каждому аргументу соответствует своя спецификация преобразования:

l %d - десятичное целое число;

l %f - число с плавающей точкой;

l %c - символ;

l %s - строка.

l \n - управляющий символ новая строка.

l scanf(<форматная строка>,<список аргументов>);

В качестве аргументов используются указатели. Например:

l scanf(“ %d%f ”, &x,&y);

 

2.5.2 Ввод и вывод в Си++

Используется библиотечный файл iostream.h, в котором определены стандартные потоки ввода данных от клавиатуры cin и вывода данных на экран дисплея cout, а также соответствующие операции

l << - операция записи данных в поток;

l >> - операция чтения данных из потока.

Например:

#include<iostream.h>;

.........

cout<< “\nВведите количество элементов: ”;

cin>> n;

 

2.6 Работа в среде программирования СИ

Графическая оболочка загружаемой интегрированной среды программирования на Си Borland C V5.0 имеет знакомый по работе со средой программирования на Паскале оконный интерфейс Основное меню и его элементы имеют те же функции и правила запуска и настройки. Новым элементом меню является Project- rкоманды создания и модификации проектного файла(создание и удаление проектного файла и создание и удаление программного модуля из него). Разработка программы в среде начинается именно с этой команды -с создания нового проекта.

На следующем этапе в созданный проект добавить файл для набора текста программы командой Project/AddItem. Файл для набора программы вызывается двойным щелчком мыши в окне проекта.

 

Таблица 6 – Варианты заданий

№ варианта Содержание индивидуального задания
  Перевод вещественного числа из десятичной системы счисления в двоичную
  Вычисление среднего значения одномерного массива чисел и нахождение максимального среднеквадратичного отклонения.
  Вычисление суммы N элементов ряда1-1/3 +1/5 -1/7+… и определение разности этой суммы и значения пи/4
  Определить в трехмерном массиве количество нулевых массивов и вывести их индексы.
  Определить номер строки, сумма элементов которой максимальна.
  Перевод вещественного числа из двоичной системы счисления в десятичную
  Проверка, является ли матрица диагональной.
  Перевод из восьмеричной системы в двоичную с проверкой правильности введенных символов
  Вычисление суммы и среднего значения отрицательных чисел, лежащих в диапазоне от -1 до -99
  Определить сколько элементов массива попадает в интервалы от А до В с шагом (А-В)/5
  Проверка, является ли матрица ленточной.
  Перевод вещественного числа из десятичной системы счисления в восьмеричную
  Найти на отрезке В-А значение х, при котором значение функции лежит в интервале -0.1 +0.1 Методом деления пополам
  Вычисление дохода по вкладу в зависимости отстрока хранения и размера вклада.
  Перевод из шестнадцатеричной системы в двоичную с проверкой правильности введенных символов
  Перевод вещественного числа из восьмеричной системы счисления в десятичную
  Программа занесения результатов соревнований спортсменов с определением трех призеров.
  Проверка, является ли введенная строка шестнадцатеричным числом.
  Вычисление скалярных произведения двух векторов из набора трех и определение большего из них.
  Перевод вещественного числа из шестнадцатеричной системы счисления в десятичную
  Определить номер строки, сумма элементов которой максимальна.
  Перевод вещественного числа из десятичной системы счисления в шестнадцатеричную
  Транспонирование матрицы с нахождением суммы всех ее элементов.
   
   

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2017-11-19 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: