thegoodfellas/blogset-br huggingface dataset:
"triangulos"A terceira funcao requisitada pelo professor foi uma que tracasse um triangulo dados tres pontos. Assim, essa funcao faz nada mais do que tracar uma linha entre cada um dos vertices. Muito simples. Por isso e um "triangulo", pois um de verdade seria preenchido. Segue o codigo.void DrawTriangle(pixel_t p1, pixel_t p2, pixel_t p3) { DrawLine(p1, p2); DrawLine(p2, p3); DrawLine(p3, p1);}Executando na funcao principal MyGlDraw o seguinte codigo // x y r g b a struct composePixel(250, 50, 255, 0, 0, 255, &p0); composePixel(100, 200, 255, 255, 0, 255, &p1); composePixel(400, 100, 0, 0, 255, 255, &p2); DrawTriangle(p0, p1, p2);Obtem-se a figura abaixo.DrawTriangle(p0, p1, p2), de coordenadas e cores descritas no codigo anterior.Continua na terceira parteReferenciasFOLEY et al. Computer Graphics - Principles and Practice with C. 2a ed. Addison-Wesley.MONTERA, Luciana. Interpolacao. Facom/UFMS. [Link]
'$2a$15$abcdefghijklmnopqrstuv$'O problema e que este nao e unico, nem aleatorio. As letras utilizadas foram 22 caracteres dentro dos conjuntos a-z, A-Z e 0-9. Idealmente deveriamos utilizar uma funcao aleatoria, que poderia utilizar um timestamp, ou ate mesmo outro metodo maluco! Eis um salt mais ideal:$salt = '$2a$15$Ku2hb./9aA71tPo/E015h.$'Vamos ver como ele e composto - sao tres partes. A primeira, $2a$, e um identificador para informar ao PHP que estamos utilizando o algoritmo BlowFish. A segunda parte, 15, e o parametro de custo. E um numero entre 4 e 31, que indica o numero de iteracoes do algoritmo - basicamente, quanto maior o numero, mais demorado e o ataque a forca bruta, e mais demorada e a geracao da senha.Para gerar um salt aleatorio, pode-se utilizar o codigo a seguir:$salt = '$2a$10$';$salt .= strtr(base64_encode(mcrypt_create_iv(16, MCRYPT_DEV_URANDOM)),'+','.');Aplicando e verificando o hashAplicar o hash e tao simples quanto isto:$hash = crypt($senha, $salt);E pronto, temos o hash correspondente, pronto para ser armazenado no banco de dados.Para verificar se uma senha e valida, utiliza-se o mesmo metodo, mas no lugar do salt fornecemos o hash armazenado no banco de dados, da seguinte maneira:$hashArmazenado = '$2a$15$Ku2hb./9aA71tPo/E015h.LsNjXrZe8pyRwXOCpSnGb0nPZuxeZP2';$senhaATestar = 'passwords1';if( crypt($senhaATestar, $hashArmazenado) === $hashArmazenado ){ echo 'Voce entrou!';} else{ echo 'Senha invalida';}Aplicar o hash na senha utilizando seu proprio hash retorna o mesmo hash. Isto e, se a senha a ser testada estiver correta, aplicar a funcao crypt() fornecendo como salt o hash armazenado anteriormente retorna o proprio hash. Simples assim.Consideracoes adicionaisSe voce esta levando a seguranca do seu sistema a serio, adote outros mecanismos para prevenir ataques as contas de usuarios, como:Aumentar exponencialmente o tempo de espera apos logins incorretosLimitar a quantidade de logins incorretosEnviar um email ao usuario para desbloquear a contaExiga senhas fortes (minusculas, maiusculas, numeros e simbolos, por exemplo)Nao limite o tamanho das senhasReferenciasStoring passwords with PHP. In: <http://codular.com/storing-passwords-php>How to store passwords safely with PHP and MySQL. In: <http://alias.io/2010/01/store-passwords-safely-with-php-and-mysql/>
Continuacao da segunda parteTracando linhas: outro metodoOutro metodo que encontrei para tracar as linhas (e que foi sugerido pelo professor) e aplicar reflexoes na linha de forma que sejam resumidas ao caso original, com 0 < m < 1. Analisemos, entao, como fazer as reflexoes.E conveniente salientar que os processos de reflexao sao relativos a um determinado eixo ou linha. Mas nosso sistema de coordenadas possui apenas coordenadas positivas. Como fazer, entao? Adotando um referencial diferente da origem do sistema. Assim, a nossa referencia sera o primeiro ponto fornecido, e retas tracadas a partir dele.Analisemos, entao, como fazer a reflexao para m > 1. Veja a imagem a seguir.Dados os pontos (x0, y0) e (x, y), deseja-se mudar este ultimo de tal forma que a inclinacao seja menor que 1, transformando-o em (x', y') atraves da reflexao em torno da reta m = 1, que passa pelo ponto de referencia (x0, y0). Observando as distancias relativas a e b, e facil deduzir que:Separando as coordenadas do ponto final, temos:Nosso algoritmo, assim, deve primeiro refletir os pontos, calcular sua posicao, e depois refletir de volta para colocar na tela.Ja para -1 < m < 0, temos:E obvio queE, finalmente, para m < -1, basta aplicar as duas reflexoes anteriores: uma para deslocar o ponto final para o quadrante positivo, e outra para reduzir o coeficiente angular.Para fazer as reflexoes em torno da reta m = 1, criei uma funcao separada, que recebe o ponto de referencia e o ponto a ser refletido.void reflectXY(pixel_t p0, pixel_t* p1) { unsigned short int x = p1->x; p1->x = p0.x + p1->y - p0.y; p1->y = p0.y + x - p0.x;}Assim, segue o algoritmo baseado na logica apresentada.void DrawLine(pixel_t p0, pixel_t p1) { int dx = p1.x - p0.x; int dy = p1.y - p0.y; bool isXYReflected = false, isXReflected = false, isNegXYReflected = false; if(dx < 0) { // if x_end < x_start, switch positions pixel_t temp = p0; p0 = p1; p1 = temp; dx = -dx; dy = -dy; } if(dy > dx) { // m > 1 isXYReflected = true; reflectXY(p0, &p1); int t = dy; // switch dy and dx dy = dx; dx = t; } else if(dy < 0 && -dy <= dx) { // -1 < m < 0 isXReflected = true; dy = -dy; } else if(dy < 0 && -dy > dx) { // m < -1 isNegXYReflected = true; p1.y = 2*p0.y - p1.y; // apply both reflections above reflectXY(p0, &p1); int t = -dy; dy = dx; dx = t; } pixel_t cur = p0; PutPixel(p0); int d = 2*dy - dx; // d_start while(cur.x < p1.x) { // for each x if(d < 0) { //midpoint BELOW the line d += 2*dy; cur.x++; } else { // midpoint ABOVE the line d += 2*(dy - dx); cur.x++; cur.y++; } interpolateColor(p0, &cur, p1); if(isXYReflected) { // reflect back to plot ( m > 1) pixel_t temp = cur; reflectXY(p0, &temp); PutPixel(temp); } else if(isXReflected){ // -1 < m < 0 pixel_t temp = cur; temp.y
= 2*p0.y - temp.y; PutPixel(temp); } else if(isNegXYReflected){ // m < -1 (apply both above) pixel_t temp = cur; reflectXY(p0, &temp); temp.y = 2*p0.y - temp.y; PutPixel(temp); } else PutPixel(cur); } if(isXYReflected) // end pixel (reflected for |m| > 1), reflect back reflectXY(p0, &p1); else if(isNegXYReflected) { reflectXY(p0, &p1); p1.y = 2*p0.y - p1.y; } PutPixel(p1);}O que produz o mesmo resultado visto anteriormente, de um modo bem mais facil e que nao precisa das especializacoes do algoritmo de Bresenham.Consideracoes finaisComo desenvolvi dois algoritmos, seria interessante saber qual dos dois e o mais eficiente. Dado que o primeiro traca diretamente a reta (salvo nos casos em que os pontos forem fornecidos em ordem contraria), creio que seja mais rapido que o segundo, que faz e desfaz reflexoes varias vezes ao longo do processo.A maior dificuldade encontrada foi justamente descobrir o motivo pelo qual o algoritmo de Bresenham nao funcionou diretamente para inclinacoes negativas. Ficou claro que e sempre interessante voltar as equacoes e verificar o processo, e tambem testar com valores reais.Talvez uma possivel melhora no algoritmo de Bresenham que eu adaptei seja generalizar as variaveis, de forma que o mesmo calculo (ou com pequenas trocas de sinal) seja repetido varias vezes ao longo do codigo. A funcao de interpolacao de cor e um exemplo disso. Mas, como havia dito no corpo da discussao, talvez isso nao seja interessante, pois dificulta o entendimento do codigo.Ja para o algoritmo baseado em reflexoes, talvez o maior numero de multiplicacoes e divisoes afete, de fato o desempenho. Seria interessante se houvesse outro meio de refletir sem se utilizar dessas operacoes.
used for programming)#pragma config CPD = OFF // Data EE Memory Code Protection bit (Data memory code protection off)#pragma config CP = OFF // Flash Program Memory Code Protection bit (Code protection off)Configuracao em uma linha so:#include <xc.h>#pragma config FOSC = INTOSCIO, WDTE = OFF, PWRTE = OFF, MCLRE = OFF, BOREN = OFF, LVP = OFF, CPD = OFF, CP = OFFSe quiser manter organizado, voce pode tambem criar um arquivo config.h para colocar estas configuracoes, e depois fazer o include no main.c. Para criar o arquivo config.h, clique com o botao direito em Header Files (arvore do projeto) > New > C Header file. Pode apagar o conteudo e colocar o codigo gerado.No arquivo main.c criaremos a funcao main, que sera executada pelo microcontrolador. Segue o codigo:int main(void) { TRISAbits.TRISA1 = 0; // pin mode: 0 = saida, 1 = entrada PORTAbits.RA1 = 1; // escreve no pino while(1) { PORTAbits.RA1 = ~PORTAbits.RA1; // inverte o valor __delay_ms(1000); // fica 1000ms sem fazer nada } return 0;}Assim como no Arduino, antes de usar um pino voce deve configura-lo para atuar como entrada ou saida de dados. Isto e feito atraves dos bits TRIS, associados a cada pino de IO do PIC. Neste caso, TRISA e o registrador de configuracao dos bits da porta A. Para acessar os bits individualmente, adiciona-se 'bits' ao final do nome do registrador, e indica-se o bit que se deseja alterar, no caso TRISA1. Todos esses nomes estao no datasheet do PIC. Para simplificar, voce pode tambem acessar os bits apenas com o nome apos o ponto:int main(void) { TRISA1 = 0; // pin mode: 0 = saida, 1 = entrada RA1 = 1; // escreve no pino while(1) { RA1 = ~RA1; // inverte o valor __delay_ms(1000); // fica 1000ms sem fazer nada } return 0;}Para "escrever" no pino, utiliza-se tambem registradores do PIC: PORTX, onde X e a letra da porta (A, B, C, ...). Da mesma forma que o TRIS, pode-se tanto configurar todos os bits de uma vez, quanto escrever um por um.Para gerar um delay, a biblioteca padrao CCI (Common C Interface) prove tres macros: _delay, __delay_ms e __delay_us. A primeira recebe o valor de ciclos, a segunda e a terceira em ms e us. Vale ressaltar que o tempo de delay nao e preciso. Como o proprio guia do compilador explica, "If an accurate delay is required, or if there are other tasks that can be performed during the delay, then using a timer to generate an interrupt is the best way to proceed".Assim, o codigo completo pode ser visto a seguir:#include "config.h"#define _XTAL_FREQ 4000000 // necessario para as funcoes de delayint main(void) { TRISA1 = 0; // pin mode: 0 = saida, 1 = entrada RA1 = 1; // escreve no pino while(1) { RA1 = ~RA1; // inverte o valor atual __delay_ms(1000); // fica 1000ms sem fazer nada } return 0;}Com o codigo pronto, va no menu Run > Clean and build project. O arquivo .hex sera gerado na pasta dist\default\production, dentro da pasta do projeto (por padrao
em C:\Users\<usuario>\MPLABXProjects\<nome-do-projeto>.X no Windows 7). Para simular ou montar, o circuito e este aqui (a alimentacao esta implicita):Para fins de comparacao, o codigo fonte para Arduino e:int led = 13;void setup() { pinMode(led, OUTPUT); }void loop() { digitalWrite(led, HIGH); delay(1000); digitalWrite(led, LOW); delay(1000);}Observe que a parte de configuracao do microcontrolador e omitida, e que a linguagem e bem mais amigavel e intuitiva. Provavelmente este e um dos motivos para o Arduino ser mais popular do que os PICs.Observa-se que os bits de configuracao variam de acordo com o PIC escolhido. Para mais detalhes, consulte o datasheet do PIC que voce pretende utilizar.DownloadsMPLAB X IDE: http://www.microchip.com/mplabx-ide-windows-installerMPLAB XC8 Compiler (para as familias PIC12, PIC16 e PIC18): http://www.microchip.com/mplabxc8windowsDatasheet do PIC 16F628A: http://ww1.microchip.com/downloads/en/DeviceDoc/40044G.pdf
Agradeco: OBRIGADA SENHOR, por tudo que tenho e por tudo que vejo!A MONTANHA...Eu vou seguir uma luz la no alto eu vou ouvirUma voz que me chama eu vou subirA montanha e ficar bem mais perto de Deus e rezar, eu vou gritar para o mundo me ouvir e acompanhar toda minha escalada e ajudarA mostrar como e o meu grito de AMOR e de FE!Eu vou pedir que as estrelas nao parem de brilharE as criancas nao deixem de sorrirE que os homens jamais se esquecam de agradecerPor isso eu digo: Obrigado Senhor por mais um diaObrigado Senhor que eu posso verQue seria de mim sem a fe que eu tenho em VocePor mais que eu sofra, Obrigado Senhor mesmo que eu chore, Obrigado Senhor por eu saberQue tudo isso me mostra o caminho que leva a Voce Mais uma vez Obrigado Senhor por outro diaObrigado Senhor que o sol nasceuObrigado Senhor agradeco Obrigado SenhorPor isso eu digo: Obrigado Senhor pelas estrelasObrigado Senhor pelo sorrisoObrigado Senhor agradeco Obrigado SenhorMais uma vez: Obrigado Senhor por um novo diaObrigado Senhor pela esperancaObrigado Senhor agradeco Obrigado SenhorPor isso eu digo: Obrigado Senhor pelo sorrisoObrigado Senhor pelo perdao!(Roberto Carlos) Esse Cara Sou Eu...Roberto Carlos Dia Internacional da Mulher... - Nosso primeiro voo -Com o GREMIO onde o GREMIO estiver...A pe, pelos mares ou pelos ares, nos iremos! GREMIO no peito e na alma! Internacional 1x0 Flamengo. Foi esse o resultado do jogo de hoje e, sinceramente, "me surpreendeu positivamente": esperava algo muito pior!O Flamengo tem visiveis carencias defensivas e, principalmente, ofensivas. A seguranca defensiva que foi nossa marca nos ultimos 4 meses de 2009 foi para o ralo. Aqui abro um pequeno parenteses: VOLTA AIRTON!!!!O Flamengo entrou em campo postado em um falso 3-5-2, com Romulo fazendo o papel de 3o zagueiro e com Vinicius Pacheco e Diego Mauricio no ataque. A opcao era clara: esperar o Inter e jogar no contra ataque. So que tomamos um gol antes dos 10' e a estrategia ruiu.Com uma dupla de garotos na frente e Pet duramente marcado pela melhor dupla de volantes do futebol brasileiro - Guina e Tinga - chegar ao ataque foi luxo e escapamos de tomar uma coca ainda no 1o tempo.Na volta do intervalo, sairam Romulo e Diego Mauricio para a entrada de Marquinhos e Val Baiano e o Flamengo melhorou - ate por que era impossivel piorar -, tendo ate chances de empatar o jogo.So que se defensivamente nao somos sombra de 2009, ofensivamente e nivel 2005. O unico setor que salva por ter boas opcoes e o meio campo.Para mim, que ja estou conformado em fazer figuracao no ano e terminar em 16o, essa derrota foi apenas mais uma no Brasileiro.Mas para a maior parte da torcida, que cobra resultado no curto prazo, e a 1o de muitas.Zico tera muito trabalho.SRN Tinha falado que dividiria os posts em 5. Mas a parte de 78/83 tem muitos fatos para relembrar, muitos grandes jogos, entao vou dividir essa parte em 3: da Copa de 78 ate a decisao do Brasileiro de 1980, dai
ate a conquista do Mundial e a 3o parte falara dos titulos do Campeonato Brasileiro de 82 e 83, quando Zico deixa o clube rumo a Udinese.Em 1978, Zico ja tinha seu talento reconhecido e sua carreira consolidada, ja nao era mais a promessa do inicio dos anos 70.E foi por esse reconhecimento que Zico foi convocado por Claudio Coutinho para a disputa da Copa do Mundo da Argentina, em 1978. Coutinho conseguiu montar um time talentoso e aguerrido e o Brasil era considerado favorito, juntamente com os argentinos, apesar das sentidas ausencias de Carpegiani, Junior e Falcao. Por causa da convocacao de Rivelino, Zico foi inscrito com a camisa 8. O Brasil levou a Copa do Mundo o seguinte grupo: Leao, Carlos e Waldir Peres; Oscar, Amaral, Abel, Nelinho, Edinho,Rodrigues Neto, Polozzi e Toninho; Batista, Chicao, Toninho Cerezo, Zico, Jorge Mendonca, Dirceu e Rivelino; Ze Sergio, Reinaldo, Roberto Dinamite e Gil.Na estreia, Zico foi titular no meio campo, ao lado de Rivelino na criacao. O jogo foi contra a Suecia. O Brasil cria e desperdica muitas chances de gol, sempre com Zico participando ativamente do jogo, ate que a Suecia abre o placar apos um cochilo da defesa, aos 37 do 1o tempo. A Suecia teve chance de fazer 2x0, mas apos cruzamento de Toninho, Reinaldo ganha do zagueiro e empata, aos 45 do 1o tempo, fazendo justica no placar.Na volta do intervalo, o jogo continua aberto, com chances para ambos os lados, ate que Nelinho cobra um escanteio da direita e Zico se antecipa aos zagueiros, virando o jogo para o Brasil. Inexplicavelmente, em algo que eu nunca ouvi falar no futebol, o juiz anula o gol, alegando que o tempo de jogo se esgotou enquanto a bola estava no ar.Era a 1o decepcao de Zico na historia das Copas.BRASIL 1X1 SUECIA Video do jogo:Na 2o rodada da fase de grupos, o Brasil jogaria contra a Espanha e Zico novamente comecou jogando, mas diferentemente da rodada anterior, o Brasil quase nao criou e so nao perdeu o jogo por que Amaral, zagueiro brasileiro, conseguiu salvar um gol em cima da linha. Zico foi substituido faltando pouco menos de 10 minutos para o fim do jogo e seria sacado do time para o decisivo jogo contra a Austria, jogo que decidiria a vida do Brasil na Copa do Mundo. Assim como Zico, Reinaldo tambem perdeu a vaga entre os titulares. Ha quem afirme que o entao presidente da CBD, Almirante Heleno Nunes (vascaino roxo), interferiu na escalacao e pediu que Coutinho barrasse Zico e Reinaldo.No jogo contra a Austria, o Brasil voltou a apresentar um futebol pauperrimo, mas dessa vez venceu por um magro 1x0, gol de Dinamite. Era o suficiente para classificar, ainda que em 2o lugar no grupo. O problema e que a Argentina, dona da casa, tambem terminou em 2o no seu grupo e ambos ficariam no mesmo grupo na 2o fase.Na estreia da 2o fase, o Brasil pareceu ter finalmente se encontrado e enfiou um sonoro 3x0 no Peru e Zico anotou um gol apos sair do
banco de reservas. No jogo seguinte, na partida que entrou para a historia como A Batalha de Rosario, Brasil x Argentina empataram em 0x0 e o Brasil seguia em 1o no grupo, como o classificado para a final. Zico jogou pouco mais de 20 minutos.Na 3o rodada, jogariam Brasil x Polonia e Argentina x Peru. A Argentina precisava vencer o Peru e fazer saldo para conseguir ir a final. Os jogos estavam marcados para o mesmo horario, mas um pedido da TV argentina, que alegou nao estar preparada para transmitir 2 partidas ao mesmo tempo, fez com que a FIFA antecipasse o jogo do Brasil. O que se seguiu e seguramente a maior vergonha das Copas.O Brasil entrou em campo com Zico entre os titulares, mas o Galo saiu de campo logo no comeco, por causa de uma contusao. No fim, vitoria brasileira por 3x1 e os argentinos precisavam vencer o Peru por 4 gols de diferenca para garantir classificacao. Missao dificil, mas nao para a ditadura argentina, que precisava do titulo da Copa do Mundo de qualquer forma. Os argentinos enfiaram 6x0 e, anos depois, o goleiro Quiroga argentino naturalizado peruano declarou que o jogo foi armado. Era apenas a confirmacao do que todos sabiam. Os argentinos foram a final contra a Holanda, venceram por 3x1 e conquistaram o titulo. O Brasil bateu a Italia por 2x1 e ficou com o 3o lugar e se auto proclamou campeao moral. Era a 1o Copa do Mundo que escapava de Zico.Na volta ao Flamengo, Zico ajudou o clube a conquistar o estadual de 1978 (relatado no post anterior) quebrando um jejum de 3 anos e o Flamengo iniciaria 1979 como favorito ao titulo estadual e um dos candidatos ao titulo brasileiro. No inicio de 1979, a Federacao do Rio de Janeiro resolve criar um Estadual Especial, por causa da ma campanha dos clubes cariocas no Brasileiro de 1978 (que ainda estava em andamento em 79) e tambem para dar oportunidade de disputa aos clubes do Estado do Rio de Janeiro, ja que esses ainda estavam alijados da disputa, apesar da uniao Estado do Rio/Estado da Guanabara ter acontecido anos antes.No Estadual Especial, titulo conquistado de forma invicta e Zico sobrando na artilharia. Em classicos disputado pelo Estadual Especial, Zico anotou 6 gols, passando em branco em apenas 1 dos 6 classicos. No meio do estadual, o Flamengo fez um amistoso contra o Atletico Mineiro, em beneficio de desabrigados por uma enchente em MG, na partida que entrou para a historia como a partida que Pele vestiu a camisa do Flamengo. O Flamengo venceu por 5x1 e Zico fez 3 gols no jogo. Vislumbrava-se um grande Campeonato Brasileiro para o FlamengoFLAMENGO 5X1 CAM Video do JogoNa 1o fase do Brasileiro,o Flamengo passeou no seu grupo, com 7 vitorias e 2 empates em 9 jogos, 20 gols marcados e 2 sofridos.Na 2o fase, eliminatoria simples, o Flamengo receberia o Palmeiras para partida unica no Maracana. A vitoria era considerada certa, tanto pela superioridade do time do Flamengo quanto pelo futebol apresentado por esse time na
fase anterior. 112.047 pagantes lotaram o Maracana no dia 09/12/1979, mas inexplicavelmente o Flamengo nao jogou 10% do apresentado anteriormente e o Palmeiras, comandado por Jorge Mendonca aquele que barrou Zico na Copa de 78 goleou por 4x1, saindo classificado do Maracana. FLAMENGO 1X4 PALMEIRAS Video do Jogo:Durante o Campeonato Brasileiro, o Flamengo conquistou tambem o titulo do Estadual normal, conquistando assim o 3o tri da Historia Rubro-Negra. Zico fez 34 gols nesse Campeonato e 81 gols no total, quantidade absurda de gols para um meia.3o TRI DA HISTORIA DO FLAMENGOEm 1980, o Flamengo e Zico sofriam pressao para que o clube conquistasse o Campeonato Brasileiro de qualquer forma. Na estreia, vitoria em cima do SP no Morumbi, gol de Zico. Na 2o rodada, outra vitoria, dessa vez em cima do Internacional, tambem com gol de Zico. Na 3o rodada, o Flamengo jogaria contra o Botafogo PB no Maracana e a expectativa era de goleada. Mas o time jogou mal, perdeu por 2x1 e a cobranca foi enorme, com muitas vaias. Mas aquele time tinha chegado ao seu apice e retomou o folego, permanecendo 17 jogos invicto, com direito a uma goleada antologica em cima do Palmeiras, um 6x2 no Maracana, com 2 gols de Zico, 2 de Tita, 1 de Toninho e 1 de Nunes, com Tita dando tchauzinho para a torcida do Palmeiras no Maracana.FLAMENGO 6X2 PALMEIRAS Video do Jogo:Na semi final do Brasileiro, vitoria tranquila no jogo de ida, 2x0 sobre o Coritiba no Parana, 2 gols de Zico. A classificacao era praticamente certa, ja que o Flamengo mandaria o jogo da volta. Mas o que se viu foi um dos maiores jogos da historia dos Campeonatos Brasileiros.O Coritiba, sem qualquer pressao, rapidamente abriu 2x0 em pleno Maracana. Ainda no 1o tempo, o Flamengo virou, com gols de Nunes (2) e Carlos Alberto, esse antologico, apos dar um pique de quase 50 metros, escapar da falta e soltar a pancada no angulo.No 2o tempo, o Flamengo ampliou para 4x2, com Anselmo (aquele da final da Libertadores), em gol que resumiu o espetaculo que foi o jogo. Anselmo recebeu lancamento, deu um drible da vaca no goleiro do Coritiba e, percebendo que o zagueiro do time paranaense corria para dentro do gol, meteu por cobertura, deixando o pobre zagueiro caido no chao. Vitoria maiuscula do Flamengo e, pela 1o vez na historia, o clube estava na decisao do Brasileiro. Gracas a Zico, que ja havia marcado 20 gols ate entao. O adversario era o Atletico Mineiro, de Reinaldo, Toninho Cerezo, Palhinha e Eder.FLAMENGO 4X3 CORITIBA - Video do Jogo:No 1o jogo da decisao, disputado de forma violenta, o Flamengo sucumbiu ao Atletico e perdeu por 1x0. Zico, contundido desde a semi final contra o Coritiba, nao jogou e era duvida para a finalissima, que seria disputada no Maracana. Julio Cesar tambem desfalcou o Flamengo no 1o jogo da decisao.Para deixar a situacao do Flamengo ainda mais complicada, Rondinelli desfalcaria o time para a finalissima, pois quebrou o maxilar apos ser atingido de forma proposital por Palhinha. Mas Zico e Julio