- •Н.В. Галина, и.Е. Белоцерковская, л.Ю. Катаева
- •Оглавление
- •Введение
- •Глава 1 Устройство и принципы работы персонального компьютера. Основы работы с ос Windows
- •1.1 Устройство и принципы работы персонального компьютера
- •1.2 Назначение блоков и их краткая характеристика
- •1.3 Программное обеспечение персонального компьютера
- •Глава 2 Понятие алгоритма. Виды алгоритмов
- •1. Линейный алгоритм,
- •2. Разветвляющийся алгоритм,
- •3. Циклический алгоритм.
- •Глава 3 Понятие блок-схемы. Основные типы блоков. Реализация основных алгоритмов
- •3.1 Понятие блок-схемы
- •3.2 Линейный алгоритм
- •3.3 Разветвляющийся алгоритм
- •3.4 Циклический алгоритм
- •4.2 Начало работы в приложении Visual Studio
- •Глава 5 Графическая и программная реализации алгоритмов
- •5.1 Реализация линейного алгоритма
- •5.2 Реализация разветвляющегося алгоритма
- •5.3 Реализация циклического алгоритма
- •5.4 Исследование таблицы значений функции
- •Глава 6 Понятие массива. Одномерные и двумерные массивы
- •6.1 Одномерные массивы
- •6.2 Двумерные массивы
- •6.3 Исследование двумерного массива
- •Глава 7 Задания и варианты для лабораторных работ. Методические указания
- •7.1 Задания и варианты для лабораторных работ
- •7.2 Методические указания и примеры выполнения лабораторных работ
- •Литература
- •Галина Наталья Владимировна Белоцерковская Ирина Ефимовна Катаева Лилия Юрьевна
- •603950, Г. Нижний Новгород, ул. Минина, 24.
7.2 Методические указания и примеры выполнения лабораторных работ
Далее приведены образцы выполнения лабораторных работ.
Лабораторная работа 1.
Тема «Линейный и разветвляющийся алгоритм».
Постановка задачи. Составить блок-схему и программу для вычисления Y и Z по заданным формулам.
а) при х=0,12.
Рис. 7.1. Блок-схема |
Код программы: #include <iostream.h> #include <math.h> int main(){ double x, Y; x=0.12; Y=pow(pow(x,2.0)+x,0.5); cout<<"x="<<x<<endl; cout<<"Y="<<Y<<endl; return 0; } |
Результат выполнения программы:
Ручной счет:
При х=0,12
.
Проверка результата в программе MathCad:
б)
,
где x, y считать с клавиатуры.
Рис. 7.2. Блок-схема |
Код программы: #include <iostream.h> #include <math.h> int main(){ double x,y,Z; cout<<"x="; cin>>x; cout<<"y="; cin>>y; if(pow(x,2.0)+pow(y,2.0)<2.0){ Z=pow(1.0-sin(pow(x,2.0)+pow(y,3.0)),2.0); } else{ Z=pow(pow(x,2.0)*y +8.0,0.5); } cout<<"Z="<<Z<<endl; return 0; } |
Результат выполнения программы:
Ручной счет:
При х=0,2; у=1; x2+y2=0,22+12=1,04 < 2 {первая ветвь}
Z=(1-sin(x2+y3))2=(1-sin(0,22+13))2=(1-sin(1,04))2=0,019.
Проверка результатов в программе MathCad:
в)
,
где x,
y
считать с клавиатуры.
Рис. 7.3. Блок-схема |
Код программы #include <iostream.h> #include <math.h> int main(){ double x,y,Z, a,b; cout<<"x=";cin>>x; cout<<"y=";cin>>y; a=y*pow(x,0.5); b=sin(y)/x; Z=a; if(b<Z){ Z=b; } cout<<"Z="<<Z<<endl; return 0; } |
Результат выполнения программы:
Ручной счет:
При х=3,5;
у=1,6;
;
;
Z=min{2,993; 0,286}=0,286.
Проверка результатов в программе MathCad:
Лабораторная работа 2.
Тема «Циклический алгоритм».
Постановка задачи. Составить блок-схему и программу для вычисления таблицы значений функций Y и Z по заданным формулам.
а) при 0≤х≤5 с шагом 0,9; использовать операторы while, for, do while.
Рис. 7.4. Блок-схема с предусловием
|
Рис. 7.5. Блок-схема с постусловием
|
Код программы с оператором while:
#include <iostream.h>
#include <math.h>
#include <iomanip.h>
int main(){
double x,Y;
cout<<setw(10)<<"x"
<<setw(10)<<"Y"<<endl;
x=0;
while(x<=5){
Y=pow(pow(x,2.0)+x,0.5);
cout<<setw(10)<<x
<<setw(10)<<Y<<endl;
x=x+0.9;
}
return 0;}
Результат выполнения программы:
Код программы с оператором for:
#include <iostream.h>
#include <math.h>
#include <iomanip.h>
int main(){
double x,Y;
cout<<setw(10)<<"x"
<<setw(10)<<"Y"<<endl;
for(x=0;x<=5;x=x+0.9){
Y=pow(pow(x,2.0)+x,0.5);
cout<<setw(10)<<x
<<setw(10)<<Y<<endl;
}
return 0;}
Результат выполнения программы:
Код программы с оператором do while:
#include <iostream.h>
#include <math.h>
#include <iomanip.h>
int main(){
double x,Y;
cout<<setw(10)<<"x"
<<setw(10)<<"Y"<<endl;
x=0;
do{
Y=pow(pow(x,2.0)+x,0.5);
cout<<setw(10)<<x
<<setw(10)<<Y<<endl;
x=x+0.9;
} while(x<=5);
return 0;}
Результат выполнения программы:
б)
,
при 0≤х≤1,2 с шагом 0,7; при 0≤y≤1 с шагом 0,5; использовать оператор for; найти сумму, произведение, минимальное и максимальное значение функции.
|
Код программы: (приложение Borland C++)
#include <iostream.h> #include <math.h> #include <iomanip.h> int main(){ double x,y,Z,S,P,min,max; cout<<setw(5)<<"x"<<setw(5) <<"y"<<setw(15)<<"Z"<<endl; S=0;P=1; min=10E10; max=-10E10; for(x=0;x<=1.2;x=x+0.7){ for(y=0;y<=1;y=y+0.5){ if(pow(x,2.0)+pow(y,2.0)<2){ Z=pow(1.0-sin(pow(x,2.0) +pow(y,3.0)),2.0);} else{ Z=pow(pow(x,2.0)*y +8.0,0.5);} cout<<setw(5)<<x<< setw(5)<<y<<setw(15) <<Z<<endl; S=S+Z; P=P*Z;
|
Рис. 7.6. Блок-схема |
if(Z<min)min=Z; if(Z>max)max=Z; } } cout<<"S="<<S<<endl; cout<<"P="<<P<<endl; cout<<"min="<<min<<endl; cout<<"max="<<max<<endl; return 0;} |
Результат выполнения программы:
в) , при 0,6≤х≤12 с шагом 7; при 0≤y≤3 с шагом 1,5; использовать оператор while.
Рис. 7.7. Блок-схема
|
Код программы: #include <iostream.h> #include <iomanip.h> #include <math.h> int main(){ double x,y,Z,a,b; cout<<setw(5)<<"x"<< setw(5)<<"y"<<setw(15) <<"Z"<<endl; x=0.6; while(x<=12){ y=0; while(y<=3){ a=y*pow(x,0.5); b=sin(y)/x; Z=a; if(b<Z)Z=b; cout<<setw(5)<<x<<setw(5) <<y<<setw(15)<<Z<<endl; y=y+1.5; } x=x+7.0; } return 0; } |
Результат выполнения программы:
Лабораторная работа 3.
Тема «Массивы».
а) Одномерный массив Х(15) задать в программе. Найти максимальный из отрицательных элементов и поменять его местами с последним.
Код программы: #include <iostream.h> #include <iomanip.h> int main(){ double X[15]={0.3,-1,5,2.5,7.3,2,-0.6,0.7,6.4,3,-9,0,5,-2,8}; double max,tmp; int i, imax; max=-10E10; for(i=0;i<15;i=i+1){ cout<<setw(5)<<X[i]; if(X[i]<0 && X[i]>max){ max=X[i]; imax=i; } } cout<<endl<<"max="<<max<<"pri i="<<imax<<endl; tmp=X[imax]; X[imax]=X[14]; X[14]=tmp; for(i=0;i<15;i=i+1){ cout<<setw(5)<<X[i]; } cout<<endl; return 0; }
Рис. 7.8. Блок-схема
|
Результат выполнения программы:
б) Матрица А(4,4) задается с клавиатуры. Найти: сумму элементов среди элементов, расположенных на главной диагонали матрицы А; максимальный элемент в третьей строке матрицы. Поменять местами найденный максимальный элемент и значение S.
Код программы:
#include <iostream.h>
#include <iomanip.h>
int main(){
double a[4][4];
double S,max;
int i,j,jmax;
for(i=0;i<4;i=i+1){
for(j=0;j<4;j=j+1){
cin>>a[i][j];
}
}
for(i=0;i<4;i=i+1){
for(j=0;j<4;j=j+1){
cout<<setw(5)<<a[i][j];
}
cout<<endl;
}
S=0;
for(i=0; i<4; i=i+1){
S=S+a[i][i];
}
cout<<"S="<<S<<endl;
max=-10E10;
for(j=0; j<4; j=j+1){
if(a[2][j]>max){
max=a[2][j];
jmax=j;
}
}
cout<<"max="<<max<<" pri i=2, j="<<jmax<<endl;
a[2][jmax]=S;
for(i=0;i<4;i=i+1){
for(j=0;j<4;j=j+1){
cout<<setw(5)<<a[i][j];
}
cout<<endl; } return 0;}
Блок-схема:
Рис. 7.9. Блок-схема
Результат выполнения программы:
