
Неизвестный номер контрольной работы / 0-19_Информатика
.doc
Министерство образования
Российской Федерации
ТОМСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
СИСТЕМ УПРАВЛЕНИЯ И РАДИОЭЛЕКТРОНИКИ (ТУСУР)
Кафедра автоматизированных систем управления (АСУ)
Контрольная работа
по дисциплине «Информатика»
(автор учебного пособия: А.И. Муравьев)
вариант №19
2002
Задание:
-
Составьте ответы по контрольным вопросам, заданным в методических указаниях.
-
Перевести числа 19 и 1919 в двоичный и шестнадцатеричный вид.
-
Составить программу, в которой с помощью оператора while подсчитать сумму ряда
до тех пор, пока член ряда не будет меньше 0.005.
-
Составить программу, в которой с помощью оператора while организовать цикл в котором значения параметра t менялись от 0.5 до 5 с шагом h=0.1. Вывести на экран значения t и функции
для t3
для t3
-
Составить программу, в которой с помощью оператора FOR подсчитать сумму ряда
-
Составить программу, в которой с помощью оператора REPEAT протабулировать функцию y=sin(x) в диапазоне параметра от 0 до 6 с шагом 0.3
-
Составить программу, в которой составить массив C[1…100] из псевдослучайных символов из диапазона CHR(65)-CHR(90) и определить какие символы встречаются в этом массиве два, три и четыре раза.
-
Составить программу, в которой сформировать двумерный целочисленный массив A[1…30,1…30] из случайных целых чисел и определить количество элементов массива, значения которых больше 20.
Решение:
1.
- Присваивать значения друг другу можно для переменных типов:
целый-целый;
вещественный-вещественный;
и производных от них. Для иных преобразований необходимо воспользоваться функциями типа ORD(), Chr() или Round(). За что я и не люблю PASCAL (и не говорите, что я просто не умею его готовить). В C++ все гораздо проще, существует два типа преобразования: неявный и явный, например:
int a;
float b;
b=a; //неявное преобразование типа переменной
b=(float)a //явное преобразование типа переменной
- Порядковый тип данных – это тип данных, для которых определены отношения порядка, т.е. для любого элемента области этого типа можно определить последующий и предыдущий элементы. К порядковым типам относятся стандартные типы Pascal: целочисленные, логический и символьный, а так же определяемые пользователем перечисляемые и диапазонные типы.
- Символьный тип в Pascal отличается от строкового тем, что всегда занимает только один байт в памяти компьютера (искл. – Unicode). Количество памяти, занимаемой строковым типом зависит от длины строки в байтах. В С++ есть еще одно отличие: все строки оканчиваются нулевым байтом.
- Диапазоны допустимых значений:
Shortint -128 .. 127 1 байт
Integer -32768 .. 32767 2 байта
Longint -2147483648 .. 2147483647 4 байта
Byte0 .. 255 1 байт
Word0 .. 65535 2 байта
Real 2.9e-39 .. 1.7e+38 6 байт
ingle 1.5e-45 .. 3.4e+38 4 байт
Double 5.0e-324 .. 1.7e+308 8 байт
Extended 3.4e-4932 .. 1.1e+4932 10 байт
Comp -9.2e+18 .. 9.2e+18 9 байт
- С типом Boolean можно использовать логические операторы not, and, or, xor. Тип Boolean возвращают операции отношения и логические операции.
- Перечисляемые типы данных объявляются следующим образом:
Type Space = (x,y,z)
- Максимальное число элементов перечисляемого типа – 256.
- Пример диапазонного типа:
Type Day=1…31
- В качестве элементов ограниченного типа использовать вещественные числа нельзя.
- Максимальная длина строки по умолчанию – 255. Эта же длина является максимальной для строки. В C++ такого ограничения нет, если объявить строку «в куче», то ограничением длины строки будет только количество доступной памяти.
- Приоритет выполнения арифметических операций следующий:
1. not
2. * / div mod
3. and shl shr
4. + - or xor
5. = <> < >
6. <= >= in
Операции с одинаковым приоритетом выполняются по порядку.
- Приоритет выполнения арифметических операций следующий:
1. not
2. and
3. or xor
- У операндов логических операций целый тип, у логических операций- любой скалярный тип данных.
- В данной программе Z,Y,A,B переменные типа Boolean, при выполнении строки IF Z THEN Y:=A=B произойдет следующее: если Z=TRUE и A=B, то Y=TRUE, если же Z=FALSE, то при любых значениях A и B Y=FALSE.
- В качестве параметров цикла FOR TO..DO можно использовать переменные только целых типов. А не слабо в PASCAL`е организовать цикл из C++: for(float f=0;f<100;f+=0.01)?
- Отличие циклов WHILE…DO от REPEAT…UNTIL в том, что тело цикла REPEAT…UNTIL будет выполнено хотя бы один раз, даже если условие для выхода из него будет всегда TRUE.
- Допускается изменять параметр цикла в WHILE…DO и REPEAT…UNTIL, запрещается в FOR.
- Массив – структурированный тип для резервирования в памяти места под некоторое количество однородных элементов.
- В качестве индексов можно использовать объекты любого скалярного типа, кроме вещественного.
- Для индексирования массивов можно использовать любые выражения результатом которых является целая величина.
-Структура программы Pascal:
[PROGRAM <имя программы>]
[CONST описания констант]
[TYPE описание пользовательских типов]
[VAR описание переменных]
begin
тело программы
end.
Структура программ C и C++:
int main ()
{
тело программы
}
- Составной оператор используется в качестве части других операторов, где требуется применение нескольких операторов вместо одного.
- Операторы цикла используются для повторения части программы заданное количество раз. Условный оператор используется для организации ветвлений (выполнения тех или иных участков кода в зависимости от различных условий) в программе.
2. 1910=1316=100112
191910=77F16=111011111112
3. Так, как было получено разрешение Веретенникова М.В. и Сафьяновой Е.Н. использовать для написания программ язык C++, это и все остальные решения заданий будут на C++.
#include <iostream.h>
#include <conio.h>
//-------------------------------------------------------------------
int main()
{
double i=3;
double sum=0;
double y=0;
do
{
y=(i+5)/(i*i+10); // вычисляем значение очередного члена ряда
sum=sum+y; // находим сумму членов ряда
i++;
}
while (y>=0.005); // если y0.005 то выходим из цикла
cout<<sum; // выводим сумму членов ряда на экран
getch(); // ждем нажатия любой клавиши перед выходом
}
4.
#include <iostream.h>
#include <conio.h>
//-------------------------------------------------------------------
int main()
{
float t=0.5;
float y=0;
while (t<=5) // вычисляем y пока t<=5
{
if (t<=3) y=1/t; // если t<=3 присвоить y=1/t
else y=cos(t-3); // иначе y=cos(t-3)
cout <<”t=”<<t<<" y="<<y<<"\n"; // выводим t и y на экран
t+=0.1;
}
getch(); // ждем нажатия любой клавиши перед выходом
}
5.
#include <iostream.h>
#include <conio.h>
//-------------------------------------------------------------------
int main()
{
double y=0;
for (int i=1;i<=100;i++) // организуем цикл от 1 до 100
y=y+(1/(i*i)+i+1); // вычисляем y
cout<<y; // выводим y на экран
getch();
}
6. Аналогом Паскалевского REPEAT…UNTIL в С++ является DO…WHILE. Так что будем использовать эту конструкцию:
#include <iostream.h>
#include <conio.h>
//-------------------------------------------------------------------
int main()
{
double y=0;
double x=0;
do
{
y=sin(x); // вычисляем значение функции y
cout<<y<<"\n"; // выводим y на экран
x=x+0.3; // увеличиваем x на значение h=0.3
}
while (x<=6); // повторяем пока x<=6
getch();
}
Кстати, на С++ это же можно было сделать гораздо проще:
for (double x=0;x<=6;x+=0.3)
y=sin(x);
7.
#include <iostream.h>
#include <conio.h>
//-------------------------------------------------------------------
int main()
{
randomize(); // инициализируем генератор случайных чисел
unsigned char C[100];
int chr[25]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
/* объявляем массив, в котором будем хранить число вхождения символов в массив C*/
for (int f=0;f<100;f++) // организуем цикл от 1 до 100
{
C[f]=rand()%25+65; // заполняем массив С случайными числами в //диапазоне 65…90. А вот это то, за что я люблю С++ - неявное преобразование типов( из int в unsigned char)
chr[C[f]-65]++; // подсчитываем число вхождений символов в //массив С и заносим в массив char
}
cout << "These symbols are found in sequence in two, three and four copies:"<<"\n";
/* по-русски это звучит так: «Эти символы найдены в последовательности в двух, трех и четырех экземплярах»*/
for (int f=0;f<25;f++) // организуем цикл от 1 до 25
if (chr[f]>1 && chr[f]<5) /* если количество вхождений лежит в диапазоне 2…4 то выводим символ на экран в следующей строке*/
cout <<(unsigned char)(f+65)<<"-"<<chr[f]<<"\n";
getch(); // ждём`с…
}
8.
#include <iostream.h>
#include <conio.h>
//-------------------------------------------------------------------
int main()
{
randomize(); // инициализируем генератор случайных чисел
int A[30][30];
int sum=0;
for (int i=0;i<30;i++) // организуем цикл от 1 до 30 (строки)
{
for (int j=0;j<30;j++) // организуем цикл от 1 до 30 (столбцы)
{
A[i][j]=rand()%100; // заполняем массив случайными числами
if (A[i][j]>20) sum++; /* подсчитываем количество элементов массива, больших 20 */
}
}
cout <<"Number of elements larger that 20: "<<sum;// выводим на экран
getch(); // ждем…
}
Список использованных источников
-
Бьерн Страуструп Язык программирования С++.-М,1999
-
Грызлов В.И., Грызлова Т.П. Турбо Паскаль 7.0.- М,1998
-
Е.Н. Сафьянова Основы алгоритмизации и программирование.- Томск, 2000
-
А.И. Муравьев Информатика.- Томск,2000