Тема 1
Основы алгоритмизации и программирования
Лекция 1.2.
Базовые конструкции языка программирования
Литература
Основная:
Подбельский В.В., Фомин С.С. Программирование на языке Си: Учеб. пособие. – М.: Финансы и статистика, 2004.
Дополнительная:
С/ C ++ Структурное программирование. Практикум. Программирование на языке высокого уровня. Питер, 2004.
Юркин А. Задачник по программированию. Гриф МО. Учебное пособие, Питер, 2002.
Шмидт Г. Самоучитель Си++. СПб.: БХВ – Петербург, 2004.
Вопросы:
1. Типы данных.
2. Программирование типовых действий с данными.
3. Программирование ввода и вывода данных.
1. Типы данных
Точные числовые данные, использующие целые значения.
Тип данных
long от -2^31 (-2 147 483 648)
до 2^31-1 (2 147 483 647) 4 байта
int от -2^31 (-2 147 483 648)
до 2^31-1 (2 147 483 647) 4 байта
char от -128 до 1 2 7 1 байт
Тип данных int является основным типом целочисленных данных
Беззнаковые данные unsigned
Вещественные данные («приблизительные» типы данных)
Тип данных
float ~ ± 10 ^- 44 до ± 10 ^ 38 с плавающей запятой
с точностью до семи знаков (одинарная точность). 4 байта.
double ~ ± 10 ^308 до 10^ - 308 с плавающей запятой
с точностью до 15 знаков (удвоенная точность). 8 байт.
long double то же, что и double (зависит от компилятора).
Текстовые константы
“ Пример записи текстовой константы “
Ограничителем является двойная кавычка.
Эскейп–последовательность начинается со знака “ \ “ .
Простые эскейп–последовательности служат для символьных кодов, не имеющих графического представления и символов, используемых в специальных целях.
Например,
\ n – используется для указания перевода строки в функциях вывода результатов.
Символьные константы имеют тип char , а ее значение эквивалентно числовому значению кода. Примеры записи символьных констант
‘ a’
‘ A’
‘ \n’
‘ 9’
Данный тип рекомендуется использовать при работе с символьными данными .
Комментарии
//определяет точку входа для приложения
/* это тоже комментарий*/
2. Программирование типовых действий с данными
Одноместные операции
- изменение знака операнда;
+ ненужная операция;
++ увеличение на единицу значения операнда. Две формы:
префиксная форма обозначает увеличение значения операнда на единицу до его использования. Например, пусть целая переменная i равна 3, тогда выражение ++ i означает, что переменная i примет значение 4 и это значение будет использовано в вычислениях;
постфиксная форма обозначает увеличение значения операнда на единицу после его использования, т.е. i ++ означает увеличение переменной i на единицу после вычисления выражения, в котором встретилась такая конструкция;
-- уменьшение на единицу значения операнда.
Также имеет префиксную и постфиксную формы записи.
Операндами для операций ++ и –– выступают переменные. Выражения вида – –10, 10++ или ( a + b )++ не допустимы.
Двуместные операции
Обозна - чение
Назначение арифметических операций
+
-
*
/
%
Сложение операндов;
Вычитание операндов;
Умножение операндов;
Деление операндов. Результат деления целочисленных операндов усекается до целого (дробная часть отбрасывается), например 10/4 равно 2, 11/3 равно 3;
Получение остатка от деления целочисленных операндов. Для положительных операндов остаток неотрицательный, например 11%3 равно 2. Если операнды отрицательные, то знак остатка зависит от варианта компилятора (обычно равен знаку делимого).
Старшинство операций:
- Умножение и деление в порядке перечисления слева направо;
- Сложение и вычитание в порядке перечисления слева направо;
- Изменение порядка с помощью круглых скобок ( ) .
Операции присваивания
Обозначение
Назначение операций
=
переменная = выражение ;
Оператор присваивания завершается знаком " ; ". В строке можно записывать несколько операторов. Значение выражения, стоящего справа от знака присваивания, присваивается операнду левой части, например
a=3.1415;
t=(a+b)/(c+d); t1=t1+3./a;
c = d = x = x –1;
=
Составная операция присваивания.
переменная = выражение ;
Присваивание производится после выполнения операции " " над переменной, стоящей слева от знака. Запись A = B эквивалентна A = A B . Вместо символа " " может стоять обозначение одной из следующих операций: +, –, /, % . Например,
z *= k ; /* эквивалентно записи z = z * k */
ds /= z 1–2.7; эквивалентно ds = ds /( z 1–2.7); а+=с; эквивалентно а=а+с;
В составной операции переменная должна быть обязательно первым операндом, в частности составную операцию нельзя применить к выражению x = a / x .
Частным случаем оператора является выражение вида
а++;
Такие операторы позволяют модифицировать значение переменной.
Запись а+++ b эквивалентна (а++)+ b
П реобразования типов
- автоматическо е преобразовани е типов. Осуществляется только при переходе от младшего типа к старшему. Перечисление типов в порядке их « повышения »: char , short, int, long int, float, double, long double .
- явное преобразовани е типов
double d ;
int i,k;
d = ( double ) i / ( double ) k ;
2. Программирование ввода и вывода информации
Отображение информации
printf (" спецификация " , список аргументов );
Список аргументов необязателен
Пример отображения текстовой информации
printf ("\ n Введите значение аргумента\ n ");
Обобщенный вид спецификации
% флажки ширина_поля.точность модификатор спецификатор
Обязательны: % и спецификатор
Список аргументов может включать имена переменных, константы, обращения к функциям, выражения .
Спецификаторы
d – целое десятичное число типа char и int ;
u – целое десятичное число типа unsigned char и unsigned int ;
f – вещественное число с фиксированной точкой типа float и double ;
e – вещественное число в форме с плавающей точкой в виде мантиссы и порядка типа float и double . Вместо строчной можно применять прописную букву Е ;
g - вещественное число типа float и double печатается в формате f или e в зависимости от того, какой из них более компактен для данного значения и точности представления.
Модификаторы
h – значение типа short int ;
l – значение типа long ;
L – значение типа long double ;
В ыполнение фрагмента
float а, b ;
а=–7.12; b =15.126;
printf("\na= %f\tb= %7.2fi= %dкм", a,b,5+10);
для вещественных величин " а " и " b " типа float , арифметического выражения 5+10 типа int обеспечит отображение в виде
а= -7.120000 b = 15.13 i = 15км
В этом примере для переменной " а " формат вывода задается по умолчанию – семь цифр, для переменной " b " количество цифр в дробной части числа задано равным 2, поэтому производится усечение результата путем округления. С помощью эскейп- последовательности символов " \ t " между объектами вывода обеспечивается интервал, равный величине табуляции, перед выводом наименования переменной " i " такого интервала не предусмотрено.
При выводе больших значений переменных без знака по спецификации d , вместо спецификации u , будут отображаться отрицательные значения. Так в результате выполнения фрагмента программы
unsigned k = 4 000 000 000 ;
printf ("\ n % d ", k );
будет отображено значение
– 294967296 .
Флажки предоставляют дополнительные средства управления размещением выводимой информации:
знак минуса – выводимое число или строка символов прижимается к левому краю поля. При отсутствии флажка (по умолчанию) выравнивание чисел производится по правой границе поля;
знак плюса – обеспечивает вывод знака числа (знака + или – ). Если этот флажок не указан, то знак выводится только у отрицательных величин;
знак пробела – у положительных чисел вместо знака выводится пробел;
знак # – применение этого флажка с форматами вывода вещественных чисел (форматы f , g ) приводит к отображению десятичной точки, даже если дробная часть числа отсутствует.
Примеры применения флажков:
" %– f " – выравнивание вещественного числа по левой границе поля;
" % d " – занесение пробела вместо знака положительного числа. Знак отрицательных чисел отображается обычным образом.
Любые символы форматной строки, которые не относятся к спецификациям, выводятся без изменений.
Ввод числовой информации с клавиатуры
scanf (" спецификация " , список аргументов );
Обобщенный вид спецификации
% ширина_поля модификатор спецификатор
Обязательны: % и спецификатор
С пецификаторы
d – целое десятичное число со знаком (тип int );
u – целое десятичное число без знака (тип unsigned int );
e , f , g – вещественное число (тип float ). Изображение числа содержит необязательный знак числа (+ или –), десятичные цифры, возможно точку и десятичные цифры дробной части мантиссы, необязательный порядок (символ " е " или " Е ", за которым следует целое число, возможно со знаком).
Модификатор ы
С луж а т для уточнения формата ввода данных:
h – десятичное число типа short int ( hd );
l – десятичное число типа long int ( ld ) или double ( lf , le );
L – десятичное число типа long double ( Lf , Le ).
Пример записи функции ввода целой переменной " i " типа int , переменной " z " типа float , переменной " t " типа double
scanf ("% d % f % lf ",& i ,& z ,& t );
При чтении с клавиатуры последовательности символов 123 –45 67.89 переменная " i " получит значение 123, переменная " z " – значение – 45 , а " t " – значение 67.89 .
Разделители: пробел, табуляци я , символ перехода на новую строку
// Prz1.cpp: определяет точку входа для консольного приложения.
//Расчет площади прямоугольника
#include "stdafx.h"
#include
void main()
{
double dl, s; float h;
printf("\nProgramma rascheta ploshady pryamougolnica");
printf("\nVvedite dlinu pryamougolnica= ");
scanf("%lf",&dl);
printf("\nVvedite vysotu pryamougolnica= ");
scanf("%f",&h);
s=dl*h;
printf("\nploshad=%7.3lf\n", s);
}
Вопросы для самоподготовки
1. Особенности представления целых величин.
2. Особенности представления вещественных величин.
3. Порядок выполнения арифметических операций.
4. Особенности деления целых величин.
5. Ввод вещественных и целых величин.
6. Отображение арифметических данных.


Программирование типовых операций (214.5 KB)

