С Новым годом! Форум программистов, компьютерный форум, киберфорум
Turbo Pascal
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/21: Рейтинг темы: голосов - 21, средняя оценка - 4.67
-30 / 8 / 1
Регистрация: 31.05.2013
Сообщений: 485
1

Как вызывать пустую процедуру, котрая ничего не возвращает?

16.11.2014, 18:52. Показов 4022. Ответов 15
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Функция, как я понимаю может выдавать только одно значение на выходе, а процедура - аж букет целый значений разного типа.
Но не понял, как вызывать пустую процедуру, котрая ничего не возвращает? Да и данные что-то не передает((
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
var
 
a, d_f, d_p, m_f, g_f : integer;
 
 
procedure Nachali(var an, bn, cn : integer);
var d_fN, m_fN, g_fN : integer;
begin
writeln('Vvedite den, mes, god nachala otscheta');
readln(d_fN, m_fN, g_fN);
end;
 
 
begin
Nachali(d_f, m_f, g_f);
writeln(d_f, m_f, g_f);
readln(a);
 
end.
Пишет d_f, m_f, g_f 000.
Я ж не должен в ручную прописывать, что an:=d_fN bn:=m_fN cn:=g_fN

Добавлено через -28 минут
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
16.11.2014, 18:52
Ответы с готовыми решениями:

Как вернуть в запросе значение по умолчанию, если SELECT возвращает NULL или ничего не возвращает?
Добрый день! Например я хочу чтобы донное выражение возвращало мне 0 или скажем 1, если...

Return. Как вернуть ничего (пустую строку), если стоит тип double?
Как вернуть ничего (пустую строку), если стоит тип double? public double Square() { ...

Как вызывать процедуру без имени входящей переменной?
Добрый день. В Visual Basik е можно задавать параметры процедуры, не задавая конкретно имени...

Как вывести "ничего" или пустую строку?
Здравствуйте, помогите пожалуйста разобраться что после else написать, чтобы не выводилось ничего....

15
Почетный модератор
64305 / 47602 / 32742
Регистрация: 18.05.2008
Сообщений: 115,181
16.11.2014, 19:17 2
Лучший ответ Сообщение было отмечено Памирыч как решение

Решение

Цитата Сообщение от Albaz Посмотреть сообщение
Функция, как я понимаю может выдавать только одно значение на выходе,
Вообще-то это не факт, например функция
Pascal
1
2
3
4
5
function f(x,y:real;var s:real):real;
begin
s:=x+y
f:=x*y;
end;
возвращает в программу 2 значения, сумму и произведение.
Pascal
1
2
3
4
5
var p,s:real;
........................
p:=f(x,y,s);
write('сумма=',s:0:2,'  произведение=',p:0:2);
...................
Добавлено через 3 минуты
Цитата Сообщение от Albaz Посмотреть сообщение
как вызывать пустую процедуру, котрая ничего не возвращает?
например
Pascal
1
2
3
4
5
6
7
priocedure pr;
begin
writeln('**********');
end;
begin
pr
end;
Добавлено через 1 минуту
Примером таких процедур являются
readln;
writeln;
1
-30 / 8 / 1
Регистрация: 31.05.2013
Сообщений: 485
16.11.2014, 19:23  [ТС] 3
а я хочу, что бы процедура только считывала с консоли 3 однотипных параметра и возвращала в прогу. Как сделать то?

Добавлено через 1 минуту
мне не нравится
Pascal
1
2
3
4
5
function f(x,y:real;var s:real):real;
begin
s:=x+y
f:=x*y;
end;
то, что переменная произведения совпадает с именем ф-ции.
Это наверное какой-то рефлексный прием.
0
Почетный модератор
64305 / 47602 / 32742
Регистрация: 18.05.2008
Сообщений: 115,181
16.11.2014, 19:28 4
f не переменная, а значение функции f()
1
-30 / 8 / 1
Регистрация: 31.05.2013
Сообщений: 485
16.11.2014, 19:29  [ТС] 5
С f:=x*y; мы оперируем, но формально ее переменной не объявили в формальных параметрах. Т.е. имя функции используется и как имя переменной внутри этой ф-ции?
0
Почетный модератор
64305 / 47602 / 32742
Регистрация: 18.05.2008
Сообщений: 115,181
16.11.2014, 19:31 6
Цитата Сообщение от Albaz Посмотреть сообщение
что бы процедура только считывала с консоли 3 однотипных параметра
Так зачем писать процедуру, если есть стандартная
Pascal
1
readln(a,b,c);
Добавлено через 1 минуту
Да, в некоторых языках ее заменяет стандартная переменная result;
Pascal
1
2
3
4
5
function f(x,y:real;var s:real):real;
begin
s:=x+y
result:=x*y;
end;
1
-30 / 8 / 1
Регистрация: 31.05.2013
Сообщений: 485
16.11.2014, 19:35  [ТС] 7
Цитата Сообщение от Puporev Посмотреть сообщение
зачем писать процедуру
Допустим, я хочу обойтись без меток и циклов, проверяя корректно ли вводятся параметры. Если нет - то все заново, вызывается процедура поновой через if.
0
Почетный модератор
64305 / 47602 / 32742
Регистрация: 18.05.2008
Сообщений: 115,181
16.11.2014, 19:39 8
Ну и как Вы будете обозначать конец ввода?

Добавлено через 1 минуту
Все равно или нужен флаг (метка) или цикл типа repeat.. until
1
-30 / 8 / 1
Регистрация: 31.05.2013
Сообщений: 485
16.11.2014, 19:45  [ТС] 9
Цитата Сообщение от Puporev Посмотреть сообщение
result:=x*y;
"Второе отличие заключается в том, что в теле функции хотя бы раз имени функции должно
быть присвоено значение."

Т.е. ф-ция может вернуть и 2 параметра - один этим, "естественным" путем. + еще можно через var s:real задать выходной параметр?
f:=x*y; скорее аналог return наверное?

Добавлено через 4 минуты
Я играюсь, набиваю руку, ставлю себе цель создать все только на метках, циклах или на ф-циях, что бы прочувствовать вкус и силу каждого способа.
0
Почетный модератор
64305 / 47602 / 32742
Регистрация: 18.05.2008
Сообщений: 115,181
16.11.2014, 19:47 10
Цитата Сообщение от Albaz Посмотреть сообщение
f:=x*y; скорее аналог return наверное?
Да, но return в Паскале нет.
1
-30 / 8 / 1
Регистрация: 31.05.2013
Сообщений: 485
16.11.2014, 19:50  [ТС] 11
Речь шла по-моему о
Цитата Сообщение от Puporev Посмотреть сообщение
некоторых языках


Добавлено через 1 минуту
Вобщем, не предоставляется возможным вызов процедуры для считывания данных из консоли?
Печатать можно, читать нет? Так ли?
0
Почетный модератор
64305 / 47602 / 32742
Регистрация: 18.05.2008
Сообщений: 115,181
16.11.2014, 19:54 12
Лучший ответ Сообщение было отмечено Albaz как решение

Решение

Я неверно выразился. Под некоторыми языками я подразумевал диалекты Паскаля, которые используются в Делфи, Паскаль АВС, Free Pascal.

Добавлено через 1 минуту
Цитата Сообщение от Albaz Посмотреть сообщение
вызов процедуры для считывания данных из консоли?
Так я же написал что чтение значений переменных уже предусмотрено процедурами readln, иногда read.
1
-30 / 8 / 1
Регистрация: 31.05.2013
Сообщений: 485
16.11.2014, 19:57  [ТС] 13
Цитата Сообщение от Puporev Посмотреть сообщение
я подразумевал диалекты Паскаля
А я понял всякие Сишки))

Добавлено через 1 минуту
Цитата Сообщение от Puporev Посмотреть сообщение
чтение значений переменных уже предусмотрено процедурами
Но видимо не предусмотрено, что некто захочет и эти стандартные процедуры вызвать в теле самопальной процедуры)

