sábado, 3 de fevereiro de 2024

Salmos 119

 



¹ Bem-aventurados os retos em seus caminhos, que andam na lei do Senhor.

² Bem-aventurados os que guardam os seus testemunhos, e que o buscam com todo o coração.

³ E não praticam iniqüidade, mas andam nos seus caminhos.

⁴ Tu ordenaste os teus mandamentos, para que diligentemente os observássemos.

⁵ Quem dera que os meus caminhos fossem dirigidos a observar os teus mandamentos.

⁶ Então não ficaria confundido, atentando eu para todos os teus mandamentos.

⁷ Louvar-te-ei com retidão de coração quando tiver aprendido os teus justos juízos.

⁸ Observarei os teus estatutos; não me desampares totalmente.

⁹ Com que purificará o jovem o seu caminho? Observando-o conforme a tua palavra.

¹⁰ Com todo o meu coração te busquei; não me deixes desviar dos teus mandamentos.

¹¹ Escondi a tua palavra no meu coração, para eu não pecar contra ti.

¹² Bendito és tu, ó Senhor; ensina-me os teus estatutos.

¹³ Com os meus lábios declarei todos os juízos da tua boca.

¹⁴ Folguei tanto no caminho dos teus testemunhos, como em todas as riquezas.

¹⁵ Meditarei nos teus preceitos, e terei respeito aos teus caminhos.

¹⁶ Recrear-me-ei nos teus estatutos; não me esquecerei da tua palavra.

¹⁷ Faze bem ao teu servo, para que viva e observe a tua palavra.

¹⁸ Abre tu os meus olhos, para que veja as maravilhas da tua lei.

¹⁹ Sou peregrino na terra; não escondas de mim os teus mandamentos.

²⁰ A minha alma está quebrantada de desejar os teus juízos em todo o tempo.

²¹ Tu repreendeste asperamente os soberbos que são amaldiçoa-dos, que se desviam dos teus mandamentos.

²² Tira de sobre mim o opróbrio e o desprezo, pois guardei os teus testemunhos.

²³ Príncipes também se assentaram, e falaram contra mim, mas o teu servo meditou nos teus estatutos.

²⁴ Também os teus testemunhos são o meu prazer e os meus conselheiros.

²⁵ A minha alma está pegada ao pó; vivifica-me segundo a tua palavra.

²⁶ Eu te contei os meus caminhos, e tu me ouviste; ensina-me os teus estatutos.

²⁷ Faze-me entender o caminho dos teus preceitos; assim falarei das tuas maravilhas.

²⁸ A minha alma consome-se de tristeza; fortalece-me segundo a tua palavra.

²⁹ Desvia de mim o caminho da falsidade, e concede-me piedosamente a tua lei.

³⁰ Escolhi o caminho da verdade; propus-me seguir os teus juízos.

³¹ Apego-me aos teus testemunhos; ó Senhor, não me confundas.

³² Correrei pelo caminho dos teus mandamentos, quando dilatares o meu coração.

³³ Ensina-me, ó Senhor, o caminho dos teus estatutos, e guardá-lo-ei até o fim.

³⁴ Dá-me entendimento, e guardarei a tua lei, e observá-la-ei de todo o meu coração.

³⁵ Faze-me andar na vereda dos teus mandamentos, porque nela tenho prazer.

³⁶ Inclina o meu coração aos teus testemunhos, e não à cobiça.

³⁷ Desvia os meus olhos de contemplarem a vaidade, e vivifica-me no teu caminho.

³⁸ Confirma a tua palavra ao teu servo, que é dedicado ao teu temor.

³⁹ Desvia de mim o opróbrio que temo, pois os teus juízos são bons.

⁴⁰ Eis que tenho desejado os teus preceitos; vivifica-me na tua justiça.

⁴¹ Venham sobre mim também as tuas misericórdias, ó Senhor, e a tua salvação segundo a tua palavra.

⁴² Assim terei que responder ao que me afronta, pois confio na tua palavra.

⁴³ E não tires totalmente a palavra de verdade da minha boca, pois tenho esperado nos teus juízos.

⁴⁴ Assim observarei de contínuo a tua lei para sempre e eternamente.

⁴⁵ E andarei em liberdade; pois busco os teus preceitos.

⁴⁶ Também falarei dos teus testemunhos perante os reis, e não me envergonharei.

⁴⁷ E recrear-me-ei em teus mandamentos, que tenho amado.

⁴⁸ Também levantarei as minhas mãos para os teus mandamentos, que amei, e meditarei nos teus estatutos.

⁴⁹ Lembra-te da palavra dada ao teu servo, na qual me fizeste esperar.

⁵⁰ Isto é a minha consolação na minha aflição, porque a tua palavra me vivificou.

⁵¹ Os soberbos zombaram grandemente de mim; contudo não me desviei da tua lei.

