
- •Компьютерная и микропроцессорная техника в электрооборудовании
- •Тема № 1 Разработка и отладка программ линейного вычислительного процесса
- •Управления вводом/выводом
- •Варианты заданий
- •Тема № 2 Разработка и отладка программ разветвляющегося вычислительного процесса. Логический условный оператор
- •Разработка и отладка программ циклического вычислительного процесса. Оператор цикла с параметром
- •Основные управляющие структуры - повторения
- •Варианты заданий
- •Тема № 6 Разработка и отладка программ с использованием структурированных типов данных – одномерных массивов
Тема № 2 Разработка и отладка программ разветвляющегося вычислительного процесса. Логический условный оператор
Основные управляющие структуры - ветвление и выбор варианта
Цель работы. Программирование разветвляющихся вычислительных процессов с применением операторов ветвления и выбора варианта.
К операторам ветвления (двухпозиционное переключение) относятся следующие:
if (логическое выражение) оператор;
if (логическое выражение) оператор 1; else оператор 2;
(логическое выражение) ? выражение 1 или один оператор 1: выражение 2 или один оператор 2;
Операторы выбора варианта (многопозиционное переключение):
вложенные операторы if - else if - else if - else;
switch (переменная или выражение целого типа)
{ case значение 1 : оператор 1;
break;
case значение 2 : оператор 2;
break;
. . .
case значение n : оператор n;
break;
default: оператор n+1;
}
В операторе switch ветвь default можно не описывать. Она выполняется, если ни одно из вышеперечисленных условий не удовлетворено. Наличие в каждом поле case оператора break необходимо, так как только в этом случае будет выполняться помеченный оператор.
В операции ? можно использовать только одиночные операторы.
Оператор безусловного перехода - goto [идентификатор]; идентификатор описывается обычным образом, рекомендуется - целым типом. Здесь управление передается безусловно на оператор в теле той же функции, помеченный указанным идентификатором.
Пример.
Составьте
программу вычисления y
=
.
#include <stdio.h>
#include <math.h>
void main()
{ float x,y;
printf(Введите х\n); scanf(%f,x);
if (x<0) y=x*x; else y=exp(x);
printf(y = %f,y); }
Варианты заданий
На интервале [A, B] задана функция y = F(x). В точке С, где A < C < B , функция имеет вид
Составьте программу для вычисления (табулирования) этой функции.
y =
y =
y =
y =
y =
y =
y =
y =
у =
у =
Y =
y =
y =
y =
y =
y =
y =
y =
y =
y =
y =
Тема №3
Разработка и отладка программ циклического вычислительного процесса. Оператор цикла с параметром
В данной теме изучаются основные возможности языка по организации циклического алгоритма и составлению программы с использованием оператора цикла с параметром (итерационного).
Процессы, в которых многократно выполняются одни и те же действия, называются циклическими.
Основные управляющие структуры - повторения
Цель работы. Организация циклических или итерационных вычислитель-ных процессов с помощью операторов цикла с предусловием, постусловием и с параметром (итерационным).
Операторы цикла задают многократное (фиксированное или определяемое в процессе счета) исполнение операторов тела цикла. В С определены три разных оператора цикла:
1) цикл с предусловием, где проверка выражения или условия проводится до начала выполнения цикла:
while (логическое выражение)
тело цикла;
2) цикл с постусловием, где проверка выражения или условия проводится после выполнения тела цикла:
do
тело цикла
while(логическое выражение);
3) итерационный цикл:
for ([выражение инициализации]; [выражение проверки условия]; [выражение коррекции])
тело цикла;
Тело цикла - это либо отдельный ( в том числе пустой ) оператор, либо составной оператор. Прекращение выполнения цикла возможно в следующих случаях:
1) нулевое значение проверяемого логического выражения;
2) выполнения в теле цикла оператора передачи управления (break, goto) за пределы цикла.
Выражение инициализации цикла for(...) служит для инициализации счетчика, и она осуществляется только один раз при входе в цикл. Выражение коррекции вычисляется на каждой итерации (вычислительном шаге) после выполнения операторов тела цикла. Оператор for(...) - это цикл с предусловием. Каждое из трех выражений цикла for(...) можно опускать, но символ ";" остается.
Примеры записи оператора for(...):
for (n=10; n<0; n--) ...;
for(x=1; y<=75; y=5*x+++ 15 )...;
ans=2;
for(n=3; ans<=25;) ans=ans*n;
for(x=1,y=1.2; y<=10.5; x++ , y=y+x*0.3 ) ...;
for(; ;)...; - бесконечный цикл.
Операция "запятая" (табл. 5) связывает два оператора или выражения в одно и гарантирует, что левое выражение будет выполняться первым. Из примеров видно, что она используется для включения дополнительной информации в заголовок цикла for(...).
Предостережения
Ошибка типа "бесконечный цикл"
К бесконечному циклу приводят неправильное написание логического выражения или отсутствие в теле цикла корректировки шага параметра цикла.
Ошибка типа "лишний шаг"
При работе с массивами возможен выход за границу массива, который никаким образом не контролируется компилятором, например, при работе с массивом а[50], оператор while (i<=50) s+=a[i++]; приведет к попытке обратиться к 51-му элементу массива, о чем компилятор не сообщит пользователю. Это очень серьезная ошибка.
Пример.
Протабулируйте функцию
y =
на выбранном интервале х[а,b] с шагом х.
#include <stdio.h>
void main()
{ float x,y,a,b,dx; int met;
printf(Введите dх,a,b\n); scanf(%f%f %f ,dx,a,b);
x=a;
while (x<b)
{ if (x<=1)
{ if (x==0) {printf("Решение отсутствует\n"); goto met;}
y=3/x; }
else y=x/3;
printf(x= f y = %f\n,x,y);
met: x=x+dx; }}