Ybadoo - Soluções em Software Livre
Tutoriais
Compiladores

Desenvolva um programa na linguagem de programação SIMPLE, que apresente o produto dos n primeiros números positivos. O valor de n será fornecido pelo usuário, devendo ser um valor inteiro e positivo. Por exemplo, caso o valor fornecido pelo usuário para n seja 5, o programa deverá apresentar como resposta o valor 120, ou seja, 1 * 2 * 3 * 4 * 5. Caso o usuário forneça um valor inválido para n, o programa deverá apresentar como resposta o valor -1. Posteriormente, apresente a identificação de todos os tokens utilizados na elaboração do programa.

 

10 input n
15 if n < 0 goto 45
20 let f = 1
25 if n < 2 goto 50
30 let f = f * n
35 let n = n - 1
40 goto 25
45 let f = -1
50 print f
55 end
Tabela de símbolos
CódigoValor CódigoValor CódigoValor
0010 01n 0215
030 0445 0520
06f 071 0825
092 1050 1130
1235 1340 1455
[51, 00, (01, 01)] // 10
[62, , (01, 04)] // input
[41, 01, (01, 10)] // n
[10, , (01, 11)] // ENTER
[51, 02, (02, 01)] // 15
[66, , (02, 04)] // if
[41, 01, (02, 07)] // n
[34, , (02, 09)] // <
[51, 03, (02, 11)] // 0
[65, , (02, 13)] // goto
[51, 04, (02, 18)] // 45
[10, , (02, 20)] // ENTER
[51, 05, (03, 01)] // 20
[63, , (03, 04)] // let
[41, 06, (03, 08)] // f
[11, , (03, 10)] // =
[51, 07, (03, 12)] // 1
[10, , (03, 13)] // ENTER
[51, 08, (04, 01)] // 25
[66, , (04, 04)] // if
[41, 01, (04, 07)] // n
[34, , (04, 09)] // <
[51, 09, (04, 11)] // 2
[65, , (04, 13)] // goto
[51, 10, (04, 18)] // 50
[10, , (04, 20)] // ENTER
[51, 11, (05, 01)] // 30
[63, , (05, 04)] // let
[41, 06, (05, 08)] // f
[11, , (05, 10)] // =
[41, 06, (05, 12)] // f
[23, , (05, 14)] // *
[41, 01, (05, 16)] // n
[10, , (05, 17)] // ENTER
[51, 12, (06, 01)] // 35
[63, , (06, 04)] // let
[41, 01, (06, 08)] // n
[11, , (06, 10)] // =
[41, 01, (06, 12)] // n
[22, , (06, 14)] // -
[51, 07, (06, 16)] // 1
[10, , (06, 17)] // ENTER
[51, 13, (07, 01)] // 40
[65, , (07, 04)] // goto
[51, 08, (07, 09)] // 45
[10, , (07, 11)] // ENTER
[51, 04, (08, 01)] // 45
[63, , (08, 04)] // let
[41, 06, (08, 08)] // f
[11, , (08, 10)] // =
[22, , (08, 12)] // -
[51, 07, (08, 13)] // 1
[10, , (08, 14)] // ENTER
[51, 10, (09, 01)] // 50
[64, , (09, 04)] // print
[41, 06, (09, 10)] // f
[10, , (09, 11)] // ENTER
[51, 14, (10, 01)] // 55
[67, , (10, 04)] // end
[03, , (10, 07)] // ETF