⁵² Lembrei-me dos teus juízos antiqüíssimos, ó Senhor, e assim me consolei.

⁵³ Grande indignação se apoderou de mim por causa dos ímpios que abandonam a tua lei.

⁵⁴ Os teus estatutos têm sido os meus cânticos na casa da minha peregrinação.

⁵⁵ Lembrei-me do teu nome, ó Senhor, de noite, e observei a tua lei.

⁵⁶ Isto fiz eu, porque guardei os teus mandamentos.

⁵⁷ O Senhor é a minha porção; eu disse que observaria as tuas palavras.

⁵⁸ Roguei deveras o teu favor com todo o meu coração; tem piedade de mim, segundo a tua palavra.

⁵⁹ Considerei os meus caminhos, e voltei os meus pés para os teus testemunhos.

⁶⁰ Apressei-me, e não me detive, a observar os teus mandamentos.

⁶¹ Bandos de ímpios me despojaram, mas eu não me esqueci da tua lei.

⁶² À meia-noite me levantarei para te louvar, pelos teus justos juízos.

⁶³ Companheiro sou de todos os que te temem e dos que guardam os teus preceitos.

⁶⁴ A terra, ó Senhor, está cheia da tua benignidade; ensina-me os teus estatutos.

⁶⁵ Fizeste bem ao teu servo, Senhor, segundo a tua palavra.

⁶⁶ Ensina-me bom juízo e ciência, pois cri nos teus mandamentos.

⁶⁷ Antes de ser afligido andava errado; mas agora tenho guardado a tua palavra.

⁶⁸ Tu és bom e fazes bem; ensina-me os teus estatutos.

⁶⁹ Os soberbos forjaram mentiras contra mim; mas eu com todo o meu coração guardarei os teus preceitos.

⁷⁰ Engrossa-se-lhes o coração como gordura, mas eu me recreio na tua lei.

⁷¹ Foi-me bom ter sido afligido, para que aprendesse os teus estatutos.

⁷² Melhor é para mim a lei da tua boca do que milhares de ouro ou prata.

⁷³ As tuas mãos me fizeram e me formaram; dá-me inteligência para entender os teus mandamentos.

⁷⁴ Os que te temem alegraram-se quando me viram, porque tenho esperado na tua palavra.

⁷⁵ Bem sei eu, ó Senhor, que os teus juízos são justos, e que segundo a tua fidelidade me afligiste.

⁷⁶ Sirva pois a tua benignidade para me consolar, segundo a palavra que deste ao teu servo.

⁷⁷ Venham sobre mim as tuas misericórdias, para que viva, pois a tua lei é a minha delícia.

⁷⁸ Confundam-se os soberbos, pois me trataram duma maneira perversa, sem causa; mas eu meditarei nos teus preceitos.

⁷⁹ Voltem-se para mim os que te temem, e aqueles que têm conhecido os teus testemunhos.

⁸⁰ Seja reto o meu coração nos teus estatutos, para que não seja confundido.

⁸¹ Desfalece a minha alma pela tua salvação, mas espero na tua palavra.

⁸² Os meus olhos desfalecem pela tua palavra; entrementes dizia: Quando me consolarás tu?

⁸³ Pois estou como odre na fumaça; contudo não me esqueço dos teus estatutos.

⁸⁴ Quantos serão os dias do teu servo? Quando me farás justiça contra os que me perseguem?

⁸⁵ Os soberbos me cavaram covas, o que não é conforme a tua lei.

⁸⁶ Todos os teus mandamentos são verdade. Com mentiras me perseguem; ajuda-me.

⁸⁷ Quase que me têm consumido sobre a terra, mas eu não deixei os teus preceitos.

⁸⁸ Vivifica-me segundo a tua benignidade; assim guardarei o testemunho da tua boca.

⁸⁹ Para sempre, ó Senhor, a tua palavra permanece no céu.

⁹⁰ A tua fidelidade dura de geração em geração; tu firmaste a terra, e ela permanece firme.

⁹¹ Eles continuam até ao dia de hoje, segundo as tuas ordenações; porque todos são teus servos.

⁹² Se a tua lei não fora toda a minha recreação, há muito que pereceria na minha aflição.

⁹³ Nunca me esquecerei dos teus preceitos; pois por eles me tens vivificado.

⁹⁴ Sou teu, salva-me; pois tenho buscado os teus preceitos.

⁹⁵ Os ímpios me esperam para me destruírem, mas eu considerarei os teus testemunhos.

⁹⁶ Tenho visto fim a toda a perfeição, mas o teu mandamento é amplíssimo.

⁹⁷ Oh! quanto amo a tua lei! É a minha meditação em todo o dia.

⁹⁸ Tu, pelos teus mandamentos, me fazes mais sábio do que os meus inimigos; pois estão sempre comigo.

⁹⁹ Tenho mais entendimento do que todos os meus mestres, porque os teus testemunhos são a minha meditação.

¹⁰⁰ Entendo mais do que os antigos; porque guardo os teus preceitos.

¹⁰¹ Desviei os meus pés de todo caminho mau, para guardar a tua palavra.

¹⁰² Não me apartei dos teus juízos, pois tu me ensinaste.

¹⁰³ Oh! quão doces são as tuas palavras ao meu paladar, mais doces do que o mel à minha boca.

¹⁰⁴ Pelos teus mandamentos alcancei entendimento; por isso odeio todo falso caminho.

¹⁰⁵ Lâmpada para os meus pés é tua palavra, e luz para o meu caminho.

¹⁰⁶ Jurei, e o cumprirei, que guardarei os teus justos juízos.

¹⁰⁷ Estou aflitíssimo; vivifica-me, ó Senhor, segundo a tua palavra.

¹⁰⁸ Aceita, eu te rogo, as oferendas voluntárias da minha boca, ó Senhor; ensina-me os teus juízos.

¹⁰⁹ A minha alma está de contínuo nas minhas mãos; todavia não me esqueço da tua lei.

¹¹⁰ Os ímpios me armaram laço; contudo não me desviei dos teus preceitos.

¹¹¹ Os teus testemunhos tenho eu tomado por herança para sempre, pois são o gozo do meu coração.

¹¹² Inclinei o meu coração a guardar os teus estatutos, para sempre, até ao fim.

¹¹³ Odeio os pensamentos vãos, mas amo a tua lei.

¹¹⁴ Tu és o meu refúgio e o meu escudo; espero na tua palavra.

¹¹⁵ Apartai-vos de mim, malfeitores, pois guardarei os mandamentos do meu Deus.

¹¹⁶ Sustenta-me conforme a tua palavra, para que viva, e não me deixes envergonhado da minha esperança.

¹¹⁷ Sustenta-me, e serei salvo, e de contínuo terei respeito aos teus estatutos.

¹¹⁸ Tu tens pisado aos pés todos os que se desviam dos teus estatutos, pois o engano deles é falsidade.

¹¹⁹ Tu tiraste da terra todos os ímpios, como a escória, por isso amo os teus testemunhos.

¹²⁰ O meu corpo se arrepiou com temor de ti, e temi os teus juízos.

¹²¹ Fiz juízo e justiça; não me entregues aos meus opressores.

¹²² Fica por fiador do teu servo para o bem; não deixes que os soberbos me oprimam.

¹²³ Os meus olhos desfaleceram pela tua salvação e pela promessa da tua justiça.

¹²⁴ Usa com o teu servo segundo a tua benignidade, e ensina-me os teus estatutos.

¹²⁵ Sou teu servo; dá-me inteligência, para entender os teus testemunhos.

¹²⁶ Já é tempo de operares, ó Senhor, pois eles têm quebrantado a tua lei.

¹²⁷ Por isso amo os teus mandamentos mais do que o ouro, e ainda mais do que o ouro fino.

¹²⁸ Por isso estimo todos os teus preceitos acerca de tudo, como retos, e odeio toda falsa vereda.

¹²⁹ Maravilhosos são os teus testemunhos; portanto, a minha alma os guarda.

¹³⁰ A entrada das tuas palavras dá luz, dá entendimento aos símplices.

¹³¹ Abri a minha boca, e respirei, pois que desejei os teus mandamentos.

¹³² Olha para mim, e tem piedade de mim, conforme usas com os que amam o teu nome.

¹³³ Ordena os meus passos na tua palavra, e não se apodere de mim iniqüidade alguma.

¹³⁴ Livra-me da opressão do homem; assim guardarei os teus preceitos.

¹³⁵ Faze resplandecer o teu rosto sobre o teu servo, e ensina-me os teus estatutos.

¹³⁶ Rios de águas correm dos meus olhos, porque não guardam a tua lei.

¹³⁷ Justo és, ó Senhor, e retos são os teus juízos.

¹³⁸ Os teus testemunhos que ordenaste são retos e muito fiéis.

¹³⁹ O meu zelo me consumiu, porque os meus inimigos se esqueceram da tua palavra.

¹⁴⁰ A tua palavra é muito pura; portanto, o teu servo a ama.

¹⁴¹ Pequeno sou e desprezado, porém não me esqueço dos teus mandamentos.

¹⁴² A tua justiça é uma justiça eterna, e a tua lei é a verdade.

¹⁴³ Aflição e angústia se apoderam de mim; contudo os teus mandamentos são o meu prazer.

¹⁴⁴ A justiça dos teus testemunhos é eterna; dá-me inteligência, e viverei.

¹⁴⁵ Clamei de todo o meu coração; escuta-me, Senhor, e guardarei os teus estatutos.

¹⁴⁶ A ti te invoquei; salva-me, e guardarei os teus testemunhos.

¹⁴⁷ Antecipei o cair da noite, e clamei; esperei na tua palavra.

¹⁴⁸ Os meus olhos anteciparam as vigílias da noite, para meditar na tua palavra.

¹⁴⁹ Ouve a minha voz, segundo a tua benignidade; vivifica-me, ó Senhor, segundo o teu juízo.

¹⁵⁰ Aproximam-se os que se dão a maus tratos; afastam-se da tua lei.

¹⁵¹ Tu estás perto, ó Senhor, e todos os teus mandamentos são a verdade.

¹⁵² Acerca dos teus testemunhos soube, desde a antiguidade, que tu os fundaste para sempre.

¹⁵³ Olha para a minha aflição, e livra-me, pois não me esqueci da tua lei.

¹⁵⁴ Pleiteia a minha causa, e livra-me; vivifica-me segundo a tua palavra.

¹⁵⁵ A salvação está longe dos ímpios, pois não buscam os teus estatutos.

¹⁵⁶ Muitas são, ó Senhor, as tuas misericórdias; vivifica-me segundo os teus juízos.

¹⁵⁷ Muitos são os meus perseguidores e os meus inimigos; mas não me desvio dos teus testemunhos.

¹⁵⁸ Vi os transgressores, e me afligi, porque não observam a tua palavra.

¹⁵⁹ Considera como amo os teus preceitos; vivifica-me, ó Senhor, segundo a tua benignidade.

¹⁶⁰ A tua palavra é a verdade desde o princípio, e cada um dos teus juízos dura para sempre.

¹⁶¹ Príncipes me perseguiram sem causa, mas o meu coração temeu a tua palavra.

¹⁶² Folgo com a tua palavra, como aquele que acha um grande despojo.

¹⁶³ Abomino e odeio a mentira; mas amo a tua lei.

¹⁶⁴ Sete vezes no dia te louvo pelos juízos da tua justiça.

¹⁶⁵ Muita paz têm os que amam a tua lei, e para eles não há tropeço.

¹⁶⁶ Senhor, tenho esperado na tua salvação, e tenho cumprido os teus mandamentos.

¹⁶⁷ A minha alma tem observado os teus testemunhos; amo-os excessivamente.

¹⁶⁸ Tenho observado os teus preceitos, e os teus testemunhos, porque todos os meus caminhos estão diante de ti.

¹⁶⁹ Chegue a ti o meu clamor, ó Senhor; dá-me entendimento conforme a tua palavra.

¹⁷⁰ Chegue a minha súplica perante a tua face; livra-me segundo a tua palavra.

¹⁷¹ Os meus lábios proferiram o louvor, quando me ensinaste os teus estatutos.

¹⁷² A minha língua falará da tua palavra, pois todos os teus mandamentos são justiça.

¹⁷³ Venha a tua mão socorrer-me, pois escolhi os teus preceitos.

¹⁷⁴ Tenho desejado a tua salvação, ó Senhor; a tua lei é todo o meu prazer.

¹⁷⁵ Viva a minha alma, e louvar-te-á; ajudem-me os teus juízos.

¹⁷⁶ Desgarrei-me como a ovelha perdida; busca o teu servo, pois não me esqueci dos teus mandamentos. 




domingo, 13 de março de 2022

C++ Builder - retornando números primos ou não primos


Criamos uma função simples e funcional
capaz de retornar números primos ou não primos.
ora, isto é muito básico e totalmente didático,
é indicado aos iniciantes em qualquer linguagem
de programação, poderia ser escrito em menos 
de dez linhas de códigos, mas como me sobrou
um pouco mais de tempo no dia de hoje, resolvi
escrevê-los tudo na IDE da Embarcadero, o C++ Builder,
com interface em janelas, mas que também poderia
ser escrito para rodar num console utilizando
os excelentes compiladores antigos da Borlan,
para C ou C++.
Acompanhem no vídeo esta brincadeira didática,
Voltada aos programadores iniciantes:



//---------------------------------------------------------------------------

#include <vcl.h>
#include <stdio.h>
#include <ctype.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
TLabel *Label1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
	: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Informe ( TObject *Sender ) {
	Canvas -> Font -> Size = 11;
	Canvas -> Font -> Name = "Garamond";
	Canvas -> Font -> Color = clBlue;
	Canvas -> TextOut ( 240, 250, "Por: " );
	Canvas -> Font -> Color = clRed;
	Canvas -> TextOut ( 270, 250, "Samuel Lima" );
	Canvas -> Font -> Color = clYellow;
	Canvas -> TextOut ( 240, 265, "sa_sp10@hotmail.com" );
	Canvas -> Font -> Name = "Garamond";
}
//--------------------------------------------------------------------------
 int Ret_prim_NPrim ( int n ) {
	int j = 0;
	for ( int i = 2; i <= n / 2; i++ )
		if ( ! ( n % i ) )
			j++;
	return ( j );
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Label_Manual ( TObject* Sender ) {

	 Edit1 -> Clear ( );
         Edit1 -> Font -> Name = "alarm clock";
         Edit1 -> Font -> Size = 11;
	 Edit1 -> Color = static_cast < TColor > ( RGB ( 0, 255, 255 ) );
         Edit1 -> Font -> Style = TFontStyles ( ) << fsBold;
	 Edit1 -> Font -> Color = static_cast < TColor > ( RGB ( 0, 0, 0 ) );
         Edit1 -> BevelWidth = 3;
	 //Edit1 -> BevelKind = bkFlat;
	 Edit1 -> BorderStyle = bsSingle;
         Edit1 -> Width = 60;
	 Edit1 -> Height = 19;
         Edit1 -> Left = 240;
	 Edit1 -> Top = 170;

		Image1 -> Width = 40;
		Image1 -> Height = 39;
		Image1 -> Left = 310;
		Image1 -> Top = 170;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Label_2 ( int X, int Y,
	int R, int G, int B, bool transparent, String FontName, int S,
	TFontStyles style, int R1, int G1, int B1, String str_1 ) {
    Label1 = new TLabel ( Form1 );
    Label1 -> Parent = Form1;
    Label1 -> AutoSize = true;
    Label1 -> Transparent = transparent;
    Label1 -> Color = static_cast < TColor > ( RGB ( R, G, B ) );
    Label1 -> WordWrap = false;
    Label1 -> Font -> Name = FontName;
    Label1 -> Font -> Size = S;
    Label1 -> Font-> Style = style;
    Label1 -> Font -> Color = static_cast < TColor > ( RGB ( R1, G1, B1 ) );
    Label1 -> Left = X;
    Label1 -> Top = Y;
    Label1 -> Caption = str_1;
}
//--------------------------------------------------------------------------
void __fastcall TForm1::OnPaint ( TObject *Sender){
 Canvas -> Font-> Style = TFontStyles ( ) << fsBold << fsItalic;
 Canvas -> Font -> Size = 11;
 Canvas -> Font -> Name = "Tahoma";
 Canvas -> Pen -> Width = 10;
 Canvas -> Pen -> Color = clBlue;
 Canvas -> RoundRect ( 05, 05, 595, 295, 20, 20 );

 Informe ( Sender );
}
 //---------------------------------------------------------------------------

//---------------------------------------------------------------------------
void __fastcall TForm1::Image1Click ( TObject *Sender ) {
	  Image1 -> Picture -> LoadFromFile ("Sem título_3.bmp" );
			Label_2 ( 240, 150, 255, 255, 0, false, "Consolas", 8,
			  TFontStyles ( ) << fsBold << fsItalic, 0, 0, 0, "Digite um número" );

			Label_2 ( 170, 13, 255, 0, 0, false, "Consolas", 11,
			  TFontStyles ( ) << fsBold << fsItalic, 0, 0, 0, "RETORNANDO NÚMERO PRIMO OU NÃO PRIMO" );

		 int Prim;
		 Prim = StrToInt ( Edit1 -> Text );

		 Label_2 ( 240, 200, 255, 165, 0, false, "Consolas", 10,
			  TFontStyles ( ) << fsBold << fsItalic, 0, 0, 0, "                 " );

				 Label_2 ( 280, 200, 255, 165, 0, false, "Consolas", 10,
			  TFontStyles ( ) << fsBold << fsItalic, 0, 0, 0, Ret_prim_NPrim ( Prim ) ?  "Não é Primo" : " É Primo" );

		 Label_2 ( 240, 200, 255, 0, 0, false, "Consolas", 10,
			  TFontStyles ( ) << fsBold << fsItalic, 0, 0, 0, Prim );

		 Edit1 -> Clear ( );
		 Edit1 -> SetFocus ( );
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate ( TObject *Sender ) {
		Label_Manual ( Sender );

		Label_2 ( 170, 13, 0, 0, 0, false, "Consolas", 11,
			  TFontStyles ( ) << fsBold << fsItalic, 255, 0, 0, "RETORNANDO NÚMERO PRIMO OU NÃO PRIMO" );

		Label_2 ( 240, 150, 135, 206, 235, false, "Consolas", 8,
			  TFontStyles ( ) << fsBold << fsItalic, 0, 0, 0, "Digite um número" );

		Label_2 ( 315, 170, 244, 244, 244, true, "Consolas", 11,
			  TFontStyles ( ) << fsBold << fsItalic, 0, 0, 0, "Ok" );
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Edit1MouseEnter ( TObject *Sender ) {
	  Label_2 ( 170, 13, 0, 0, 0, false, "Consolas", 11,
			  TFontStyles ( ) << fsBold << fsItalic, 255, 0, 0, "RETORNANDO NÚMERO PRIMO OU NÃO PRIMO" );
}
//---------------------------------------------------------------------------






domingo, 6 de março de 2022

C++ Builder - renomeando tipos com typedef

 

Todos devem saber que é perfeitamente possível a criação
de novos nomes para qualquer tipo suportado pelo C usando
o comando typedef cuja sintaxe é: typedef tipo ( novo_nome ).
A declaração de um novo nome para um tipo qualquer aceito,
é preferivelmente feito logo após as declarações das bibliotecas
que serão utiizadas pelo seu programa.
O aprendiz de linguagem C, deve ficar sabendo que com isto
não estamos criando um novo tipo de dados, más apenas renomeando
um tipo existente e aceito no C.
Um programador de C, deve achar isto particularmente muito útil usar
O comando typedef para renomear tipos mais complexos, como as estruturas.
As estruturas criadas no exemplo que trago agora foram bem definidas
como tipos através do comando typedef.
Na verdade o C, entende uma estrutura como qualquer outro tipo de dado,
e o novo nome é tido como um genuíno identificador.
Aplicar typedef em declarações de variáveis estrutura, traz simplicidade
e clareza no desenvolvimento de projetos, e o seu uso se estende
as uniões e enumerações.
Neste programa fiz algumas renomeações de tipos usando
o comando typedef, aplicado a alguns tipos de estrutura, procurando
esclarecer na prática como usar este comando
que certamente o veremos muito na medida que nossos programas
forem ficando mais avançados.

//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"

#include <sstream>
#include <iostream>
#include <iomanip>

using namespace std;
using std::setw;

//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;

String str_1;
TLabel *Lbl;
int x;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
}
void __fastcall Label_2 ( int X, int Y,
                          int R, int G, int B, String FontName, int S,
                          TFontStyles style, int R1, int G1, int B1, String str_1 );
//--------------------------------------------------------------------------
typedef char Dirigente;
typedef char Nomes;
typedef struct Diretor Direcao;
typedef struct Notas Notas_Alunos;
typedef float Vet_Notas;
typedef struct Escola Aula;

//---------------------------------------------------------------------------
struct Diretor {
    Dirigente Dire_tor [ 48 ];
};
//---------------------------------------------------------------------------
Direcao Diretor_De_Escola [ ] = {
    "Um Diretor de Escola da\n",
    "rede Estadual de ensino\n",
    "listou seus melhores alunos.",
    "Pressione qualquer tecla\n    para conhecê-los"};
//---------------------------------------------------------------------------
struct Notas {
    Vet_Notas No_tas = 0.00;
};
//---------------------------------------------------------------------------
Notas_Alunos Aluno [ ] = { 9.5, 8.9, 6.4, 7.5, 8.2, 7.7, 6.9, 9.3, 9.1, 8.5 };
//---------------------------------------------------------------------------
struct Escola {
    Nomes nome [ 16 ];
};
//---------------------------------------------------------------------------
Aula Alu_no [ ] = { { "Ana Célia      " },
                    { "Eder Costa     " },
                    { "Humberto Gomes " },
                    { "Dijalma Lacerda" },
                    { "Caroline Silva " },
                    { "Igor Gonçalves " },
                    { "Bruna Carla    " },
                    { "Fábio Quadros  " },
                    { "Geany Barros   " },
                    { "Jaqueline Vega " }};

//----------------------------------------------------------------------------
void __fastcall TForm1::Label_2 ( int X, int Y,
                                  int R, int G, int B, String FontName, int S,
                                  TFontStyles style, int R1, int G1, int B1, String str_1 ) {

    Label1 = new TLabel ( Form1 );
    Label1 -> Parent = Form1;
    Label1 -> AutoSize = true;
    Label1 -> Transparent = false;
    Label1 -> Color = static_cast < TColor > ( RGB ( R, G, B ) );
    Label1 -> WordWrap = false;
    Label1 -> Font -> Name = FontName;
    Label1 -> Font -> Size = S;
    Label1 -> Font-> Style = style;
    Label1 -> Font -> Color = static_cast < TColor > ( RGB ( R1, G1, B1 ) );
    Label1 -> Left = X;
    Label1 -> Top = Y;
    Label1 -> Caption = str_1;
}
//--------------------------------------------------------------------------
void __fastcall TForm1::Informe_2 ( TObject *Sender ) {
    Label_2 ( 230, 250, 244, 244, 244, "Consolas", 11,
              TFontStyles ( ) << fsBold << fsItalic, 255, 0, 0, "Por: " );

    Label_2 ( 270, 250, 244, 244, 244, "Consolas", 11,
              TFontStyles ( ) << fsBold << fsItalic, 0, 0, 0, "Samuel Lima" );

    Label_2 ( 230, 265, 244, 244, 244, "Consolas", 11,
              TFontStyles ( ) << fsBold << fsItalic, 0, 0, 255, "sa_sp10@hotmail.com" );
}
//--------------------------------------------------------------------------
void __fastcall TForm1::Imprime_Nomes_Alunos ( ){
    //Limpa a tela aplicando a mesma cor do form sobre as fontes
    for ( int i = 0; i < 10; i++ ) {
        for ( int j = 0; j < 10; j++ ) {
            Label_2 ( 180 + j * 25, 50 + i * 14, 240, 240, 240, "Consolas", 11,
                      TFontStyles ( ) << fsBold << fsItalic, 0, 0, 0, "    " );
        }
    }

    Label_2 ( 180, 40, 144, 238, 144, "Consolas", 11,
              TFontStyles ( ) << fsBold << fsItalic, 0, 0, 0, "Veja abaixo os nomes dos Alunos " );

    for ( int i = 0; i < 10; i++ ) {
        Label_2 ( 240, 80 + i * 17, 244, 244, 244, "Consolas", 11,
                  TFontStyles ( ) << fsBold << fsItalic, 0, 100, 0, Alu_no [ i ].nome );
    }


    for ( int i = 0; i < 3; i++ ) {
        for ( int j = 0; j < 10; j++ ) {
            Label_2 ( 170 + j * 25, 250 + i * 10, 240, 240, 240, "Consolas", 11,
                      TFontStyles ( ) << fsBold << fsItalic, 0, 0, 0, "    " );
        }
    }

    Label_2 ( 210, 270, 144, 238, 144, "Consolas", 11,
              TFontStyles ( ) << fsBold << fsItalic, 0, 0, 0, "PRESSIONE QUALQUER TECLA" );
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Imprime_Nomes_Alunos_Ordenados ( ) {
    //Limpa a tela aplicando a mesma cor do form sobre as fontes
    for ( int i = 0; i < 10; i++ ) {
        for ( int j = 0; j < 10; j++ ) {
            Label_2 ( 240 + j * 25, 50 + i * 14, 240, 240, 240, "Consolas", 11,
                      TFontStyles ( ) << fsBold << fsItalic, 0, 0, 0, "        " );
        }
    }

    int i, j;
    for ( i = 0; i < 10 - 1; i++ ) {
        for ( j = i + 1; j < 10; j++ ) {
            if ( strcmp ( Alu_no [ i ].nome, Alu_no [ j ].nome ) > 0 ) {
                Escola aux = Alu_no [ i ];
                Alu_no [ i ] = Alu_no [ j ];
                Alu_no [ j ] = aux;
            }
        }
    }

    Label_2 ( 180, 40, 144, 238, 144, "Consolas", 11,
              TFontStyles ( ) << fsBold << fsItalic, 0, 0, 0, "Abaixo os nomes dos alunos ordenados" );

    for ( int i = 0; i < 10; i++ ) {
        Label_2 ( 240, 80 + i * 17, 240, 240, 240, "Consolas", 11,
                  TFontStyles ( ) << fsBold << fsItalic, 0, 0, 139, Alu_no [ i ].nome );
    }

}
//---------------------------------------------------------------------------
void __fastcall TForm1::Imprime_Nomes_Notas ( ) {
    //Limpa a tela aplicando a mesma cor do form sobre as fontes
    for ( int i = 0; i < 15; i++ ) {
        for ( int j = 0; j < 10; j++ ) {
            Label_2 ( 240 + j * 25, 50 + i * 14, 240, 240, 240, "Consolas", 11,
                      TFontStyles ( ) << fsBold << fsItalic, 0, 0, 0, "    " );
        }
    }
    int i;

    string str_1;

    const  char *Conv_1;

    Label_2 ( 160, 40, 144, 238, 144, "Consolas", 11,
              TFontStyles ( ) << fsBold << fsItalic, 0, 0, 0, "Abaixo estão os nomes e as notas dos alunos" );

    for ( i = 0; i < 10; i++ ) {
        //stringstream deve ser declarado aqui
        stringstream sst_1;

        Label_2 ( 210, 80 + i * 18, 240, 240, 240, "Consolas", 11,
                  TFontStyles ( ) << fsBold << fsItalic, 0, 0, 0, Alu_no [ i ].nome );
        sst_1 << endl;
        sst_1 << setw ( 4 ) << Aluno [ i ].No_tas;
        str_1 += sst_1.str ( );

        //Convertendo std::string em const  char
        Conv_1 = str_1.c_str ( );

    }
    Label_2 ( 350, 62, 240, 240, 240, "Consolas", 11,
              TFontStyles ( ) << fsItalic, 255, 0, 0, Conv_1 );
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Imprime_Notas ( ) {
    //Limpa a tela aplicando a mesma cor do form sobre as fontes
    for ( int i = 0; i < 15; i++ ) {
        for ( int j = 0; j < 10; j++ ) {
            Label_2 ( 150 + j * 35, 40 + i * 15, 240, 240, 240, "Consolas", 11,
                      TFontStyles ( ) << fsBold << fsItalic, 0, 0, 0, "     " );
        }
    }

    int a, i;
    string str_1;
    const  char *Conv_1;

    Label_2 ( 180, 50, 144, 238, 144, "Consolas", 11,
              TFontStyles ( ) << fsBold << fsItalic, 0, 0, 0, "Estas são as notas dos alunos" );

    for ( i = 0; i < 10; i++ ) {
        //stringstream deve ser declarado aqui
        stringstream sst_1;
        sst_1 << setw ( 4 ) << Aluno [ i ].No_tas << " ";
        str_1 += sst_1.str ( );

        //Convertendo std::string em const  char
        Conv_1 = str_1.c_str ( );
    }
    Label_2 ( 100, 80, 240, 240, 240, "Consolas", 11,
              TFontStyles ( ) << fsItalic, 255, 0, 0, Conv_1 );
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Imprime_Notas_Ordenadas ( ) {

    int a = 0, i, j, ord;
    float aux;
    string str_1;
    const  char *Conv_1;

    Label_2 ( 180, 130, 144, 238, 144, "Consolas", 11,
              TFontStyles ( ) << fsBold << fsItalic, 0, 0, 0, "Estas são as notas dos alunos ordenadas" );

    ord = 0;
    while ( ord == 0 ) {
        ord = 1;
        for ( a = 0; a < 10; a++ ) {
            if ( Aluno [ a ].No_tas > Aluno [ ( a + 1 ) ].No_tas ) {
                aux = Aluno [ a ].No_tas;
                Aluno [ a ].No_tas = Aluno [ ( a + 1 ) ].No_tas;
                Aluno [ ( a + 1 ) ].No_tas = aux;
                ord = 0;
            }
        }
    }

    for ( i = 1; i <= 10; i++ ) {
        //stringstream deve ser declarado aqui
        stringstream sst_1;
        sst_1 << setw ( 4 ) << Aluno [ i ].No_tas << " ";
        str_1 += sst_1.str ( );
        //Convertendo std::string em const  char
        Conv_1 = str_1.c_str ( );
    }
    Label_2 ( 100, 160, 240, 240, 240, "Consolas", 11,
              TFontStyles ( ) << fsItalic, 255, 0, 0, Conv_1 );
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormKeyDown ( TObject *Sender, WORD &Key,
                                      TShiftState Shift ) {
    x++;

    if ( x == 1 ) {
        Imprime_Nomes_Alunos ( );
    }
    if ( x == 2 ) {
        Imprime_Nomes_Alunos_Ordenados ( );
    }
    if ( x == 3 ) {
        Imprime_Nomes_Notas ( );
    }
    if ( x == 4 ) {
        Imprime_Notas ( );
    }
    if ( x == 5 ) {
        Imprime_Notas_Ordenadas ( );
        Label_2 ( 180, 265, 244, 244, 244, "Consolas", 15,
                  TFontStyles ( ) << fsBold << fsItalic, 0, 0, 0, "                          " );
        Informe_2 ( Sender );
    }
    if ( x == 6 )
        Close ( );
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormShow ( TObject *Sender ) {
    string str_1;
    string str_2;
    string str_3;

    const  char *Conv_1;
    const  char *Conv_2;
    const  char *Conv_3;

    for ( int i = 0; i < 3; i++ ) {
        stringstream sst_1;
        sst_1 << setw ( 7 ) << + Diretor_De_Escola [ i ].Dire_tor;
        str_1 += sst_1.str ( );
    }
    //Convertendo std::string em const  char
    Conv_1 = str_1.c_str ( );
    Label_2 ( 180, 50, 176, 196, 222, "Consolas", 11,
              TFontStyles ( ) << fsBold << fsItalic, 0, 0, 0, Conv_1 );

    Label_2 ( 200, 250, 135, 206, 250, "Consolas", 11,
              TFontStyles ( ) << fsBold << fsItalic, 0, 0, 0, Diretor_De_Escola [ 3 ].Dire_tor );
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormPaint ( TObject *Sender ) {
    Canvas -> Pen -> Width = 10;

    Canvas -> Pen -> Color = clRed;
    //Colorindo as bordas do roundrect ( Moldura ) com rgb
    Canvas -> Pen -> Color = static_cast < TColor > ( RGB ( 0, 100, 0 ) );
    Canvas -> RoundRect ( 05, 05, 595, 295, 25, 25 );
    Canvas -> Font -> Size = 13;
    Canvas -> Font -> Name = "Arial";
    Canvas -> Font -> Color = clRed;
    Canvas -> Font-> Style = TFontStyles ( ) << fsBold << fsItalic;

    Canvas -> TextOut ( 130, 12, "C++ BUILDER - TYPEDEF RENOMEANDO TIPOS" );
}
//---------------------------------------------------------------------------