русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Занятие 10. Функции определяемые пользователем.


Дата добавления: 2015-06-12; просмотров: 495; Нарушение авторских прав


Сегодняшний наш урок будет посвящен пользовательским функциям, который программист пишет самостоятельно. Когда я отвечал на ваши комментарии к прошлым урокам, нашел хороший пример для иллюстрации использования функций в Си. Про полезность хороший примеров я уже говорил. Итак начнем.

В домашнем задании к уроку №5 я просил вас, написать программу, которая решает уравнение ах=b в целых числах относительно х. Что многие успешно сделали. Разберем теперь другую сторону вопроса. Пусть нам надо проверить одну такую программу. Вот её код.

Листинг 10.1

#include <stdio.h>

int main(void)

{

int a,b;

scanf("%d %d",&a,&b);

if((a==0)&&(b!=0)) printf("no solution\n");

else {

if((a==0)&&(b==0)) printf("many solution\n");

else {

if (b%a!=0) printf("no solution\n");

else {

printf("%d\n",b/a);

}

}

}

return(0);

}

Теперь подумаем как вообще должно решаться такое уравнение и подберем к нему набор тестов.

ах=b следовательно х=b/a. Так как решение в целых числах, то при делении b на a не должно получаться остатка.

Получаем несколько вариантов решения.

1) а=0 и b=0 х любое число.т.е. программа должна вывести many solution.

2) a=0 и b!=0 решений нет. Программа должна ответитьno solution

3) b делится на а без остатка, то это и b/a решение.

4) b делится на а с остатком. Программа должна вывести no solution

Теперь подберем проверочные значения для каждого случая.

1. а=0, b=0

2. a=0, b=3

3. a=3, b=9

4. a=3, b=7

Теперь нам надо проверить нашу программу на всех этих данных и если в ответе получается

1.many solution

2. no solution

3.3

4.no solution

то программа написана верно.

Разберемся как можно сделать это используя те знания, которые у нас уже есть за 9 уроков.



1 способ.

Мы можем запустить нашу программу несколько раз и подставить в неё эти данные, но это слишком долго. Отметаем этот способ.

2 способ.

Можем переписать программу добавив в неё цикл на 4 шага и каждый раз вводить значения и смотреть ответы. Программа будет выглядеть следующим образом.

Листинг 10.2

#include <stdio.h>

int main(void)

{

for(int i=0;i<4;i++) {

int a,b;

scanf("%d %d",&a,&b);

if((a==0)&&(b!=0)) printf("no solution\n");

else {

if((a==0)&&(b==0)) printf("many solution\n");

else {

if (b%a!=0) printf("no solution\n");

else {

printf("%d\n",b/a);

}

}

}

}

return(0);

}

Вот так будет выглядеть окно программы.

Вроде бы хороший способ. Конечно теперь полегче, не надо каждый раз запускать заново программу. Но всё равно, нам самим приходится постоянно вводить данные. Отметаем и этот способ.

3 способ.

Можно немного извратиться и сделать так, чтобы в при каждой итерации цикла в программу передавались новые значения. Но мы этого делать не будем, а займемся более интересными вещами.

4 способ.

Хорошо было бы написать так программу, чтобы мы туда один раз скопировали текст своей программы, запустили её и она нам сразу выдала бы, правильно работает программа или нет.

Вот здесь-то нам и придут на помощь подпрограммы. Подпрограмма это отдельная программа которая может выполняться внутри основной программы.

Подпрограммы в различных языках программирования делят на два вида. Функции и процедуры. Различие между двумя этими названиями лишь в том, что

функция это подпрограмма, которая после своего выполнения возвращает в программу какое-то значение, а процедура это подпрограмма, которая после своего выполнения не возвращает в программу ничего.

Функция main, которая есть в каждой нашей программе является именно функцией, так как после того как она выполнится она возвращает в программу которое её вызвала, а в данном случае операционная система, некоторое значение.

В некоторых языках программирования функции и процедуры разграничены синтаксисом языка. Например, в языке программирования Pascal. В языке Си, процедура это любая функция которая возвращает значение типа void. Поэтому, здесь и далее я буду использовать название функция как для функций, так и для процедур.



<== предыдущая лекция | следующая лекция ==>
Задание для практической работы. | ЗАГОЛОВОК ФУНКЦИИ.


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 1.34 сек.