Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пособие по компьютерной технике.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
561.15 Кб
Скачать

Тема № 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 , функция имеет вид

Составьте программу для вычисления (табулирования) этой функции.

  1. y =

  1. y =

  1. y =

  2. y =

  3. y =

  4. y =

  5. y =

  6. y =

  7. у =

  8. у =

  9. Y =

  1. y =

  1. y =

  2. y =

  1. y =

  2. y =

  3. y =

  1. y =

  2. y =

  3. y =

  4. y =

Тема №3

Разработка и отладка программ циклического вычислительного процесса. Оператор цикла с параметром

В данной теме изучаются основные возможности языка по организации циклического алгоритма и составлению программы с использованием оператора цикла с параметром (итерационного).

Процессы, в которых многократно выполняются одни и те же действия, называются циклическими.

Основные управляющие структуры - повторения

Цель работы. Организация циклических или итерационных вычислитель-ных процессов с помощью операторов цикла с предусловием, постусловием и с параметром (итерационным).

Операторы цикла задают многократное (фиксированное или определяемое в процессе счета) исполнение операторов тела цикла. В С определены три разных оператора цикла:

1) цикл с предусловием, где проверка выражения или условия проводится до начала выполнения цикла:

while (логическое выражение)

тело цикла;

2) цикл с постусловием, где проверка выражения или условия проводится после выполнения тела цикла:

do

тело цикла

while(логическое выражение);

3) итерационный цикл:

for ([выражение инициализации]; [выражение проверки условия]; [выражение коррекции])

тело цикла;

Тело цикла - это либо отдельный ( в том числе пустой ) оператор, либо составной оператор. Прекращение выполнения цикла возможно в следующих случаях:

1) нулевое значение проверяемого логического выражения;

2) выполнения в теле цикла оператора передачи управления (break, goto) за пределы цикла.

Выражение инициализации цикла for(...) служит для инициализации счетчика, и она осуществляется только один раз при входе в цикл. Выражение коррекции вычисляется на каждой итерации (вычислительном шаге) после выполнения операторов тела цикла. Оператор for(...) - это цикл с предусловием. Каждое из трех выражений цикла for(...) можно опускать, но символ ";" остается.

Примеры записи оператора for(...):

  1. for (n=10; n<0; n--) ...;

  2. for(x=1; y<=75; y=5*x+++ 15 )...;

  3. ans=2;

for(n=3; ans<=25;) ans=ans*n;

  1. for(x=1,y=1.2; y<=10.5; x++ , y=y+x*0.3 ) ...;

  2. for(; ;)...; - бесконечный цикл.

Операция "запятая" (табл. 5) связывает два оператора или выражения в одно и гарантирует, что левое выражение будет выполняться первым. Из примеров видно, что она используется для включения дополнительной информации в заголовок цикла for(...).

Предостережения

  1. Ошибка типа "бесконечный цикл"

К бесконечному циклу приводят неправильное написание логического выражения или отсутствие в теле цикла корректировки шага параметра цикла.

  1. Ошибка типа "лишний шаг"

При работе с массивами возможен выход за границу массива, который никаким образом не контролируется компилятором, например, при работе с массивом а[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; }}