|
Warning: this is an htmlized version!
The original is here, and the conversion rules are here. |
#######
#
# E-scripts on Pascal.
#
# Note 1: use the eev command (defined in eev.el) and the
# ee alias (in my .zshrc) to execute parts of this file.
# Executing this file as a whole makes no sense.
# An introduction to eev can be found here:
#
# (find-eev-quick-intro)
# http://angg.twu.net/eev-intros/find-eev-quick-intro.html
#
# Note 2: be VERY careful and make sure you understand what
# you're doing.
#
# Note 3: If you use a shell other than zsh things like |&
# and the for loops may not work.
#
# Note 4: I always run as root.
#
# Note 5: some parts are too old and don't work anymore. Some
# never worked.
#
# Note 6: the definitions for the find-xxxfile commands are on my
# .emacs.
#
# Note 7: if you see a strange command check my .zshrc -- it may
# be defined there as a function or an alias.
#
# Note 8: the sections without dates are always older than the
# sections with dates.
#
# This file is at <http://angg.twu.net/e/pascal.e>
# or at <http://angg.twu.net/e/pascal.e.html>.
# See also <http://angg.twu.net/emacs.html>,
# <http://angg.twu.net/.emacs[.html]>,
# <http://angg.twu.net/.zshrc[.html]>,
# <http://angg.twu.net/escripts.html>,
# and <http://angg.twu.net/>.
#
#######
# (find-fline "/usr/share/doc/gcc-4.1-base/pascal/examples/")
# (find-fline "/usr/share/doc/gcc-4.1-base/pascal/docdemos/")
# (find-status "gpc-4.1-doc")
# (find-vldifile "gpc-4.1-doc.list")
# (find-udfile "gpc-4.1-doc/")
# (find-status "gpc-4.1")
# (find-vldifile "gpc-4.1.list")
# (find-udfile "gpc-4.1/")
# (find-status "gpc-doc")
# (find-vldifile "gpc-doc.list")
# (find-udfile "gpc-doc/")
# (find-status "gpc")
# (find-vldifile "gpc.list")
# (find-udfile "gpc/")
# (find-node "(gpc-4.1)")
# (find-node "(gpcs-4.1)")
# (find-node "(gpc)Pointer Arithmetics")
# (find-node "(gpc)Data Types")
# (find-node "(gpc)Procedural Types")
# (find-node "(gpc)Run Time System")
# (find-node "(gpc)GPC Units")
# (find-node "(gpc)Programming")
# (find-node "(gpc)The Function")
# (find-node "(gpc)The Procedure")
# (find-node "(gpc)WriteLn")
function FUNCTION_IDENTIFIER (PARAMETER_LIST): RESULT_TYPE;
DECLARATION_PART
begin
STATEMENT_PART
end;
#*
cat > /tmp/foo.pas <<'%%%'
program teste;
function m(a: integer; b: integer): integer;
begin WriteLn(" ", a, "*", b, " -> ", a*b); return(a*b); end;
function s(a: integer; b: integer): integer;
begin WriteLn(" ", a, "+", b, " -> ", a+b); return(a+b); end;
function P1(a: integer): boolean;
begin WriteLn(" ", a, "*", a, " < 10 -> ", a*a<10); return(a*a<10); end;
function P2(a: integer): boolean;
begin WriteLn(" ", a, "=4 -> ", a=4); return a=4; end;
function P3(a: integer): boolean;
begin WriteLn(" ", a, ">=9 -> ", a>=9); return a>=9; end;
procedure testaordem;
begin WriteLn("2*3 + 4*5:");
WriteLn(" -> ", s(m(2, 3), m(4, 5)));
WriteLn;
end;
procedure f123(function f(a: integer; b: integer): integer);
begin WriteLn("f(f(1,2), f(3,4)):");
WriteLn(" -> ", f(f(1, 2), f(3, 4)));
WriteLn;
end;
procedure existe_a_em_A_tal_que(function P(a: integer): boolean);
begin WriteLn("Existe a em {1, 2, 4} tal que P:");
WriteLn("-> P(1) or P(2) or P(4)");
WriteLn(" -> ", P(1) or P(2) or P(4));
WriteLn;
end;
begin
testaordem;
f123(s);
f123(m);
existe_a_em_A_tal_que(P1);
existe_a_em_A_tal_que(P2);
existe_a_em_A_tal_que(P3);
end.
(* Output:
2*3 + 4*5:
-> 4*5 -> 20
2*3 -> 6
6+20 -> 26
26
f(f(1,2), f(3,4)):
-> 3+4 -> 7
1+2 -> 3
3+7 -> 10
10
f(f(1,2), f(3,4)):
-> 3*4 -> 12
1*2 -> 2
2*12 -> 24
24
Existe a em {1, 2, 4} tal que P:
-> P(1) or P(2) or P(4)
1*1 < 10 -> True
-> True
Existe a em {1, 2, 4} tal que P:
-> P(1) or P(2) or P(4)
1=4 -> False
2=4 -> False
4=4 -> True
-> True
Existe a em {1, 2, 4} tal que P:
-> P(1) or P(2) or P(4)
1>=9 -> False
2>=9 -> False
4>=9 -> False
-> False
*)
%%%
cd /tmp/
gpc foo.pas && a.out
#*
# (find-sh "cd /tmp/ && gpc foo.pas && a.out")
int P1(int a) { printf(" %d*%d < 10 -> %d\n", a, a, a*a<10); return a*a<10; }
int P2(int a) { printf(" %d==4 -> %d\n", a, a==4); return a==4; }
int P3(int a) { printf(" %d>=9 -> %d\n", a, a>=9); return a>=9; }
%d*%d -> %d\n"
#include <stdio.h>
int m(int a, int b) { printf(" %d*%d -> %d\n", a, b, a*b); return a*b; }
int s(int a, int b) { printf(" %d+%d -> %d\n", a, b, a+b); return a+b; }
int P1(int a) { printf(" %d*%d < 10 -> %d\n", a, a, a*a<10); return a*a<10; }
int P2(int a) { printf(" %d==4 -> %d\n", a, a==4); return a==4; }
int P3(int a) { printf(" %d>=9 -> %d\n", a, a>=9); return a>=9; }
void testaordem(void) {
printf("2*3 + 4*5: \n");
printf(" -> %d\n\n", s(m(2, 3), m(4, 5)));
}
void f123(int(*f)()) {
printf("f(f(1,2), f(3,4)):\n");
printf(" -> %d\n\n", f(f(1, 2), f(3, 4)));
}
void existe_a_em_A_tal_que(int(*P)()) {
printf("Existe a em {1, 2, 4} tal que P:\n");
printf("-> P(1) || P(2) || P(4)\n");
printf(" -> %d\n\n", P(1) || P(2) || P(4));
}
main() {
testaordem();
f123(s);
f123(m);
existe_a_em_A_tal_que(P1);
existe_a_em_A_tal_que(P2);
existe_a_em_A_tal_que(P3);
}
#####
#
# factorial
# 2011apr20
#
#####
* (eepitch-shell)
* (eepitch-kill)
* (eepitch-shell)
cat > /tmp/foo.pas <<'%%%'
program teste;
function fact(n: integer): integer;
if n <= 0 then return 1;
return n * fact(n - 1);
end;
begin
WriteLn(fact(4));
end.
(* ...
*)
%%%
cd /tmp/
gpc foo.pas && a.out
Why Pascal is Not My Favorite Programming Language
by Brian W. Kernighan
https://www.lysator.liu.se/c/bwk-on-pascal.html
https://doc.cat-v.org/bell_labs/why_pascal/why_pascal_is_not_my_favorite_language.pdf
http://www.pbm.com/~lindahl/real.programmers.html Real Programmers Don't Use Pascal
See: lua-l, 2012nov06 (Luciano de Souza / Romulo AB)
# Local Variables:
# coding: utf-8-unix
# End: