Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Общие вопросы по программированию, компьютерный форум
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.10.2017, 10:46   #1
AndreyK
Подтвердите свой е-майл
 
Регистрация: 05.04.2010
Сообщений: 76
По умолчанию Отличие структурного от процедурного программирования

Всем привет! Люди подскажите, пожалуйста, в чём разница между структурным программированием и процедурным? Правильно ли я понимаю, что структурное - это когда программа выполняется последовательно и в коде не используется оператор goto? А вот например если будешь писать с goto, то это уже процедурное программирование?
AndreyK вне форума Ответить с цитированием
Старый 29.10.2017, 10:50   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Наверно да, а вам зачем?)
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 29.10.2017, 10:55   #3
AndreyK
Подтвердите свой е-майл
 
Регистрация: 05.04.2010
Сообщений: 76
По умолчанию

Как зачем? Чтобы знать. Мне просто очень интересно... Ну мне нужен чёткий ответ, а не "Наверно да". Неужели отличие только в goto... Может кто-нибудь может дать более развёрнутый ответ?
AndreyK вне форума Ответить с цитированием
Старый 29.10.2017, 11:14   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Процедурное разновидность структурного с оформлением кода в соответствии с названием парадигмы
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 29.10.2017, 11:16   #5
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Ну процедуры/функции, циклы и т.п. еще.

В википедии ж есть.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 29.10.2017, 12:24   #6
AndreyK
Подтвердите свой е-майл
 
Регистрация: 05.04.2010
Сообщений: 76
По умолчанию

Я тут набросал небольшие примеры... Т. е . получается, что пример структурного подхода это:
Код:
use 5.14.0;
use strict;
use warnings;
use FileHandle;

#---------------------------- Прототип readFile ------------------------------
sub readFile;

#------------------------------------ Тело -----------------------------------
# Линейность
my $c = 5;
my $d = 10;
my $e = $c + $d;
say "5 + 10 = $e";

# Цикличность
my $a = 10;
my $b = 0;
for (my $i = 0; $i < 10; $i++){
  $b+=$a;
}

# Ветвление
if ($b == 100){
  say "b равно 100";
} else {
        say "b не равно 100";
}

say $b;

# Использование функций/процедур
say for(readFile("<путь до файла>"));

#----------------------------------- Функции ---------------------------------

sub readFile{
  my $path = $_[0];
  my $file = new FileHandle($path);
  my @result;
  if (defined $file){
      @result = $file->getlines();
  }
  return @result;
}
А пример процедурного подхода это:
Код:
use 5.14.0;
use strict;
use warnings;
use FileHandle;

#---------------------------- Прототип readFile ------------------------------
sub readFile;

#------------------------------------ Тело -----------------------------------
# Линейность
my $c = 5;
my $d = 10;
my $e = $c + $d;
say "5 + 10 = $e";

LABEL:

# Цикличность
my $sum = 0;
for (my $i = 0; $i < 10; $i++){
	for (my $j = 0; $j < 10; $j++){
		for (my $k = 0; $k < 10; $k++){
			for (my $l = 0; $l < 10; $l++){
				if ($j == 3) {
					goto LABEL;
				}
				$sum = $sum + ($i + $j + $k + $l);
			}
		}
	}
}

# Ветвление
if ($sum == 100){
  say "sum равно 100";
} else {
  say "sum не равно 100";
}

say "sum = $sum";

# Использование функций/процедур
say for(readFile("<путь до файла>"));

#----------------------------------- Функции ---------------------------------

sub readFile{
  my $path = $_[0];
  my $file = new FileHandle($path);
  my @result;
  if (defined $file){
      @result = $file->getlines();
  }
  return @result;
}
Т.е первый и второй случай отличаются наличием оператора goto который нарушает последовательное выполнение кода.

Так ли это или ещё какие-то различия. Может свой пример приведёте если не сложно.
AndreyK вне форума Ответить с цитированием
Старый 29.10.2017, 12:46   #7
ura_111
Участник клуба
 
Регистрация: 14.05.2016
Сообщений: 1,793
По умолчанию

1.jpg

2.jpg

3.jpg

4.jpg
ura_111 вне форума Ответить с цитированием
Старый 29.10.2017, 12:47   #8
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Во втором наверно еще циклы надо заменить goto.

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

Это примерно как разбираться кто левый, кто правый Во всех популярных ЯП включены разные парадигмы.


Чем искать разницу между этим я б советовал посмотреть на более интересные парадигмы: декларативная, функциональная.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.

Последний раз редактировалось Alex11223; 29.10.2017 в 12:53.
Alex11223 вне форума Ответить с цитированием
Старый 29.10.2017, 13:08   #9
AndreyK
Подтвердите свой е-майл
 
Регистрация: 05.04.2010
Сообщений: 76
По умолчанию

Просто я задался таким вопросом, потому что представил ситуацию когда я/вы пришёл устраиваться программистом и на собеседовании тебе/вам задали такой элементарный вопрос, а ты/вы ответить внятно не смогли. И работодатель мне кажется меня/вас не возьмёт на работу подумая, что типо раз таких элементарных вещей не знает то не буду брать....
Скажет, ну ка давай быстренько на бумаге набрасай две элементарные задачки со структурным подходом и процедурным...
AndreyK вне форума Ответить с цитированием
Старый 29.10.2017, 13:20   #10
AndreyK
Подтвердите свой е-майл
 
Регистрация: 05.04.2010
Сообщений: 76
По умолчанию

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

Так получается?

Последний раз редактировалось AndreyK; 29.10.2017 в 15:10.
AndreyK вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ПОДПРОГРАММЫ С ПАРАМЕТРАМИ ПРОЦЕДУРНОГО ТИПА Kira09 Паскаль, Turbo Pascal, PascalABC.NET 1 19.12.2010 17:55
из процедурного в модульное pavel42 Помощь студентам 7 30.03.2010 20:27
Организация структурного программирования L_M Свободное общение 4 24.06.2009 21:14