Код - скрипт для построения графика синуса
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#!/bin/sh

writeAbscise() {
  i=0;
  while [ $i -lt $2 ];
  do
    at $i $1 '-'
    i=$(($i+1))
  done
  at $(($2-1)) $1 '>'
  at $(($2-1)) $(($1+1)) 'x'
}

writeOrdinate() {
  i=0;
  while [ $i -lt $1 ];
  do
    at $2 $i '|'
    i=$(($i+1))
  done
  at $2 0 '^'
  at $(($2+2)) 0 'y'
}

writeCoord() {
  writeOrdinate $1 $(($2/2))
  writeAbscise $(($1/2)) $2
  at $(($2/2)) $(($1/2)) '+'
  at $(($2/2+2)) $(($1/2+1)) 0
}

writeFx() {
  writeCoord $1 $2
  i=0
  while [ $i -lt $(($2-1)) ];
  do
    Y=`./1.pl $(($i-$2/2)) $(($2/2)) $(($1/2-2))`
    Y=$(($1/2-$Y))
    [ $Y -ge $1 ] && Y=$(($1-1))
    [ $Y -lt 0  ] && Y=0;
    at $i $Y '*'
    i=$(($i+1))
  done
  at 0 $1
}

at() {
  echo -e "\033[$2;$1H$3"
}

clear
at 4 2 'y=2sin(x)'
writeFx 23 80

1.pl - вспомогательный скрипт
1
2
3
4
5
#!/usr/bin/perl -w

$PI=3.14159265358979323846;

print int(sin($ARGV[0]/$ARGV[1] * $PI)*$ARGV[2]), "\n";

Результат работы

График синуса в консоли