Você está na página 1de 54
INDICE CONHECIMENTOS DE INFORMATICA Linguagens de programacao: Java (SE 8 e EE 7), Phyton 3.6, JavaScrip/EcmaScript 6, Scala 2.12 e Pig 0.16. Estruturas de dads e algoritmes: busca sequencial e busca bindria sobre arrays, ordenacie (métodos da belha, ordenagao por selecio, ordenacao por insercao, lista encadeada, pilha fila, nocdes sobre arvore binsria), nocées de algoritmas de aprendizado supervisionados e no supervisionados; Banco de dads: conceitos de banco de dados e sistemas gerenciadores de bancos de dados (SGBD), modelagem conceitual de dados (a abordagem entidaderelacionamento), modelo relacional de dados (conceitos basicos, normalizagio), Banco de dados SQL linguagem SQL (SQL2008), inguagem HiveQL (Hive 2.2.0), banco de dados NoSQL (conceitos basicos, bancos ofientados a grafos, colunas, chave/valor e documentos), data Warehouse (modelagem conceitual para data warehouses, dados multidimensionais); Tecnologias web: HTML 5, CSS 3, XML 1.1, son (ECMA-404), Angularjs 1.6xNodejs 6.11.3, REST; Manipulagio e visualizagio de dados: inguagem R 3.4.2 e R Studio 5.1, OLAP, Ms Excel 2013; Sistema de arquivos e ingest de dados: conceitos de MapReduce, HDFS/Hadoop/YARN 2.7.4,Ferramentas de ingestio de dados (Sqoop 146, Flume 1.7.0, NiFi 13.0 e Kafka 0.11.0), @ nova ‘CONCURSOS 18 W 2 32 33 49 LINGUAGENS DE PROGRAMACAO: JAVA (SE 8 E EE 7), PHYTON 3.6, JAVASCRIPT/ ECMASCRIPT 6, SCALA 2.12 E PIG 0.16 Nés falamos por meio de um idioma, no caso, nés brasileiros, falamos o idioma Portugués, jé o computador entende binério, Entao para que ambos consigam se comunicar, é necessario um interlocutor, e esse interlocutor é a linguagem de programacao, Com ela, é possivel programar de uma forma que um compilador traduza as instrugdes para 0 com- putador. Um compilador é o que transforma os cédigos nas instrugdes, ou seja, é um interpretador. ‘As Linguagens de Programacao sao programas que fazem outros programas, s30 usadas por desenvolvedores para criar softwares que sigam exatamente um determinado requisite. Q HFicaDica To importante quanto saber as linguagens de programacées @ saber a lagica de programacao, pois ‘com uma boa logica é possivel programar em qualquer linguagem, Java (SE8 e EE 7) (© Java para muitos € uma linguagem de programago orientada a objetos, mas o termo também se refere as int- meras aplicagdes que podem ser utilizadas no cotidiano de uma navegagao na internet, até mesmo o Sistema Opera- ional Android por exemplo toda varios aplicativos desenvolvidos em Java, Ele foi criado no inicio dos anos 90 por James Gosling, da Sun Microsystems, que hoje é a Oracle Corporation. Imporrtante mencionar que o Java faz bastante sucesso tanto entre os programadores quanto usuarios comuns por permitir um rapido desenvolvimento e por ter a capacidade de rodar em qualquer sistema que possua suporte a Java Virtual Machine (VM), ou Maquina Virtual Java. Figura 1: Logotipo Java © Java 8 é a release mais recente do Java que contém novas funcionalidades, aprimoramentos e corregées de bug para aumentar a eficiéncia do desenvolvimento e execugdo de programas Java. A nova release do Java primeira é disponibilizada para desenvolvedores, a fim de permitir um tempo adequado de teste e certificaco, e s6 entao fica disponivel no site java.com para que usuarios finals facam download, Essa atualizagao teve seu momento mais critico em janeiro de 2015, os usuarios com a funcionalidade de atualiza- (Go automatica ativada estao sendo solicitados a atualizar do Java 7 para o Java 8. Além disso, a release para CPU de abril de 2015 sera a dltima versio do Java 7 disponivel publicamente. ‘As interfaces do Java 8 podem definir métodos static. Por exemplo, a classe java.util Comparator agora possui o método static naturalOrder: public static > Comparator naturalOrder() ( return (Comparator) Comparators NaturalOrderComparator INSTANCE; Isso significa que ¢ possivel as interfaces fornecerem métodos padrées, permitindo que o desenvolvedor adicione novos métodos sem quebrar os cédigos existentes. Por exemplo, 0 padrao forEach foi incluido na interface javalang hterable: public default void forEach(Consumer action) ( Objects requireNonNull(action); for (Tt: this) ( CCONHECIMENTOS DE INFORMATICA, ‘CONHECIMENTOS DE INFORMATICA actionacceptit; ) ) FIQUE ATENTO! A Sempre que tivermos mais que uma instrucio apés um if, for, while, entre outros comandos, deve-se deixar lssas instrugdes entre chaves (0), com esse conhecimento é possivel eliminar algumas alternativas de ques- tes. Deixando claro que uma interface nao pode fornecer uma implementagéo padrao para os métodos da classe Object. Expressiio Lambda Alem de ficar mais pratico de escrever 0 cédigo sem 0 uso direto da Collections, pode-se também criar 0 Compa- rator de maneira bem mais leve sem a utlizagdoda sintaxe de classe anénima Comparator comparador = (s1, s2) -> ( return Integer.compare(s.length0, s2-lengthQ); % ssa 6 a sintaxe do Lambda no Java 8, podendo rodar em qualquer interface funcional, Uma interface funcional 6 aquela gue possui apenas um método abstrato (semanticamente falando pode haver diferena). Com isso 0 compilador conseque mensurar qual método esté sendo implementado nessas linhas. Diferente da geragdo de classes em tempo de compilagéo, como & feito para as classes anénimas, o lambda do Java 8 utiliza Me~ thodHandles e o invokedynamic: Referéncias de métodos: Séo expresses lambdas compactas para métodos que ja possuem um nome. Abaixo € possivel observar amostras de referencias de métodos, com o seu equivalente em expresso lambda a direita: String:valueOf x -> String.valueOf(x) Object:ttoString x -> x.teString0) String ()-> x.toString) ArrayListunew — () -> new Arrayl <>) java.util function: Muitas novas interfaces funcionais foram adicionadas no pacote java util function, Abaixo alguns exemplos: Function ~ recebe T como entrada, retorna R como saida; Predicate ~ recebe T como entrada, retorna um valor booleano como saida; ‘Consumer ~ recebe T como entrada, ndo retorna nada como saida; Supplier ~ ndo recebe entrada, retorna T como said + BinaryOperator ~ recebe duas entradas T, retorna um T como said java.util stream: © novo pacote java.utilstream fornece classes para apoiar operacées no estilo funcional sobre os fluxos de dados. Uma maneira comum de ober um fluxo sera por meio de uma colecao (collection: Stream stream = collection stream(; Java.time: A nova API de data ¢ hora esta dentro do pacote javattime. Todas as classes sao imutaveis e thread-safe Os tipos de data e hora inclusos sao: Instant, LocalDate, LocalTime, LocalDateTime e ZonedDateTime. Além das datas € horas, também existem os tipos Duration ¢ Period, Para completar também foram incluidos os tipos Month, DayO- fWeek, Year, Month, YearMonth, MonthDay, OffsetTime e OffsetDateTime. A maioria das novas classes de data e hora so suportadas pelo JDBC. Houve também uma melhora a habilidade do compilador Java para inferir tipos genéricos e reduzir os argumentos de tipos informados nas chamadas dos métodos genéricos, ou seja, foi melhorada a inferéncia de argumentos e 0 en- cadeamento de chamadas permite escrever um codigo como o visto abaixo: foo(Utility.bar0); Utility.fo0().bar() 44 para filtrar as Strings com menos de 8 caracteres em nossa lista pode-se fazer assim palavras.stream() ‘filter(s -> s.length) < 8) “forEach(System.out:printin); (© método filter recebe a interface funcional Predica~ te como parametro. Essa interface possui apenas 0 méto~ do test que recebe T e retomna um boolean. No caso das anotagSes de tipos que poderdo ser escritas em mais locais, como um argumento de tipos genéricos como List<@Nullable String>, Aprimorando assim a detecc3o de erros pelas ferramentas de andlise estaticas o que fortalecera e refinard o sistema de tipos embarcados no Java, © Nashorn é a implementagéo mais nova, leve e de alto desempenho de JavaScript integrado no JDK. 0 Nashorn é 0 sucessar do Rhino com desempenho apri- morado e melhor uso de meméria, Ele contara com a API javax.script, mas no incluird o suporte a DOM/CSS. fe também nao incluira API de plugins para navegadores. Outro métode que ser muito utilizado no cotidiano do programador Java 8 6 0 map, que é utilizado quando precisa-se aplicar transformacGes na lista sem a necess'- dade de variéveis intermediarias, Para se usar 0 IF no java, a sintaxe é: if (condigao )( ‘esse bloco de cédigo sera executado ) Por exemplo, para mandar uma mensagem quando 0 Canal do Ovidio tiver mais de § mil inscritos no Youtube. if (nscritos > 5000) ( System.out.println("Met else ‘System.out.printin("Meta nao atingida”);) ingida”);) FIQUE ATENTO! Tanto FOR como WHILE trabalham estruturas de repeticao, fique atento que ao usar FOR, © valor inicial, 0 valor final e o incremento sempre ficam na mesma linha, Vamos ver agora uma exemplo usando while para re- petir um determinado cédigo 30 vezes: public class ExemploWhile ( Public static void main(String args{) { inti = 0; while (1 < 30) ( ‘System.out.printin("Reps ‘O mesmo exemplo usando for ficaria assim: lic class ExemploFor { static void main(String args) ( pul jon: « + i); Java EE é um conjunto de especificagées destinadas para fcilitaracriag8o de aplicagdes “Enterprise” em Java Com isso, 0 Java EE define um modelo de programagao para criar aplicacées para empresas, onde diversas tare- fas comuns (persisténcia de dados, validacées, transa- $6es,tratamento de requisigdes HTTP, entre outras) 880 especificadas e "colocadas no papel’ para todos lerem, implementarem e usarem. 'As aplicagées podem ser desenvolvidas em qual- quer IDE (ambiente integrado de desenvolvimento) re- cente que tenha suporte ao Java EE, as mais utilzadas fo, 0 Eclipe e o Netbeans. 0 cédigo pode ser executado apés a criacao ¢ teste de seu sistema, no momento de colocar em producso, € necessario utilizar um servidor de aplicacéo que compro- vadamente suporta todas as especificacdes JavaFE. Ao seguir todas as especificagdes, é possivelutilzar qualquer um dos servidores aprovadas, entre os quais destaca-se ‘0 JBoss Application Server que passou a chamar Wildly, © Glassfish e 0 TomeE, todos eles trabalham com cédiga aberto e séo gratuites Servidores de aplicagéo representam a divisdo en- tre a programacio ¢ a infraestrutura, por esse motivo ‘05 mesmos levam a um assunto complexo cujo estudo pode levar a certficagdes exclusivas, independente dos conceitos por tras do Javac, @ EXERCICIO COMENTADO 1, (LIQUIGAS 2012 - CESGRANRIO - PROFISSIONAL JUNIOR - TECNOLOGIA DA INFORMAGAO - ANALISE DE SISTEMAS) Uma certa tecnologia Java fi projetada para permitir que desenvolvedores criem facilmente apl- cages Web com interfaces ricas (RIAs) que se compor- tem de forma consistente em miiltiplas plataformas. Essa tecnologia é 2 2) JavaServer Faces. b) JavaFX, OISP. ) BB. e) JRE. JavaFX & uma plataforma de software multimidia de~ senvolvida pela Sun Microsystems baseada em java para a criagao e disponibilizac3o de Aplicagio Rica para Internet que pode ser executada em varios dispositivos diferentes. A versio atual JavaFX 2.1.0) permite a cria~ lo para desktop, browser e dispositivos méveis CCONHECIMENTOS DE INFORMATICA, ‘CONHECIMENTOS DE INFORMATICA 2. (TCE/SP 2012 - FCC - AUXILIAR DE FISCALIZACAO FINANCEIRA II) Em um programa Java, considere a existancia de uma variével do tipo long chamada cod contendo o valor 1234. Para passar o valor contido nessa variavel para uma variavel do tipo byte chamada codNo- vo, deve-se fazer casting, Para isso, utilza-se a instrucao: byte codNovo = 2) Byte.valueOf(cod); ») (long) cod: ©) Byte,pasreByte(cod), 2) (byte) cod; ) (cast) cod: Java vocé possui os tipos primitivos byte, char, short, int, long loat, double e boolean e para cada tipo exis- te uma classe empacotadora Byte, Character, Short Integer, Long, Float, Double e Boolean. Para atender 0 procedimento acima o correto € (byte) cod Phyton 3.6 Python é uma linguagem de alto nivel com uma pro- posta geral por ser multi paradigma, indo desde o pro- Ccedural até a orientagio a objetos, sua tipagem dindmica permite uma facil leitura do cédigo eo melhor com pou- cas linhas, quando comparado com outras linguagens. E muito utilizado para paginas dinamicas para a web, criagdo de CGls e até mesmo para dados cientificos, lem~ brando que € gratuita, possui uma comunidade online gigante, constante aumento das bibliotecas, além de uma linguagem funcional, facil de ler, aprender e focada em produtividade. Para a instalagdo é necessario acessar 0 https://mww. python.org/. Uma vez 0 programa baixado é possivel acessé-lo pelo icone executvel, ou até mesmo construir f5 cédigos em Notepad++ e executar pelo Prompt de Comando. Y A ferramenta certa para a tarefa certa é fun damental para se aventurar em uma nova lin guagem de programacao. Felizmente, ja existe todo um ecossistema de programas focados para desenvolvedores de Python, Idle: Esse é 0 editor basico que vem com a insta- lagao do proprio Python. Gratuite. + Komodo-Edit : Um dos mais populares editores para a linguagem, rico em recursos para desenvol- vedores, Pago, com versio de testes. + Wing : Um dos mais poderosos e elogiados IDEs do mercado. Com versées gratuita e profissional + NINJA-IDE: IDE multiplataforma com suporte a Py- thon. Gratuito, + PyCharm : IDE profissional dotada de um conjun- to de ferramentas iteis para agilizar o desenvoWi- mento. Pago. + SPE: IDE desenvolvido com wxPython, com funcio- nalidades poderosas. Gratuito, + Spyder 2: Ambiente de desenvolvimento criado especificamente para programadores Python, Gra- tuito. + Ericd: Um dos mais completos IDEs ndo comerciais disponiveis no mercado. Gratuito. + DrPython : Editor de texto criado com wxPython para ser utilizado em escolas, Gratuito. + [Python : Shell em modo texto com recursos po- derosos, que pode ser incorporada em projetos. Gratuite, + KDevelop : IDE para GNU/Linux e outros, com su- porte a Python. Gratuito. + PythonCard : Kit de desenvolvimento de GUI para aplicagdes multiplataforma em Windows, Mac OS Xe Linux, usando a linguagem de programagao Python, Gratuito. + PyPE : Editor Python, leve, pratico e rico em recur- sos e multiplataforma, Gratuite. + Rodeo : IDE focada na analise de dados. Gratuito. + Iron Python : Implementagao da linguagem Python para o framework .NET que permite integracéo com o Visual Studio, da Microsoft, e outros IDEs. Gratuite, + Pillow: Biblioteca de manipulacio de imagens para Python, Gratuito. + Refactoring 8ycicle Repair Man : Ferramenta de au- tomagio de refactoring para Python, Gratuito. + Rope : Biblioteca de refactoring para Python. Gra- tuito. + Pylnstaller: Instalador dle aplicacdes criadas em Py- thon. Gratuite, + Gooey: Converte aplicagées em texto para interfa- ce grafica. Gratuito. + Pyrasite : Ferramenta que permite injecdo de cédi- go em processos Python, Gratuite. + Pandas : Biblioteca de andlise de dados para Py- thon, Gratuite, + Arrow : Biblioteca de conversio, criago e manipu- lacio de datas, Gratuito, + Beautiful Soup : Biblioteca de produtividade para extracdo de dados. Gratuito. + Apache Libcloud : Biblioteca que permite conexdo com 2 API de diversos servicos de nuvem. Gratuito. Abaixo é possivel ver alguns exemplos de operagies simples feitas no Python. O primeiro cédigo abaixo nao é exatamente a saida do Terminal, afinal ao executar linha a linha, os comentérios nao aparecerdo. Além disso, no sera utilizado 0 simbolo '>>>’ que aparece no terminal. Entenda que a ordem de cada conjunto de trés linhas & comentério, comando do usuario e saida do Python, Comecando pelo basico, o Python serve como uma calculadora. Veja alguns calculos que podem ser feitos com a ferramenta: L ## Soma 2 642 a8 4 5 ## Suberacas 6 18 7 7 8 ## muicipticacao 9 ane 10 16 11 22s pivisas 13 10/2 145.0 15 16 ## Reate da divieas a7 (882 ae 19 Se quiser fazer algo mais amigavel, insira um texto: 1 44 Soma 2... ar6+2 3 ses Print(*Resultado da som 4 Resultado da scm: Alguns operadores que pensamos ser triviais, nfo fun- cionam no Python, 2 nao ser que sejautlzada alguma biblioteca ou médulo. £0 caso do logaritmo, valor absolu- to, raiz quadrada e somatério que fazem parte do mad- lo'math Pra utlizé-l, primeira importamos e arbuimos um nome, para em seguida fazer uso da fungdo com no- ‘meatribuide,nomedafuncao, Veja 0 exemplo abaixo: 1 # modulo math 2 import math as math 3 4 # calcula log de 10 5 mathlog(10) 6 7 #alcula modulo de -10 8 mathfabs(-10) 9 10 # calcula raiz quadrada de 4 11 mathsqr(a) 12 13 #ealcula somatorio de 1,4.1.1.1 14 mathsisum((1,1.1.1.1)) Antes da criagéo dos gréticos, é bom importar o arqui- vo com os dados que serio utiizados. Primeiro é preciso importar a biblioteca Pandas utilizar a funcéo read_esv0}: # carrega biblioteca import pandas as pd # carrega arquivo iris = pdiread_csv("./lriscsv") Pandas também possui outras fungées comuns para manipulacto de dades, come drep0,groupby ¢ rena Para leitura das primeiras linhas da tabela importada, a funcéo sera parecida com a utilizada no R. Deve ser uti- lizado 0 comando head9, mas este deve ser antecedido pelo nome da tabela em questio: 1 irisheado HISTOGRAMA E GRAFICO DE DISPERSAO Pode-se fazer também histograma e grafico de dis- perso X Y, vejamos abaixo: J _fisplotal™ hist, x"Sepalbengthcm’ insplot{dnd= hist’, x="SepalLengthCm’, 2 yerSepalwidthom) paneng CCONHECIMENTOS DE INFORMATICA, ‘CONHECIMENTOS DE INFORMATICA mm SepalWidthcm Frequency & 8 & 5 ° 2.0 25 . 45 Também é possivel fazer um grafico de dispersio: J #4 grafico de dispersgo 2 iris plot(kind="scatter’, x="SepalLengthCm’, y="SepalWidthCm") ypoypop os o 6 & i Sepalwidthcm x 40 45 50 55 60 65 70 75 80 85 SepalLengthcm Algumas pequenas mudangas podem ser feitas sem grandes dificuldades no grafico acima, como por exemplo alterar seu titulo e sua cor i# grafico de dispersgo iris plot(kind="scatter’, x="SepalLengthCm’, y="SepalWidthCm’, color='Green’, title="Grafico de Dispersao’) no so Grafico de Dispersao 45 40 a5 30 SepalWidthcm 25 2.0 40 45. 50 55 60 65 70 75 6.0 85 SepalLenathcm Note que o Python é bem coerente, Uma vez que se entende que o nome da tabela sendo utilizada deve anteceder as fungées, a sintaxe comeca a fazer sentido e até se assemelha ao R. utras bibliotecas capazes de fazer graficos mais elegantes sao a Seaborn ¢ Bokeh Em relagdo aos médulos e bibliotecas, dentro de cada uma é disponibilizado um conjunto de fungdes jé construidas para facilitar as tarefas dos usuarios. Algo que pode causar estranheza é que as vezes aparecera a palavra biblioteca library) e outras vezes a palavra médulo (module). Porém, nao ha muito o que se preocupar, a ideia é a mesma, uma biblioteca ¢ apenas uma forma de fazer referéncia a0 médulo Estrutura Condicional Simples: Vamos ver como fazer uma estrutura condicional em Python. Iremos verificar se a soma dos valores que o usuario informou é maior que zero e exibir 0 resultado na tela ‘Abaixo podemos perceber a estrutura do condicional IF: if soma > Estrutura Condicional Compesta: A Estrutura Condicional Composta executa um comando quando a condigéo for verdadeira e outra condicéo quando for falsa. Vamos melhorar o nosso exemplo anterior, agora teremos que mostrar a mensagem "Menor que Zero" caso 0 resultado da soma seja menor que zero, como podemos ver abaixo: if soma > 0: print “Maior que Zer el print "Menor que Zero.” Loops com FOR e WHILE: Em algumas situagdes, ¢ comum que uma mesma instrucSo (ou conjunto delas) precise ser executada varias vezes seguidas. Nesses casos, normalmente utilizamos um loop (ou laco de repeticao), que permite executar um bloco de cédigo repeticias vezes, enquanto uma dada condicao é atendida, Em Python, os loops slo codificados par meio dos comandos for e while. O primeira nos permite percorrer os itens de uma colecio e, para cada um deles, executar um blaco de cédigo. J4 0 while, executa um canjunta de instrucdes varias vezes enquanto uma condigio é atendida, Na Listagem 2 temos um exemplo de uso do comando for. CCONHECIMENTOS DE INFORMATICA, ‘CONHECIMENTOS DE INFORMATICA 1nomes = ['Pedro’, Jodo’, ‘Leticia’] 2 for n in nomes 3° print(n) 4>>> 5 Pedro 6 Joao 7 Leticia Listagem 2.Comando for Avariavel definida na linha 1 é uma lista inicializada com uma sequéncia de valores do tipo string. A instrucao for per- corre todos esses elementos, um por vez e, em cada caso, atribui o valor do item a variaveln, que é impressa em segui- da. O resultado, entdo, € a impresséo de todos os nomes contidos na lista, como vemos nas linhas 5 a 7. (© comando while, por sua vez, faz com que um conjunto de instrugées seja executado enquanto uma condicao for atendida. Quando o resultado passa a ser falso, a execucdo é interrompida, saindo do loop, e passa para 0 préximo loco, No cédigo a seguir, vemos um exemplo de uso do Iago while, onde definimos a variavel contador, iniciando com 0, fe enquanto seu valor for menor que 5, executamos as instrucées das linhas 3 e 4 01 contador = 0 02 while contador < 5: 03 print(contador) 04 contador = contador + 1 Observe que na linha 4 incrementamos a variavel contador, de forma que em algum momento seu valor ultrapasse 5. Quando isso for verificado na linha 2, 0 laco sera interrompido. Caso a condigao de parada nunca seja atingida, 0 loop sera executado infinitamente, gerando problemas no programa. Estruturas de controle, condicionais e de repeticao, esto presentes na maioria das linguagens de programacdo representam uma parte fundamental de cada uma delas, Sendo assim, é muito importante conhecer a sintaxe e 0 fun- cionamento dessas estruturas, Nota: Em Python, para indicar 0 bloco de cédigo pertencente ao while, devemos apenas indentar 0 cédigo, confor- me demonstrado no exemple. (ZEXERCICIO COMENTADO 1. (MPE/PE 2012 - FCC - ANALISTA MINISTERIAL — INFORMATICA) Em Python, os métodos de lista permitem uti- lizarlistas como pilhas, onde o item adicionado por titimo é © primeito a ser recuperado, Para adicionar Um item 20 topo da pila, e para recuperar um item do topo da pha utiizam-se, respectivamente os métodos 2) append0 e popd b) insert top0. ©) addTop) ¢ pop. 8) add0 e get. ) adaltemd e top0. Alternativa correta: A ‘A fungo append0, do inglés, significa ‘anexar’, logo, aqui no Python, essa funcSo ir adicionar o elemento passado ‘como argumento 20 final da lista. Existem duas maneiras de usar 0 método pop . A primeira, sem parametros, re- move e retora o tiltimo item da lista, Se for dado um argumento para a posicao, pop remove e retorna o item da osigao. De qualquer maneira a lista é alterada, JavaScript/EcmaScript 6 Q #FicaDica ECMAScript x JavaScript x ES: Uma divida bem comum é 0 porqué dessa mudanca do nome, Na verdade nao houve nenhuma mudanca: JavaScript é como nés chamamos a linguagem, s6 que esse nome é um tra- demark da Oracle (que veio apés a compra da Sun). 0 nome oficial da linguagem é ECMAScript. E ES é simplesmente uma abreviagao do mesmo, £0 nome de uma icadors A sintaxe da ECMAScript & bem similar a algumas lingvagens como C e Java. Ident variavel, fungo, propriedade ou argumento de uma funcio. Regras Bisicas: O primeiro caractere deve ser uma letra, underscore _, ou 0 simbolo de délar $. Os outros caracteres podem ser letras, underscores, simbolo de délar ou ntimeros. Nao é recomendado o uso de acentuacéo, embora seja permitido, Abaixo alguns exemplos de identificadores validos: Importante mencionar que todos os identificadores séo case-sensitive, ou seja, diferenciam as letras maiiisculas € mindsculas, Uso de camel case (modo camelo): Por convencao 0s identificadores da ECMAScript usam camel case, ou seja, a primeira letra é mindscula e cada nova palavra comeca com uma letra maidscula. Isso melhora a leitura dos identifica dores, Seguem alguns exemplos: function minhaFuncaoIncrivel() ( console.log("Se inscreva no Canal de Ovidio no Youtube"); ) Nao € obrigatério seguir essa recomendagao, mas é bom que em seu projeto tenha um padrao de como dar nome 208 identificadores e que voré siga ele durante todo o desenvolvimento, 'AECMAScript utiliza o mesmo padrao para comentérios da linguagem C e similares, tanto para comentarios de uma Anica inha como blocos de comentarios Os comentarios em uma inica linha comecam com //. Tudo que estiver apés //, até o final da linha, sera ignorado pelo moter JavaScript, nao vai ser executado, Também é possivel adicionarmos um comentario no final da mesma linha que ocorre a declaracao: vara console.log(a); // Imprime no console o valor de Podemos utilizar também para desabilitar a execucdo de uma declaracio, isso pode ser itl ao procurarmos resolver erros em nosso cédigo: Ma console.log(a); Agora, se um trecho de cédigo precisar de uma explicagao mais detalhada, podemos usar o bloco de comentirio. Iniciamos ele com /*,€ podemos entao nas proximas linhas escrever nosso comentario e ao final usar */ para indi- atmos o final do bloco de comentario. E comuim usar este tipo de comentario para separar os principas blocos de nosso cédigo, por exemplo as funcées. Ao rolarmos pelo arquivo conseguimos ver mais claramente 2 separacao dle cada parte pe ‘Isso 6 um bloco + de comentario, wv A FIQUE ATENTO! ‘Algumas bancas colocam algo errado entre comentarios, isso no desqualifica a questo, uma vez que 0 que é colocada no comentario naa é compilad. CCONHECIMENTOS DE INFORMATICA ‘CONHECIMENTOS DE INFORMATICA Nas linguagens de programaco um grupo de instru- Bes que executam uma determinada tarefa é chamado de declaracao. ‘A maioria dos programas em JavaScript so compos- tos de varias declaracdes. Vejamos um exemplo: No cédigo acima, em cada linha temos uma declara- Go que sera executada na ordem em que aparece. Para separarmos as declaracdes, usamos em JavaS- 1.+(1) e aperte Enter. Repare na said 1 resi: Double = 2.0 Com excegéo do tipo que era int e agora é Double, © funcionamento é exatamente 0 mesmo. Tal sintaxe ja deve estar bem claro na cabeca da maioria dos progra- madores, mas a primeira sintaxe é so uma maneira dife- tente de se fazer a mesma chamada, \Vamos definir uma fungao para entender um pouco mais da sintaxe, Digite o seguinte 1 scala>defa=2+2 2 arnt ‘Aqui define-se uma fungio com 0 nome ‘a’ que néo recebe parametros, € devolve o resultado da soma '2 + 2. A palavra restrita return no é necesséria, © com- pilador consegue inferir que a ultima expressio da fungae seré o valor devolvide. Repare também que née precisamos definir 0 tipe que a funcio devolve, 0 {qual também foi inferido pelo compilador. Scala é uma linguagem tipada em tempo de compilagso, portanto © seguinte trecho no compila 1 scala> varb= ‘abc" 2b: java.lang.String = abe 3 4 scala>b=a 5 :7: error: type mismatch; 6 — found — = Int 7 required: java.lang. string 8 bea 9 A ‘Observe que o compilador inferiu que o tipo da va- riavel 'b’ é String (note que é 0 String do java), e que 0 tipo devolvido por ‘a’ é Int, logo 0 cddigo néo compila, De certa forma esse comportamento é bom, pois garante uma maior integridade do cédigo, sem que vocé tenha que programar para “deixar 0 compilador feliz", ou seja, do existem tantas regras na escrita do cédigo, porque muitas podem ser deduzidas a partir do contexto, Um outro conceito de Scala é a diferenga entre cha- ‘mada por valor, e chamada por name. Na chamada por valor é feita a evaluacao da expressio assim que o cédigo Eexecutado, mesmo que nao seja necessério usar o resul- tado da chamada’ A vantagem & que evtamos exeevtar ‘outras vezes a expresso para obter o resultado, pois este j8 foi determinado, Na chamada por nome a evaluacio dda expresso ocorre apenas quando o resultado da cha- mada sera usado, tendo um comportamento mais lazy. ‘A desvantagem é a execucao da expresso varias vezes para se obter 0 mesmo resultado, mas a vantagem é nao fazer a execucio quando nao for necessério. Vamos ver um exemplo da dlferenca entre a chamada por valor e por nome. Volte no terminal e defina a seguinte funcao: CCONHECIMENTOS DE INFORMATICA, ‘CONHECIMENTOS DE INFORMATICA 1 scala> defloop: Int = loop 2 loop: Int ‘Agora defina uma funcdo que recebe dois inteiros e devolve o primeiro: 1 scala> def primeiro(x: Int, y+ Int) 2 primeiro: (x: Int.y: Int) Int, Agora execute a chamada pasando ‘leap’ como segundo parametro e se prepare porque seu console iré travar na execugai 1 scala> primeiro(0, loop) Vamos fazer uma pequena modificagao na definicao de ‘primeira’ para tornar possivel a execucdo de tal cédigo: z Int, yz => Int) =x inpint 4 scala> def primeiro ¢ 2 primeiro: (x: Int,y (© que definimos agora foi que o segundo parametro de ‘primeira’ sera uma funcio que devolve um Int. Assim seu resultado s6 sera obtido quando for feita a chamada direta na expresso. Agora conseguimos fazer a chamada em nossa fungi: 1 scala> primeiro(0, loop) 2 res0: int=0 Nossa fungo executou e finalizou sem problemas dessa ver, isso porque no foi necessario utilizar o segundo valor para obter o resultado, Essa 6 chamada por nome, e 0 primeiro exemplo é a chamada por valor, ‘Até agora vimos como invocar fungdes, como definir fungdes (def) e como definir varidveis (var). Vimos também o basico de inferéncia de tipo pelo compilador do scala e os primeiros conceitos da linguagem, Mas como eu havia dito, Scala também tem conceitos de orientacao a objetos, portanto vamos definir nossa primeira classe em Scala: scala> class AcumSoma { var acum = 0; def acum(i: Int) = (acum = acum + i; acum) } defined class AcumSoma Lembre-se que ndo somos obrigados a definir 0 tipo devolvido pela fungio caso esteja explicito e também nao precisamos da palavra reservada ‘return’. O que fizemos foi definir uma classe que se chama ‘AeumSema’ que tem um atributo, que por padrao do Scala é de acesso privado, chamado acumulado e que o compilador inferiu 0 tipo inteiro baseado no valor atribuido. Também definimos para a classe a funcdo ‘acum’ que recebe um inteiro, guarda o valor acumulado até entao da soma com o pardmetro passado e devolve tal valor, Vamos instanciar um objeto da nossa classe e fazer a chamada ao método: 1 scala> val ac = new AcumSoma 2 ac: AcumSoma = AcumSoma@cbbe37 Q #FicaDica ‘Algumas diferencas com o Java (supondo que estamos mais acostumados com a sintaxe do Java) podem ser notadas. Além da inferéncia do tipo de ‘ac’ para ‘AcumSoma’,criamos ‘ac’ com a a palavta reservada ‘val, ou seja, estamos dizendo que diferente de ‘var’ onde criamos uma varidvel, estamos criando um va- lor ¢ estamos garantindo em tempo de compilacio que este valor nao pode ser alterado no cédigo. No Java teriamos que usar a palavra ‘final’ para obter o mesmo comportamento, em Scala temos que “satisfazer ‘menos o compilador’. Também nao foi necessério usar ‘0’ para invocar 0 construtor de AcumulaSoma, € assim como no Java toda classe em Scala tem por padrao 0 construtor que nao recebe parimetros com acesso pilblico. Continuando co exemple: scala> acacum(2) res0: Int scala> acacum(1) 3 wnuns res1: Int Nada de novidade aqui, estamos invocando a funcio ‘acum’ no objeto ‘ac’. Porém ‘acum’ é uma funcio que recebe um Gnico parametro e devolve um valor. Dessa forma podemos executar a chamada da nossa funcio da outra forma que vimos anteriormente: 4 scala>acacum 4 2 res2: Int=7 Em Scala no existe exatamente o conceito de classes, atributos e pardmetros estaticos, porém existe um conceito mais bem definido: ‘object’. Criamos um ‘object’ igual criamos uma classe, com a diferenca de que nao é possivel instanciarmos um object, afinal estamos definindo o proprio. Com essa diferenca, estamos garantindo em tempo de compilagao que o design do cédigo, em que foi tomada a decisio de restringir a existéncia de apenas uma definicio para determinada classe seja seguida. Em Java também é possivel garantir tal critério em tempo de compilagdo, mas demanda a escrita de bem mais cédigo e de uma compreensdo um pouco maior do funcionamento e limitages da linguagem. Um exemplo de object: scala> object Objeto { def valor = 5 } defined module objeto scala> Objeto.valor res3: Int Existem os tipos primitivos basicos em Scala como Int, Long, Boolean, Float, Double, Short, Byte, Char e String, sendo que String é a String do jjava.lang’, Um fato interessante sobre Scala é que como a linguagem roda em cima da JVM, todas as bibliotecas disponivels para Java também esto disponiveis para Scala ‘0 tipo que no vimos ainda € 0 ‘veld. Em Scala nao existe o conceito de void, toda funcio devolve um valor e quan- do no ha um valor explicito a ser devolvido o compilador se encarrega de devolver um valor do tipo ‘Unit. Exemplo: 1 scala> def imprime = print(*Hello!") 2 imprime: Unit ‘print’ 6 uma funcdo que imprime um valor no terminal e nao devolve valor, logo nossa funcao ‘imprime’ também nao devolve valor, portanto o tipo devolvide é "Unit, que também pode ser expressado/escrito como ‘QA diferenca basica entre void ¢ Unit, & que Scala permite criar valores e variaveis do tipo Unit, e em Java por exemplo nao é possivel criar uma varidvel do tipo void, Também é possivel analisar o valor devolvido por qualquer fungo mesmo que a fungao nao devolva um valor definido e neste caso seré um Unit. Um exemplo trivial de como usar este comportamento: scala> def num = 9 1 hum: Int 2 3 scala> def verificaUnit(: => Any) = (f match ¢ ¢ 4 ase xUnit => print(“Eh Unit!") case _ => print(’Nao 5 eh Unit!))) verificaUnit: (=> Any Unit 0 tipo ‘Any’ é andlogo ao ‘Object’ do Java, portanto pode ser qualquer valor, funcao ou objeto. Nessa fungao estamos usando um tipo de switch case para obter © mesme comportamento do ‘instanceef’ em Java, afinal no existe tal operacdo em Scala, O que est acontecendo € que a funcao verifica Unit recebe uma fungao {que nfo recebe arguments e devolve um valor qualquer. A funcao f entao estimada e o resultado da funcao é tes- tado nos cases da eperagao ‘match’. Caso seja do tipo Uni, imprimimos “Eh Unit!" e no caso padréo imprimimos “Nao eh Unit!” Repare que diferente do ‘switch’, no ‘macth’ nao temos que chamar a operacao ‘break’ para nao executar CCONHECIMENTOS DE INFORMATICA, ‘CONHECIMENTOS DE INFORMATICA (0 outros casos, Para testar verifica Unit vamos fazer a chamada usando nossas outras duas fungdes que foram definidas: 1 scala> verificaUnit{num) 2 Nao eh Unit 3. scala> verificaUnit(imprime) 4 Vou passar no concurso! Pig 0.16 0 usuarios do Unix e do Windows precisam do se- gui + Hadoop 0.23.X, 1.X ou 2X - htto://nadoop.apa- che org/common/releases html (Voc8 pode execu- tar 0 Pig com diferentes versoes do Hadloop con- figurando HADOOP_HOME para apontar para 0 diretério onde vocs instalou Hadoop. Se vocé néo configurou HADOOP_HOME, por padréo, 0 Pig ‘executard com a versao incorporada, atualmente ‘0 Hadoop 1.0.4) + Java 1.7 - http://java.sun.comvjavase/downloads/ indexisp (configure JAVA_HOME na raiz da sua ins- talagéo Java) Opcional + Python 2.7 - hitps//mmpythonorg (a0 usar Streaming Python UDF) + Ant 1.8 ~ http://antanache.or ees) (para compila- Para construir um pig, faga o seguinte: 1. Confira 0 eédigo do pig do SVN: svn co http://svn. apache.org/repos/ast/pig/trunk rie o codigo do diretario superior. Se a compilagao for bem-sucedida, vacé deve ver 0 arquivo pigjar criado nesse diretério. 4. Valide © pigjar executando um teste de unida- de: ant test 5, Se vocé estiver usando 0 Hadoop 0.23X ou 2X, adicione -Dhadoopversion = 23 na linha de co- mando da sua formiga nas etapas anteriores 2 3 Pig tem dois modos de execucso ou exectypes: Local Mode - Para executar Pig no modo local, vvocé precisa acessar uma tinica maquina; Todos os ar- quivos sio instalados e executados usando seu host local e sistema de arquivos. Especifique o modo local usando a bandeira -x (pig -x local) Tez Local Mode - Para executar Pig no modo lo- cal. E semelhante a0 modo local, exceto internamen- te, 0 Pig id invocar 0 motor de tempo de execucao. Es- pecifique 0 mode local de Tez usando a bandeira x (pig *xtez local) Nota: © modo local Tez é experimental. Existem algumas consultas que apenas provocam erres nos, dados maiores no modo local. lapreduce Mode- Para executar Pig no modo ma- preduce, vocé precisa acessar um cluster Hadoop e uma instalagso HDFS. O modo Mapreduce € 0 modo pa- dro; voce pode, mas no precisa , especifique-o usando a bandeira -x (pig ou pig -x mapreduz). Tez Mode - Para executar @ modo Pig no Tez, vocé precisa acessar um cluster Hadoop e instalacio HDFS. E5- pecifique 0 modo Tez usando o sinalizador “x (-x ez) Voce pade executar Pig em qualquer modo usando 0 comando “pig” (0 script perl do bin / pig) ou 0 comando. *java" (java -cp pigjar Este exemplo mostra como executar Pig no mode lo- «al e mapreduz usando 0 comands pig. 7° mode local */ $ pig -x loca . 1* Modo local Tez * / $ pig -x tez local 1+ modo mapreduce * / Sig. ou $ pig -x mapreduce 1* Modo Tez * / $ pig-xtez... Vocé pode executar Pig no modo interativo usando 0 shell Grunt. Invoque o escudo Grunt usando © comando *pig’ (como mostrado abaixo) e, em seguida, insta suas declaragées Pig Latin ¢ comandos Pig na pagina de co- mando interativamente. Essas instrucdes Pig Latin extraem todas as IDs de usuarios do arquivo / ete / passwd. Primeiro, copie 0 ar- quivo / etc / passwd para o diretério de trabalho local. Em seguida, invoque o shell Grunt digitando o comando pig’ (no modo local ou hadioop). Em seguida, insira as deciaracoes ig Latin de forma interativa no prompt do grunt (certifique-se de incluiro ponto e virgula apés cada declaracéo). 0 operador DUMP exibird os resultados na tela do terminal grunt> A = load ‘passwd’ usando PigStorage (:); grunt> B = foreach A gera $ 0 como id grunt> dump B; Local Mode $ pig -x local *Conectando & grunhido Tez Local Mode $ pig -x tez_local *Conectando 8 grunhido Mapreduce Mode $ pig x mapreduce * Conectando § grunhido $ ig * Conectando § grunhido Tez Mode $pig-xtez * Conectando & grunhido Use scripts de pig para colocar instrugées Pig Latin comandos Pig em Um tnico arquivo, Embora nao seja, necessario, é uma boa pratica identificar 0 arquivo usan- do a extenséo * pig Vocé pode incluir comentarios em scripts Pig Para comentarios multi-line use /*...*/ Para uso de comentarios de uma tinica linha - /* myscriptpig Meu script é simples Incluitrés afirmagées Pig Latin. w/ A = LOAD ‘student’ USANDO PigStorage () AS (nome: chararray, age: int, gpa: float); -- carregando dados B = FOREACH A GENERATE name; - transformando dados DUMP B; - recuperacio de resultados © Pig suporta a execucao de scripts (e arquivos Jar) que so armazenados em HDFS, Amazon $3 e outros sistemas de arquivos distribuidos. O URI de localizacéo completa do script & necessério. Por exemplo, para exe- cutar um script Pig em HDFS, faga o seguinte: $ pig has: //nn.mydomain.com: 9020 / myseripts / scriptpig ESTRUTURAS DE DADOS E ALGORITMOS: BUSCA SEQUENCIAL E BUSCA INARIA SOBRE ARRAYS, ORDENACAO (METODOS DA BOLHA, ORDENACAO POR SELECAO, ORDENACAO POR INSERCAO, LISTA ENCADEADA, PILHA, FILA, NOCOES SOBRE ARVORE BINARIA), NOGOES DE ALGORITMOS DE APRENDIZADO SUPERVISIONADOS E NAO SUPERVISIONADOS Algoritmo é um meio finito de resolver problemas. Qg #FleaDiea No meu canal do youtube tenho uma playlist especifica de Légica de Programacao, acesse: http://a9.gg/logicaovidio No caso das estruturas de dados, elas sio modos particulares de armazenamento e organizacao de dados fem um computador de modo que possam ser usados de maneira eficiente. Tanto os algoritmos como as Es- truturas de dados séo temas fundamentals no mundo da informatica, sendo utilizados nas mais diversas areas, do conhecimento e com as mais diferentes propésitos de aplicago. Sabe-se que algoritmos manipulam dados. Quando estes dados estio organizados (dispostos) de forma coerente, caracterizam uma forma, uma estrutura de dados. A organizagio e os métodos para manipular essa estrutura é que Ine conferem singularidade, Vetores, ou arrays sd0 estruturas de dados cldssi- cas, S30 lineares € estaticas, isto é, so compostas por tum nimero fixo (finito) de elementos de um determina- do tipo de dados. O tempo de acesso aos elementos de um vetor € muito rapido, sendo considerado constante: ‘9 acesso aos elementos ¢ feito pelo seu indice no vetor. Porém, a remocio de elementos pode ser custosa se no for desejavel que haja espacos “vazios" no meio do vetor, pois nesse caso 6 necessario "arrastar" de uma posigo todos os elementos depois do elemento removido. Essa 6 uma estrutura muito recomendada para casos em que ‘5 dados armazenados no mudar3o, ou pouco muda- Fo, através do tempo, Uma aplicagao dos vetores sio as buscas bindrias, que so algoritmos de busca verificam se uma dada in- formagao ocorre em uma sequéncia ou nao. Por exem- plo, dada uma sequéncia de ntimeros guardados em uma lista seq e um numero x, escreva uma fungdo que responda & pergunta: x ocorre na sequéncia? Uma possivel solucio é percorrer a lista toda variando 0 indice i de 0 a len(seq)-1 e comparando cada elemen- to seqli] com x. Caso 0 valor seja encontrado a funcio re- toma True e, caso contrario, retorna False, Essa solucio é conhecida como Busca Sequencial, vejamos um exemple: def busca_sequencial( seq, x): “"(list, float) -> bool” fori in range(len(seq)): if seqlil == x: return True return False A FIQUE ATENTO! Um vetor ou array pode ser unidimensional (i- nnhas) ou bidimensional (linhas colunas), no caso de vetores bidimensionais, eles também podem ser chamados de matrizes. Uma Lista é uma estrutura de dados linear. Uma lista ligada, também chamada de encadeada, ¢ linear e dina- mica, é composta por nés que apontam para o proxi- mo elemento da lista, com exceco do tiktimo, que nio aponta para ninguém. Para compor uma lista encadeada, basta guardar seu primeiro elemento, ‘As Pilhas so estruturas baseadas no principio LIFO| (last in, first out), na qual os dados que foram inseridos por ditimo na pilha sero os primeiros a serem removi- dos. Existem duas funges que se aplicam a todas as pi- lhas: PUSH, que insere um dado no topo da pilha, e POP, que remove o item no topo da pilha, Podemos criar uma classe Pilha para implementar cesta estrutura de dados. Os métodos pilblicas desta clas- se serdo a implementaco das operacoes. public class Pilha ¢ public void insere(Peca peca) ( /implementacao ) CCONHECIMENTOS DE INFORMATICA, ‘CONHECIMENTOS DE INFORMATICA public Peca removed ( //implementacso > public boolean vaziag « //implementagao ) ) (© primeiro fato importante que devemos observar & que uma vez que a interface da Pilha foi definida, ja sa~ beriamos usar a classe Pilha. Vamos criar uma classe de ‘este bem simples para exemplificar 0 uso de uma Pilha public class Teste ( public static void main(Stingl] args) ( Pilha pha = new Pilhad; Peca pecainsere = new Peca); pilhaiinsere(pecalnsere); Peca pecaRemove = pilharemove); if (pilhavaziag) ( System.out,printin(“A pilha esta vazia"); ) ) As Filas so estruturas baseadas no _princ pio FIFO (frst i, first out), em que os elementos que fo- ram inseridos no inicio so os primeiros a serem remo- vidos. Uma fila possui duas fungdes basicas: ENQUEUE, gue adiciona um elemento ao final da fila, e DEQUEUE, gue remove 0 elemento no inicio da fila. A operaco DE- QUEUE 56 pode ser aplicado se a fla ndo estiver vazia, causando um erro de underflow ou fila vazia se esta operacio for realizada nesta situacao, por exemplo um procedimento de fila de alunos sera: 1, Insere um Aluno (coloca um aluno no fim da Fila), 2. Remove um Aluno (retira 0 aluno que esté no comeco da Fila), 3.” Informa se a Fila esta vazia, (© esboso da classe Fila seria mais ou menos assim: public class Fila ( public void insere(Aluno aluno) ( //implementagso ) public Aluno removed ( //implementacso > public boolean vaziag « //implementagao ) ) Agora que jé temos a interface de uso da Fila definida vamos escrever algum teste sobre como ela deveria se comportar. public class Teste ( public static void main(Stringl] args) ( Fila fila = new Fila); Aluno aluno = new Aluno(); filainsere(aluno}, Aluno alunoRemovido = filaremovel); if (fila.vaziag) ( System.out.println(‘A fila esta vazia"); ) ) ) Uma Arvore é uma estrutura de dados em que cada elemento tem um ou mais elementos associados, poden- do defini-se uma érvore recursivamente como: Luma estrutura (uma drvore); 2. _umné (designado por raz), que contém a infor- magio a armazenar € um conjunto finito de drvores (as sub-arvores) 3. No Existe érvores vazias, no minimo haverd um n6 raiz(que no possul pai) Cada arvore tem apenas uma raiz, Além disso, os ele- mentos associados a cada né sao habitualmente chama- dos de fithos desses nés. Os nés sem flhos de uma arvore so chamados de folhas. Em matematica e ciéncia da computacao, grafo é 0 objeto basico de estudo da teoria dos grafos. Tipicamen- te, um grafo representado como um conjunto de pon- tos (vétices) igados por retas (as arestas). Dependendo da aplicacdo, as arestas podem ser direcionadas, ¢ so representadas por "setas” Os grafos s50 muito iteis na representacéo de pro- blemas da vida real, em varios campos profissionais. Por exemplo, pode-se representar um mapa de estradas através dos grafos e usar algoritmos especifcos para de- tetminar 0 caminho mais curto entre dois pontos, ou 0 caminho mais econémico. Assim, os grafos podem pos- Suir também pesos (ou custo), quer nas arestas quer nos vertices, € 0 custo total em estudo sers calculado a partir destes pesos. Outro exemplo da utlizagao de grafos sdo as redes PERT no ambito do planejamento de projetos. Neste caso, a cada aresta esta associado o custo de execucao, as tarefas precedentes de ume outa serdo suas afiuen- tes. (GZ EXxeERCiclO COMENTADO 1. (BASA 2012 - CESPE - TECNICO CIENTIFICO - TEC- NOLOGIA DA INFORMACAO - ANALISE DE SISTE- MAS) Acerca da utilizacio de algoritmos e fluxogramas em légica de programacao, julgue os itens a seguir. Quando um break é encontrado dentro de um laco for, a execucéo do cédigo é interrompida e o programa & finalizado. ()CERTO—(_) ERRADO Resposta: Errado O break sé interrompe quando se utiliza 0 switch0) . 2. (BASA 2012 - CESPE - TECNICO CIENTIFICO - TECNOLOGIA DA INFORMAGAO - ANALISE DE SISTEMAS) Acerca da utilizacdo de algoritmos e fluxogramas em légica de programacao, julgue os itens a seguir. © comando while utlizado em algoritmos implementa lacos com teste antecipado de condigées, testando a condicdo e, sendo ela verdadeira, executando o bloco de comandos, ()CERTO (-) ERRADO Resposta: Certo © comando While faz exatamente o que é afirmado acima. BANCO DE DADOS: CONCEITOS DE BANCO DE DADOS E SISTEMAS GERENCIADORES DE BANCOS DE DADOS (SGBD), MODELAGEM CONCEITUAL DE DADOS (A ABORDAGEM ENTIDADE RELACIONAMENTO), MODELO RELACIONAL DE DADOS (CONCEITOS BASICOS, NORMALIZACAO), BANCO DE DADOS SQL (LINGUAGEM SQL (SQL2008), LINGUAGEM HIVEQL (HIVE 2.2.0)), BANCO DE DADOS NOSQL (CONCEITOS BASICOS, BANCOS ORIENTADOS A GRAFOS, COLUNAS, CHAVE/VALOR E DOCUMENTOS), DATA WAREHOUSE (MODELAGEM CONCEITUAL PARA DATA WAREHOUSES, DADOS MULTIDIMENSIONAIS) Q #FicaDica Todo banco de dados possui varias tabelas, nas tabelas te diversos dados. Nao esqueca essa hierarquia. mos diversas campos, e nos campos temos Vimos muitas informacées sobre as linguagens de programacgo nos itens anteriores, elas executam toda a parte légica de um sistema, mas onde as informages ficam gravadas? A resposta € simples, em um banco de dados, sem ele as informagdes nao ficariam de forma permanente dentro do sistema, logo pode-se dizer que um banco de dados 6 uma colegao de informagées que se relacionam de modo que criem algum sentido, isto é uma estrutura bem organi- zada de dados que permite a extracéo de informacées, Assim, s80 muito importantes para empresas @ tomaram-se a principal peca dos sistemas de informacéo. ‘Além do dados, um banco de dados também é formado pelos metacados. Um metadado é todo dado relative a outro dado, sem o qual nao setia possivel organizare retirar as informacdes de um banco de dado ‘Alguns afirmam que a expressao é sindnimo de SGBD (Sistema Gerenciador de Banco de Dados), que é um prog ma de gerenciamento de dados. O termo "banco de dades’ também é usado para definir uma base de dados, que é tum grupo de dados agrupados por um SGBD. (© SGBD usa uma linguagem para ctiar a base de dados, sendo que, atualmente, a mais usada é a SQL (Structured Query Language). Sao varios os SGBDs disponiveis no mercado; alguns S80 pagos e outros gratuito. ‘guns dos tipos de SGBD existentes no mercado + SQLServer: Um dos maiores do mundo, sob licenga da Microsoft; + MySQL: Trata-se de um software livre, com cédigo fonte aberto; + FirebirdSQL: Possu| cidigo fonte aberto e roda na maioria dos sistemas Unix; + Microsoft Access: E um Sistema Gerenciador de Banco de Dados que acompanha o pacote Office da Microsoft. ste SGBD tem poucas atribuicGes profissionais, sendo mais usado para aprendizagem, devido a sua interface amigavel; + mSQL: Sistema pequeno e que trabalha mais com 0 uso eficiente da meméria, Foi criado pela Hughes Techno- logies Pty Lt. No armazenamento de um dado, é necessério criartabelas, dentro das quas séo criadas colunas, onde serdo guar- dadas as informacdes. Para que os dados presentes na base de dados fiquem bem organizados, as tabelas devem ser ctiadas para que nao misturem as informagoes. Modelagem Conceitual Quando 0 assunto a modelagem conceitual dos dados pode-se comecar falando sobre as entidades que formam lum conjunto de “coisas” com conceitos comuns as quais desejamos armazenar 0s dados. Entidades podem ser pessoas, lugares, organizacGes, objetos fisicos e tangiveis. ‘As entidades sao representadas através de um retangulo com o nome da entidade escrito em seu centro, Relacionamentos sao associacSes entre entidades com um significado especifico dentro do mundo real. Os objet do mundo real néo ocorrem de forma isolada, eles se associam ou se vinculam. AA figura de um relacionamento € representada através de um losango, tal como as entidades os relacionamentos sto classificados em fortes ou fracos. Tal como as entidades, os relacionamentos também possuem nome e devem expressar 0 real significado dentro do contexto modelado. A figura a seguir mostra como os relacionamentos sao re- CCONHECIMENTOS DE INFORMATICA, ‘CONHECIMENTOS DE INFORMATICA presentados em um modelo conceitual de dados. + Reelacionamento fraco > Figura 2: Notacio de Relacionamento Forte e Relacio- namento Fraco Na figura acima DEPENDENTE é uma entidade fraca fem relacio ao EMPREGADO, sempre que esta relagio, existir de forma fraca, 0 relacionamento também sera fraco, por esta razao o losango desta relagdo est repre- sentado com uma linha dupla. Ja na relagao entre EM- PREGADO e CARGO nao ha dependéncia de existéncia ou identificagéo, pois um CARGO nao depende de um EMPREGADO para existir e ser identificado e vice-versa, Quando 0 assunto so os relacionamentos, deve-se ‘ter em mente trés conceitos importantes que influenciam diretamente na modelagem e entendimento de um mo- delo canceitual. Os conceitos so o grau, cardinalidade e tipo do relacionamento, (© simples fato de associar duas entidades através de um relacionamento com suas cardinalidades as vezes. rndo so suficientes para representar todas as regras de negécio existentes dentro dessas relacdes Para isto, podemos usar mecanismos de representa 80 um pouco mais detalhados. Sob esta stica, podemos ainda classificar os relacionamentos em trés tipos: + Relacionamentos independentes + Relacionamentos Contingentes; + Relacionamentos mutuamente exclusivos. Relacionamentos Independentes: Tipo de relaciona~ mento presente na maioria das relacées, Nao ha necessi- dade de interpretacéo simultanea de outro relacionamen- to. Ou seja, € independente, ndo depende de ninguém para existir ou influenciar o seu comportamento. Relacionamentos Contingentes: Estabelecem associa~ ‘des simultaneas entre os elementos envolvidos. Ou seja, mais de um relacionamento deve ocorrer em um mesmo. instante Relacionamentos Mutuamente Exclusivos: Estabele- cem assaciagdes onde, se um relacionamento ocorre, os outros nao deverdo ocorrer em relacao a um determina- do objeto. [Z EXxERCiclO COMENTADO. 1. (TRE/RJ 2012 - CESPE - TECNICO JUDICIARIO - PROGRAMAGAO DE SISTEMA) Juigue os seguintes itens, relativos 4 modelagem de dados: diagramas en- tidade-relacionamento e mapeamento para modelo re lacional. © modelo conceitual representa as regras de negécio sem limitagGes tecnolagicas ou de implementagao e, por isso, é @ etapa mais adequada para o envolvimento do usuario, que nao precisa ter conhecimentos técnicos, ()cERTO(_) ERRADO Reposta: Certo As regras de negécios do modelo conceitual nfo pos- suem limitagées em sua implementagio Modelo Relacional (© modelo relacional & um modelo de dados repre- sentativo (ou de implementagao), adequado a ser 0 mo- delo subjacente de um Sistema Gerenciadior de Banco de Dados (SGBD), que se baseia no principio de que todos 1s dados esto armazenados em tabelas (ou, matemati- camente falando, relacdes). Toda sua definicao é tebrica € baseada na légica de predicados e na teoria dos con- juntos. © conceito foi criado por Edgar Frank Codd em 1970, sendo descrito no artigo “Relational Model of Data for Large Shared Data Banks". Na verdade, o modelo relacio- nal foi 0 primeiro modelo de dados descrito teoricamen- te, os bancos de dados ja existentes passaram entao a ser conhecidos como (modelo hierdrquico, modelo em rede ‘ou Codasyl e modelo de lstas invertidas). (© modelo relacional para geréncia de bases de dados (SGBD) é um modelo de dados baseado em légica e na teoria de conjuntos. Em definicao simplificada, 0 modelo baseia-se em dois conceitos: conceito de entidade e relacdo - Uma en- tidade é um elemento caracterizado pelos dados que so recolhidos na sua identificagéo vulgarmente designado por tabela, Na construcio da tabela identificam-se os dados da entidade. A atribuigao de valores a uma enti- dade constréi um registro da fabela, A relacio determina ‘© modo como cada registro de cada tabela se associa a registros de outras tabelas, Historicamente ele é o sucessor do modelo hierarqui- co e do modelo em rede, Estas arauiteturas antigas so até hoje utilizadas em alguns data centers com alto volu- me de dados, onde a migracao & inviabilizada pelo custo que ela demandaria; exstem ainda os novos modelos ba- seados em orientacao ao objeto, que na maior parte das vezes s8o encontrados como kits em linguagem formal ‘© modelo relacional foi inventado pelo Frank Codd € subsequentemente mantido e aprimorado por Chris Date e Hugh Darwen como um modelo geral de dados. No Terceiro Manifesto (1995) eles mostraram como 0 modelo relacional pode ser estendido com caracteris- ticas de orientacio a objeto sem comprometer os seus principios fundamentais. A linguagem padrao para os bancos de dados rela- cionais, SQL, apenas vagamente remanescente do mo- delo matematico. Atualmente ela & adotada, apesar de suas restricées, porque ela é antiga e muito mais popular que qualquer outra linguagem de banco de dados. #FicaDica Qg Crie chaves cegas (Blind Key) toda vez que no for possivel identificar a chave primaria, ou quando esta for muito complexa, composta por muitos atributos. Esses tipos de atributos geralmente sao conhecidos por atributos fal 505, ou seja, néo fazem parte de forma explicita da regra de negécio, porém foram criados para garantirflexibilidade ou integridade ao modelo de dados desenvolvido. (Z EXERCiclo COMENTADO 1. (Questo 24 - MPE/AL Técnico do Mi co FGV 2018) © conjunto de programas responsavel pelo gerencia- mento de uma base de dados e que, entre outras fun- ‘gBes, suporta uma linguagem de consulta, gera relatorios € disponibiliza uma interface para que os seus clientes possam incluir,alterar ou consultar dados, é chamado de: istério Publi a) Banco de Dados Relacional (BDR). ) Dicionario de Dados (OD), ©) Modelo Entidade Relacionamento (MER). 4d) Sistema de Suporte & Decisio (SSD), «@) Sistema Gerenciador de Bancos de Dados (SGBD). Resposta: Letra E A’Alternativa A” esté incorreta, pois 0 BDR é um ban- co de dados que modela os dados de uma forma que eles sejam percebicios pelo usurio como tabelas. A’*Alternativa B” estd incorreta, pois o DD é uma cole- Go de metadados que contém definigSes e represen tages de elementos de dados; ‘A“Akernativa C” esté incorreta, pois MER é um mode- lo de dados para descrever os dados ou aspectos de informagao de um dominio de negécio ou seus requi- sitos de processo, de uma maneira abstrata que em il- ‘ima andlise se presta a ser implementada em um ban- co de dados, como um banca de dados relacional; A-“Alternativa D" esta incorreta, pois um SSD ou SAD. (Sistema de Apoio a Decisdo), pode ser definido como um conjunto de pessoas, procedimentos, software, banco de dados e dispositivos utilizados para dar su- porte a tomada de decisdes especifica de um proble- mai A “Alternativa E” esta correta, pois O SGBD ¢ 0 con- junto de softwares responsaveis pelo gerenciamento ‘de um banco de dados, e, portanto, com ele podemos incluir, alterar ou consultar dados dos clientes assim como propée o enunciado, Banco de dados SQL (linguagem SQL (SQL2008) Vamos comecar com o comando para se fazer uma consulta de dados. Imagine que vocé quer *selecionar todos os ntimeros de série de sua tabela de precos acima de R$ 10,00." Se formos transformar isto em SQL, sera tio simples quanto, Veja 0 comando: SELECT NumeroSerie FROM precos WHERE Preco > 10; Veja os exemplos abaixo e descubra o que eles fazem SELECT nome.cargossalario FROM thl_funcionarios WHERE salario > 4000; SELECT * FROM jogadores WHERE time = "Palmeiras"; Nos exemplos acima é possivel fitrar apenas funcio- narios que ganham mais que 4 mil reais por més e no ‘outro exemplo mostra em uma tabela apenas jogadores do time Palmeiras. Para melhorar a busca, pode se usar as condigées do WHERE. E nele que “filtramos” os atributos escalhidos, ‘© WHERE é opcional, sendo assim voc omiti-lo, entéo vocé terd todos 0s registros com os atributos escolhidos, As condigées mais comuns so: igual) ou <> (diferente) > (maior que) ‘< (menor que) >= (maior ou igual a) <= (menor ou igual a) LIKE (similar a) BETWEEN (entre X e Y) IN (varios valores dentro da lista) AND (e) OR (ou) XOR (mistura do OR com NOT (negagao) IS (valores iguais) Com excecao dos dois tiltimos, todos possuem a se- guinte sintaxe. ‘ operador Se a qualquer das anteriores condic6es Ihe ante-pu- sermos 0 operador NOT o resultado da operacao sera 0 contrario ao devolvido sem o operador NOT 0 Giltimo operador denominado IS se emprega para ‘comparar duas vatiaveis de tip objeto IS ‘. Este operador devolve verdadeiro se os do's objetos forem iguais. Vou utilizar um mesmo exemplo, s6 variando as con- digées. Perceba que sera facil entender o que o comando ira retornar na consulta. Veja alguns exemplos de utiiza- ‘cdo dessas condicoes: SELECT nome,cargosalatio WHERE nome = “Ovidio": SELECT nome,cargo salario WHERE salario > 2000; SELECT nome,cargosalario WHERE salario < 7000; SELECT nome,cargo.salario FROM tbl_funcionarios WHERE salario BETWEEN 1000 AND 5000; SELECT nome.cargossalario FROM. tbl_funcionarios WHERE salario > 1000 AND salario < 5000; SELECT nome,cargo;salario FROM tal_funcionarios WHERE (salario > 1000 AND salario < $000) OR (nome = *Ovidio" AND cargo = “Professor Nova Concursos"); SELECT nome,cargo.salario FROM tal_funcionarios WHERE NOT nome = “Ovidio"; SELECT nome,cargo,salario,cidade FROM tbl_funcio- narios WHERE cidade IN(“Guarulhos*, “S80 Paulo®, “Praia Grande") FROM tbl funcionarios FROM tbl funcionarios FROM tbl funcionarios CCONHECIMENTOS DE INFORMATICA ‘CONHECIMENTOS DE INFORMATICA Para se criar tabelas, 0 comando é 0 CREATE TABLE, usando a seguinte a estrutura abaixo: CREATE TABLE tabela ( nome_atributo tipo_dado opcées, ome atributo tipe_ dado opcées); Vamos agora criar uma tabela chamada tblprofessor, que canter’ os campos nome, endereco, telefone, data de nascimento e sexo. CREATE TABLE tbiprofessor( codprofessor INTEGER CONSTRAINT primarykey PRI- MARY KEY, nome TEXT (50), endereco TEXT (50) telefone TEXT (15), rrascimento DATE, sexo TEXT (1), Parar cadastrar os dados em nossas tabelas, utiliza-se © comando Insert into, conforme a estrutura abaixo: INSERT INTO nome_tabela ( nome_campot, nome_campo2, VALUES ( valor_campoi, valor_campo2, ‘ nome_campoN) . valor_campoN Vejam alguns exemplos: INSERT INTO Pessoas VALUES (4'Ovidio’, Bruna’, ‘Pie- tra’, ‘Eleonora; INSERT INTO agenda (nome, emai) VALUES ("Ovidio", ‘canaldoovidio@gmail.com’) INSERT INTO PAISES VALUES (Brasil, ‘tli’ Japso" INSERT INTO CanaldeOvisio (nameCanal) VALUES (Se insereva no Canal do Ovicio" © comando DELETE ¢ responsavel pela exclusdo de registros que no queremos mais dentro de nossas tabe- las. Segue a estrutura basica DELETE FROM nome_tabela WHERE condicao Lembra que olhamos alguns operadores para ser uti- lizado junto ao WHERE do SELECT? Ele continua valendo aqui. Veja os exemplos DELETE FROM funcionarios WHERE id_funcionario 200; DELETE FROM funcionarios WHERE id_funcionario < 500; DELETE FROM funcionarios WHERE func.nome = "Ovidio"; Quando queremos atualizar/modificar os valores de algum registro na tabela, precisamos dar um UPDATE. 0 ‘WHERE continua presente. Veja a estrutura basica: valor_novo WHERE con- Alguns exemplos: UPDATE funcionarios SET salario = 8000 WHERE id_ funcionario = 57; UPDATE funcionarios SET salario = 7800, nome = “vidio Lopes" WHERE id_funcionario UPDATE funcionarias SET salario = 530; 545 WHERE salario Dica importante para este comando, 6 no esquecer do WHERE, ou entao ele ird alterar todos os registros da sua tabela, Afinal, vocé nao filtrou em quais registros ele ia afetar, nao é verdade? Vimos acima a estrutura do SELECT, entio vamos acrescentar algumas funcionalidades a este comando melhorar ainda mais nossas consultas com o ORDER BY, responsavel por ordernar nosso resultado capturado de forma crescente ou decrescente baseado nas colunas que quisermos. © WHERE é opcional. Sintaxe basica & SELECT atributos FROM tabela ORDER BY atributo (ASC / DESCS, ‘Os nomes ASC e DESC so opcionais, mas por padrio © ASC é utllizado, pois ele define de forma ascendente (crescente) a lista. O DESC faz 0 inverso, decrescente. Veja os exemplos: SELECT nome, salario, cargo FROM funcionarios OR- DER BY nome; SELECT nome, salario, cargo FROM funcionarios OR- DER BY nome ASC; SELECT nome, salario, cargo FROM funcionarios OR- DER BY nome DESC; A FIQUE ATENTO! Para nao esquecer: Insert = Inserao de dados Select - Consulta de dados Update ~ Alteragéo de Dados Delete — Exclusio de Dados (Z exERCiclo COMENTADO 1. (CEITEC 2012 - FUNRIO - SISTEMAS DE INFORMA- AO/INFORMATICA/ENGENHARIA/ADMINISTRA- GAO/MATEMATICA - ETEA-AGPRFA) Em SQL, uma visao é uma relagéo que nao esta no modelo légico do banco de dados, mas que é visivel ao usuario como uma relagéo virtual. Marque a alternativa que possui o coman- do utilizado para a criacdo desta viséo. a) CREATE VIEW [NOME DA VISAO] AS [EXPRESSAO DA, CONSULTA\, ) CREATE VIEW [NOME DA VISAO] FROM [EXPRESSAO DA CONSULTA] ©) SELECT VIEW [NOME DA VISAO] AS [EXPRESSAO DA, CONSULTA} ) SELECT VIEW [NOME DA VISAO] FROM [EXPRESSAO. DA CONSULTA] ) UPDATE VIEW [NOME DA VISAO] FROM [EXPRESSAO. DA CONSULTA], Resposta correta: A Para realizar 0 solicitado, comando SQL correto & 0 CREATE, e na sua sintaxe nao se adequa o FROM, por isso elimina-se 2 alternativa B. Linguagem HiveQl (Hive 2.2.0) é um Data Warehouse criado com base no Apache Hadoop, demonstrando exemplos de seu uso para man'= pular dads através da linguagem HiveQl e, também, da Sua utlizagSo dentro de uma aplicacso Java Esse tema é util para desenvolvedores que tenham interesse em ferramentas para manipulagio e tratamento de informagées em grande escala, visando uma melhor performance e facilidade no manuseio de dados. Além disso, programadores que tenham interesse em conhe- cer solucées para diminuir a complexidade das tarefas dentro do Apache Hadoop, sem perder as vantagens da utlizagao de Map/Reduce, encontraréo uma alternativa facile efciente na ferramenta Apache Hive Banco de Dados NoSQL Banco de dados relacionais estio presentes na maio- ria das incorporacées, porém ha situacdes que eles po- dem ndo representar a solucéo mais adequada para o ar mazenamento de dados. A modelagem relacional pode se revelar como limitada em cenarios nos quais um mes- mo tipo de informacao apresenta um formato variavel, fato este que resultaria na criagéo de inimeras tabelas, para atender a requisites aparentemente simples em ter- mos funcionais. Existem também questées sobre como garantir uma alta disponibilidade e aumentar 0 poder de processa- mento para atender a niveis de uso crescente (escalabi- lidade). Muitas vezes, os investimentos em infraestrutura requeridos para isto serdo pesados, podendo mesmo se ravelar como inviaveis do ponto de vista financeio. Uma oped interessante para atender a estas diferen- tes necessidades seriam os bancos de dados NoSQL que no mercado ¢ interpretado como uma sigla de "Not only SQL, englobando alternativas com capacidades que vao além das caracterstcas tipicas dos sistemas gerenciado- res relacionais. © banco de dados pode ser orientado a documento que representam a unidade basica neste tipo de tecno- logia, sendo possivel comparar os mesmos aos registros das tabelas convencionais. Embora exista um paralelo com as linhas do modelo ralacional, um documento possui uma estrutura flexivel e que no esta presa & existéncia de colunas pré-definidas Do ponto de vista pratico, sto significa que indmeros documentos vinculados a uma mesma colegio podem contar com formatos variaveis. Muitas das solucbes orientadas a documento fazem uso do padrdo JSON (JavaScript Object Notation) para 0 armazenamento de dados. Dentre os diversos bancos orientados a documento, 6 possivel citar como exemiplos o MongoDB, 0 DynamoDB {alternativa oferecid na nuvem pela Amazon) € o Docu- mentDB (este ciltimo um servigo que integra o Microsoft Azure) 38 0s bancos de dados do tipo chave-valor séo forma- dos por conjuntos de chaves e seus respectivos valores, Cada um destes conjuntos, por sua vez, conta ainda com uma chave que funciona como um identificador Gnico: Figura 3; Banco de Dados Chave-Valor Assim como acontece no modelo orientado a docu- mentos, a estrutura de um banco do tipo chave-valor bastante flexivel. Chaves podem, se repetir, ou ndo, a0 longo de varios agrupamentos de dados. Constituem exemplos deste tipo de banco o Redis (solugéo open source bastante utilizada para cache de dads) e DynamoDB, Existe também os bancos de dados orientados a co- lunas, esse € 0 modelo que mais difere do modelo re~ lacional, em que uma linha representa um conjunto de dados relacionados (com cada um destes tiltimos corres- pondendo a colunas) + Em termos praticos, a organizagao dos dados ‘corre com base em colunas + Dados de colunas distintas representando um mesmo agrupamento ocupam as mesmas posicdes no banco. So exemplos de bancos orientados a coluna o HBase 0 Cassandra, com ambos constituindo iniciativas man- tidas atualmente pela Apache Foundation, Por ultimo existe os bancos de dados orientados a grafos que empregam canceitos da teoria de grafos para 2 representacao de relacionamentos entre diferentes cconjuntos de dados. Uma das soludes mais conhecidas baseadas neste modelo é o Neod) @ EXERCICIO COMENTADO 1. (CNJ 2013 - CESPE - ANALISTA JUDICIARIO - ANA- LISE DE SISTEMAS) No que se refere ao desenvolvimen- to web de alto desempenho, julgue os itens subsequen- tes. Apesar de implementarem tecnologias distintas, todos (5 bancos de dados NoSQL apresentam em comum a implementagio da tecnologia chave-valor. ()CERTO () ERRADO. CCONHECIMENTOS DE INFORMATICA, 21 ‘CONHECIMENTOS DE INFORMATICA 22 Resposta: Errado ‘9s bancos de dados NoSQL apresentam nao apresen- tam em comum a implementagao da tecnologia cha- vevalor. 2. (CNJ 2013 - CESPE - ANALISTA JUDICIARIO - ANA- LISE DE SISTEMAS) No que se refere ao desenvolvimen- ‘to web de alto desempenho, julgue os itens subsequen- tes, Uma caracteristica de bancos de dados NoSQL é 0 supor- te & replicacao de dados. Entre as abordagens utilizadas para replicacao, inclui-se a mestre-escravo, ()CERTO (-) ERRADO Resposta: Certo (© NoSAL oferece sim esse suporte. Data Warehouse Um sistema Data Warehouse é projetado para fazer com que informacées sejam disponibilizadas de forma integrada, historica, nao volatil e de forma simples, tor- nando-se’assim uma ferramenta de facil usabilidade & compreensao para os administradores e gerentes de or- ganizagoes. Uma solugdo de Data Warehouse junta varios ele- mentos, como algoritmos ¢ ferramentas que permitem que dados jé selecionados de diversos provedores de informagées independentes, heterogéneos e geografica- mente distantes um dos outros possam ser integrados tem uma base de dados tinica, que se da o nome de Data Warehouse Qg #FleaDica ‘Aggranularidade € uma das mais importantes de- finigdes na modelagem de dados do Data Wa- rehouse (DW) e requer atencao. 0 gro é o menor nivel da informacao e & defi. niido de acordo com as necessidades elencadas no inicio do projeto. Ele é determinado para cada bela Fato, ja que normalmente as tabelas Fatos possuem informagées e granularidades dlistntas, (Z EXERCICIO COMENTADO 1. (MEC 2011 - CESPE- ATIVIDADE TECNICA DE COM- PLEXIDADE GERENCIAL - ADMINISTRADOR DE DA- DOS) Julgue os itens subsequentes, a respeito de data- warehouse e business intelligence (B) ‘A rrepresentagéo multidimensional dos dados, junto com ‘todos os agregados, é conhecida como cubo de dados, sendo este uma generalizagio do que é conhecido na terminologia estatistica como tabulacéo cruzada, ()CERTO ( ) ERRADO Resposta: Certo Ao se trabalhar com Armazém de Dados simultanea- mente com valores agregadas, cria-se o que chama- mos de cubo de dados, causando assim, a generaliza- fo, também conhecida de tabulagio cruzada, TECNOLOGIAS WEB: HTML 5, CSS 3, XML 1.1, JSON (ECMA-404), ANGULAR.JS 1.6.X,NODE. JS 6.11.3, REST ‘As tecnologias web esto em constante avanco e hoje vem atuando no que conhecido como responsivo, ou seja, um site pode ser visualizado da melhor maneira possivel conforme o device que esta sendo utlizado. Por exemplo, no meu projeto de Doutorado desen- volvi um software para auxiliar criangas com sindrome de Down, esse jogo pode ser aberto em qualquer dispositi- vo que se adequaré normalmente. HTML, E a nova versio da linguagem de marcagio HTML, bastante aperfeicoada, © HTMLS tornau a marcago mui to mais clara, se adaptou a forma que os desenvolvedo- res esto trabalhando. Possibilita colocar audio e video nos sites sem uso de plugins, o que é positive tanto para © desenvolvedor quanto para o usuario, que nao precisa se preocupar com a atualizacio de plugins, facilita a for- ma que os desenvolvedores lidam com formularios, entre outras vantagens. doctype do HTMLS é muito mais simples: A tag