Laboratório de Programação - Exercício 22
|
|
- Sérgio Miranda Frade
- 7 Há anos
- Visualizações:
Transcrição
1 Laboratório de Programação - Exercício 22 A Pilha, Escopo e Globais João Araujo Ribeiro jaraujo@uerj.br Universidade do Estado do Rio de Janeiro Departamento de Engenharia de Sistemas e Computação João Araujo Ribeiro (UERJ) Laboratório de Programação LabProg 1 / 32
2 Resumo 1 Ex22 - A Pilha, Escopo e Globais João Araujo Ribeiro (UERJ) Laboratório de Programação LabProg 2 / 32
3 Exercício 22 - A Pilha, Escopo e Globais O conceito de escopo é bem confuso para algumas pessoas quando elas veem pela primeira vez. Originalmente ele vem do uso da pilha do sistema e como é usada para o armazenamento de variáveis temporárias. Neste exercício aprenderemos sobre o escopo e como a estrutura de pilha de dados funciona e veremos como é usado no C moderno. João Araujo Ribeiro (UERJ) Laboratório de Programação LabProg 3 / 32
4 Arquivos necessários Este exercício necessita de 3 arquivos ex22.h O cabeçalho que define algumas variáveis externas e funções. ex22.c Aqui não será o main normal, mas um arquivo-fonte que dará origem ao arquivo objeto ex22.o que conterá algumas funções e variáveis definidas em ex22.h. ex22 main.c O main real que incluirá os outros dois e demonstrará o que eles contêm assim como outros conceitos de escopo. João Araujo Ribeiro (UERJ) Laboratório de Programação LabProg 4 / 32
5 ex22.h 1 #ifndef _ex22_h 2 #define _ex22_h 3 4 // faz O_TAMANHO no ex22.c disponível para outros arquivos.c 5 extern int O_TAMANHO; 6 7 // Obtém (get) e inicia (set) o valor da variável interna estática em ex22.c 8 int get_idade(); 9 void set_idade(int idade); // atualiza uma variável estática interna a update_ratio 12 double atualiza_taxa(double taxa); void imprime_tamanho(); #endif João Araujo Ribeiro (UERJ) Laboratório de Programação LabProg 5 / 32
6 ex22.c 1 #include <stdio.h> 2 #include "ex22.h" 3 #include "dbg.h" 4 5 int O_TAMANHO = 1000; 6 7 static int A_IDADE = 37; 8 9 int get_idade() 10 { 11 return A_IDADE; 12 } void set_idade(int idade) 15 { 16 A_IDADE = idade; 17 } double atualiza_taxa(double taxa_nova) 21 { 22 static double taxa = 1.0; Continua João Araujo Ribeiro (UERJ) Laboratório de Programação LabProg 6 / 32
7 ex22.c 1 2 double taxa_velha = taxa; 3 taxa = taxa_nova; 4 5 return taxa_velha; 6 } 7 8 void imprime_tamanho() 9 { 10 log_info("eu penso que o tamanho é: %d", O_TAMANHO); 11 } João Araujo Ribeiro (UERJ) Laboratório de Programação LabProg 7 / 32
8 Novos tipos de armazenamento Este programa introduz novos tipos de armazenamento. extern static (arquivo) static (função) João Araujo Ribeiro (UERJ) Laboratório de Programação LabProg 8 / 32
9 extern Isto diz ao compilador: a variável existe, porém em outro arquivo externo. Tipicamente isso significa que um arquivo.c vai usar uma variável que foi definida em outro arquivo.c. Neste caso, estamos dizendo que ex22.c tem uma variável O TAMANHO que será acessada de ex22 main.c. João Araujo Ribeiro (UERJ) Laboratório de Programação LabProg 9 / 32
10 static (arquivo) Esta palavra-chave faz o inverso de extern. Neste caso a variável é usada somente neste arquivo.c e não deve ficar disponível para outras partes do programa. Fique atento: extern no nível de arquivo é diferente de static em outros lugares. João Araujo Ribeiro (UERJ) Laboratório de Programação LabProg 10 / 32
11 static (função) Se você declara uma variável em uma função static, então a variável funciona como se fosse definida no arquivo, porém só pode ser acessada desta função. É a maneira de criar um estado constante para uma função, mas na realidade raramente é utilizado em C moderno, pois são difíceis de usar com threads. João Araujo Ribeiro (UERJ) Laboratório de Programação LabProg 11 / 32
12 Variáveis e funções O TAMANHO Esta é a variável declarada como extern e com a qual trabalharemos em ex22 main.c. get idade e set idade Estas funções pegam a variável estática A IDADE e a expõem a outras partes do programa por meio de funções. Você não pode ter acesso a A IDADE diretamente, mas estas funções podem. atualiza taxa Esta função pega um novo valor para taxa e retorna o antigo. Ela usa uma variável estática no nível de função para conservar o valor atual de taxa. imprime tamanho Imprime o que ex22.c acha que seja o valor atual de O TAMANHO. João Araujo Ribeiro (UERJ) Laboratório de Programação LabProg 12 / 32
13 ex22 main.c 1 #include "ex22.h" 2 #include "dbg.h" 3 4 const char *MEU_NOME = "Zed A. Shaw"; 5 6 void demo_escopo(int contador) 7 { 8 log_info("contador é: %d", contador); 9 10 if(contador > 10) { 11 int contador = 100; // MAU! BUGS! log_info("contador nesse escopo tem valor %d", contador); 14 } log_info("na saída, contador tem valor: %d", contador); contador = 3000; log_info("contador após atribuiç~ao: %d", contador); 21 } continua... (1 de 3) João Araujo Ribeiro (UERJ) Laboratório de Programação LabProg 13 / 32
14 23 int main(int argc, char *argv[]) 24 { 25 // teste os acessores de A_IDADE 26 log_info("meu nome: %s, idade: %d", MEU_NOME, get_idade()); set_idade(100); log_info("minha idade agora é: %d", get_idade()); // testa a variável extern O_TAMANHO 33 log_info("o_tamanho é: %d", O_TAMANHO); 34 imprime_tamanho(); O_TAMANHO = 9; log_info("o TAMANHO agora é: %d", O_TAMANHO); 39 imprime_tamanho(); // testa a variável taxa estática na funç~ao 42 log_info("taxa primeiro: %f", atualiza_taxa(2.0)); 43 log_info("taxa novamente: %f", atualiza_taxa(10.0)); 44 log_info("taxa uma vez mais: %f", atualiza_taxa(300.0)); // testa o escopo (2 de 3) continua... João Araujo Ribeiro (UERJ) Laboratório de Programação LabProg 14 / 32
15 47 int contador = 4; 48 demo_escopo(contador); 49 demo_escopo(contador * 20); log_info("contador após a chamada de demo_escopo: %d", contador); return 0; 54 } continua... (3 de 3) João Araujo Ribeiro (UERJ) Laboratório de Programação LabProg 15 / 32
16 Análise do código ex22 main.c:4 Usar a palavra const que significa constante e é uma alternativa ao uso de #define para criar uma variável constante. ex22 main.c:6 Uma função simples que demonstra alguns aspectos do escoponuma função. ex22 main.c:8 Imprime o valor da constante contador como ela é no topo da função. ex22 main.c:10 Um if que inicia um novo bloco de escopo e possui outra variável contador nele. Esta versão de contador é realmente uma variável totalmente nova. Seria como se o comando if tivesse começado uma nova mini função. ex22 main.c:11 Um contador que é local a este bloco e é diferente daquele do parâmetro da função. João Araujo Ribeiro (UERJ) Laboratório de Programação LabProg 16 / 32
17 Análise do código ex22 main.c:13 Imprime seu valor para você ver que aqui é 100, não o que foi passado para a função demo escopo. ex22 main.c:16 Agora vem a parte bizarra. Você tem contador em dois lugares: nos parâmetros para esta função e dentro do comando if. O comando if criou um novo bloco, assim o contador da linha 11 não tem impacto no parâmetro de mesmo nome. Esta linha o imprime e você verá que imprime o valor do parâmetro, não 100. ex22 main.c:18-20 agora colocamos o parâmetro contador para 3000 e o imprimimos, que demonstra que podemos mudar o valor do parâmetro, que isto não vai influenciar a versão da variável na função que que chamou demo escopo. João Araujo Ribeiro (UERJ) Laboratório de Programação LabProg 17 / 32
18 Análise main ex22 main.c:26 Imprime o valor atual de MEU NOME e obtém o valor de A IDADE de ex22.c usando a função acessora get idade. ex22 main.c:27-30 Usa set idade de ex22.c para mudar o valor de A IDADE e depois imprimi-la. ex22 main.c:33-39 Agora fazemos a mesma coisa com O TAMANHO de ex22.c, porém agora estamos fazendo acesso direto e também demonstramos que realmente mudamos seu valor, imprimindo aqui e por imprime tamanho. João Araujo Ribeiro (UERJ) Laboratório de Programação LabProg 18 / 32
19 Análise main ex22 main.c:42-44 Mostra como a variável estática taxa dentro de atualiza taxa é mantida entre duas chamadas. ex22 main.c:46-51 Finalmente, executando demo escopo algumas vezes você pode ver o escopo em ação. Importante a ser notado é que a variável local contador não muda. Passar uma variável como esta não deixará você mudar seu valor na função. Para fazer isso, você precisa do nosso velho amigo ponteiro. Se você passar um ponteiro para uma função, ela terá seu endereço e poderá mudar seu valor. João Araujo Ribeiro (UERJ) Laboratório de Programação LabProg 19 / 32
20 Execução $ gcc -Wall -g -DNDEBUG -c -o ex22.o ex22.c $ gcc -Wall -g -DNDEBUG ex22_main.c ex22.o -o ex22_main./ex22_main [INFO] (ex22_main.c:26) Meu nome: Zed A. Shaw, idade: 37 [INFO] (ex22_main.c:30) Minha idade agora é: 100 [INFO] (ex22_main.c:33) O_TAMANHO é: 1000 [INFO] (ex22.c:32) Eu penso que o tamanho é: 1000 [INFO] (ex22_main.c:38) O TAMANHO agora é: 9 [INFO] (ex22.c:32) Eu penso que o tamanho é: 9 [INFO] (ex22_main.c:42) Taxa primeiro: [INFO] (ex22_main.c:43) Taxa novamente: [INFO] (ex22_main.c:44) Taxa uma vez mais: [INFO] (ex22_main.c:8) contador é: 4 [INFO] (ex22_main.c:16) na saída, contador tem valor: 4 [INFO] (ex22_main.c:20) contador após atribuiç~ao: 3000 [INFO] (ex22_main.c:8) contador é: 80 [INFO] (ex22_main.c:13) Contador nesse escopo tem valor 100 [INFO] (ex22_main.c:16) na saída, contador tem valor: 80 [INFO] (ex22_main.c:20) contador após atribuiç~ao: 3000 [INFO] (ex22_main.c:51) contador após a chamada de demo_escopo: 4 João Araujo Ribeiro (UERJ) Laboratório de Programação LabProg 20 / 32
21 Escopo e bugs Se tudo correu bem, você deve ser capaz de ver muitos dos diferentes modos em que você pode colocar variáveis no seu código C. Você pode usar extern ou funções acessoras como get idade para criar variáveis globais. João Araujo Ribeiro (UERJ) Laboratório de Programação LabProg 21 / 32
22 Escopo e bugs Você pode criar novas variáveis dentro de um bloco e elas guardarão seu valor até a saída do bloco, deixando variáveis exteriores intactas. Você também pode passar um parâmetro para uma função e modificar o parâmetro não midificará a versão de quem chamou. João Araujo Ribeiro (UERJ) Laboratório de Programação LabProg 22 / 32
23 Escopo e bugs A coisa mais importante a perceber é que tudo isso causa bugs A habilidade de C em colocar coisas em muitos lugares e depois te deixar acessá-las nestes lugares pode te confundir facilmente sobre onde elas existem. Se você não sabe onde elas vivem, as chances de manipulá-las corretamente diminuem. João Araujo Ribeiro (UERJ) Laboratório de Programação LabProg 23 / 32
24 Evitando bugs relativos à pilha 1 Não obscureça uma variável como fizemos aqui com contador em demo escopo. Isto deixa você vulnerável a bugs sutis e difíceis de encontrar, como quando você pensa que mudou uma variável porém não mudou. João Araujo Ribeiro (UERJ) Laboratório de Programação LabProg 24 / 32
25 Evitando bugs relativos à pilha 2 Evite muitas variáveis globais, especialmente se usadas entre múltiplos arquivos. Se você tiver que fazê-lo, faça por meio de acessores como get idade. Isto não se aplica a constantes, posto que elas são somente para leitura, como variáveis do tipo de O TAMANHO. Se você quiser que outros modifiquem esta variável, faça por meio de funções acessoras. João Araujo Ribeiro (UERJ) Laboratório de Programação LabProg 25 / 32
26 Evitando bugs relativos à pilha 3 Quando em dúvida, ponha-as na Heap. Não confie na semântica de stack ou outros lugares especializados e, em vez disso, simplesmente use malloc. João Araujo Ribeiro (UERJ) Laboratório de Programação LabProg 26 / 32
27 Evitando bugs relativos à pilha 4 Não use variáveis estáticas de função, como fizemos em atualiza taxa.elas são raramente úteis e terminam sendo um grande problema se você tentar escrever um programa com threads. Eles também são difíceis de encontrar comparado com uma correta variável constante global. João Araujo Ribeiro (UERJ) Laboratório de Programação LabProg 27 / 32
28 Evitando bugs relativos à pilha 5 Evite o reuso dos parâmetros das funções pois elas te confundem se você está simplesmente reutilizando-os ou se você pensa que está modificando o valor na função chamadora. João Araujo Ribeiro (UERJ) Laboratório de Programação LabProg 28 / 32
29 Evitando bugs relativos à pilha 6 Esqueça todas as regras anteriores. As regras devem ser quebradas onde for prático. De fato, você acabará em códigos que quebram todas estas regras e são perfeitamente válidos. As restrições de diferentes plataformas torna este procedimento por vezes necessário. João Araujo Ribeiro (UERJ) Laboratório de Programação LabProg 29 / 32
30 Como quebrar o código. Testam igualdade e desigualdade de variáveis. Tente ter acesso direto às variáveis em ex22.c por meio de ex22 main que você pensa que não pode. Por exemplo, você pode acessar taxa dentro de atualiza taxa? O que acontece se você tem um ponteiro para ele. Retire a declaração extern em ex22.h e veja os erros e warnings do compilador. Adicione especificadores static ou const a diferentes variáveis e tente modificá-las. João Araujo Ribeiro (UERJ) Laboratório de Programação LabProg 30 / 32
31 Trabalho extra Procure pelos conceitos de passar por valor e passar por referência. Escreva um exemplo de ambos. Use ponteiros para ter acesso a coisas que você não teria acesso. Use valgrind para ver como esse tipo de acesso aparece quando você o faz de forma errada. Escreva uma função recursiva que cause stack overflow. Não sabe o que é uma função recursiva? Tenta chamar demo escopo no final de demo escopo ele mesmo e veja como funciona. Reescreva o Makefile para compilar este programa. João Araujo Ribeiro (UERJ) Laboratório de Programação LabProg 31 / 32
32 FIM João Araujo Ribeiro (UERJ) Laboratório de Programação LabProg 32 / 32
Laboratório de Programação - Exercícios 9, 10 e 11
Laboratório de Programação - Exercícios 9, 10 e 11 Arrays e strings, Loops João Araujo Ribeiro jaraujo@uerj.br Universidade do Estado do Rio de Janeiro Departamento de Engenharia de Sistemas e Computação
Leia maisLaboratório de Programação - Exercício 29
Laboratório de Programação - Exercício 29 Bibliotecas e linkagem João Araujo Ribeiro jaraujo@uerj.br Universidade do Estado do Rio de Janeiro Departamento de Engenharia de Sistemas e Computação João Araujo
Leia maisLaboratório de Programação - Exercício 30
Laboratório de Programação - Exercício 30 Testes automáticos João Araujo Ribeiro jaraujo@uerj.br Universidade do Estado do Rio de Janeiro Departamento de Engenharia de Sistemas e Computação João Araujo
Leia maisINSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA RIO GRANDE DO NORTE
INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA RIO GRANDE DO NORTE Algoritmos ANSI C - Organização de um programa Copyright 2014 IFRN Agenda Escopo de variáveis Local Global Macros #define Organizando
Leia maisGilberto A. S. Segundo. 24 de agosto de 2011
Exercícios - Alocação Dinâmica Gilberto A. S. Segundo Programação Aplicada de Computadores Engenharia Elétrica Universidade Federal do Espírito Santo - UFES 24 de agosto de 2011 1 / 23 Grupo de e-mail
Leia maisFunções em C. Lucas Ferrari de Oliveira Professor Adjunto. Linguagem de Programação Estruturada I. Universidade Federal do Paraná
em C Linguagem de Programação Estruturada I Lucas Ferrari de Oliveira Professor Adjunto Universidade Federal do Paraná Sumário Funções: Conceitos; Forma Geral das funções; Regras de Escopo; Argumentos
Leia maisAlgoritmos e Estruturas de Dados I (DCC/003) Funções
Algoritmos e Estruturas de Dados I (DCC/003) Funções Funções Funções definem operações que são usadas frequentemente Funções, na matemática, requerem parâmetros de entrada, e definem um valor de saída
Leia maisMaterial sobre Funções AEDS 1
Material sobre Funções AEDS 1 1 Funções - revisão Funções definem operações que são usadas frequentemente Funções, na matemática, requerem parâmetros de entrada e definem um valor de saída 2 Funções -
Leia maisProgramação Estruturada Prof. Rodrigo Hausen Organização e Gerenciamento de Memória
Programação Estruturada Prof. Rodrigo Hausen http://progest.compscinet.org Organização e Gerenciamento de Memória 1 AULA PASSADA - vetores ou arrays Declaração de um vetor (array) em C: tipo nome[tamanho];
Leia maisProgramação de Computadores I Introdução ao C PROFESSORA CINTIA CAETANO
Programação de Computadores I Introdução ao C PROFESSORA CINTIA CAETANO Introdução Criada em 1972, por Dennis Ritchie; Centro de Pesquisas da Bell Laboratories; Para utilização no S.O. UNIX; C é uma linguagem
Leia maisIntrodução a Programação. Ponteiros e Vetores, Alocação Dinâmica
Introdução a Programação Ponteiros e Vetores, Alocação Dinâmica Tópicos da Aula Hoje aprenderemos que existe uma forte relação entre ponteiros e vetores Associação entre ponteiros e vetores Ponteiros constantes
Leia maisIntrodução a Programação. Ponteiros e Strings, Alocação Dinâmica
Introdução a Programação Ponteiros e Strings, Alocação Dinâmica Tópicos da Aula Hoje aprenderemos a relação entre ponteiros e strings Ponteiros para strings X Vetores de Caracteres Vetores de ponteiros
Leia maisCurso de Programação C em Ambientes Linux Aula 05
Curso de Programação C em Ambientes Linux Aula 05 Centro de Engenharias da Mobilidade - UFSC Professores Gian Berkenbrock e Giovani Gracioli http://www.lisha.ufsc.br/c+language+course+resources Conteúdo
Leia maisFundamentos de Programação
Fundamentos de Programação CP41F Aula 12 Prof. Daniel Cavalcanti Jeronymo Layout de memória. Ponteiros: conceito, operadores de referência e dereferência, operações, aritmética e indireção múltipla Universidade
Leia maisprim = A ; prim = &A[0];
57 12 - MAIS SOBRE APONTADOR 12.1 - Ponteiros e arrays Em C, ponteiros e matrizes são tratados de maneira semelhante. 12.1.1 - Nome O nome é um ponteiro, ou seja, aponta (contém o endereço) para o primeiro
Leia maisMétodos Computacionais. Funções, Escopo de Variáveis e Ponteiros
Métodos Computacionais Funções, Escopo de Variáveis e Ponteiros Tópicos da Aula Hoje vamos detalhar funções em C Escrevendo funções Comando return Passagem de argumentos por valor Execução de uma função
Leia maisponteiros INF Programação I Prof. Roberto Azevedo
ponteiros INF1005 -- Programação I -- 2016.1 Prof. Roberto Azevedo razevedo@inf.puc-rio.br ponteiros tópicos o que são ponteiros operadores usados com ponteiros passagem de ponteiros para funções referência
Leia maisIntrodução à Programação em C
Introdução à Programação em C Tipos e Operadores Elementares Estruturas de Controlo Resumo Novidades em C Exemplo: Factorial Tipos de Dados Básicos Saltos Condicionais: if-then-else Valor de retorno de
Leia maisUNIVERSIDADE DO VALE DO RIO DOS SINOS - UNISINOS CENTRO DE CIÊNCIAS EXATAS E TECNOLÓGICAS - CENTRO 06. Funções, variáveis, parâmetros formais
UNIVERSIDADE DO VALE DO RIO DOS SINOS - UNISINOS CENTRO DE CIÊNCIAS EXATAS E TECNOLÓGICAS - CENTRO 06 Disciplina: Linguagem de Programação C Profª Viviane Todt Diverio Funções, variáveis, parâmetros formais
Leia maisEstruturas de Repetição
Estruturas de Repetição Introdução As estruturas de repetição, permitem executar mais de uma vez um mesmo trecho de código. Trata-se de uma forma de executar blocos de comandos somente sob determinadas
Leia maisLaboratório de Programação - Exercício 33
Laboratório de Programação - Exercício 33 Algoritmos para Lista Encadeada João Araujo Ribeiro jaraujo@uerj.br Universidade do Estado do Rio de Janeiro Departamento de Engenharia de Sistemas e Computação
Leia maisTÉCNICAS DE LINGUAGEM DE PROGRAMAÇÃO
TÉCNICAS DE LINGUAGEM DE PROGRAMAÇÃO Ponteiros Definição Variável: área de memória que armazena dados de um certo tipo. Na memória, toda variável possui um endereço. Um Ponteiro é uma variável especial
Leia maisSub-rotinas em C. Disciplina de Programação de Computadores I Universidade Federal de Ouro Preto
Sub-rotinas em C Disciplina de Programação de Computadores I Universidade Federal de Ouro Preto Agenda Sub-rotinas: Função e Procedimentos A função main Variáveis globais e locais Escopo de variáveis Passagem
Leia maisIntrodução a Programação. Ponteiros e Passagem de Argumentos por Referência
Introdução a Programação Ponteiros e Passagem de Argumentos por Referência Tópicos da Aula Hoje aprenderemos a manipular endereços de memória ou ponteiros Variáveis e Endereços Conceito de Ponteiro Operadores
Leia maisAlgoritmos e Estruturas de Dados I. Funções. Pedro Olmo Stancioli Vaz de Melo
Algoritmos e Estruturas de Dados I Funções Pedro Olmo Stancioli Vaz de Melo Exercício Brutus e Olívia foram ao médico, que disse a eles que ambos estão fora do peso ideal. Ambos discordaram veementemente
Leia mais1 Exercícios com ponteiros
Computação para Informática Funções e Ponteiros1 EXERCÍCIOS COM PONTEIROS Computação para Informática - Prof. Adriano Joaquim de Oliveira Cruz Aula Prática - Funções e ponteiros O objetivo desta aula prática
Leia maisProgramação I Funções. Prof. Carlos Alberto
Programação I Funções Prof. Carlos Alberto carlos.batista@facape.br carlos36_batista@yahoo.com.br Funções Funções são blocos de códigos que podem ser nomeados e chamados de dentro de um programa; Funções
Leia maisINSTITUTO FEDERAL DE! EDUCAÇÃO, CIÊNCIA E TECNOLOGIA RIO GRANDE DO NORTE
INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA RIO GRANDE DO NORTE Algoritmos ANSI C - Introdução Copyright 2014 IFRN Agenda Conceitos básicos ANSI C Hello World Funções em C Exercícios 2 /26 A linguagem
Leia maisFunções. definição, declaração e chamada
Funções definição, declaração e chamada Funções Em C, um programa é uma coleção de FUNÇÕES. Uma função é um bloco de código que recebe um nome e que tem possivelmente PARÂMETROS. A partir do nome, o bloco
Leia maisAula 17: Ponteiros e Alocação Dinâmica em C
Aula 17: Ponteiros e Alocação Dinâmica em C Fernanda Passos Universidade Federal Fluminense Programação de Computadores IV Fernanda Passos (UFF) Ponteiros e Alocação Dinâmica Programação de Computadores
Leia maisUNIVERSIDADE FEDERAL DO RIO GRANDE DO SUL INSTITUTO DE INFORMÁTICA INFORMÁTICA APLICADA
Responda 1) Quem desenvolveu a linguagem C? Quando? 2) Existe alguma norma sobre a sintaxe da linguagem C? 3) Quais são os tipos básicos de dados disponíveis na linguagem C? 4) Quais são as principais
Leia maisIntrodução a Programação. Tipos Estruturados de Dados
Introdução a Programação Tipos Estruturados de Dados Tópicos da Aula Hoje aprenderemos a trabalhar com tipos de dados mais complexos Tipos Primitivos x Tipos Estruturados Conceito de Tipos Estruturados
Leia maisBruno Hott Algoritmos e Estruturas de Dados I DECSI UFOP. Alocação Dinâmica de Memória
Bruno Hott Algoritmos e Estruturas de Dados I DECSI UFOP Alocação Dinâmica de Memória Alocação Estática x Dinâmica C: dois tipos de alocação de memória: Estática e Dinâmica Na alocação estática, o espaço
Leia maisBásico: estrutura de programa, sintaxe Interface com linha de comando
Programação em C Sintaxe Básico: estrutura de programa, sintaxe Interface com linha de comando Preprocessamento e compilação Makefiles Ponteiros e estruturas Bibliotecas, ficheiros include e funções Referências
Leia mais3. Linguagem de Programação C
Introdução à Computação I IBM1006 3. Linguagem de Programação C Prof. Renato Tinós Departamento de Computação e Matemática (FFCLRP/USP) 1 Principais Tópicos 3.6. Ponteiros 3.6.1. Introdução 3.6.2. Uso
Leia maisPonteiros em C. Prof. Rui Jorge Tramontin Jr. UDESC - Rui J. Tramontin Jr. 1
Ponteiros em C Prof. Rui Jorge Tramontin Jr. UDESC - Rui J. Tramontin Jr. 1 Índice Introdução Operações sobre Ponteiros Exemplos Ponteiros e Funções Alocação Dinâmica em C UDESC - Rui J. Tramontin Jr.
Leia maisLinguagem e Técnicas de Programação
Linguagem C Função Prof. Edwar Saliba Júnior Fevereiro de 2011 Unidade 07 Função 1 Conceitos As técnicas de programação dizem que, sempre que possível, evite códigos extensos, separando o mesmo em funções,
Leia maisTipos Básicos. Operadores de Incremento e Decremento. Operador Sizeof. Estruturas de Dados Aula 2: Estruturas Estáticas
Tipos Básicos Quantos valores distintos podemos representar com o tipo char? Estruturas de Dados Aula 2: Estruturas Estáticas 03/03/2010 Operadores de Incremento e Decremento ++ e -- Incrementa ou decrementa
Leia maisConceitos de Linguagens de Programação
Faculdade de Ciências e Tecnologia Departamento de Matemática e Computação Bacharelado em Ciência da Computação Conceitos de Linguagens de Programação Aula 07 (rogerio@prudente.unesp.br) Aula 7 Implementação
Leia maisAlgoritmos e Programação. Linguagem C Procedimentos e. Eliane Pozzebon
Algoritmos e Programação Linguagem C Procedimentos e Funções Eliane Pozzebon Procedimentos e Funções Procedimentos são estruturas que agrupam um conjunto de comandos, que são executados quando o procedimento
Leia maisSISTEMAS OPERATIVOS I
Instituto Superior de Engenharia do Porto Departamento de Engenharia Informática SISTEMAS OPERATIVOS I Ficha 6 Abril de 2006 Nuno Malheiro Maria João Viamonte Berta Batista Luis Lino Ferreira Sugestões
Leia maisEstruturas de Dados Aula 2: Estruturas Estáticas. Tipos Básicos. Quantos valores distintos podemos representar com o tipo char?
Estruturas de Dados Aula 2: Estruturas Estáticas Tipos Básicos Quantos valores distintos podemos representar com o tipo char? 1 Operadores de Incremento e Decremento ++ e -- Incrementa ou decrementa o
Leia maisEstruturas de Dados Aula 2: Estruturas Estáticas 02/03/2011
Estruturas de Dados Aula 2: Estruturas Estáticas 02/03/2011 Tipos Básicos Quantos valores distintos podemos representar com o tipo char? Operadores de Incremento e Decremento ++ e -- Incrementa ou decrementa
Leia maisConhecendo a Linguagem de Programação C
Universidade Federal do Rio Grande do Norte Departamento de Engenharia de Computação e Automação Conhecendo a Linguagem de Programação C DCA0800 - Algoritmos e Lógica de Programação Heitor Medeiros 1 Como
Leia maisAlgoritmos e Estruturas de Dados I. Funções. Pedro Olmo Stancioli Vaz de Melo
Algoritmos e Estruturas de Dados I Funções Pedro Olmo Stancioli Vaz de Melo Exercício Brutus e Olívia foram ao médico, que disse a eles que ambos estão fora do peso ideal. Ambos discordaram veementemente
Leia maisLINGUAGEM C: FUNÇÕES FUNÇÃO 04/07/2017. Funções são blocos de código que podem ser nomeados e chamados de dentro de um programa.
LINGUAGEM C: FUNÇÕES Prof. André Backes FUNÇÃO Funções são blocos de código que podem ser nomeados e chamados de dentro de um programa. printf(): função que escreve na tela scanf(): função que lê o teclado
Leia maisProgramação de Computadores II. Cap. 5 Alocação Dinâmica
Programação de Computadores II Cap. 5 Alocação Dinâmica Livro: Waldemar Celes, Renato Cerqueira, José Lucas Rangel. Introdução a Estruturas de Dados, Editora Campus (2004) Slides adaptados dos originais
Leia maisLinguagens de Programação Aula 11
Linguagens de Programação Aula 11 Celso Olivete Júnior olivete@fct.unesp.br Na aula passada Uma definição de subprograma descreve as ações representadas pelo subprograma Subprogramas podem ser funções
Leia maisProgramação Orientada a Objetos para Redes de Computadores. Arrays. Arrays
Programação Orientada a Objetos para Redes de Computadores Elias Mitre http://www.gta.ufrj.br/~miguel PARTE 2 Programação em C++ - Arrays e Ponteiros Arrays Arrays Estruturas de dados que contêm itens
Leia maisSCC Capítulo 2 Recursão
SCC-501 - Capítulo 2 João Luís Garcia Rosa 1 1 Departamento de Ciências de Computação Instituto de Ciências Matemáticas e de Computação Universidade de São Paulo - São Carlos http://www.icmc.usp.br/~joaoluis
Leia maisProgramação Orientada a Objetos para Redes de Computadores
Programação Orientada a Objetos para Redes de Computadores Prof. Miguel Elias Mitre Campista http://www.gta.ufrj.br/~miguel PARTE 2 Programação em C++ - Arrays e Ponteiros Arrays Estruturas de dados que
Leia mais- Mapa de memória de um processo - Ponteiros
1 MCTA028 Programação Estruturada - Mapa de memória de um processo - Ponteiros Material preparado a partir de slides dos profs. Jesús Mena-Chalco e Fabrício Olivetti Luiz Rozante 3Q-2018 2 Alocação de
Leia maisProgramação: Vetores
Programação de Computadores I Aula 09 Programação: Vetores José Romildo Malaquias Departamento de Computação Universidade Federal de Ouro Preto 2011-1 1/62 Motivação Problema Faça um programa que leia
Leia maisTipos Abstratos de Dados. Estrutura de Dados
Tipos Abstratos de Dados Tipo Abstrato de Dados ou TAD Idéia principal: desvincular o tipo de dado (valores e operações) de sua implementação: O que o tipo faz e não como ele faz! Vantagens da desvinculação:
Leia maisEstruturas de Dados Aulas 3 e 4: Uso da. 14/03/2011 e 16/03/2011
Estruturas de Dados Aulas 3 e 4: Uso da memória e Vetores 14/03/2011 e 16/03/2011 Uso da memória Existem 3 maneiras de reservar o espaço da memória: Variáveis globais (estáticas) Espaço existe enquanto
Leia maisProgramação Estruturada Prof. Rodrigo Hausen Ponteiros e Passagem de Parâmetros
Programação Estruturada Prof. Rodrigo Hausen http://progest.compscinet.org Ponteiros e Passagem de Parâmetros 1 AULA PASSADA - ponteiros Uma declaração tal como: tipo *nome; Declara um ponteiro: referência
Leia maisFunções. definição, declaração e chamada
Funções definição, declaração e chamada Funções Em C, um programa é uma coleção de FUNÇÕES. Uma função é um bloco de código que recebe um nome e que tem possivelmente PARÂMETROS. A partir do nome, o bloco
Leia maisAula 18: Funções em C
Aula 18: Funções em C Fernanda Passos Universidade Federal Fluminense Programação de Computadores IV Fernanda Passos (UFF) Funções em C Programação de Computadores IV 1 / 38 Agenda 1 Revisão e Contexto
Leia maisProgramação de Computadores II. Cap. 4 Funções
Programação de Computadores II Cap. 4 Funções Livro: Waldemar Celes, Renato Cerqueira, José Lucas Rangel. Introdução a Estruturas de Dados, Editora Campus (2004) Slides adaptados dos originais dos profs.:
Leia maisMódulo 5 Vetores e Alocação Dinâmica
Estruturas de Dados Módulo 5 Vetores e Alocação Dinâmica 1/9/2005 (c) Dept. Informática - PUC-Rio 1 Referências Waldemar Celes, Renato Cerqueira, José Lucas Rangel, Introdução a Estruturas de Dados, Editora
Leia maisProgramação em C. Variáveis e Expressões. Universidade Federal do Rio Grande do Norte Departamento de Engenharia de Computação e Automação
Universidade Federal do Rio Grande do Norte Departamento de Engenharia de Computação e Automação Programação em C Variáveis e Expressões DCA0800 Algoritmos e Lógica de Programação Heitor Medeiros Florencio
Leia mais#include <stdio.h> void Swap (int *a,int *b) { int temp; temp=*a; *a=*b; *b=temp; } main () {
422 #include void Swap (int *a,int *b) int temp; temp=*a; *a=*b; *b=temp; main () int num1,num2; printf("\nentre com o primeiro valor: "); scanf ("%d",&num1); printf("\nentre com o segundo valor:
Leia maisUniversidade Federal de Uberlândia Faculdade de Computação. Linguagem C: funções
Universidade Federal de Uberlândia Faculdade de Computação Linguagem C: funções Prof. Renato Pimentel 1 Linguagem C: funções Definição: blocos de código que podem ser chamados de dentro de um programa.
Leia mais3. Linguagem de Programação C
Introdução à Computação I IBM1006 3. Linguagem de Programação C Prof. Renato Tinós Departamento de Computação e Matemática (FFCLRP/USP) 1 Principais Tópicos 3.7. Funções 3.7.1. Introdução 3.7.2. Uso de
Leia maisEstrutura de dados 1. Ponteiros
Estrutura de dados 1 Ponteiros Ponteiros Um ponteiro é um endereço de memória O valor de um ponteiro indica onde uma variável está armazenada Um ponteiro proporciona um modo de acesso a uma variável sem
Leia maisProgramação 2012/2013 1º Semestre MEEC Laboratório 2 Semana de 22 de Outubro de 2012
Programação 2012/2013 1º Semestre MEEC Laboratório 2 Semana de 22 de Outubro de 2012 1. Implemente os programas cujos fluxogramas foram definidos na aula de problemas da semana passada: Exercício 7- Calculo
Leia maisAlocação Dinâmica de Memória. David Menotti Algoritmos e Estruturas de Dados II DInf UFPR
Alocação Dinâmica de Memória David Menotti Algoritmos e Estruturas de Dados II DInf UFPR Alocação Estática x Dinâmica C: dois tipos de alocação de memória: Estática e Dinâmica Na alocação estática, o espaço
Leia mais1 Exercícios com ponteiros
Computação para Informática - Prof. Adriano Joaquim de Oliveira Cruz Oitava Aula Prática - 29 de outubro de 2010 O objetivo desta aula prática é exercitar ponteiros e funções. 1 Exercícios com ponteiros
Leia maisLinguagem C. André Tavares da Silva.
Linguagem C André Tavares da Silva dcc2ats@joinville.udesc.br Variáveis Posição nomeada de memória que é usada para guardar um valor que pode ser modificado pelo programa. Todas as variáveis devem ser
Leia maisComputação 2. Aula Profª. Fabiany Listas Duplamente Encadeadas
Computação 2 Aula 10.1 Listas Duplamente Encadeadas Profª. Fabiany fabianyl@utfpr.edu.br ListaEncadeada.h #ifndef _LISTAENCADEADA_H_ #define _LISTAENCADEADA_H_ #include #include #include
Leia maisApêndice A. Alguns construtores e métodos importantes e úteis da classe Vector são:
Apêndice A Classe Vector A classe Vector permite a representação de um vetor de dados de maneira similar à de um array, visto na disciplina Programação Orientada a Objetos I, mas com maior flexibilidade.
Leia maisRevisão de Programação em C++ Leandro Tonietto Estruturas de Dados em C++ Segurança da Informação
Revisão de Programação em C++ Estruturas de Dados em C++ Segurança da Informação ltonietto@unisinos.br http://www.inf.unisinos.br/~ltonietto mar-09 Sumário Revisão de conceitos básicos de programação Diretiva
Leia maisMC102 - Algoritmos e programação de computadores. Aula 14: Funções e Procedimentos
MC102 - Algoritmos e programação de computadores Aula 14: Funções e Procedimentos Procedimentos Procedimentos são estruturas que agrupam um conjunto de comandos, que são executados quando o procedimento
Leia maisAlgoritmos e Estruturas de Dados I (DCC/003) Introdução à Programação de Computadores. Aula - Tópico 1
Algoritmos e Estruturas de Dados I (DCC/003) Introdução à Programação de Computadores Aula - Tópico 1 1 Problema 1 Considere o seguinte problema: Determinar o valor de y = seno(1,5). 2 Definições Para
Leia maisFundamentos de Programação
Fundamentos de Programação ET42G Aula 21 Prof. Daniel Cavalcanti Jeronymo Conversão de tipos. Alocação dinâmica de memória. Recursão. Criação de bibliotecas, arquivos de cabeçalhos e variáveis globais.
Leia maisDeclarando e Utilizando Ponteiros. Para declarar um ponteiro temos a seguinte forma geral: tipo_do_ponteiro *nome_da_variável;
Declarando e Utilizando Ponteiros Para declarar um ponteiro temos a seguinte forma geral: tipo_do_ponteiro *nome_da_variável; É o asterisco (*) que faz o compilador saber que aquela variável não vai guardar
Leia mais13 a Aula - Instruções Condicionais. Ciclos. Pré-processador. Variáveis de ambiente. Mestrado em Engenharia Física Tecnológica
13 a Aula - Instruções Condicionais. Ciclos. Pré-processador. Variáveis de ambiente. Programação Mestrado em Engenharia Física Tecnológica Samuel M. Eleutério sme@tecnico.ulisboa.pt Departamento de Física
Leia maisPonteiros de Variáveis
Ponteiros de Variáveis C++ permite o armazenamento e a manipulação de valores de endereços de memória. Para cada tipo existente, há um tipo ponteirocapaz de armazenar endereços de memória em que existem
Leia maisEstruturas de Dados. Módulo 4 Funções. 9/8/2005 (c) Dept. Informática - PUC-Rio 1
Estruturas de Dados Módulo 4 Funções 9/8/2005 (c) Dept. Informática - PUC-Rio 1 Referências Waldemar Celes, Renato Cerqueira, José Lucas Rangel, Introdução a Estruturas de Dados, Editora Campus (2004)
Leia maisProgramação Estruturada
Programação Estruturada Ponteiros Parte 1 Professores Emílio Francesquini e Carla Negri Lintzmayer 2018.Q3 Centro de Matemática, Computação e Cognição Universidade Federal do ABC Ponteiros Ponteiro Ponteiros
Leia maisImplementando subprogramas
Implementando subprogramas Linguagens de Programação Marco A L Barbosa cba Este trabalho está licenciado com uma Licença Creative Commons - Atribuição-CompartilhaIgual 4.0 Internacional. http://github.com/malbarbo/na-lp-copl
Leia maisINF1007: Programação 2. 2 Alocação Dinâmica. 17/02/2014 (c) Dept. Informática - PUC-Rio 1
INF1007: Programação 2 2 Alocação Dinâmica 17/02/2014 (c) Dept. Informática - PUC-Rio 1 Tópicos Alocação dinâmica Vetores locais e funções 17/02/2014 (c) Dept. Informática - PUC-Rio 2 Alocação Dinâmica
Leia maisFundamentos de Programação
Fundamentos de Programação CP41F Aula 13 Prof. Daniel Cavalcanti Jeronymo Declaração de funções. Funções sem e com retorno. Parâmetros de funções. Ponteiros para funções. Universidade Tecnológica Federal
Leia maisAlocação Dinâmica em C
Universidade de São Paulo São Carlos Instituto de Ciências Matemáticas e de Computação Alocação Dinâmica em C Profa Rosana Braga Adaptado de material preparado pela profa Silvana Maria Affonso de Lara
Leia maisIntrodução à Linguagem C
Engenharia de CONTROLE e AUTOMAÇÃO Introdução à Linguagem C Aula 03 DPEE 1038 Estrutura de Dados para Automação Curso de Engenharia de Controle e Automação Universidade Federal de Santa Maria beltrame@mail.ufsm.br
Leia maisMétodos Computacionais. Tipos Estruturados
Métodos Computacionais Tipos Estruturados Tipos Estruturados C oferece tipos primitivos que servem para representar valores simples Reais (float, double), inteiros (int), caracter (char) C oferece também
Leia maisFundamentos de Programação
Fundamentos de Programação CP41F Aula 4 Prof. Daniel Cavalcanti Jeronymo Compilação por linha de comando. Ambiente integrado de desenvolvimento (IDE). Parâmetros de compilação. Estrutura de um programa
Leia maisMétodos Computacionais
Métodos Computacionais Objetivos da Disciplina e Introdução a Linguagem C Construções Básicas Objetivos da Disciplina Objetivo Geral Discutir técnicas de programação e estruturação de dados para o desenvolvimento
Leia maisAlocação Dinâmica de Memória
Alocação Dinâmica de Memória Luiz Chaimowicz, Raquel O. Prates, Pedro O.S. Vaz de Melo Algoritmos e Estruturas de Dados II DCC UFMG Alocação Estática x Dinâmica C: dois tipos de alocação de memória: Estática
Leia maisFUNÇÕES EM C Material adaptado da profa Silvana Maria Affonso de Lara
Universidade do Estado de Minas Gerais - UEMG Curso de Engenharia da Computação FUNÇÕES EM C 1 Material adaptado da profa Silvana Maria Affonso de Lara ROTEIRO DA AULA Definição de Função Argumentos, retornos
Leia maisALGORITMOS AULA 01. Baseado nas aulas do Prof. Jorgiano Vidal
ALGORITMOS AULA 01 Baseado nas aulas do Prof. Jorgiano Vidal LINGUAGEM C Uma das grandes vantagens do C é que ele possui tanto caracterìsticas de "alto nìvel" quanto de "baixo nìvel". Linguagem de propósito
Leia maisVariáveis e Operadores em C
Variáveis e Operadores em C Luís Charneca luis.charneca@gmail.com NOMES DE VARIÁVEIS (1) As variáveis no C podem ter qualquer nome se duas condições forem satisfeitas: o nome deve começar com uma letra
Leia maisDAS5102 Fundamentos da Estrutura da Informação
Ponteiros e Funções Funções ou sub-rotinas são parcelas de código que podem ser invocadas a partir do programa principal ou até mesmo por outras sub-rotinas. Elas têm como objetivo a execução de uma tarefa
Leia maisLinguagem C ponteiros
Linguagem C ponteiros IF61A/IF71A - Computação 1 Prof. Leonelo Almeida Universidade Tecnológica Federal do Paraná Até agora... Introdução à linguagem C... Vetores Matrizes Funções Recursão Registros Aula
Leia maisPrimeiros programas.
Primeiros programas. David Déharbe 1 1 Objetivos da aula Revisar as atividades "edição", "compilação", ("correção" e) "execução". Revisar os primeiros elementos de linguagem C já vistos. Aprender a escrever
Leia maisSistemas Operacionais e Introdução à Programação. Programação com linguagem C
Sistemas Operacionais e Introdução à Programação Programação com linguagem C 1 Entrada e saída: escrevendo na tela Veja uma comparação entre um programa Portugol e seu equivalente em C: Inicio Inteiro
Leia maisComputação eletrônica: Funções
Computação eletrônica: Gurvan Huiban ghuiban@cin.ufpe.br 13 de maio de 2014 Plano de aula 1 Princípio 2 Declaração de funções 3 Escope de variáveis Introdução O que é? Bloco de instruções desenvolvido
Leia maisAlocação Dinâmica de Memória
Alocação Dinâmica de Memória Elerson R. S. Santos elerson@dcc.ufmg.br Algoritmos e Estruturas de DCC UFMG Variáveis Uma variável representa um nome simbólico para uma posição de memória. Cada posição de
Leia mais