Добавлено через 1 минуту
Печалька о потраченном времени((
0
Почетный модератор
64305 / 47602 / 32742
Регистрация: 18.05.2008
Сообщений: 115,181
16.11.2014, 19:59 14
Лучший ответ Сообщение было отмечено Albaz как решение

Решение

Что поделаешь если ввод данных не возможен без readln, а вывод без writeln...
1
-30 / 8 / 1
Регистрация: 31.05.2013
Сообщений: 485
16.11.2014, 21:37  [ТС] 15
СПАСИБО!

Добавлено через 1 час 29 минут
еще я не пойму до конца с параметрами процедуры.
Pascal
1
2
3
4
5
6
7
8
procedure alfa(a,b :int; var c,d:int);
begin
......
end;
 
begin
alfa(f,g,h,j);
end.
Не все ясно с переменными, их именами, зоной видимости. Получается, нужно дважды увеличивать число переменных - есть фактические, а есть и пронумерованные "ячейки" для нах в параметрах.
И как я понял, все, что идет с префиксом var возвращается в вызвавшую прогу. Или как?

Добавлено через 6 минут
Нарыл еще код, где вообще без параметров
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Program procedura1;
uses crt;
var a, b: integer;
procedure poisk;
begin
if a>b then
writeln ('Первое число больше второго')
else
if a<b then
writeln ('Первое число меньше второго')
else
writeln ('Оба числа равны');
end;
begin
clrscr;
writeln('Введите a, b ');
readln(a, b);
poisk;
readln
end.
0
Почетный модератор
64305 / 47602 / 32742
Регистрация: 18.05.2008
Сообщений: 115,181
17.11.2014, 07:15 16
Цитата Сообщение от Albaz Посмотреть сообщение
где вообще без параметров
Это потому что переменные a,b объявлены как глобальные.
0
17.11.2014, 07:15
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
17.11.2014, 07:15
Помогаю со студенческими работами здесь

Функция возвращает пустую строку
Здравствуйте. Скажу сразу в JS не силен. Мне нужно что бы функция вернула адрес строкой, но не...

GetWindowModuleFileName возвращает пустую строку
Приветствую! Есть код, выводящий GetWindowModuleFileName и GetWindowText текущего окна: ...

mysql_real_escape_string возвращает пустую строку
Есть форма, по заполнению которой производится insert запрос к бд. Но в БД попадают не все поля...

WCF сервис возвращает пустую коллекцию
Пытаюсь сделать WCF сервис в виде приложения (без IIS). Стандартные типы данных возвращает. Но вот...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
Как проводить научные вычисления на Python
InfoMaster 15.01.2025
Python стал одним из наиболее востребованных языков программирования в области научных вычислений благодаря своей простоте, гибкости и обширной экосистеме специализированных библиотек. Научные. . .
Создание игры типа Minecraft на PyGame/Python: пошаговое руководство
InfoMaster 15.01.2025
В данном руководстве мы рассмотрим процесс создания игры в стиле Minecraft с использованием библиотеки PyGame на языке программирования Python. Этот проект идеально подходит как для начинающих. . .
Как создать свою первую игру в стиле Doom на Unreal Engine
InfoMaster 15.01.2025
Разработка шутера от первого лица в стиле классического Doom представляет собой увлекательное путешествие в мир игрового программирования, где сочетаются творческий подход и технические навыки. . . .
Параллельное программировани­е: основные технологии и принципы
InfoMaster 15.01.2025
Введение в параллельное программирование Параллельное программирование представляет собой фундаментальный подход к разработке программного обеспечения, который позволяет одновременно выполнять. . .
Как написать микросервис на C# с Kafka, MediatR, Redis и GitLab CI/CD
InfoMaster 15.01.2025
В современной разработке программного обеспечения микросервисная архитектура стала стандартом де-факто для создания масштабируемых и гибких приложений. Этот подход позволяет разделить сложную систему. . .
Что такое CQRS и как это реализовать на C# с MediatR
InfoMaster 15.01.2025
Концепция CQRS и её роль в современной разработке В современном мире разработки программного обеспечения архитектурные паттерны играют ключевую роль в создании масштабируемых и поддерживаемых. . .
Как настроить CI/CD с Azure DevOps
InfoMaster 15.01.2025
CI/ CD, или непрерывная интеграция и непрерывное развертывание, представляет собой современный подход к разработке программного обеспечения, который позволяет автоматизировать и оптимизировать процесс. . .
Как настроить CI/CD с помощью Jenkins
InfoMaster 15.01.2025
Введение в CI/ CD и Jenkins В современной разработке программного обеспечения непрерывная интеграция (CI) и непрерывная доставка (CD) стали неотъемлемыми элементами процесса создания качественных. . .
Как написать микросервис на Go/Golang с Kafka, REST и GitHub CI/CD
InfoMaster 14.01.2025
Определение микросервиса, преимущества использования Go/ Golang Микросервис – это архитектурный подход к разработке программного обеспечения, при котором приложение состоит из небольших, независимо. . .
Как написать микросервис с нуля на C# с RabbitMQ, CQRS, Swagger и CI/CD
InfoMaster 14.01.2025
В современном мире разработки программного обеспечения микросервисная архитектура стала стандартом де-факто для создания масштабируемых и гибких приложений. Этот архитектурный подход предполагает. . .
Как создать интернет-магазин на PHP и JavaScript
InfoMaster 14.01.2025
В современном мире электронная коммерция стала неотъемлемой частью бизнеса. Создание собственного интернет-магазина открывает широкие возможности для предпринимателей, позволяя достичь большей. . .
Как написать Тетрис на Ассемблере
InfoMaster 14.01.2025
Тетрис – одна из самых узнаваемых и популярных компьютерных игр, созданная в 1984 году советским программистом Алексеем Пажитновым. За прошедшие десятилетия она завоевала симпатии миллионы людей по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru