Bob/char_printer.bob

178 lines
5.7 KiB
Plaintext

print("=== CHARACTER PRINTER PROGRAM ===");
print("Demonstrating string indexing by printing each character...");
// ========================================
// MAIN PROGRAM
// ========================================
var message = "Hello, Bob Language!";
print("\n📝 Original message: " + message);
print("📏 Message length: " + toString(len(message)));
print("\n🔤 CHARACTER BREAKDOWN:");
print("┌─────┬─────┬─────────────┬─────────────┐");
print("│ IDX │ CHR │ ASCII CODE │ DESCRIPTION │");
print("├─────┼─────┼─────────────┼─────────────┤");
for (var i = 0; i < len(message); i = i + 1) {
var char = message[i];
var index = toString(i);
var description = "";
// Determine character description
if (char == " ") {
description = "Space";
} else if (char == ",") {
description = "Comma";
} else if (char == "!") {
description = "Exclamation";
} else if (char == "H") {
description = "Capital H";
} else if (char == "e") {
description = "Lowercase e";
} else if (char == "l") {
description = "Lowercase l";
} else if (char == "o") {
description = "Lowercase o";
} else if (char == "B") {
description = "Capital B";
} else if (char == "b") {
description = "Lowercase b";
} else if (char == "L") {
description = "Capital L";
} else if (char == "a") {
description = "Lowercase a";
} else if (char == "n") {
description = "Lowercase n";
} else if (char == "g") {
description = "Lowercase g";
} else if (char == "u") {
description = "Lowercase u";
} else if (char == "r") {
description = "Lowercase r";
} else {
description = "Other";
}
// Format the output line
var line = "│ " + index;
if (len(index) == 1) {
line = line + " ";
} else {
line = line + " ";
}
line = line + "│ " + char + " │ ";
// Add ASCII code (simplified)
var asciiCode = "";
if (char == "H") asciiCode = "72";
else if (char == "e") asciiCode = "101";
else if (char == "l") asciiCode = "108";
else if (char == "o") asciiCode = "111";
else if (char == ",") asciiCode = "44";
else if (char == " ") asciiCode = "32";
else if (char == "B") asciiCode = "66";
else if (char == "b") asciiCode = "98";
else if (char == "L") asciiCode = "76";
else if (char == "a") asciiCode = "97";
else if (char == "n") asciiCode = "110";
else if (char == "g") asciiCode = "103";
else if (char == "u") asciiCode = "117";
else if (char == "r") asciiCode = "114";
else if (char == "!") asciiCode = "33";
else asciiCode = "??";
line = line + asciiCode;
if (len(asciiCode) == 2) {
line = line + " │ ";
} else {
line = line + " │ ";
}
line = line + description;
// Pad description to fit
while (len(line) < 45) {
line = line + " ";
}
line = line + " │";
print(line);
}
print("└─────┴─────┴─────────────┴─────────────┘");
// ========================================
// CHARACTER STATISTICS
// ========================================
print("\n📊 CHARACTER STATISTICS:");
var uppercaseCount = 0;
var lowercaseCount = 0;
var spaceCount = 0;
var punctuationCount = 0;
for (var i = 0; i < len(message); i = i + 1) {
var char = message[i];
if (char == "H" || char == "B" || char == "L") {
uppercaseCount = uppercaseCount + 1;
} else if (char == "e" || char == "l" || char == "o" || char == "b" || char == "a" || char == "n" || char == "g" || char == "u" || char == "r") {
lowercaseCount = lowercaseCount + 1;
} else if (char == " ") {
spaceCount = spaceCount + 1;
} else if (char == "," || char == "!") {
punctuationCount = punctuationCount + 1;
}
}
print(" Uppercase letters: " + toString(uppercaseCount));
print(" Lowercase letters: " + toString(lowercaseCount));
print(" Spaces: " + toString(spaceCount));
print(" Punctuation: " + toString(punctuationCount));
// ========================================
// REVERSE PRINTING
// ========================================
print("\n🔄 REVERSE CHARACTER PRINTING:");
var reverseMessage = "";
for (var i = len(message) - 1; i >= 0; i = i - 1) {
var char = message[i];
reverseMessage = reverseMessage + char;
print(" Index " + toString(i) + ": " + char);
}
print(" Reversed message: " + reverseMessage);
// ========================================
// CHARACTER SEARCH
// ========================================
print("\n🔍 CHARACTER SEARCH:");
var searchChar = "o";
var positions = [];
for (var i = 0; i < len(message); i = i + 1) {
if (message[i] == searchChar) {
push(positions, i);
}
}
print(" Character '" + searchChar + "' found at positions: ");
for (var i = 0; i < len(positions); i = i + 1) {
print(" Index " + toString(positions[i]));
}
// ========================================
// SUMMARY
// ========================================
print("\n🎉 CHARACTER PRINTER COMPLETE!");
print("✅ Successfully printed each character");
print("✅ Analyzed character statistics");
print("✅ Demonstrated reverse printing");
print("✅ Performed character search");
print("✅ Showed string indexing capabilities");
print("\n🏆 STRING INDEXING IS WORKING PERFECTLY!");
print("Bob can now process text character by character!");
print("Ready for advanced text processing tasks!");
print("\n🎊 PROGRAM COMPLETE! 🎊");