ALG1-aula01

Embed Size (px)

Citation preview

  • 8/19/2019 ALG1-aula01

    1/47

     Algoritmos e Programação Prof. Wiliam Cardoso 

    Algoritmo

    5,0 5,0

    5,0 4,0 3,0

    • CONCEITO

    • O QUE É UM ALGORITMO?

  • 8/19/2019 ALG1-aula01

    2/47

    O que é um Algoritmo?

    5,0 5,0

    5,0 4,0 3,0

    Um algoritmo  é uma seqüência finita de instruções bem definidas e nãoambíguas, cada uma das quais pode ser executada mecanicamente numperíodo de tempo finito e com uma quantidade de esforço finita.

    É um conjunto determinístico de instruções que cumprem alguma tarefa, naqual partindo de um estado inicial chegam a um determinado estado final.

    Algoritmos e Programação Prof. Wiliam Cardoso 

  • 8/19/2019 ALG1-aula01

    3/47

    O que é um Algoritmo?

    5,0 5,0

    5,0 4,0 3,0

    Outras definições:

    • Um procedimento passo a passo para a solução de um problema.

    • Uma seqüência detalhada de ações a serem executadas para realizar algumatarefa.

    Algoritmos e Programação Prof. Wiliam Cardoso 

  • 8/19/2019 ALG1-aula01

    4/47

    O que é um Algoritmo?

    5,0 5,0

    5,0 4,0 3,0

    • O conceito de algoritmo é freqüentemente ilustrado pelo exemplo de umareceita, embora muitos algoritmos sejam mais complexos.

    • Eles podem repetir passos (fazer iterações) ou necessitar de decisões (taiscomo comparações ou lógica) até que a tarefa seja completada. Um algoritmocorretamente executado não irá resolver um problema se estiverimplementado incorretamente ou se não for apropriado ao problema.

    Algoritmos e Programação Prof. Wiliam Cardoso 

  • 8/19/2019 ALG1-aula01

    5/47

    O que é um Algoritmo?

    5,0 5,0

    5,0 4,0 3,0

    •Um algoritmo não representa, necessariamente, um programa de computador,e sim os passos necessários para realizar uma tarefa.

    •Sua implementação pode ser feita por um computador, por outro tipo de

    autômato ou mesmo por um ser humano.•Diferentes algoritmos podem realizar a mesma tarefa usando um conjuntodiferenciado de instruções em mais ou menos tempo, espaço ou esforço do queoutros.

    •Tal diferença pode ser reflexo da complexidade computacional aplicada, que

    depende de estruturas de dados adequadas ao algoritmo.

    Algoritmos e Programação Prof. Wiliam Cardoso 

  • 8/19/2019 ALG1-aula01

    6/47

    O que é um Algoritmo?

    5,0 5,0

    5,0 4,0 3,0

    •Por exemplo, (algoritmo para se Vestir)

    •um algoritmo para se vestir pode especificar que você vista primeiro asmeias e os sapatos antes de vestir a calça

    •enquanto outro algoritmo especifica que você deve primeiro vestir a calçae depois as meias e os sapatos.

    •Fica claro que o primeiro algoritmo é mais difícil de executar que o segundoapesar de ambos levarem ao mesmo resultado.

    •O conceito de um algoritmo foi formalizado em 1936 pela Máquina de Turing

    de Alan Turing e pelo cálculo lambda de Alonzo Church, que formaram asprimeiras fundações da Ciência da Computação.

    Algoritmos e Programação Prof. Wiliam Cardoso 

  • 8/19/2019 ALG1-aula01

    7/47

    O que é um Algoritmo?

    5,0 5,0

    5,0 4,0 3,0

    O nome algoritmo vem do nomedo matemático persa Abu

     Abdullah Muhammad bin Musa

    al-Khwarizmi (780 –  850).

    Entre outras coisas eledesenvolveu uma soluçãosistemática para funções

    lineares e quadráticas.A palavra 'algarismo' também é

    derivada de seu nome, devido aseu trabalho relacionado anotação posicional do sistema

    de numeração decimal.

    Algoritmos e Programação Prof. Wiliam Cardoso 

  • 8/19/2019 ALG1-aula01

    8/47

    O que é um Algoritmo?

    5,0 5,0

    5,0 4,0 3,0

    Histórico

    •No século XVIII na Europa, a tradução do nome de al-Khwarizmi deu origem à palavra algoritmo.

    •O primeiro caso de um algoritmo escrito para um computador foium programa de Ada Byron para a máquina analítica de CharlesBabbage.•No século XX, as pesquisas de Alan Turing e Alonzo Church

    formalizaram o que é um algoritmo. A partir disto foi possível definirquais tipo de problemas um algoritmo pode resolver.

    Algoritmos e Programação Prof. Wiliam Cardoso 

  • 8/19/2019 ALG1-aula01

    9/47

    O que é um Programa?

    5,0 5,0

    5,0 4,0 3,0

    •Um programa de computador é essencialmente um algoritmo que diz aocomputador os passos específicos e em que ordem eles devem ser executados,como por exemplo, os passos a serem tomados para calcular as notas que serãoimpressas nos boletins dos alunos de uma escola.

    •Para qualquer processo computacional, o algoritmo precisa estarrigorosamente definido, especificando a maneira que ele se comportará emtodas as circunstâncias.

    • Chamamos de programa de computador um conjunto de instruções que será

    executado pelo processador em uma determinada seqüência. Esse programaleva o computador a executar alguma tarefa.

    Algoritmos e Programação Prof. Wiliam Cardoso 

  • 8/19/2019 ALG1-aula01

    10/47

    Linguagens de Programação

    5,0 5,0

    5,0 4,0 3,0

    •Como podemos perceber, um programa nada mais é que um tipo dealgoritmo.

    •Sua particularidade é que suas operações são específicas para o computadore restritas ao conjunto de instruções que o processador pode executar.

    •Podemos considerar esse conjunto de instruções como a primeira linguagemde programação do computador, também chamada de linguagem de máquina(seqüências de bits).

    Algoritmos e Programação Prof. Wiliam Cardoso 

  • 8/19/2019 ALG1-aula01

    11/47

    Linguagens de Programação

    5,0 5,0

    5,0 4,0 3,0

    •Classificamos as linguagens de programação segundo a sua proximidade coma linguagem de máquina.

    •Quanto maior a semelhança com a linguagem de máquina, mais baixo é o

    nível da linguagem.

    •Classificação:

    •Linguagem de baixo nível: Linguagens de Programação maissemelhantes à linguagem de máquina .

    •Linguagem de alto nível: Linguagens de Programação mais próximas dalinguagem natural e guardam pouca similaridade com a linguagem damáquina em que serão executadas.

    Algoritmos e Programação Prof. Wiliam Cardoso 

  • 8/19/2019 ALG1-aula01

    12/47

    Linguagens de Programação

    5,0 5,0

    5,0 4,0 3,0

    •Linguagem de baixo nível: trata-se de uma linguagem de programação quecompreende as características da arquitetura do computador.

    •Assim, utiliza somente instruções do processador, para isso é necessário

    conhecer os registradores da máquina.

    •Nesse sentido, as linguagens de baixo nível estão diretamente relacionadascom a arquitetura do computador.

    •Um exemplo é a linguagem Assembly (não Assembler) que trabalha

    diretamente com os registradores do processador, manipulando dados.

    Algoritmos e Programação Prof. Wiliam Cardoso 

  • 8/19/2019 ALG1-aula01

    13/47

    Linguagens de Programação

    5,0 5,0

    5,0 4,0 3,0

    ASSEMBLER

    •Algumas das desvantagens podem ser superadas fazendo com que o computador

    seja o responsável pelo estágio de tradução.•O programa ainda é escrito em termos de operações básicas de máquina, mas atradução em código binário é feita pelo computador.

    •O programa que faz essa tradução é chamado de assembler 

    Exemplo: ADD 1,1•Trata do problema de cálculo de endereço, usando nomes em formato de textopara endereçar os dados.

    Algoritmos e Programação Prof. Wiliam Cardoso 

  • 8/19/2019 ALG1-aula01

    14/47

    Linguagens de Programação

    5,0 5,0

    5,0 4,0 3,0

    •Linguagem de programação de alto nível  é o que se chama na Ciência daComputação de linguagens de programação com um nível de abstraçãorelativamente elevado, longe do código de máquina e mais próximo à

    linguagem humana.•Desse modo, as linguagens de alto nível não estão diretamente relacionadasà arquitetura do computador. O programador de uma linguagem de alto nívelnão precisa conhecer características do processador, como instruções eregistradores. Essas características são abstraídas na linguagem de alto nível.

    Algoritmos e Programação Prof. Wiliam Cardoso 

  • 8/19/2019 ALG1-aula01

    15/47

    Linguagens de Programação

    5,0 5,0

    5,0 4,0 3,0

    •Alguns exemplos de linguagens de alto nível:•ASP•ActionScript•

    C/C++•C#•Pascal/Object Pascal•Euphoria•Java•PHP•Python•Tcl•Basic/Visual Basic

     Algoritmos e Programação Prof. Wiliam Cardoso 

  • 8/19/2019 ALG1-aula01

    16/47

    Linguagens de Programação

    5,0 5,0

    5,0 4,0 3,0

    A evolução das linguagens de programação pode ser dividida em 5 etapas ougerações.

    Primeira geração: Linguagem máquina.Segunda geração: Criaram-se as primeiras linguagens assembler.Terceira geração: Criam-se as primeiras linguagens de alto nível. Ex: C, Pascal,Cobol…Quarta geração: São linguagens capazes de gerar código por si só, são oschamados RAD, com o qual pode-se realizar aplicações sem ser um expert nalinguagem. Aqui também se encontram as linguagens orientadas a objetos,

    tornando possível a reutilização de partes do código para outros programas.Ex: Visual, Natural Adabes… 

    Quinta geração: Aqui se encontram as linguagens orientadas à inteligênciaartificial. Estas linguagens ainda estão pouco desenvolvidas. Ex: LISP

    Algoritmos e Programação Prof. Wiliam Cardoso 

  • 8/19/2019 ALG1-aula01

    17/47

    Linguagem de Montagem (Assembly)?

    5,0 5,0

    5,0 4,0 3,0

    •É um código que relaciona a linguagem de máquina a uma linguagem mais fácilde ser compreendida.

    •A linguagem de montagem (ou assembly) é um código que tem uma instrução

    alfanumérica (ou mnemônica) para cada instrução numérica em linguagem demáquina.

    •Para que um programa escrito em linguagem de montagem possa serexecutado pelo compilador, é necessário que seu código seja traduzido para ocódigo de máquina.

    •Isto é feito por meio de um programa chamado ASSEMBLER.

     Algoritmos e Programação Prof. Wiliam Cardoso 

  • 8/19/2019 ALG1-aula01

    18/47

    Linguagem de Montagem (Assembly)?

    5,0 5,0

    5,0 4,0 3,0

    Algoritmos e Programação Prof. Wiliam Cardoso 

  • 8/19/2019 ALG1-aula01

    19/47

    Linguagem de Alto Nível

    5,0 5,0

    5,0 4,0 3,0

    •Para que possam ser processadas por um computador, os comandos dalinguagem precisarão ser traduzidos para a linguagem de máquina.

    •Esta tradução é feita por meio de um compilador ou de um interpretador,

    dependendo do caso.

    Algoritmos e Programação Prof. Wiliam Cardoso 

  • 8/19/2019 ALG1-aula01

    20/47

    Compilador

    5,0 5,0

    5,0 4,0 3,0

    •O compilador, a partir do código em linguagem de alto nível, chamado decódigo-fonte, gera um arquivo com código em linguagem de máquina,conhecido como código-objeto.

    •Este código-objeto fica em disco e só é carregado em memória no momentoda execução.

    Algoritmos e Programação Prof. Wiliam Cardoso 

  • 8/19/2019 ALG1-aula01

    21/47

    Compilador

    5,0 5,0

    5,0 4,0 3,0

    Linguagem dealto nível

    Algoritmos e Programação Prof. Wiliam Cardoso 

  • 8/19/2019 ALG1-aula01

    22/47

    Interpretador

    5,0 5,0

    5,0 4,0 3,0

    •O interpretador faz o mesmo trabalho, porém não gera o arquivo em código-objeto.

    •As instruções são traduzidas para linguagem de máquina em tempo de

    execução, instrução a instrução.

    Algoritmos e Programação Prof. Wiliam Cardoso 

  • 8/19/2019 ALG1-aula01

    23/47

    Interpretador

    5,0 5,0

    5,0 4,0 3,0

    Linguagem dealto nível

    Tradução de cada instrução na fase deexecução do programa

    Algoritmos e Programação Prof. Wiliam Cardoso 

  • 8/19/2019 ALG1-aula01

    24/47

    Linguagens de Programação e Sistemas Operacionais

    5,0 5,0

    5,0 4,0 3,0

    Código-fonte Compilador(etapa 1)

    Código-objeto

    Compilador(etapa 2)

    Código-objetoexecutável

    Memória

    Biblioteca do sistemaoperacional

    Algoritmos e Programação Prof. Wiliam Cardoso 

  • 8/19/2019 ALG1-aula01

    25/47

    Linguagens de Programação e Sistemas Operacionais

    •A integração dos compiladores com os sistemas operacionais permite que ocódigo-objeto de um programa seja portável para qualquer máquina queutilize o mesmo sistema operacional, tornando o código-objeto dependente dosistema operacional e não da plataforma do processador.

    •Porém, um código-objeto compilado em um sistema operacional não poderáser executado em um outro sistema operacional.

    •Assim, um programa executável em Linux não poderá ser executado emWindows.

    Algoritmos e Programação Prof. Wiliam Cardoso 

  • 8/19/2019 ALG1-aula01

    26/47

    Linguagens de Programação Java

    •A linguagem de programação Java tem uma arquitetura diferente, o quefornece a seus programas mais portabilidade que outras linguagens deprogramação de alto nível.

    •A compilação do código Java não gera código executável em nenhum sistemaoperacional.

    •Em vez disso, gera um código “pseudo-executável”, chamado bytecode.

    •Esse código é uma espécie de código de baixo nível que, porém, não é uma

    linguagem de máquina de algum processador, nem faz interface específica comalgum determinado sistema operacional.

    Algoritmos e Programação Prof. Wiliam Cardoso 

  • 8/19/2019 ALG1-aula01

    27/47

    Linguagens de Programação Java

    •Para que esse código possa ser executado em algum sistema operacional, énecessário que mais uma camada de software esteja aí instalada.

    •A camada funciona como um sistema operacional genérico, deixando

    transparentes as particularidades do sistema operacional real.

    •Esta camada é chamada de Máquina Java Virtual, ou Java Virtual Machine(JVM).

    •A JVM faz a tradução dos bytecodes para o código executável naquele sistema

    operacional.•Isto faz com que um programa escrito em Java e que seja compilado parabytecode possa ser executado em qualquer máquina que tenha a JVM.

    Algoritmos e Programação Prof. Wiliam Cardoso 

  • 8/19/2019 ALG1-aula01

    28/47

    Linguagens de Programação Java

    Código-fonteJava Compilador Bytecode

    Java VirtualMachine

    Memória

    Tradução de cadainstrução na fase de

    execução do programa

       M

        á   q   u   i   n   a   A

       M    á   q   u   i   n   a   B

     Algoritmos e Programação Prof. Wiliam Cardoso 

  • 8/19/2019 ALG1-aula01

    29/47

    Linguagem C

    5,0 5,0

    5,0 4,0 3,0

    •A linguagem C foi criada por Dennis Ritchie, em 1972, no centro de Pesquisas daBell Laboratories. Sua primeira utilização importante foi a reescrita do SistemaOperacional UNIX, que até então era escrito em assembly.

    Em meados de 1970 o UNIX saiu do laboratório para ser liberado para asuniversidades. Foi o suficiente para que o sucesso da linguagem atingisseproporções tais que, por volta de 1980, já existiam várias versões decompiladores C oferecidas por várias empresas, não sendo mais restritas apenasao ambiente UNIX, porém compatíveis com vários outros sistemas operacionais.

    •O C é uma linguagem de propósito geral, sendo adequada à programaçãoestruturada. No entanto é mais utilizada para escrever compiladores,analisadores léxicos, bancos de dados, editores de texto, etc..

    Algoritmos e Programação Prof. Wiliam Cardoso 

  • 8/19/2019 ALG1-aula01

    30/47

    Linguagem C

    5,0 5,0

    5,0 4,0 3,0

    •A linguagem C pertence a uma família de linguagens cujas características são:portabilidade, modularidade, compilação separada, recursos de baixo nível,geração de código eficiente, confiabilidade, regularidade, simplicidade efacilidade de uso.

    Algoritmos e Programação Prof. Wiliam Cardoso 

    Al i P ã

  • 8/19/2019 ALG1-aula01

    31/47

    Linguagem C

    5,0 5,0

    5,0 4,0 3,0

    •C é uma linguagem de programação compilada de propósito geral, estruturada,imperativa, procedural, de alto nível, e padronizada, criada em 1972, por DennisRitchie, no AT&T Bell Labs, para desenvolver o sistema operacional UNIX (que foioriginalmente escrito em Assembly).

    •A linguagem C é classificada de alto nível pela própria definição desse tipo delinguagem.

    •A programação em linguagens de alto nível tem como característica não sernecessário conhecer o processador, ao contrário das linguagens de baixo nível.

    •As linguagens de baixo nível estão fortemente ligadas ao processador.

    •A linguagem C permite acesso de baixo nível com a utilização de códigoAssembly no meio do código fonte.

    Algoritmos e Programação Prof. Wiliam Cardoso 

    Al it P ã

  • 8/19/2019 ALG1-aula01

    32/47

    Linguagem C

    5,0 5,0

    5,0 4,0 3,0

    •Assim, o baixo nível é realizado por Assembly e não C.

    •Desde então, espalhou-se por muitos outros sistemas, e tornou-se uma daslinguagens de programação mais usadas, e influenciou muitas outras linguagens,

    especialmente C++, que foi originalmente desenvolvida como uma extensão paraC.

    Algoritmos e Programação Prof. Wiliam Cardoso 

    Al it P ã

  • 8/19/2019 ALG1-aula01

    33/47

    Linguagem C

    4,0 3,0

    Algoritmos e Programação Prof. Wiliam Cardoso 

  • 8/19/2019 ALG1-aula01

    34/47

    Linguagem C - Compiladores

    5,0 5,0

    5,0 4,0 3,0

    Dev-C++  (também conhecido como Dev-Cpp )  éum ambiente de desenvolvimento integrado livreque utiliza os compiladores do projeto GNU paracompilar programas para o sistema operacional

    Microsoft Windows. Suporta as linguagens deprogramação C e C++, e possui toda a bibliotecaANSI C, além de algumas bibliotecas similares àsda Borland Turbo C, como por exemplo aconio2.h, que pode ser baixada gratuitamente na

    página da Bloodshed Software.

    Algoritmos e Programação Prof. Wiliam Cardoso 

    Al it P ã

  • 8/19/2019 ALG1-aula01

    35/47

    Linguagem C - Compiladores

    5,0 5,0

    5,0 4,0 3,0

    Baixar e instalar.

    Code::Blocks é uma IDE (Integrated DevelopmentEnvironment - Ambiente de Desenvolvimento Integrado),com destaque de sintaxe, criado para atender asnecessidades dos usuários mais exigentes. Possui umframework de plugins, deste modo, o próprio usuáriopode melhorar a funcionalidade do programa.

    Algoritmos e Programação Prof. Wiliam Cardoso 

    Al it P ã

  • 8/19/2019 ALG1-aula01

    36/47

    Linguagem C - Compiladores

    5,0 5,0

    5,0 4,0 3,0

    Baixar e instalar.

    www.codeblocks.org

    Algoritmos e Programação Prof. Wiliam Cardoso 

    Al it P ã

  • 8/19/2019 ALG1-aula01

    37/47

    Fluxograma

    5,0 5,0

    5,0 4,0 3,0

    •Fluxograma  é um tipo de diagrama, e pode serentendido como uma representação esquemática deum processo, muitas vezes feito através de gráficos queilustram de forma descomplicada a transição de

    informações entre os elementos que o compõem.•Podemos entendê-lo, na prática, como adocumentação dos passos necessários para a execuçãode um processo qualquer. É uma das Sete Ferramentasda Qualidade. Muito utilizada em fábricas e industrias

    para a organização de produtos e processos.•O Diagrama de Fluxo de Dados (DFD) utiliza doFluxograma  para modelagem e documentação desistemas computacionais.

    Algoritmos e Programação Prof. Wiliam Cardoso 

    Al it P ã

  • 8/19/2019 ALG1-aula01

    38/47

    Fluxograma

    5,0 5,0

    5,0 4,0 3,0

    •Os fluxogramas apresentam os algoritmos de formagráfica.•São formados de caixas que contêm as instruções aserem executadas.•Tais caixas são ligadas por setas que indicam o fluxo dasações.

    Algoritmos e Programação Prof. Wiliam Cardoso 

    Algoritmos e Programação

  • 8/19/2019 ALG1-aula01

    39/47

    Fluxograma

    5,0 5,0

    5,0 4,0 3,0

    •A representação de algoritmos por meio defluxogramas tem uma série de vantagens:

    •Facilidade para compreensão do funcionamento do

    algoritmo.

    Algoritmos e Programação Prof. Wiliam Cardoso 

    Al it P ã

  • 8/19/2019 ALG1-aula01

    40/47

    Fluxograma

    5,0 5,0

    5,0 4,0 3,0

    Trident E-23

    Algoritmos e Programação Prof. Wiliam Cardoso 

    Algoritmos e Programação

  • 8/19/2019 ALG1-aula01

    41/47

    Fluxograma

    5,0 5,0

    5,0 4,0 3,0

    Algoritmos e Programação Prof. Wiliam Cardoso 

    Algoritmos e Programação

  • 8/19/2019 ALG1-aula01

    42/47

    Fluxograma

    5,0 5,0

    5,0 4,0 3,0

    Algoritmos e Programação Prof. Wiliam Cardoso 

    Algoritmos e Programação

  • 8/19/2019 ALG1-aula01

    43/47

    Português Estruturado (Pseudocódigo, Portugol ou Pseudolinguagem) 

    5,0 5,0

    5,0 4,0 3,0

    •Pseudocódigo é uma forma genérica de escrever um algoritmo, utilizando umalinguagem simples (nativa a quem o escreve, de forma a ser entendida porqualquer pessoa) sem necessidade de conhecer a sintaxe de nenhumalinguagem de programação.

    •É, como o nome indica, um pseudo-código e, portanto, não pode serexecutado num sistema real (computador) —  de outra forma deixaria de ser pseudo.

    •Os livros sobre a ciência de computação utilizam freqüentemente o

    pseudocódigo para ilustrar os seus exemplos, de forma que todos osprogramadores possam entendê-los (independentemente da linguagem queutilizem).

    Algoritmos e Programação Prof. Wiliam Cardoso 

    Algoritmos e Programação

  • 8/19/2019 ALG1-aula01

    44/47

    5,0 5,0

    5,0 4,0 3,0

    •Embora no caso da língua portuguesa existam alguns interpretadores depseudocódigo, nenhum tem a projeção das linguagens Pascal ou BASIC, que nocaso da língua inglesa se assemelham bastante a um pseudo-código.

    Português Estruturado (Pseudocódigo, Portugol ou Pseudolinguagem) 

    Algoritmos e Programação Prof. Wiliam Cardoso 

    Algoritmos e Programação

  • 8/19/2019 ALG1-aula01

    45/47

    5,0 5,0

    5,0 4,0 3,0

    •Escrever os passos a serem seguidos para a resolução do problema por meiode regras predefinidas.

    • VANTAGEM:

    •A passagem do algoritmo para qualquer linguagem de programação équase imediata, bastando conhecer as palavras reservadas da linguagemde programação que será utilizada.

    • DESVANTAGEM:

    •É necessário aprender as regras do pseudocódigo.

    Português Estruturado (Pseudocódigo, Portugol ou Pseudolinguagem) 

    Algoritmos e Programação Prof. Wiliam Cardoso 

    Algoritmos e Programação

  • 8/19/2019 ALG1-aula01

    46/47

    Portugol

    5,0 5,0

    5,0 4,0 3,0

    •Portugol é uma pseudo-linguagem de programação, criada para demonstrar ouso de algoritmos. Está presente na maioria dos materiais didáticos deprogramação, em português, sobre o assunto.

    Portugol (junção de Português com Algol [ALG96] [PRO04]).

     Algoritmos e Programação Prof. Wiliam Cardoso 

    Algoritmos e Programação

  • 8/19/2019 ALG1-aula01

    47/47

    Portugol

    5,0 5,0

    5,0 4,0 3,0

    •Exemplo:

    var num1, num2, maior: inteiro;inicio

    leia(num1, num2);se(num1 > num2) então

    maior num1;senão

    maior num2;escreva(maior);

    fim

    Algoritmos e Programação Prof. Wiliam Cardoso