Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ПСД программы (полн).doc
Скачиваний:
1
Добавлен:
17.04.2019
Размер:
289.79 Кб
Скачать

Программирование и структуры данных (1- й семестр)

Базовые типы данных

Целые величины:

Тип Размер Диапазон значений

  • unsigned char 1 байт 8 бит от 0 до 255;

  • int 2 байта 16 бит от -215 до 215-1,

т. е. от -32768 до 32767

  • short (<= int) 2 байта 16 бит от -32768 до 32767

  • unsigned 2 байта 16 бит от 0 до 216-1

т. е. от 0 до 65535

  • unsigned short 2 байта 16 бит от 0 до 65535

  • long (>= int) 4 байта 32 бита от -231 до 231-1

т. е. приблизительно ±2*109

  • unsigned long 4 байта 32 бита от 0 до 232-1

т. е. приблизительно от 0 до 4*109

Размер памяти и диапазон значений зависят от реализации языка. Типичные для IBM PC-совместимых 16-битовых компьютеров характерис­тики разновидностей целого типа приведены выше. На 32-битовых компьютерах обычно используют четырехбайтовые целые числа.

Служебные слова имеют следующий смысл:

int (integer) - целое, short - короткое, long - длинное, signed - число со знаком, unsigned - беззнаковое (неотрицательное) число, char (character) - символьное (целочисленный код символа).

Вещественные величины:

Тип Размер Точность Диапазон значений

float 4 байта 6..7 значащих цифр ± (от 10-38 до 10+38)

double 8 байт 15 значащих цифр ± (от 10-308 до 10+308)

long double 10 байт 19 значащих цифр ± (от 3.4·10-4932 до 1.1·10+4932)

Служебные слова имеют следующий смысл:

float - плавающее (с плавающей точкой), double - двойной точности, long doubleдлинное двойной точности.

Прочие типы величин:

  • пустойvoid;

  • перечислимыйenum.

Пример простой программы на языке с

/* Программа 1.1. Площадь прямоугольника (в стиле С) */

#include <stdio.h>

main ()

{ float a, b, /* стороны прямоугольника */

s; /* площадь прямоугольника */

printf ("\n Стороны прямоугольника = ");

scanf (“%f %f”, &a, &b);

s = a * b;

printf ("\n Площадь = %.2f \n ", s);

return 0;

}

Можно обойтись без дополнительной переменной s, тогда вычисление площади выполняется при выводе результата:

printf ("\n Площадь равна =%.2f \n ", a * b);

Пояснения к программе.

1. /* */ - комментарий языка С, не выполняется и не влияет на работу программы.

2. main() – заголовок главной функции, круглые скобки после имени main указывают на то, что это функция. Тело функции заключено в фигурные скобки { }.

3. Программа на языке С состоит из одной или нескольких функций, выполнение программы начинается с функции main().

4. float a, b, s; – объявлены переменные вещественного типа с именами a, b, s.

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

printf ("\n Стороны прямоугольника = ");

Форматная строка содержит текст в кавычках, где символ \n - переход на новую строку: printf ("\n Площадь = %.2f \n ", s);

Форматная строка, кроме текста, содержит формат вывода переменной s. Выводится значение переменной s или выражения a*b.

%f – формат ввода/вывода вещественного числа,

%.2f - формат вывода вещественного числа с точностью до 2-х знаков после запятой.

6. scanf() - вызов стандартной функции для ввода исходных данных.

Параметры вызова - форматная строка в кавычках и имена переменных. Символ & (амперсенд) перед именем переменной означает операцию получения адреса переменной.

7. #include <stdio.h> - директива препроцессора для использования стандартных функции ввода/вывода.

<stdio.h> - заголовочный файл, содержит объявления стандартных функций ввода/вывода.

8. return - оператор возврата, завершает выполнение функции. Оператор return 0; означает успешное завершение программы.

9. В любом языке есть зарезервированные (ключевые, служебные) слова, которые имеют специальное назначение и могут использоваться только по своему назначению, например, ключевое слово return – оператор возврата, завершающий выполнение функции.

Пример программы с вводом/выводом в стиле языка С++

// Программа 1.2. Площадь прямоугольника (в стиле С++)

#include <iostream.h>

void main ()

{ float a, b, // стороны прямоугольника

s; // площадь прямоугольника

cout << "\n Стороны прямоугольника = ";

cin >> a >>b;

s = a * b;

cout << "\n Площадь = “ << s;

}

Пояснения к программе.

1. // - строчный комментарий, используется в С++, наряду комментарием /* */.

2. <iostream.h> - заголовочный файл, содержит объявления стандартных объектов-потоков языка С++:

cin – поток для ввода с клавиатуры,

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

cout - поток для вывода на экран,

<< - операция для вывода данных в поток .

3. Ключевое слово void обозначает отсутствие значения функции main. Функция завершается после выполнения последнего оператора, оператор return не обязателен.

Задача 2.1. Составить программу табулирования функции

f(x)= 3+2x (шаг табулирования = 0.1).

/* Программа 2.1. Табулирование функции (в стиле С) */

#include <stdio.h>

void main ()

{ int n, i; /* количество строк, номер строки*/

float x; /* текущее значение х */

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

printf ("\n X F(X) ");

i=1;

while (i <= n)

{ printf(“\n%5.2f %5.2f”, x, 3+2*x);

i =i + 1; x = x + 0.1;

}

}

Тест. Вычислить 5 значений функции, начиная со значения х = 0.2 с шагом 0.1.

Вход: 0.2 5

Выход: X F(X)

0.2 3.40

0.3 3.60

0.4 3.80

0.5 4.00

0.6 4.20

Пояснения к программе.

1. Вводится начальное значение величины х и количество строк.

2. Выводится заголовок таблицы значений.

3. while - оператор цикла c предусловием. Позволяет повторить действия в { } n раз, т.е. вычислить и вывести n строк со значением функции. Переменная i – счетчик текущей строки.

Изменим программу 2.1. – для вычисления значения функции f(x) используем подпрограмму.

/*Программа 2.2. Табулирование функции (в стиле С) */

/* с использованием подпрограммы для вычисления функции f(x) */

#include <stdio.h>

/* подпрограмма вычисления функции f(x) */

float f ( float z )

{ float y;

y = 3 + 2*z;

return y; /* возврат значения функции */

}

void main ()

{ int n, i; /*количество строк, номер строки */

float x; /* текущее значение х */

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

printf ("\n X F(X) ");

for (i = 1; i <= n; i++)

{printf(“\n%5.2f %5.2f”, x, f ( x ) ); /* вызов функции */

x = x + 0.1;

}

}

Пояснения к программе.

1. Для вычисления значения функции f(x) вызывается подпрограмма - функция. Подпрограмма, получив в качестве аргумента очередное значение величины x, вычисляет и возвращает значение y = 3 + 2*x.

2. В подпрограмме можно обойтись без дополнительной переменной y: вычисление значения функции выполнить в операторе return.

float f ( float z )

{ return (3 + 2 * z); }

3. Использование подпрограммы позволяет менять функцию, не изменяя основную программу.